• 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 后缀,通过上面的配置文件中我们可以看出,可以利用换行符来绕过过滤。

    
    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 {
    
    ?>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

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

    漏洞修复

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

    总结

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

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

  • 相关阅读:
    Dubbo和SpringCloud对比
    26-k8s的附加组件-图形化管理工具dashboard
    gcexcel-java-5.2.5 Crack update in 2022-11-28
    [PyTorch][chapter 58][强化学习-1]
    如何在vscode编辑器中实时查看代码git记录(被谁修改、自己什么时候修改)
    “鼓浪屿元宇宙”,能否成为中国文旅产业的“升级样本”
    元宇宙持续升温,金蝶推出数字员工破圈而来
    Java项目源码SSM宿舍管理系统|寝室
    求职简历的书写技巧
    加解密技术
  • 原文地址:https://blog.csdn.net/shinygod/article/details/128005964