一 漏洞描述
非法字符空格和截止符(\0)会导致Nginx解析URI时的有限状态机混乱,此漏洞可导致目录跨越及代码执行
受影响版本
影响版本:Nginx 0.8.41 ~ 1.4.3 / 1.5.0 ~ 1.5.7
二 环境搭建docker-compose,vulhub
https://blog.csdn.net/weixin_52221158/article/details/125933759
vulhub-master/nginx/CVE-2013-4547]
└─# docker-compose up -d
目标 Ubuntu 192.168.1.128
三 漏洞复现
访问ip:端口,上传文件.txt,进行抓包在文件后添加一个空格
访问上传文件进行抓包,更改为1.gif …php(空格…)
http://192.168.1.128:8080/uploadfiles/1.gif
在hex界面
.jpg
与
.php
中间添加
20
和
00
四 参考链接
https://www.cnblogs.com/masses0x1/p/15780872.html
Nginx越界读取缓存漏洞(CVE-2017-7529)
一 漏洞描述
Nginx在反向代理站点的时候,通常会将一些文件进行缓存,特别是静态文件。缓存的部分存储在文件中,每个缓存文件包括“文件头”+“HTTP返回包头”+“HTTP返回包体”。如果二次请求命中了该缓存文件,则Nginx会直接将该文件中的“HTTP返回包体”返回给用户。
如果我的请求中包含Range头,Nginx将会根据我指定的start和end位置,返回指定长度的内容。而如果我构造了两个负的位置,如(-600, -9223372036854774591),将可能读取到负位置的数据。如果这次请求又命中了缓存文件,则可能就可以读取到缓存文件中位于“HTTP返回包体”前的“文件头”、“HTTP返回包头”等内容。
受影响版本
影响版本:Nginx version 0.5.6 - 1.13.2
二 环境搭建docker-compose,vulhub
https://blog.csdn.net/weixin_52221158/article/details/125933759
vulhub-master/nginx/CVE-2013-4547]
└─# docker-compose up -d
目标 Ubuntu 192.168.1.128
三 漏洞复现
环境启动,访问http://your-ip:8080即可查看到Nginx默认页面,这个页面实际上是反向代理的8081端口的内容
修改poc.py为自己的ip,执行py文件
python3 poc.py http://192.168.1.128:8080
越界读取到了位于“HTTP返回包体”前的“文件头”、“HTTP返回包头”等内容。
如果读取有误,请调整poc.py中的偏移地址(605)
四 修复
Nginx version 1.13.3, 1.12.1
五 参考链接
https://www.cnblogs.com/masses0x1/p/15780872.html
Nginx越界读取缓存漏洞(CVE-2017-7529)
一 漏洞描述
CRLF注入漏洞
nginx的错误配置如下,该配置的用意是让http请求跳转到https请求。其中
$uri
就是我们的访问的地址,该变量可控。其中
https://$host$uri
会出现在http响应报文中,这样我们就可以通过改变
$uri
来控制http的响应报 文。
location / {return302 https://$host$uri;}
受影响版本
影响版本:Nginx version 0.5.6 - 1.13.2
二 环境搭建docker-compose,vulhub
https://blog.csdn.net/weixin_52221158/article/details/125933759
vulhub-master/nginx/CVE-2017-7529]
└─# docker-compose up -d
目标 Ubuntu 192.168.1.128
三 漏洞复现
Payload:
http://your-ip:8080/%0a%0dSet-Cookie:%20a=1
,可注入Set-Cookie头。
目录穿越漏洞
Nginx在配置别名(Alias)的时候,如果忘记加
/
,将造成一个目录穿越漏洞。
错误的配置文件示例(原本的目的是为了让用户访问到/home/目录下的文件):
location /files {
alias /home/;
}
Payload: http://your-ip:8081/files…/ ,成功穿越到根目录:
四 参考链接
https://vulhub.org/#/environments/nginx/insecure-configuration/
Nginx 解析漏洞复现
一 漏洞描述
该漏洞与Nginx、php版本无关,属于用户配置不当造成的解析漏洞。
1、由于nginx.conf的错误配置导致nginx把以".php"结尾的文件交给fastcgi处理,为此可以构造http://172.168.30.190/uploadfiles/hacker.png/XXXX.php ,其中hacker.png是我们上传的包含PHP代码的图片文件。
2、但是fastcgi在处理"XXXX.php"文件时发现文件并不存在,这时php.ini配置文件中cgi.fix_pathinfo=1 发挥作用,这项配置用于修复路径,如果当前路径不存在则采用上层路径。为此这里交由fastcgi处理的文件就变成了"/test.png"。
3、 最重要的一点是php-fpm.conf中的security.limit_extensions配置项限制了fastcgi解析文件的类型(即指定什么类型的文件当做代码解析),此项设置为空的时候才允许fastcgi将".png"等文件当做代码解析。
注:限制fpm允许解析的脚本扩展名。此设置可以预防web服务器配置的错误。应当限制fpm仅仅解析.php扩展名,阻止恶意用户使用其他扩展名运行php代码。默认值:.php
受影响版本
Nginx 1.x 最新版
PHP 7.x最新版
二 环境搭建docker-compose,vulhub
https://blog.csdn.net/weixin_52221158/article/details/125933759
vulhub-master/nginx//nginx_parsing_vulnerability
# docker-compose up -d
目标 Ubuntu 192.168.1.128
三 漏洞复现
访问your-ip:port,同时上传1.jpg
增加
/.php
后缀,被解析成PHP文件:
编写一句话木马,写进2.jpg,通过蚁剑连接成功webshell
四 参考链接
版权归原作者 bqAngus 所有, 如有侵权,请联系我们删除。