Web安全 - 解析漏洞

一、原理

解析漏洞主要是一些特殊文件被Apache、IIS、Nginx等Web容器在某种情况下解释成脚本文件格式并得以执行而产生的漏洞。

二、Apache

1. 多后缀解析

一个文件名为 test.x1.x2.x3 的文件,Apache会从x3的位置往x1的位置开始尝试解析,如果x3不属于 Apache解析的扩展名,那么Apache会尝试去解析x2, 这样一直往前尝试,直到遇到一个能解析的扩展名为止。

例如:Web应用限制了php等敏感后缀,我们通过可以上传一个文件名为 test.php.jpg 的文件,访问时,Apache会因为无法解析jpg,而向前寻找可以解析的后缀,这时便找到php,那么按照php文件进行正常解析,从而使木马被执行。

2. 其他后缀解析

<FilesMatch ".+\.ph(p[345]?|t|tml)$">
    SetHandler application/x-httpd-php
</FilesMatch>

".+\.ph(p[345]?|t|tml)$" 该正则表达式匹配的不仅仅有php,还有php3、php4、php5、pht和phtml,这些都是Apache和php认可的php程序的文件后缀。如果网站仅对php进行了防护,那么我们可以改为这些不大常见的后缀,同样完成解析。

例如:test.php3 、 test.pt 、 test.ptml

3. .htaccess解析

htaccess文件是Apache服务器中的一个配置文件,它负责相关目录下的网页配置。通过htaccess文件,可以帮我们实现:网页301重定向、自定义404错误页面、改变文件扩展名、允许/阻止特定的用户或者目录的访问、禁止目录列表、配置默认文档等功能。
启用.htaccess,需要修改httpd.conf,启用AllowOverride,并可以用AllowOverride限制特定命令的使用。

如果在Apache中.htaccess可被执行.且可被上传.那可以尝试在.htaccess中写入:AddType application/x-httpd-php xxx ,这时上传.xxx后缀的文件,就会当成php解析。

或者

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

当Web应用匹配到名为 test.jpg 文件时,同样会当成php解析。

三、IIS

1. IIS 6.0

目录解析

目录名包含.asp .asa .cer这种字样,该目录下所有文件都被当做asp来进行解析
例如:在网站下创建文件夹名字为.asp、.asa的文件夹,其目录内的任何扩展名的文件都被IIS当做asp文件来解析并执行。test.asp/test.jpg

文件解析

服务器默认不解析;后面的内容,因此test.asp;.jpg便被解析成asp文件
例如:test.asp;.jpg

文件类型解析

IIS6.0 默认的可执行文件除了.asp,还包含这三种:.asa .cdx .cer
例如:test.asa 、 test.cdx 、 test.cer

2. IIS 7.0 / IIS 7.5

由于PHP配置文件中,开启了 cgi.fix_pathinfo ,与下面Nginx相同。

四、Nginx

Nginx默认是以CGI的方式支持PHP解析的,普遍的做法是在Nginx配置文件中通过正则匹配设置SCRIPT_FILENAME。当访问www.xxx.com/phpinfo.jpg/1.php这个URL时,$fastcgi_script_name会被设置为“phpinfo.jpg/1.php”,然后构造成SCRIPT_FILENAME传递给PHP CGI,但是PHP为什么会接受这样的参数,并将phpinfo.jpg作为PHP文件解析呢?
这就要说到fix_pathinfo这个选项了。如果开启了这个选项,那么就会触发在PHP中的如下逻辑:
PHP会认为SCRIPT_FILENAME是phpinfo.jpg,而1.php是PATH_INFO,所以就会将phpinfo.jpg作为PHP文件来解析了。

Nginx的解析漏洞实质上是实际上是PHP CGI解析漏洞。
这不是Nginx特有的漏洞,在IIS7.0、IIS7.5、Lighttpd等Web容器中也经常会出现这样的解析漏洞。

例如:
可以在后面添加/任意文件名.php 的解析漏洞,比如原本文件名是 test.jpg,可以添加为test.jpg/x.php 进行解析攻击。

还有一种是对低版本的 Nginx 可以在任意文件名后面添加 %00.php 进行截断解析攻击。
例如:test.php%00.jpg
00截断的两种具体操作方式:
 1、更改文件名为xxx.php .jpg,在Burpsuit的Hex选项中将空格对应的20改为00。

 2、更改文件名为xxx.php%00.jpg,在Burpsuit中将%00进行右键转换->URL->URL-decode。
图片描述

用copy命令制作图片木马:copy 1.jpg/b+1.php/a 2.php (/b表示二进制文件,/a表示ASCII码文件)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值