题目案列
题目:https://mozhe.cn/bug/detail/Umc0Sm5NMnkzbHM0cFl2UlVRenA1UT09bW96aGUmozhe
做法:
- 1.点开链接,尝试上传各种文件,发现上传jpg文件成功.
- 2.编写一句话木马文件(使用带asp小马的jpg图片),上传,用burp抓包,修改上传路径,将upload修改为test.asp(也可以是其他名字)
- 3.得到一个有解析漏洞的目录以及包含一句话木马的路径,返回地址:test.asp/xxxxxxx.jpg
- 4.用菜刀连接找到key文件,即可.
总结:
IIS默认后缀
IIS将其他后缀的文件都解析为.asp文件.
可能被IIS当做asp程序执行的后缀有:
1 | .asp |
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和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文件。