持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第六天,点击查看活动详情
IIS5.x/6.0解析漏洞利用
目录解析
网站下文件夹为.asp、.asa的文件夹,其目录内的任何文件扩展名都会被当成asp文件来执行
目录:aaaa.asp
文件名:1.jpg则会被当为asp文件解析执行
文件解析
IIS6.0下,分号后面的不被解析 1.asp;.jpg = 1.asp
畸形后缀名解析
IIS6.0默认的可执行文件除了asp还有以下三种(特定情况下会被解析):
1.asa
1.cer
1.cdx
IIS7.0/ IIS7.5 畸形解析漏洞
在默认开启Fast-CGI情况下,上传1.jpg内容为:,然后访问1.jpg/.php,在这个目录下回生成一句话shell.php
nginx <8.03空字节代码执行漏洞
在图片中嵌入php代码然后访问1.jpg.php
Apache解析漏洞
Apache是从右到左开始判断解析,如果为不可识别解析,再往左判断 1.php.owf.rar,.owf和.rar这两种后缀名是Apache不可识别解析的,所有整个文件就会被解析为1.php 如何判断是不是合法的后缀就是这个漏洞的利用关键,测试时可以尝试上传一个hahaha.php.rara.jpg.png…(把知道的常见后缀都写上…)去测试是否是合法后缀
Nginx文件名逻辑漏洞(CVE-2013-4547)
正常情况下(关闭pathinfo的情况下),只有.php后缀的文件才会被发送给fastcgi解析。而存在CVE-2013-4547的情况下,我们请求 1.gif[0x20][0x00].php ,这个URI可以匹配上正则 .php$, 可以进入这个Location块;但进入后,由于fastcgi在查找文件时被\0截断,Nginx却错误地认为 请求的文件是1.gif[0x20],就设置其为SCRIPT_FILENAME的值发送给fastcgi。
fastcgi根据SCRIPT_FILENAME的值进行解析,最后造成了解析漏洞。
所以,我们只需要上传一个空格结尾的文件,即可使PHP解析之。
其他
Windows环境下,1.jpg空格 或者 1.jpg. 这两类文件是不允许存在的,默认去除空格或点,所以可以抓包在文件名后加一个空格或者点绕过黑名单 Apache下,.htaccess可以被执行,如果没有限制上传.htaccess文件,则可以上传.htaccess文件,内容为:SetHandler application/x-httpd-php,然后再上传shell.jpg的马,会被解析为shell.php