nginx 文件名逻辑漏洞复现(CVE-2013-4547)

水下月 2021-02-25
Web安全 发布于 2021-02-25 15:19:55 阅读 92 评论 0

影响版本

Nginx 0.8.41 ~ 1.4.3 / 1.5.0 ~ 1.5.7

原理

这里的原理就是说如果访问1.gif 0x20 0x00.php,也是会满足解析条件。

正常情况下(关闭pathinfo的情况下),只有.php后缀的文件才会被发送给fastcgi解析。

而存在CVE-2013-4547的情况下,我们请求1.gif[0x20][0x00].php,这个URI可以匹配上正则.php$,可以进入这个Location块;但进入后,Nginx却错误地认为请求的文件是1.gif[0x20],就设置其为SCRIPT_FILENAME的值发送给fastcgi。

fastcgi根据SCRIPT_FILENAME的值进行解析,最后造成了解析漏洞。

所以,我们只需要上传一个空格结尾的文件,即可使PHP解析之。

复现

1.环境搭建

这里使用vulnhub环境

目录:vulhub-master/nginx/CVE-2013-4547

首先正常上传一个png,png的内容如下

<?php
phpinfo();
?>



访问http://your-ip:8080/uploadfiles/CVE-2013-4547.gif11.php,修改11的ASCII编码[0x31][0x31][0x20][0x00]

即可发现PHP已被解析:

本作品采用《CC 协议》,转载必须注明作者和本文链接
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!
请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!