Apache换行解析漏洞

漏洞代号 CVE-2017-15715

漏洞原理

  • Apache 这次解析漏洞的根本原因就是这个 $ ,正则表达式中,我们都知道 $ 用来匹配字符串结尾位置.
  • $符号: 匹配输入字符串的结尾位置。如果设置了 RegExp 对象的 Multiline 属性,则 $ 也匹配 '\n' 或 '\r'。 要匹配 $ 字符本身,请使用 \$。 
  • 如果设置MULTILINE标示,就当作换符处理,如果不设置就当作一行文本处理

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

漏洞复现

使用vulhub复现

拉取靶场

访问

尝试提交一个php文件

发现无法上传,但是这个apache换行解析漏洞是因为代码当中的配置错误,在配置文件中出现了以下代码:

<FilesMatch \.php$>

SetHandler application/x­httpd­php

</FilesMatch>

$符匹配‘/n’或者是‘/r’,所以在我们上传文件后缀名为.php/n时,apache将自动将该文件解析为php文件

接下来使用burp suite抓包

对数据包就行修改,在1.php后面添加换行,因为提交方式是POST方式,所以要对换行符进行两次url编码

在burp suite中就可以直接编码,发包

返回200 ok

在靶场环境中访问我们的上传文件,注意访问的文件名为1.php%0A

漏洞修复

  • 升级到最新版本
  • 或将上传的文件重命名为为时间戳+随机数+.jpg的格式并禁用上传文件目录执行脚本权限
  • 获取文件名时用“去掉换行”的函数,比如 $_FILES['file']['name']
  • 在httpd.conf中加入其他正则表达式。
  • Apache 这次解析漏洞的根本原因就是这个 $ ,正则表达式中,我们都知道 $ 用来匹配字符串结尾位置.
  • $符号: 匹配输入字符串的结尾位置。如果设置了 RegExp 对象的 Multiline 属性,则 $ 也匹配 '\n' 或 '\r'。 要匹配 $ 字符本身,请使用 \$。 
  • 如果设置MULTILINE标示,就当作换符处理,如果不设置就当作一行文本处理
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值