漏洞复现篇——IIS7.0/7.5/Nginx的解析漏洞

漏洞原理
Nginx拿到文件路径(更专业的说法是URI)/test.jpg/test.php后,一看后缀是.php,便认为该文件是php文件,转交给php去处理。php一看/test.jpg/test.php不存在,便删去最后的/test.php,又看/test.jpg存在,便把/test.jpg当成要执行的文件了,又因为后缀为.jpg,php认为这不是php文件,于是返回“Access denied.”
这其中涉及到php的一个选项:cgi.fix_pathinfo,该值默认为1,表示开启。开启这一选项PHP可以对文件路径进行“修理”。举个例子,当php遇到文件路径“/1.jpg/2.txt/3.php”时,若“/1.jpg/2.txt/3.php”不存在,则会去掉最后的“/3.php”,然后判断“/1.jpg/2.txt”是否存在,若存在,则把“/1.jpg/2.txt”当做文件“/1.jpg/2.txt/3.php”,若“/1.jpg/2.txt”仍不存在,则继续去掉“/2.txt”,以此类推。

实验环境:

  • Windows Server 2008 R2 x64
  • IIS服务器
  • xampp-win32-5.6.28-1-VC11-installer(php环境)

模拟实验

1、安装xampp-win32-5.6.28-1-VC11-installer,一直下一步就可以了

在这里插入图片描述

2、安装IIS服务器,如图操作

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

3、安装完关闭防火墙

在这里插入图片描述
在这里插入图片描述

4、查看IP,看物理机是否能够访问

在这里插入图片描述
在这里插入图片描述

5、打开IIS服务器,点击处理程序映射

在这里插入图片描述

6、点击添加模块映射…依次填入*.php,FastCgiModule,C: \xampp\php\php-cgi. exe名称随意

在这里插入图片描述
注意:C:\xampp\php\路径下时,将右下角的文件类型改成exe
在这里插入图片描述

7、如图示找到php.ini文件,注意在选框中不显示后缀名

在这里插入图片描述
在这里插入图片描述

7、在IIS主目录里创建一个php文件,但此时后缀名隐藏了,要关闭隐藏功能

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

8、改完后缀名会有显示,然后用记事本打开此文件,写入<?php phpinfo();?>

在这里插入图片描述
在这里插入图片描述

8、在浏览器中输入192.168.70.143/1.php成功显示

在这里插入图片描述

9、在将后缀名改成png,不能正常显示,这时在1.png后加1.php成功显示

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

10、再拿大马做下实验

发布了58 篇原创文章 · 获赞 460 · 访问量 7万+

猜你喜欢

转载自blog.csdn.net/weixin_45728976/article/details/104373878