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

English

Apache HTTPD 是一个广泛使用的 HTTP 服务器,可以通过 mod_php 模块来运行 PHP 网页。在其 2.4.0 到 2.4.29 版本中存在一个解析漏洞,当文件名以 1.php\x0A 结尾时,该文件会被按照 PHP 文件进行解析,这使得攻击者可以绕过服务器的一些安全策略。

参考链接:

环境搭建

执行如下命令来编译并启动漏洞环境:

docker compose build
docker compose up -d

环境启动后,Apache 将运行在 http://your-ip:8080

漏洞复现

首先,尝试上传一个名为 1.php 的文件,可以看到上传被安全检查拦截:

上传被安全检查拦截

但是,如果我们在文件名 1.php 后面添加一个 \x0A(注意:必须是单独的 \x0A,而不是 \x0D\x0A),上传就会成功:

使用换行符成功上传

当访问上传的文件 /1.php%0a 时,虽然该文件没有正确的 PHP 扩展名,但它会被成功解析为 PHP 文件。这证实了解析漏洞的存在:

成功执行 PHP 代码