IT学习网 - 爱学习 - 最具影响力综合资讯网站 -- 中国IT界的领航者!
热门关键字:      88888  as  xxx
站外
广告
站外
广告

SSH 命令注入漏洞(CVE-2017-1000117)分析

发布时间:2017-08-17 13:49文章来源:互联网文章作者: 佚名点击次数:
0x01 漏洞概述 恶意人员可以通过巧妙构造ssh://链接,让受害人在执行程序等情况下访问该恶意链接,从而达到命令执行的目的。该链接可以被放在 git项目的 .gitmodules 文件下,这样当受害人对一个项目进行 git clone --recurse-submodules 操作时,就会引发安

0x01 漏洞概述

恶意人员可以通过巧妙构造“ssh://…”链接,让受害人在执行程序等情况下访问该恶意链接,从而达到命令执行的目的。该链接可以被放在 git项目的 .gitmodules 文件下,这样当受害人对一个项目进行

git clone --recurse-submodules

操作时,就会引发安全问题。

360CERT进行了紧急分析,目前该分析报告仅以Git为例,但漏洞影响包括但不限于Git,SVN,CVS,HG,Gitlab,GithubDesktop,SourceTree等。

0x02 漏洞攻击面影响

影响面

该漏洞主要由“ssh://…”链接造成,如Git,SVN,CVS,HG等工具,在解析SSH链接的时候都会触发这个漏洞。此外,若是其他程序在解析SSH链接的时候,不做相应的处理,就会触发该漏洞。

经过360CERT研判后确认,漏洞风险等级高,影响范围广。

影响版本

Versions prior to 2.14.1 of the Git

修复版本

Git v2.14.1

0x03 漏洞详情

技术细节

该漏洞主要由于SSH链接在hostname部分,若是用“-”开头,那么会导致ssh命令将hostname误认为这是一个选项。因此,我们可以利用“-oProxyCommand”选项来达到命令执行的目的。

在进行git clone 时候会调用到git/connect.c中

struct child_process *git_connect(int fd[2], const char *url,const char *prog, int flags)

函数。其接受到的参数url为命令中“git clone xxx://xxxxxxxxxx/xx(.git)”的xxx://xxxxxxxxxx/xx(.git)部分。在该函数中会对传入的这个字符串进行parse,提取其协议部分。在满足协议为ssh://的时候会进入该函数的else部分。

\

然后根据下面的流程调用本地的ssh

\

首先获得本地的ssh路径,然后push进conn->args

然后获得url中ssh_host部分再拼接路径

最后调用start_command函数进行命令执行

start_command的定义在git/run-command.c

int start_command(struct child_process *cmd)

\

将传入的cmd经过处理赋值给argv

\

经过execve这个函数进行命令执行。但是在这个这个命令执行的内容是 “/usr/bin/ssh `ssh_host` path”而ssh命令的-o参数在一定程度上是可以执行命令的

例如

ssh -oProxyCommand=gnome-calculator xxx

将会在本地打开gnome的计算器

所以如果我们在clone 操作的时候将连接指定为

git clone ssh://-oProxyCommand=gnome-calculator/cert

将取得同样的命令执行的效果

漏洞修复

在v2.14.1的commit中,可以看到git_connect函数中执行之前对ssh_host进行了验证

\

验证内容为新增的这个函数

\
SSH 命令注入漏洞(CVE-2017-1000117)分析
本文由 IT学习网 整理,转载请注明“转自IT学习网”,并附上链接。
原文链接:http://www.ourlove520.com/Article/diannao/wangluo/1047888.html

标签分类:

上一篇:上一篇:Office CVE-2017-8570远程代码执行漏洞复现
下一篇: 下一篇:没有了
无觅关联推荐,快速提升流量