解析漏洞汇总
※什么是解析漏洞?
简单的说,解析漏洞就是web容器将其他格式的文件解析为可执行脚本语言,攻击者可以利用这个特征去执行一些攻击行为。
IIS 解析漏洞
※使用IIS6.0的服务器,一般是Windows server 2003,解析语言是asp,不能解析aspx语言
IIS6.0 在解析文件时存在以下两个解析漏洞
目录解析:当建立 .asa ,.asp 格式的文件夹时,其目录下的任意文件都将被 IIS 当作 asp 文件来解析
后缀解析:在 IIS6.0 下,分号”;”后面的扩展名不会被解析,也就是说当文件为 *.asp;.jpg 时,IIS6.0 同样会以 ASP脚本来执行
默认解析:其他可执行文件格式
1 | *.asa |
此处可联系利用目录解析漏洞 /xx.asa/xx.jpg 或 /xx.cer/xx.jpg 或 xx.asa;.jpg
Apache 解析漏洞
在 Apache 1.x 和 Apache 2.x 中存在解析漏洞 , 但他们与 IIS 解析漏洞不同
Apache 在解析文件时有一个规则:
当碰到不认识的扩展名时,将会从后向前解析,直到碰到认识的扩展名位置,如果都不认识,则会暴露其源码,比如:
1 | test.php.rar.xx.aa |
Apache 首先会解析 aa 扩展名,如果不认识则接着解析 xx 扩展名,这样一直遍历到认识的扩展名为止,然后再将其进行解析
PHP CGI 解析漏洞
在PHP的配置文件中有一个关键的选项 [Fast-CGI]:cgi.fix_pathinfo=1 这个选项在某些版本是默认开启的,在开启时访问 url
比如:http://www.xxx.com/x.txt/x.php ,x.php 是不存在的文件,所以 php 将会向前递归解析,于是就造成了解析漏洞
由于这种漏洞常见于 IIS7.0 、 IIS7.5 、 Nginx 等 Web服务器,所以经常会被误认为是这些 Web服务器的解析漏洞
常用利用方法: 将一张图和一个写入后门代码的文本文件合并 将恶意文本写入图片的二进制代码之后,避免破坏图片文件头和尾
1 | copy xx.jpg/b + yy.txt/a xy.jpg |
经验之谈:php|php3|php5|phtml 多可被Apache解析
Nginx <8.03 空字节代码执行漏洞
在Fast-CGI关闭的情况下,Nginx <8.03依然存在解析漏洞
影响版本:0.5,0.6,0.7<=0.7.65,0.8<=0.8.37
Nginx 在图片中嵌入PHP代码 , 然后通过访问 xxx.jpg%00.php 可以执行其中的代码
其他
在 windows 环境下, xx.jpg[ 空格 ] 或 xx.jpg,这两类文件都是不允许存在的,若这样命名 windows 会默认除去空格或点, 攻击者可以通过抓包,在文件名后加一个空格或者点绕过黑名单
若上传成功,空格和点都会被 windows 自动消除,这样也可以 getshell
如果在 Apache 中 htaccess 可被执行,且可被上传。那可以尝试在 .htaccess 中写入 :
1 | SetHandlerapplication/x-httpd-php |
然后再上传名称为 shell.jpg 的 webshell, 这样 shell.jpg 就可解析为 php 文件