Nginx文件名逻辑漏洞(CVE-2013-4547)
漏洞说明
影响版本:Nginx 0.8.41 ~ 1.4.3 / 1.5.0 ~ 1.5.7
我们只需要上传一个空格结尾的文件,即可使PHP解析之。
我们可以请求如下URI:/test[0x20]/../admin/index.php
,这个URI不会匹配上location后面的/admin/
,也就绕过了其中的IP验证;但最后请求的是/test[0x20]/../admin/index.php
文件,也就是/admin/index.php
,成功访问到后台。(这个前提是需要有一个目录叫test
:这是Linux系统的特点,如果有一个不存在的目录,则即使跳转到上一层,也会爆文件不存在的错误,Windows下没有这个限制)
漏洞测试
启动漏洞环境:
环境启动后,访问http://your-ip:8080/
即可看到一个上传页面。
这个环境是黑名单验证,我们无法上传php后缀的文件,需要利用CVE-2013-4547。我们上传一个1.gif
,注意后面的空格:
访问http://your-ip:8080/uploadfiles/1.gif[0x20][0x00].php
,即可发现PHP已被解析:
上传一个图片test2.jpg空格 后面加一个空格