Nginx 文件名逻辑漏洞CVE-2013-4547

一 漏洞描述

非法字符空格和截止符(\0)会导致Nginx解析URI时的有限状态机混乱,此漏洞可导致目录跨越及代码执行

受影响版本

影响版本:Nginx 0.8.41 ~ 1.4.3 / 1.5.0 ~ 1.5.7

二 环境搭建docker-compose,vulhub

https://blog.youkuaiyun.com/weixin_52221158/article/details/125933759

vulhub:https://github.com/vulhub/vulhub

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中间添加 2000

在这里插入图片描述

四 参考链接

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.youkuaiyun.com/weixin_52221158/article/details/125933759

vulhub:https://github.com/vulhub/vulhub

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

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gVH6Tfy4-1664681458375)(../../../../img/Nginx/3.png)]

越界读取到了位于“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 / {
    return 302 https://$host$uri;
}

受影响版本

影响版本:Nginx version 0.5.6 - 1.13.2

二 环境搭建docker-compose,vulhub

https://blog.youkuaiyun.com/weixin_52221158/article/details/125933759

vulhub:https://github.com/vulhub/vulhub

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头。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5hassGt7-1664681644183)(http://angus.gq/Nginx/4.png#pic_center)]

目录穿越漏洞

Nginx在配置别名(Alias)的时候,如果忘记加/,将造成一个目录穿越漏洞。

错误的配置文件示例(原本的目的是为了让用户访问到/home/目录下的文件):

location /files {
    alias /home/;
}

Payload: http://your-ip:8081/files…/ ,成功穿越到根目录:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YXGr3Es6-1664681458377)(../../../../img/Nginx/5.png)]

四 参考链接

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.youkuaiyun.com/weixin_52221158/article/details/125933759

vulhub:https://github.com/vulhub/vulhub

vulhub-master/nginx//nginx_parsing_vulnerability
# docker-compose up -d

目标 Ubuntu 192.168.1.128

三 漏洞复现

访问your-ip:port,同时上传1.jpg

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-C945IKZj-1664681821713)(http://angus.gq/Nginx/7.png#pic_center)]

增加/.php后缀,被解析成PHP文件:

[外链图片转存中...(img-P9UpgW7I-1664681842594)]

编写一句话木马,写进2.jpg,通过蚁剑连接成功webshell

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OKTveAyW-1664681458380)(../../../../img/Nginx/9.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NyhUYNor-1664681863954)(http://angus.gq/Nginx/10.png#pic_center)]

四 参考链接

https://www.icode9.com/content-3-1368117.html

### Nginx 文件名逻辑漏洞CVE-2013-4547) #### 漏洞概述 Nginx 文件名逻辑漏洞CVE-2013-4547)允许攻击者通过精心构造的 URL 请求来绕过访问控制并读取或执行受限资源。此漏洞的根本原因在于 Nginx 错误地解析了带有特定编码字符的 URL,从而导致文件路径处理不当[^1]。 #### 影响范围 该漏洞影响多个版本的 Nginx,在某些配置下可能导致未经授权的文件访问甚至远程代码执行。具体受影响的版本包括但不限于: - Nginx 1.4.x 版本系列 - Nginx 1.5.x 版本系列 (部分) 当 Web 应用程序部署于上述版本之上时,可能存在潜在风险[^3]。 #### 复现过程 为了验证这一漏洞的存在,可以通过上传一个看似无害但实际上包含恶意 PHP 代码的图片文件 `phpinfo.jpg` 来测试。一旦成功上传,攻击者能够修改 HTTP 请求中的参数使服务器错误解释文件扩展名,进而触发命令注入行为[^4]。 ```bash curl -X POST http://example.com/upload.php \ -F "file=@/path/to/phpinfo.jpg" ``` 随后发送如下请求可尝试利用漏洞: ```http GET /uploads/phpinfo.jpg%00.php?cmd=id HTTP/1.1 Host: example.com ``` 如果存在漏洞,则返回的结果会显示当前用户的 ID 信息。 #### 安全修复措施 针对 CVE-2013-4547 的防护手段主要包括以下几个方面: - **升级至最新稳定版**:官方已发布更新解决此问题,建议立即应用最新的安全补丁以消除隐患[^2]。 - **手动修补源码**:对于无法即时升级的情况,可以从官方网站下载专门为此漏洞准备的安全补丁,并按照指引完成编译安装流程。 - **加强输入校验**:无论何时都应严格过滤用户提交的数据,特别是涉及文件操作的部分,防止非法字符进入内部处理环节。 - **启用 WAF 防护**:Web Application Firewall 能够识别异常模式并阻止可疑流量到达应用程序层面上游位置。 综上所述,及时采取适当行动可以有效降低遭受此类攻击的风险。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值