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

漏洞原理

此漏洞是利用了Nginx解析了错误的URl地址,使得绕过服务端限制解析了php文件,造成命令执行的危害
php-fpm.conf中的security.limit_extensions为空使得任意后缀都可以被解析
Nginx服务器将名为ggbond.php[0x20][0x00].php文件发给fastCGI,然而fastcgi在接受此文件时候只读取到ggbond.php[0x20][0x00];最后因为php-fpm.conf中的security.limit_extensions为空使得任意后缀都可以被解析;另一个利用此漏洞的前提是在Nginx0.8.41~1.4.3/1.5.0~1.5.7版本里

 漏洞复现

[root@localhost ~]# cd vulhub/nginx/CVE-2013-4547/   # 进入相关的漏洞环境
[root@localhost CVE-2013-4547]# ls
01.png  02.png  docker-compose.yml  nginx.conf  php-fpm  README.md  www
[root@localhost CVE-2013-4547]# setenforce 0 # 关闭selinux
[root@localhost CVE-2013-4547]# docker-compose up -d     # 启动容器
[root@localhost CVE-2013-4547]# docker ps -a             # 查看容器是否启动成功

# 浏览器访问,如下图环境正常
http://10.10.10.133:8080/

抓包修改空格绕过前端规则;文件后缀的后面加空格

 浏览器访问上传的文件;但是我们发现文件被下载到了本地;然而却没有执行ggbond文件中的php内置函数代码

 接下来抓取http://10.10.10.133:8080/uploadfiles/ggbond.php%20的请求包将其发送到repeater模块;进行改包
将后缀的%20修改为两个空格;之后进入到HEX十六进制代码中修改第二个空格为00空字符;意思是当服务器的fastCGI程序解析到00这个空字符时会终止解析后面的字符
实际cgi程序得到的文件名为ggbond.php[0x20]  # 即为ggbond.php[0x20][0x00].php被识别为ggbond.php[0x20]
由于在Nginx0.8.41~1.4.3/1.5.0~1.5.7版本中存在一个漏洞
php-fpm.conf中的security.limit_extensions为空使得任意后缀都可以被解析

修改完00空字符之后返回Raw代码中在空字符后面再加一个.php ;之后放行数据包查看回显是否成功读取php内置函数文件

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值