Web中常见的解析漏洞

解析漏洞常见于IIS、Apache、Nginx这类的中间件对应版本存在的解析问题,存在的问题都在于中间件。

一、IIS5.X-6.X解析漏洞

1、目录解析

在IIS 6.0版本中有个目录解析漏洞,该漏洞的问题存在于如果你在网站目录中创建一个*./asp、.asa的文件夹,那么你上传的任何文件比如一个jpg,他也会当时做asp脚本执行*/asp/1.jpg,内容是<%eval request("chopper")%>,那么可以通过菜刀连接。

2、文件解析

在IIS 6.0中的分号在解析过程中会将分号后面的内容舍弃掉,比如上穿a.asp;jpg,执行的是a.asp而且jpg可以绕过图片验证。

同时如果上传没有限制这些:*.asa、*.asp,*.cer;*.cdx文件格式,那么上传的shell同样会被IIS 6.0进行解析。

二、IIS 7.0/IIS 7.5/ Nginx <8.03畸形解析漏洞

这个解析漏洞其实是PHP CGI的漏洞,在PHP的配置文件中有一个关键的选项cgi.fix_pathinfo在本机中位于C:wampbinphpphp5.3.10php.ini,默认是开启的,当URL中有不存在的文件,PHP就会向前递归解析。

IIS 7.0/7.5,默认 Fast-CGI 开启。如果直接在 url 中图片地址(*.jpg)后面输入/*.php,会把正常图片解析为 php 文件。1.jpg/1.php

nginx<8.03的中间件,上传一个名字为1.jpg,内容为<?PHP fputs(fopen('shell.php','w'),'<?php eval($_POST[cmd])?>');?>的文件,然后访问1.jpg/.php,在这个目录下就会生成一句话木马 shell.php或者直接访问1.jpg/.php,就会被以PHP方式解析。

三、Nginx空字节漏洞

 影响版本:0.5、0.6、0.7<=0.7.65、0.8<= 0.8.37 <8.03版本

 

在Fast-CGI关闭的情况下,Nginx <=0.8.37 依然存在解析漏洞

当Fast-CGI执行php时在一个文件路径(/xx.jpg)后面加上%00.php会将 /xx.jpg%00.php 解析为 php 文件。

www.xxxx.com/UploadFiles/image/1.jpg/1.php
www.xxxx.com/UploadFiles/image/1.jpg%00.php
www.xxxx.com/UploadFiles/image/1.jpg/%20\0.php

四、Apache解析漏洞(1.x、2.x

Apache 是从右到左开始判断解析,如果为不可识别解析,就再往左判断,比如 sec.php.owf.rar “.owf”和”.rar” 这两种后缀是apache不可识别解析,apache就会把sec.php.owf.rar解析成php。

如何判断是不是合法的后缀就是这个漏洞的利用关键,测试时可以尝试上传一个sec.php.rara.jpg.png…(把你知道的常见后缀都写上…)去测试是否是合法后缀。

五、其他

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

 

如果在Apache中.htaccess可被执行,且可被上传,那可以尝试在.htaccess中写入:

<FilesMatch "sec.jpg"> SetHandler application/x-httpd-php </FilesMatch>

posted @ 2020-11-13 14:54  逆向菜狗  阅读(486)  评论(0编辑  收藏  举报