1.准备:
1.1复现环境
漏洞环境:vulnhub靶场
工具准备:python3
1.2环境启动
进入vulnhub目录下的nginx目录,进入CVE-2013-4547目录
cd /home/hbesljx/vulhub/nginx/CVE-2013-4547
docker-compoe启动漏洞环境
docker-compose up -d
访问靶机的8080端口。出现nginx上传文件的界面即为开启成功!
2.概念说明
2.1 Nginx是什么
Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器
3.漏洞原理
正常情况下只有.php后缀的文件才会交给fastcgi解析,但是1.gif%20%00.php也满足了.php后缀,会被Nginx交给fastcgi解析,但是Nginx会识别%00截断符,因此会将1.gif当作是要解析的文件而交给fastcgi解析。因此我们上传一个1.gif文件,然后访问1.gif%20%00.php文件即可执行1.gif中的php代码。
4.漏洞复现
4.1 上传gif文件并抓包
修改文件名为"1.gif " 注意gif后有一个空格
上传成功
4.2 访问1.gif
访问靶机的/uploadfiles/1.gif文件,构造url为http://192.168.133.140:8080/uploadfiles/1.gifqq.php
用burpsuite抓包后在Hex(十六进制)中修改qq为20 00,代表空格和截断。
成功解析到1.gif的php代码如下!