Ywc's blog

iis文件解析漏洞

Word count: 741Reading time: 3 min
2018/07/02

题目案列

题目:https://mozhe.cn/bug/detail/Umc0Sm5NMnkzbHM0cFl2UlVRenA1UT09bW96aGUmozhe
做法:

  • 1.点开链接,尝试上传各种文件,发现上传jpg文件成功.
  • 2.编写一句话木马文件(使用带asp小马的jpg图片),上传,用burp抓包,修改上传路径,将upload修改为test.asp(也可以是其他名字)
  • 3.得到一个有解析漏洞的目录以及包含一句话木马的路径,返回地址:test.asp/xxxxxxx.jpg
  • 4.用菜刀连接找到key文件,即可.
    iis文件解析漏洞

总结:

IIS默认后缀

IIS将其他后缀的文件都解析为.asp文件.

可能被IIS当做asp程序执行的后缀有:

1
2
3
4
.asp
.cer
.asa
.cdx

IIS 5.x/6.0文件解析漏洞

1.目录解析

1
/xx.asp/xx.jpg   如:test.asp/test.jpg

即:新建一个名为”test.asp”的目录,该目录中的任何文件都被IIS当做asp程序执行(特殊符号是”/“)
2.文件解析

1
test.asp;.jpg

即分号后的不被解析,仍被IIS当做asp程序执行。

遇到php时文件解析问题

1
test.jpg/.php

即:若有文件test.jpg,访问时在其后面加/.php,便可以让iis把”test.jpg/.php”交给php,php”修理”文件路径“test.jpg/.php”得到”test.jpg”,该文件存在,便把改文件作为php程序执行了。下图所示,是在 IIS7.5+php5.3+FastCGI 下的测试情况:
iis文件解析漏洞
IIS和Nginx在这一点上是一样的,一看到URL中文件后缀是.php,便无论该文件是否存在,都直接交给php处理,而php又默认开启“cgi.fix_pathinfo”,会对文件路径进行“修理”,何谓“修理”?举个例子,当php遇到文件路径“/aaa.xxx/bbb.yyy/ccc.zzz”时,若“/aaa.xxx/bbb.yyy/ccc.zzz”不存在,则会去掉最后的“/ccc.zzz”,然后判断“/aaa.xxx/bbb.yyy”是否存在,若存在,则把“/aaa.xxx/bbb.yyy”当做文件“/aaa.xxx/bbb.yyy/ccc.zzz”,若“/aaa.xxx/bbb.yyy”仍不存在,则继续去掉“/bbb.yyy”,以此类推。

Windows操作系统文件命名规则

在windows环境下,xx.jpg[空格] 或xx.jpg. 这两类文件都是不允许存在的,若这样命名,windows会默认除去空格或点,黑客可以通过抓包,在文件名后加一个空格或者点绕过黑名单。

若上传成功,空格和点都会被windows自动消除,这样也可以getshell。

如果在Apache中.htaccess可被执行.且可被上传.那可以尝试在.htaccess中写入:

1
<FilesMatch "sec.jpg"> SetHandler application/x-httpd-php </FilesMatch>

然后再上传shell.jpg的木马,这样shell.jpg就可解析为php文件。

参考链接

https://blog.csdn.net/whatday/article/details/54798718

https://blog.csdn.net/wn314/article/details/77388337

CATALOG
  1. 1. 题目案列
  2. 2. IIS默认后缀
  3. 3. IIS 5.x/6.0文件解析漏洞
  4. 4. 遇到php时文件解析问题
  5. 5. Windows操作系统文件命名规则
  6. 6. 参考链接