欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

重现Nginx解析漏洞的过程

最编程 2024-07-24 07:48:54
...

下载vulhub-master

网址是这个:GitHub - vulhub/vulhub: Pre-Built Vulnerable Environments Based on Docker-Compose

里面包含了所有漏洞的容器

下载完成后解压,将文件夹复制黏贴到kali里面

黏贴到哪都可以,自己找得到就行

使用

docker ps

查看正在运行的容器

可以看到目前没有在运行的容器

进入到下面的文件夹中运行容器

cd /root/Desktop/vulhub-master/nginx/nginx_parsing_vulnerability 

运行容器的指令如下

docker compose up -d

不记得了可以打开文件夹内的README.md文件获取

这里如果是第一次运行需要等待它安装

再次运行docker ps命令,可以看到此时有两个容器在运行,这两个容器就是本次实验需要用到的nginx解析漏洞的容器

运行

ifconfig

查看IP地址

可以看到eth0就是这台机器连通外网的网卡,记住它的IP地址

打开另一台机器登录这个IP地址

随便创建一个图片文件测试一下上传功能

可以看到上传功能没有问题,复制html之后的内容,将它们黏贴到IP地址后面

可以看到读取功能也没有问题

在网址末尾添加.php后

网页会显示乱码,然后显示php界面内容

到这里nginx解析漏洞就复现完成了,

原理就是nginx的文件解析出现了错误,在获得这个.php路径时他没有检查,一看是个.php后缀的文件就直接丢给php去处理了,php处理的时候发现 “诶?没有这个文件啊” 于是他就会继续向上找,就找到了.php的上级文件.jpg,然后把它当做php文件给处理了。具体的就看下面这个详细信息

Nginx 解析漏洞该解析漏洞是PHP CGI 的漏洞,在PHP的配置文件中有一个关键的选项cgi.fix_pathinfo默认开启,当URL中有不存在的文件,PHP就会向前递归解析 在一个文件路径(/xx.jpg)后面加上/xx.php会将/xx.jpg解析为 php 文件。

Nginx<=0.8.37 解析漏洞 在Fast-CGI关闭的情况下,Nginx <=0.8.37 依然存在解析漏洞,在一个文件路径(/xx.jpg)后面加上%00.php 会将 /xx.jpg%00.php 解析为php 文件。另一种手法:上传一个名字为test.jpg,包含以下内容文件:<?PHP fputs(fopen(‘shell.php’.‘w’),’<?phpeval($_POST[cmd])?>’);?> 然后访问test.jpg/.php 在这个目录下就会生成一句话木马shell.php。