解析漏洞

Posted by Tattoo on 2019-02-26
Estimated Reading Time 3 Minutes
Words 835 In Total
Viewed Times

解析漏洞

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

IIS 7.0/7.5 /Nginx + PHP fastcgi取值配置错误解析漏洞

漏洞描述:
Nginx默认是以CGI的方式支持PHP解析的,普遍的做法是在Nginx配置文件中通过正则匹配设置SCRIPT_FILENAME。当访问 http://127.0.0.1/phpinfo.jpg/1.php 这个URL时,$fastcgi_script_name会被设置为“phpinfo.jpg/1.php”,然后构造成SCRIPT_FILENAME传递给PHP CGI。如果PHP中开启了cgi.fix_pathinfo这个选项,所执行文件不存在,会继续找上一级文件是否存在。PHP会认为SCRIPT_FILENAME是phpinfo.jpg,而1.php是PATH_INFO,所以就会将phpinfo.jpg作为PHP文件来解析了。所执行文件不存在,会继续找上一级文件是否存在。

漏洞危害:
WebServer Fastcgi配置不当,会造成其他文件(例如css,js,jpg等静态文件)被当成php脚本解析执行。攻击者可以上传合法的图片马,然后在URL后面加上“/xxx.php”,就可以获得网站的WebShell。当用户将恶意脚本webshell改为静态文件上传到webserver传递给后端php解析执行后,会让攻击者获得服务器的操作权限,攻击者通常利用该漏洞来获取到一个WebShell。

修复方案:
在目前即使使用最新版本的IIS/Nginx + PHP依然能配置出这种解析漏洞。修改php.ini文件,将cgi.fix_pathinfo的值设置为0

Nginx文件名逻辑漏洞(CVE-2013-4547)

影响版本:
Nginx 0.8.411.4.3 / 1.5.01.5.7
上传一个以空格(%20)为结尾的文件,例如”abcde.jpg “

漏洞描述:
存在漏洞时,%00为截断符\0,截断了后面的字符,Nginx将abcde.jpg%20当做了脚本文件名,当访问abcde.jpg%20%00.php时,会将刚上传的”abcde.jpg “文件,当做PHP执行

注意:我们想要的是未经编码的空格和截止符(\0),在抓包改包的时候对其进行编码转换

Apache解析漏洞(配置错误)

漏洞描述:
如果在Apache的conf文件中有如下配置
AddHandler application/x-httpd-php .php
Apache是从右到左开始判断解析,如果为不可识别的解析,就再往左判断

当上传abcde.php.jpg文件,Apache识别到jpg后缀,但不能解析,继续往左判断,识别到php,apache就会把abcde.php.jpg解析成php.则abcde.php.jpg也会被当做php去执行

如果在.htaccess中有如下配置,可以将扩展名.xxx当做php执行
AddType application/x-httpd-php xxx
任意配置,一种留后门比较好的方法

IIS 5.x/6.0解析漏洞

两种利用方式

1.文件解析
上传文件名:abcde.asp;.jpg
服务器默认不解析分号后面的内容,因此abcde.asp;.jpg被当做了abcde.asp文件解析

2.目录解析
向xxx.asp目录下面上传abcde.jpg
xxx.asp/abcde.jpg
服务器会将xxx.asp目录下面的文件都当做asp文件解析,前提是有一个名为.asp、.asa的文件夹,其目录内的任何扩展名的文件都被IIS当作asp文件来解析并执行

被IIS当做asp程序执行的后缀有:.asp、.asa、.cer、.cdx


If you like this blog or find it useful for you, you are welcome to comment on it. You are also welcome to share this blog, so that more people can participate in it. If the images used in the blog infringe your copyright, please contact the author to delete them. Thank you !