Nginx 配置错误导致漏洞 漏洞复现 (CRLF注入漏洞&目录穿越漏洞)

CRLF注入漏洞

nginx的错误配置如下,该配置的用意是让http请求跳转到https请求。其中 u r i 就 是 我 们 的 访 问 的 地 址 , 该 变 量 可 控 。 其 中 ‘ h t t p s : / / uri就是我们的访问的地址,该变量可控。其中`https:// uri访https://host u r i ‘ 会 出 现 在 h t t p 响 应 报 文 中 , 这 样 我 们 就 可 以 通 过 改 变 ‘ uri`会出现在http响应报文中,这样我们就可以通过改变` urihttpuri`来控制http的响应报文。

location / {
     
    return 302 https://$host$uri;
}

当我们正常访问http://192.168.119.131:8080/时,nginx重定向后,会在http响应头中出现Location字段,如下图所示:

Nginx 配置错误导致漏洞 漏洞复现 (CRLF注入漏洞&目录穿越漏洞)_第1张图片

当我们访问http://192.168.119.131:8080/%0d%0atest时,响应头如下图所示。 %0d%0a\r\n,也就是换行符,所以在url中加入一个换行符即可将恶意数据写入http响应头。

Nginx 配置错误导致漏洞 漏洞复现 (CRLF注入漏洞&目录穿越漏洞)_第2张图片

同理加两个换行符可以将数据写入响应体,例如访问 http://192.168.119.131:8080/%0d%0a%0d%0a后响应体如下图所示,通过这种注入可实现xss攻击。

Nginx 配置错误导致漏洞 漏洞复现 (CRLF注入漏洞&目录穿越漏洞)_第3张图片

靶场由vulhub搭建,靶场地址为 vulhub/nginx/insecure-configuration,在该目录中执行 docker-compose up -d即可启动靶场。

目录穿越漏洞

Nginx在配置别名(Alias)的时候,如果忘记加/,将造成一个目录穿越漏洞。在下面配置中/files在匹配字符串的时候可以匹配到 /files..,而 /files..转化成别名时就会变成 /home/..,这样就可以访问到home目录的上一级目录。

location /files {
     
    alias /home/;
}

/files改成 /files/即可修改该漏洞。

漏洞复现

靶场环境和上一个漏洞在一个docker中,端口为8081,访问 http://IP地址:8081/files../

Nginx 配置错误导致漏洞 漏洞复现 (CRLF注入漏洞&目录穿越漏洞)_第4张图片
该漏洞可以造成任意文件下载,造成巨大的风险。

你可能感兴趣的