解析漏洞总结

0x00 服务器解析漏洞

服务器解析漏洞一般是服务器自身或扩展组件带来的漏洞,配合文件上传等漏洞就会产生很大的危害。

我们这里整理常见的服务器apache、IIS、nginx的解析漏洞。

0x01 apache

一、不可识别解析

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

apache版本在以下范围内

  • Apache 2.0.x <= 2.0.59
  • Apache 2.2.x <= 2.2.17
  • Apache 2.2.2 <= 2.2.8

都可以通过上传xxx.php.rar或xxx.php+任意无法解析后缀解析为php。

二、配置问题

  • 1.如果在 Apache 的 conf 里有这样一行配置 AddHandler php5-script .php 这时只要文件名里包含.php 即使文件名是 test2.php.jpg 也会以 php 来执行。
  • 2.如果在 Apache 的 conf 里有这样一行配置 AddType application/x-httpd-php .jpg 即使扩展名是 jpg,一样能以 php 方式执行。

三、罕见后缀

Apache配置文件中会有.+.ph(p[345]?|t|tml)此类的正则表达式,被当php程序执行的文件名要符合正则表达式。也就是说php3,php4,php5,pht,phtml等文件后缀也是可以被当作php文件进行解析的。

四、后缀包含换行符\x0A

CVE-2017-15715:Apache 2.4.0-2.4.29中,上传一个后缀末尾包含换行符的文件,来绕过FilesMatch。绕过FilesMatch不一定能被PHP解析。

0x02 IIS

一、目录解析

在IIS-6.0的版本,在.asp或.asa文件夹下的所有类型后缀文件全部解析为.asp文件。

存在数据库备份功能的系统并且备份路径可控的话经常会出现这个问题。

二、文件解析

在IIS-6.0的版本,服务器默认不解析;后面的内容,所以xxx.asp;.jpg会被解析成xxx.asp。

三、其他解析类型

在IIS6.0的版本,如下几种文件类型也会被执行。

  • xxx.asa
  • xxx.cer
  • xxx.cdx

四、php-cgi漏洞

在IIS-7.0和IIS-7.5的版本,在php配置文件中,开启cgi.fix_pathinfo,然后上传一个1.jpg的一句话木马文件。然后用菜刀访问1.jpg/.php即可连接一句话木马。

0x03 nginx

一、低版本nginx

空字节代码执行漏洞:nginx 0.5.x、nginx 0.6.x、Nginx 0.7-0.7.65、Nginx 0.8-0.8.37中可以通过在任意文件名后面增加%00.php解析为php,如1.jpg%00.php

二、php-cgi漏洞

和IIS的第四点相同,在php配置文件中,开启了cgi.fix_pathinfo,导致图片马1.jpg可以通过访问1.jpg/.php、1.jpg%00.php解析成php文件

0x04 windows解析漏洞

Windows操作系统中,文件名不能以空格或.开头,也不能以空格或.结尾。当把一个文件命名为以空格或.开头或结尾时,会自动地去掉开头和结尾处的空格和.。利用此特性,也可能造成文件解析漏洞

0x05 应对

  • 1.对于php-cgi漏洞,可以修改php.ini文件,将cgi.fix_pathinfo的值设置为0
  • 2.使用白名单匹配文件后缀名
  • 3.可以对上传后的文件固定后缀,并对之前的所有字符进行重命名

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!