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

漏洞环境

Vulhub

影响版本

Apache 2.4.0~2.4.29

漏洞简介

Apache HTTPD 是一款 HTTP 服务器,其 2.4.0~2.4.29 版本中存在一个解析漏洞,在解析 PHP 时,1.php\x0A 将被按照 PHP 后缀进行解析。

解析漏洞是指服务器应用程序会把某些人为构造的后缀文件解析为脚本文件,从而导致侵入者获取不应该拥有的权限,大部分解析漏洞都是服务器应用程序本身产生的。

漏洞产生

我们就以 Vulhub 里面的环境为例。

读取配置文件,前三行的意思是把以 .php 结尾的文件当成 PHP 文件执行。问题就在它使用的是 $ 符号匹配的,我们都知道这个符号在正则表达式中的意思是匹配字符串的末尾,是会匹配换行符的,那么漏洞就这样产生了。

配置目录:/etc/apache2/conf-available/docker-php.conf
在这里插入图片描述

漏洞复现

我们可以看到它过滤了一些 php 后缀,通过上面的配置文件中我们可以看出,可以利用换行符来绕过过滤。

<?php
if(isset($_FILES['file'])) {
    $name = basename($_POST['name']);
    $ext = pathinfo($name,PATHINFO_EXTENSION);
    if(in_array($ext, ['php', 'php3', 'php4', 'php5', 'phtml', 'pht'])) {
        exit('bad file');
    }
    move_uploaded_file($_FILES['file']['tmp_name'], './' . $name);
} else {

?>

bp 上传文件抓包并在文件名后面增加一个 0a 也就是换行符。
在这里插入图片描述在这里插入图片描述
最后访问 shell.php%0a 执行命令即可。
在这里插入图片描述

漏洞修复

  1. 更新到最新版本。
  2. 给文件重新命名且限制上传文件的执行权限。

总结

其实这个漏洞还需要其他条件:
1、如果获取文件名的是 $_FILES['file']['name'] ,而不是 $_POST['name'],这个漏洞就不会产生,因为前者会自动去掉换行。
2、服务器要是 linux,因为 windows 不支持带有换行符后缀的文件。

总的来说,这个漏洞用处不是很大,基本上不会用到,但了解一下总归是好的。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值