常见解析漏洞与修复

IIS

iis7.5解析漏洞

解析文件类型

  IIS6.0默认的可执行文件除了asp,还包含以下三种:
  *.asa
   *.cer
   *.cdx

IIS在解析文件时,主要有三个解析漏洞:

  1. 目录解析
  2. 文件解析
  3. 解析文件类型

目录解析:
原理:
当在网站下建立*.asp、*asa格式文件夹的时候,其目录下的任意文件都将被IIS当做asp文件来解析并执行。

利用:
例如创建目录 wooyun.asp,
那么/wooyun.asp/1.jpg将被当做asp文件来执行。

文件解析:
IIS7.5的漏洞与 nginx的类似,都是由于php配置文件中
开启了 cgi.fix_pathinfo,而这并不是 nginx或者iis7.5本身的漏洞。
PS: a.aspx.a; . a.aspx.jpg…pg

原理:
在IIS6.0下, 服务器默认不解析;号后面的内容
当文件为*.asp;1.jpg时,IIS6.0同样会以asp脚本来执行。

利用:
文件wooyun.asp;.jpg
会被服务器看成是wooyun.asp

修复方案
1.目前尚无微软官方的补丁,可以通过自己编写正则,阻止上传 xx.asp;.jpg类型
的文件名。
2.做好权限设置,限制用户创建文件夹。
3.针对IIS7.5解析漏洞修复方案,修改php.ini文件,将 cgi.fix_pathinfo的值设置为0
完成后请重启PHP和IIS

iis短文件名漏洞
成因:
为了兼容16位MS-DOS程序,Windows为文件名较长的文件(和文件夹)生成了对应的windows 8.3 短文件名。
短文件名特征:
只有前六位字符直接显示,后续字符用~1指代。其中数字1还可以递增,如果存在多个文件名类似的文件(名称前6位必须相同,且后缀名前3位必须相同)。
后缀名最长只有3位,多余的被截断。
危害:
攻击者可以利用“~”字符猜解或遍历服务器中的文件名;
对IIS服务器中的.Net Framework进行拒绝服务攻击。

利用“~”字符猜解暴露短文件/文件夹名。
使用通配符”*” 和 “?”发送一个请求到iis,当IIS接收到一个文件路径中包含”~”的请求时,它的反应是不同的.基于这个特点,可以根据http的响应区分一个可用或者不可用的文件。

因此通过此种方式,我们能够快速遍历网站的敏感文件~(一般是备份文件)

  1. 访问构造的某个存在的短文件名,会返回404
  2. 访问构造的某个不存在的短文件名,会返回400

举例说明:
如果一个IIS6网站http://www.xxx.com,用它来进行的短文件猜解方法。(注意一定要支持aspx,可用x.aspx判断)
请求 http://www.xxx.com/a*~1*/.aspx 返回404,就说明存在a开头的一个axxx.xxx的文件(其中xxx.xxx还需要进一步确定判断是什么字母,什么后缀)。
请求http://www.xxx.com/a*~1*/.aspx 返回400,说明不存在a开头的一个axxx.xxx的文件(其中xxx.xxx还需要进一步确定判断是什么字母,什么后缀)。

Apache

Apache 1.x和 Apache 2.x中存在解析漏洞,但是他们与IIS解析漏洞不同。

原理:
Apache解析文件的规则是:从右到左开始判断解析如果扩展名为不可识别文件
解析就再往左判断,直到碰到认识的扩展名为止,如果都不认识,则会露其源码
利用:
test.php.owf.rar和 test.rar.owf这两种后是 apache不可识别的解析,apache就
会吧test.php.owf.rar解析成php。
如何判断是不是合法的后缀就是这个漏洞的利用关键,测试时可以尝试上传一个
test.php.rara.jpg.png…(把你知道的常见后缀名都写上…)去测试是否是合法后缀

修复
1.apache配置文件,禁止php.这样的文件执行,配置文件里面加入
<Files ~ “.(php.|php3.)”>
Order ALLow,Deny
Deny from all

2.用伪静态能解决这个问题,重写类似.php.*这类文件,打开apache的httpd.conf找到
LoadModule rewrite_module modules/mod_rewrite.so
把#号去掉,重启 apache,在网站根目录下建立 .htaccess文件代码如下

Apache认识哪些扩展名
Apache安装目录下”/conf/mine.types”文件中有详细扩展列表

Php cgi (nginx)

php cgi解析漏洞
Nginx是一款高性能的web服务器,通常用来作为php的解析容器, nginx也曾
经被曝过两个“解析漏洞”。
在2008年5月,国内著名的安全团队805EC发现了这个漏洞。但是后面专业人
员却发现,这不是Ngin特有的漏洞,在IIS7.0, IIS7.5 Lighttpd等Web容器中也
经常会出现这样的解析漏洞。
后面人们慢慢发现,这种解析漏洞其实是 php cgi的漏洞。

在php的配置文件中有一个关键的选项:  cgi.fi: x_pathinfo。这个

选项在某些版本中是默认开启的,在开启的时候访问URL
比如:在某些使用Nginx的网站中,访问
http://www.xxser.com/x.txt/x.php,其中这个x.php是不存在的文件
或者访问http://www.xxser.com/1.jpg/1.php,这个1.php也是不存在的,
此时的1.jgp会被当作PHP脚本来解析
这就意味着攻击者可以上传合法的“图片”(图片木马)然后在
URL面加上“/xxx.php”,就可以获得网站的 Webshell。
所以php会向前递归解析,于是就造成解析漏洞,可以说这个漏洞
跟nginx的关系并不是很大,但是由于nginx与php配合很容易造成这
种解析漏洞,所以php cgi漏洞通常被认为是nginx解析漏洞。

Nginx<8.03漏洞
原理
nginx默认是以CGI的方式支持PHP解析的,普遍的做法是在 Nginx配置文件中
通过正则匹配设置 SCRIPT_FILENAME。
当访可http://192.1681.103/ phpinfo. jpg/1.php这个URL时
f a s t c g i s c r i p t n a m e 会 被 设 置 为 “ p h p i n f o . j p g / 1. p h p ” , 然 后 构 造 成 S C R I P T F I L E N A M E 传 递 给 P H P C G I , 如 果 P H P 中 开 启 了 f i x p a t h i n g 这 个 选 项 P H P 会 认 为 S C R I P T F I L E N A M E 是 p h p i n f o . j p g , 而 1. p h p 是 P A T H I N F O , 所 以 就 会 将 p h p i n f o . j p g 作 为 P H P 文 件 来 解 析 了 。 危 害 利 用 该 漏 洞 , 政 击 者 可 以 将 任 意 文 件 类 型 作 为 P H P 文 件 解 析 , 攻 击 者 通 常 利 用 该 漏 洞 来 获 取 到 一 个 W e b s h e l l 修 复 方 案 1. 修 改 p h p . i n i 文 件 , 将 c g i . f i x p a t h i n f o 的 值 设 置 为 0 。 完 成 后 重 后 P H P 和 N G I N X 2. 在 N g i n x 配 置 文 件 中 添 加 如 下 代 码 : i f ( fastcgi_script_name会被设置为 “phpinfo.jpg/1.php”,然后构造成 SCRIPT_FILENAME传递给 PHP CGI,如果PHP中开启了 fix_pathing这个选项 PHP会认为 SCRIPT_FILENAME是 phpinfo.jpg,而1.php是 PATH_INFO,所以就 会将 phpinfo.jpg作为PHP文件来解析了。 危害 利用该漏洞,政击者可以将任意文件类型作为PHP文件解析,攻击者通常利用该漏 洞来获取到一个 Webshell 修复方案 1.修改php.ini文件,将 cgi.fix_pathinfo的值设置为0。完成后重后PHP和NGINX 2.在 Nginx配置文件中添加如下代码: if( fastcgiscriptnamephpinfo.jpg/1.php,SCRIPTFILENAMEPHPCGI,PHPfixpathingPHPSCRIPTFILENAMEphpinfo.jpg,1.phpPATHINFO,phpinfo.jpgPHP,PHP,Webshell1.php.ini,cgi.fixpathinfo0PHPNGINX2.Nginx:if(fastcgi_script_name~…*/.*php){
return 403;
}

Websphere

其他
在 windows环境下, xx. jpg[空格]或xx.jpg.这两类文件都是不允许存在的若这样命名, windows会默认除去空格或点,黑客可以通过抓包,在文件名后加一个空格或者点绕过黑名单.若上传成功,空格和点都会被 windows自动消除这样也可以 getshell

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值