Cve-2017-1000117
背景:
恶意的第三方可以向不知情的受害者提供精心设计的“ssh:// …”URL,并且尝试访问该URL可能导致受害者机器上存在的任何程序被执行。 这样的URL可以放在恶意项目的.gitmodules文件中,并且可以欺骗不知情的受害者运行“git clone --recurse-submodules”来触发漏洞。
原理:
恶意人员可以通过巧妙构造“ssh://…”链接,让受害人在执行程序等情况下访问该恶意链接,从而达到命令执行的目的。该链接可以被放在 git项目的.gitmodules文件下,这样当受害人对一个项目进行git clone --recurse-submodules操作时,就会引发安全问题。
以复现用的poc的仓库为例,结构如下
.gitmodule内容如下
该漏洞主要由于SSH链接在hostname部分,若是用“-”开头,那么会导致ssh命令将hostname误认为这是一个选项。因此,我们可以利用“-oProxyCommand”选项来达到命令执行的目的。
Poc要执行的命令在payload中
可以看到若命令执行成功,则会在 /var/www/html 目录下生成 vul 文件,内容为 id 命令的执行结果
复现:
查看git版本,是存在漏洞的版本
加上–recursive进行git clone
可以看到在对应路径下生成了vul文件,其内容为id命令的回显
流量:由于git走的是ssh的22端口,抓到的流量如下,是加密过的,暂时没有方案