小編給大家分享一下惡意SSH鏈接導(dǎo)致命令執(zhí)行漏洞的示例分析,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
中牟網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián)公司,中牟網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為中牟近1000家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\成都外貿(mào)網(wǎng)站制作要多少錢,請(qǐng)找那個(gè)售后服務(wù)好的中牟做網(wǎng)站的公司定做!
前段時(shí)間,三款主流的源版本控制系統(tǒng)Git、Subversion (svn)、Mercurial,發(fā)布了更新補(bǔ)丁,修復(fù)了一個(gè)客戶端代碼執(zhí)行漏洞。惡意的攻擊者可以向受害者發(fā)送一條精心構(gòu)造的ssh:// URL鏈接,當(dāng)受害者訪問這條URL則會(huì)觸發(fā)漏洞導(dǎo)致執(zhí)行惡意代碼。該漏洞由GitLab的Brian Neel,Recurity Labs的Joan Schneeweiss和GitHub的Jeff King發(fā)現(xiàn)和報(bào)告。具體詳情如下:
漏洞編號(hào):
Git: CVE-2017-1000117
Apache Subversion: CVE-2017-9800
Mercurial: CVE-2017-1000116
攻擊者通過精心構(gòu)造一個(gè)”ssh://…”URL鏈接發(fā)送給受害者,如果受害者訪問了這個(gè)URL,則會(huì)導(dǎo)致惡意指令在客戶端執(zhí)行,從而獲取主機(jī)權(quán)限。漏洞利用條件和方式:結(jié)合社會(huì)工程學(xué)遠(yuǎn)程釣魚利用
漏洞影響范圍:
Git:
Git <v2.7.6Git v2.8.6Git v2.9.5Git v2.10.4Git v2.11.3Git v2.12.4Git v2.13.5
Apache Subversion:
Apache Subversion clients 1.0.0 through 1.8.18 (inclusive)Apache Subversion clients 1.9.0 through 1.9.6 (inclusive)Apache Subversion client 1.10.0-alpha3
Mercurial:
Mercurial<4.3
惡意人員可以通過巧妙構(gòu)造“ssh://…”鏈接,讓受害人在執(zhí)行程序等情況下訪問該惡意鏈接,從而達(dá)到命令執(zhí)行的目的。該鏈接可以被放在 git項(xiàng)目的.gitmodules文件下,這樣當(dāng)受害人對(duì)一個(gè)項(xiàng)目進(jìn)行g(shù)it clone --recurse-submodules操作時(shí),就會(huì)引發(fā)安全問題。
如下是我們漏洞環(huán)境的.gitmodules文件:
[submodule "git"] path = git url = ssh://-oProxyCommand=sh<payload/wat
該漏洞主要由于SSH鏈接在hostname
部分,若是用“-
”開頭,那么會(huì)導(dǎo)致ssh命令將hostname
誤認(rèn)為這是一個(gè)選項(xiàng)。因此,我們可以利用“-oProxyCommand
”選項(xiàng)來達(dá)到命令執(zhí)行的目的。
在進(jìn)行git clone
時(shí)候會(huì)調(diào)用到git/connect.c
中的以下函數(shù):
struct child_process *git_connect(int fd[2], const char *url,const char *prog, int flags)
其接受到的參數(shù)url為命令中“git clone xxx://xxxxxxxxxx/xx(.git)
”的xxx://xxxxxxxxxx/xx(.git)
部分。在該函數(shù)中會(huì)對(duì)傳入的這個(gè)字符串進(jìn)行parse
,提取其協(xié)議部分。在滿足協(xié)議為ssh://
的時(shí)候會(huì)進(jìn)入該函數(shù)的else
部分。
然后根據(jù)下面的流程調(diào)用本地的SSH:
首先獲得本地的ssh路徑,然后push進(jìn)conn->args
,
然后獲得url中ssh_host
部分再拼接路徑,
最后調(diào)用start_command函數(shù)進(jìn)行命令執(zhí)行。
start_command
的定義在git/run-command.c
int start_command(struct child_process *cmd)
將傳入的cmd參數(shù)經(jīng)過處理賦值給argv:
經(jīng)過execve
這個(gè)函數(shù)進(jìn)行命令執(zhí)行。但是在這個(gè)這個(gè)命令執(zhí)行的內(nèi)容是 “/usr/bin/ssh `ssh_host` path
”而ssh命令的-o參數(shù)在一定程度上是可以執(zhí)行命令的:
例如:
ssh -oProxyCommand=gnome-calculator xxx
將會(huì)在本地打開gnome的計(jì)算器。
所以如果我們?cè)赾lone操作的時(shí)候?qū)⑦B接指定為:
git clone ssh://-oProxyCommand=gnome-calculator/cert
將取得同樣的命令執(zhí)行的效果。
我們?cè)趯?shí)驗(yàn)環(huán)境為大家準(zhǔn)備的項(xiàng)目地址如下:
http://172.16.12.2:8080/root/CVE-2017-1000117
項(xiàng)目里包含的預(yù)定義命令在CVE-2017-1000117/payload:id > /var/www/html/vuls:
首先來查看一下本機(jī)GIT版本,使用git --version命令:
如上,我們看到,本機(jī)git版本并非最新版,有可能存在該漏洞。
為了能驗(yàn)證payload是否執(zhí)行成功,我們要保證本機(jī)存在payload中的目錄/var/www/html,如果沒有,請(qǐng)先創(chuàng)建(mkdir /var/www/html),此目錄僅用于漏洞驗(yàn)證:
接著我們執(zhí)行以下命令clone項(xiàng)目(實(shí)際利用場(chǎng)景有可能是被別有用心之人利用社會(huì)工程學(xué)欺騙所致):
git clone --recurse-submodules "http://172.16.12.2:8080/root/CVE-2017-1000117.git"
如上圖,可能會(huì)有報(bào)錯(cuò),但不影響項(xiàng)目下載和惡意命令的執(zhí)行:
我們使用ls -al CVE-2017-1000117命令查看該項(xiàng)目被下載到的位置:
如上可見,該項(xiàng)目被成功下載。
那么,項(xiàng)目里的預(yù)定義的命令id > /var/www/html/vuls有沒有被執(zhí)行呢?我們使用ls -al /var/www/html/vuls命令驗(yàn)證是否生成文件:
如上,文件成功生成。
使用cat命令查看該文件,查看命令執(zhí)行結(jié)果:
如上圖可見,項(xiàng)目里的預(yù)定義命令被成功執(zhí)行。
Git官方已經(jīng)對(duì)該漏洞進(jìn)行了修復(fù)。在v2.14.1的commit中,可以看到git_connect函數(shù)中執(zhí)行之前對(duì)ssh_host進(jìn)行了驗(yàn)證:
驗(yàn)證內(nèi)容為新增的這個(gè)函數(shù):
該函數(shù)對(duì)ssh_host的第一個(gè)字符進(jìn)行了校驗(yàn)防止為"-"的情況抑制了向ssh傳遞參數(shù)的情況
并且在多處對(duì)傳入的host,port都做了該函數(shù)的過濾。
用戶只需要檢查是否使用受影響范圍內(nèi)的版本,如果是,升級(jí)Git即可。
漏洞修復(fù)建議
Git:升級(jí)到Git v2.14.1版本
Apache Subversion:升級(jí)到Subversion 1.8.19、 Subversion 1.9.7版本
Mercurial:升級(jí)到Mercurial 4.3 and 4.2.3.版本
以上是“惡意SSH鏈接導(dǎo)致命令執(zhí)行漏洞的示例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!
網(wǎng)站欄目:惡意SSH鏈接導(dǎo)致命令執(zhí)行漏洞的示例分析
URL網(wǎng)址:http://chinadenli.net/article22/ppcgjc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供云服務(wù)器、商城網(wǎng)站、App設(shè)計(jì)、App開發(fā)、電子商務(wù)、企業(yè)網(wǎng)站制作
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)