Sploitus

Exploit for POC

kitploit · 2026-09-10

Exploit Code

MARKDOWN67 lines
## https://sploitus.com/exploit?id=KITPLOIT:TOOLS-GITHUB-HARDIKMODHA-POC-CVE-2023-32681
# CVE-2023-32681 的 PoC

这是 CVE-2023-32681 的 Python 3 实现,影响使用 requests 版本 <= 2.30.0 的客户端。

根据 https://www.rfc-editor.org/rfc/rfc9110.html#section-15.4,每当服务器发出 3xx 重定向时,用户代理应修改请求,删除请求中的某些头部和字段。

这些字段的详细信息可参见 https://www.rfc-editor.org/rfc/rfc9110.html#section-15.4-5。针对该 CVE,我在此高亮显示了相关部分。

![image](https://assets.kitploit.com/production/public/readmes/26350/4a12ef7fba6017e324ce13ab7a9d3e714ae610f44f6659c4183a1147fac77aa1.png)

requests 版本 <= 2.30.0 在处理到 "https" 的重定向时没有移除 "Proxy-Authorization" 头部,从而导致代理凭证泄露给了重定向目标服务器。

更多详细信息可参见:

  * https://vulners.com/cve/CVE-2023-32681
  * https://security.snyk.io/vuln/SNYK-PYTHON-REQUESTS-5595532



## 前置条件

  * 用于 HTTP(S) 服务器的有效证书集。您可以使用 mkcert 在本地生成证书。
  * Go v1.19
  * Python 3.x
  * virtualenv(可选)



## 概述

  1. 用 Go 实现的代理服务器。它在端口 8080 启动一个代理服务器,并需要基本认证。为 PoC 目的,代码中硬编码了用户名和密码。
  2. 用 Go 实现的 HTTP(S) 服务器。它启动了两个服务器: 
     * 重定向服务器监听端口 443,另一个回声服务器监听端口 4431。
     * 重定向服务器定义了一个路由 `/redirect`,将流量重定向到运行在 4431 的第二个服务器。
     * 回声服务器定义了一个路由 `/echoHeaders`。该路由将收到的请求头部返回给客户端。
  3. PoC Python 脚本。它向运行在端口 443 的重定向服务器发出一个经过代理的请求,并打印服务器返回的响应。
  4. 如果响应包含 `Proxy-Authorization` 头部,则说明 `requests` 版本存在 "CVE-2023-32681" 漏洞。



## 步骤

  1. 克隆此仓库。
  2. 更新 `server/main.go` 中的 `certFile` 和 `keyFile` 变量。
  3. 通过运行命令 `go run server/main.go` 启动 HTTP(S) 服务器。这将启动两个服务器,分别监听端口 443 和 4431。
  4. 通过运行命令 `go run proxy/main.go` 启动代理服务器。这将启动监听端口 8080 的代理服务器。
  5. 安装运行 Python 脚本所需的依赖:`pip3 install -r script/requirements_request_2_30_0.txt`
  6. 执行 PoC 脚本:`python3 script/poc.py`,并观察输出。您会看到服务器在响应中返回了 "Proxy-Authorization" 头部。 服务器也会在日志中打印收到的头部。
  7. 现在,将 requests 版本升级到 >= 2.31.0,或者执行 `pip3 install -r script/requirements_request_2_31_0.txt`
  8. 再次执行 PoC 脚本:`python3 script/poc.py`,并观察输出。您会看到 "Proxy-Authorization" 头部现已不再出现在服务器响应中。 同样可以在服务器日志中验证。



## 截图

### 代理服务器

![代理服务器日志](https://assets.kitploit.com/production/public/readmes/26350/9e0b7c153544285ed4b82a9d739ef275d93acd30c458a89b6f6630f6aa0384b7.png)

### requests==2.30.0

![requests_2_30_0_脚本输出](https://assets.kitploit.com/production/public/readmes/26350/94d57947a3b0b225f5644ea416d871025fd1c1f5916c3739bf31e97542328553.png) ![requests_2_30_0_服务器输出](https://assets.kitploit.com/production/public/readmes/26350/311f0d0dabb2d58aeeb8aac1f80e02654dd2e5240a663b44a8e761ad44962c5d.png)

### requests==2.31.0

![requests_2_31_0_脚本输出](https://assets.kitploit.com/production/public/readmes/26350/1208b198fa91eac66a0e051b5724b46601970ab760d21763953f48a0a4861930.png) ![requests_2_31_0_服务器输出](https://assets.kitploit.com/production/public/readmes/26350/9921aaa2b91a78774042cda18f8385a32abead2f63b580a4d8c2f5e70dff9dea.png)