文件上傳漏洞技術(shù)基礎(chǔ)

文件上傳漏洞:

1.本地驗證

本地驗證:客戶端本地通過前臺JS腳本進行檢測糊饱。

原理:

當用戶在客戶端選擇文件點擊上傳的時候,客戶端會在向服務(wù)器發(fā)送請求之前颠黎,就先對將上傳的本地文件類型進行檢測另锋,來判斷是否是可以上傳的類型,這種方式稱為前臺腳本檢測狭归,即本地驗證夭坪。
如何判斷是本地驗證呢?很多情況下感覺速度較快的返回信息則認為有可能是本地驗證过椎,但是有的時候需要根據(jù)抓報以及跟蹤上傳代碼來分析出是否為本地驗證室梅。

繞過:

繞過前臺腳本檢測擴展名,就是要使檢測函數(shù)失效。

  • 可以繞過檢測規(guī)則亡鼠;
  • 可以修改檢測規(guī)則赏殃;
  • 在數(shù)據(jù)傳輸中修改數(shù)據(jù)包內(nèi)容。

1. 繞過檢測規(guī)則

檢查網(wǎng)頁源碼间涵,看能否找到文件上傳點附近調(diào)用檢測函數(shù)的痕跡仁热。

圖1.1-調(diào)用檢測函數(shù)

像這里我們能看到onsubmit="return checkFile()"就是調(diào)用了檢測函數(shù)。
我們可以采取直接修改前臺代碼的方式勾哩。取消檢測函數(shù)的調(diào)用抗蠢,再進行文件上傳。
注意:這種修改只是在本地上修改钳幅,是臨時的物蝙,刷新頁面即可還原。

還有一種繞過方式敢艰,就是干脆在本地瀏覽器客戶端禁用JS诬乞。可使用火狐瀏覽器的NoScript插件钠导、IE中禁用掉JS等方式實現(xiàn)震嫉。

2. 修改檢測規(guī)則

檢查網(wǎng)頁源碼,看能否找到文件過濾函數(shù)牡属。

圖1.2 修改檢測規(guī)則

如果找到了票堵,我們就可以通過直接修改這個JS函數(shù),使它能夠上傳我們需要的文件逮栅。
注意:這種修改只是在本地上修改悴势,是臨時的,刷新頁面即可還原措伐。

3. 修改數(shù)據(jù)包

首先將所要上傳文件的擴展名更改為符合腳本檢測規(guī)則的擴展名特纤,通過BurpSuite等抓包工具,截取數(shù)據(jù)包侥加,并將數(shù)據(jù)包中文件擴展名更改為所需要的擴展名捧存,達到繞過的目的。

圖1.3 修改數(shù)據(jù)包

例如:文件名本來為【evil.jpg】担败,上傳時昔穴,用BurpSuite截包后,將數(shù)據(jù)包中的名字改為【evil.php】(或其它腳本類型)即可提前。

2.MIME類型檢測繞過漏洞

服務(wù)器端根據(jù) content-type 類型檢測吗货,如果是白名單允許的,則可以正常上傳岖研,否則上傳失敗卿操。

MIME

MIME:客戶端軟件警检,區(qū)分不同種類的數(shù)據(jù),例如web瀏覽器就是通過MIME類型來判斷文件是GIF圖片害淤,還是可打印的PostScript文件扇雕。web服務(wù)器使用MIME來說明發(fā)送數(shù)據(jù)的種類, web客戶端使用MIME來說明希望接收到的數(shù)據(jù)種類窥摄。

MIME檢測原理

服務(wù)端MIME類型檢測是通過檢查http包的Content-Type字段中的值來判斷上傳文件是否合法的镶奉。

php示例代碼:

<?php
    if($_FILES['userfile']['type'] != "image/gif") { 
  //檢測Content-type
  //當上傳文件的type不為`image/gif`時,程序不執(zhí)行文件保存操作崭放,直接退出哨苛。
  //當上傳文件的type是`image/gif`時,程序跳出if語句币砂,執(zhí)行文件保存操作建峭。
    echo "Sorry, we only allow uploading GIF images";
  exit;
  }
$uploaddir = 'uploads/';
$uploadfile = $uploaddir . basename($_FILES['userfile']['name']);

if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) 
{
echo "File is valid, and was successfully uploaded.\n";
echo "File path is ".$uploadfile;
} 

else
{
echo "File uploading failed.\n";
}
?>

示例代碼的功能是服務(wù)端用來處理文件上傳的,在第二行中if語句對上傳文件的type判斷是否為image/gif决摧。

在代碼中檢測的type值亿蒸,對應(yīng)http包中的字段Content-Type的值。也就是所我們可以偽裝上傳文件的type值掌桩,來繞過服務(wù)端的MIME檢測

繞過:

修改content-type 參數(shù)欺騙繞過边锁。

防御:

根據(jù)攻擊原理,有以下幾點應(yīng)該注意:
1:文件上傳的目錄設(shè)置為不可執(zhí)行
只要web容器無法解析該目錄下的文件波岛,即使攻擊者上傳了腳本文件茅坛,服務(wù)器本身也不會受到影響,因此此點至關(guān)重要则拷。實際中贡蓖,很多大型網(wǎng)站的上傳應(yīng)用,文件上傳后會放到獨立的儲存上煌茬,做靜態(tài)處理摩梧。但對一些小應(yīng)用,如果存在上傳功能宣旱,則仍需要多加關(guān)注
2:判斷文件類型:
判斷文件類型時,應(yīng)結(jié)合MIME Type叛薯、后綴檢查等方式浑吟。推薦使用白名單,黑名單的方式已經(jīng)無數(shù)次被證明不可靠耗溜。此外组力,針對圖片處理,可以使用壓縮函數(shù)或者resize函數(shù)抖拴,在處理圖片的同事破壞掉圖片中可能包含的HTML代碼燎字。
3:使用隨機數(shù)改寫文件名和文件路徑
文件上傳如果要執(zhí)行代碼腥椒,則需要用戶能夠訪問到這個文件。在某些環(huán)境中候衍,用戶能上傳笼蛛,但不能訪問。如果應(yīng)用使用隨機函數(shù)改寫了文件名和路徑蛉鹿,將極大增加攻擊成本滨砍。與此同時,像1.php.rar.rar妖异、或者1.xml這種文件惋戏,都因為文件名被改寫而無法成功實施攻擊

3. 文件擴展名繞過漏洞

應(yīng)用場景:服務(wù)端驗證繞過(擴展名檢測),一般用于繞過黑名單檢測他膳。
黑名單檢測 黑名單的安全性其實還沒白名單的安全性高响逢,至少攻擊它的方式比白名單多多了。
一般有個專門的 blacklist 文件棕孙,里面會包含常見的危險腳本文件舔亭。

黑名單

1). 找黑名單擴展名的漏網(wǎng)之魚

比如上面就漏掉了 asa 和 cer 之類。

2). 可能存在大小寫繞過漏洞

比如 aSp 和 pHp 之類散罕。
用于只將小寫的腳本后綴名(如php)過濾掉的場合分歇。

3)雙寫后綴名繞過

用于只將文件后綴名,例如"php"字符串過濾的場合欧漱;
例如:上傳時將Burpsuite截獲的數(shù)據(jù)包中文件名【evil.php】改為【evil.pphphp】职抡,那么過濾了第一個"php"字符串"后,開頭的'p'和結(jié)尾的'hp'就組合又形成了【php】误甚。

4). 特別文件名構(gòu)造

比如發(fā)送的 http 包里把文件名改成 help.asp. 或 help.asp_(下劃線為空 格)缚甩,這種命名方式在 windows 系統(tǒng)里是不被允許的,所以需要在 burp 之類里進行修改窑邦,然 后繞過驗證后擅威,會被 windows 系統(tǒng)自動去掉后面的點和空格。

了解php擴展名解析原則

可以被解析成PHP文件的后綴名有php4冈钦,phtml郊丛,phps,等瞧筛。
通過修改后綴厉熟,繞過黑名單檢測。

5). IIS 或 nginx 文件名解析漏洞

關(guān)于解析漏洞较幌,詳見:http://blog.csdn.net/xavierdarkness/article/details/78118767

4.文件內(nèi)容檢測繞過類上傳漏洞

在真實圖片中插入一句話木馬揍瑟,繞過內(nèi)容檢測。

5. 空字節(jié)截斷目錄路徑檢測繞過類上傳漏洞 (00截斷)

即 利用文件系統(tǒng)00截斷—繞過

原理

在上傳的時候乍炉,當文件系統(tǒng)讀到 0x00 時绢片,會認為文件已經(jīng)結(jié)束滤馍。
利用00截斷就是利用程序員在寫程序時對文件的上傳路徑過濾不嚴格,產(chǎn)生0x00上傳截斷漏洞底循。

繞過方法

通過抓包截斷將【evil.php.jpg】后面的一個【.】換成【0x00】巢株。在上傳的時候,當文件系統(tǒng)讀到【0x00】時此叠,會認為文件已經(jīng)結(jié)束纯续,從而將【evil.php.jpg】的內(nèi)容寫入到【evil.php】中,從而達到攻擊的目的灭袁。

Paste_Image.png
Paste_Image.png

上傳漏洞防御:

1.客戶端檢測猬错,使用JS對上傳圖片檢測,包括文件大小茸歧、擴展名倦炒、文件類型等
2.服務(wù)端檢測,對文件大小软瞎、路徑逢唤、擴展名、類型涤浇、文件內(nèi)容檢測鳖藕、對文件重命名
3.其他限制,服務(wù)器端上傳目錄設(shè)置不可執(zhí)行權(quán)限只锭。

參考資料:

http://blog.csdn.net/c465869935/article/details/51800354
http://blog.csdn.net/xysoul/article/details/45306209

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末著恩,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子蜻展,更是在濱河造成了極大的恐慌喉誊,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,858評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件纵顾,死亡現(xiàn)場離奇詭異伍茄,居然都是意外死亡,警方通過查閱死者的電腦和手機施逾,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,372評論 3 395
  • 文/潘曉璐 我一進店門敷矫,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人汉额,你說我怎么就攤上這事沪饺。” “怎么了闷愤?”我有些...
    開封第一講書人閱讀 165,282評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長件余。 經(jīng)常有香客問我讥脐,道長遭居,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,842評論 1 295
  • 正文 為了忘掉前任旬渠,我火速辦了婚禮俱萍,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘告丢。我一直安慰自己枪蘑,他們只是感情好,可當我...
    茶點故事閱讀 67,857評論 6 392
  • 文/花漫 我一把揭開白布岖免。 她就那樣靜靜地躺著岳颇,像睡著了一般。 火紅的嫁衣襯著肌膚如雪颅湘。 梳的紋絲不亂的頭發(fā)上话侧,一...
    開封第一講書人閱讀 51,679評論 1 305
  • 那天,我揣著相機與錄音闯参,去河邊找鬼瞻鹏。 笑死,一個胖子當著我的面吹牛鹿寨,可吹牛的內(nèi)容都是我干的新博。 我是一名探鬼主播,決...
    沈念sama閱讀 40,406評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼脚草,長吁一口氣:“原來是場噩夢啊……” “哼赫悄!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起玩讳,我...
    開封第一講書人閱讀 39,311評論 0 276
  • 序言:老撾萬榮一對情侶失蹤涩蜘,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后熏纯,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體同诫,經(jīng)...
    沈念sama閱讀 45,767評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年樟澜,在試婚紗的時候發(fā)現(xiàn)自己被綠了误窖。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,090評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡秩贰,死狀恐怖霹俺,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情毒费,我是刑警寧澤丙唧,帶...
    沈念sama閱讀 35,785評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站觅玻,受9級特大地震影響想际,放射性物質(zhì)發(fā)生泄漏培漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,420評論 3 331
  • 文/蒙蒙 一胡本、第九天 我趴在偏房一處隱蔽的房頂上張望牌柄。 院中可真熱鬧,春花似錦侧甫、人聲如沸珊佣。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,988評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽咒锻。三九已至,卻和暖如春僻爽,著一層夾襖步出監(jiān)牢的瞬間虫碉,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,101評論 1 271
  • 我被黑心中介騙來泰國打工胸梆, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留敦捧,地道東北人。 一個月前我還...
    沈念sama閱讀 48,298評論 3 372
  • 正文 我出身青樓碰镜,卻偏偏與公主長得像兢卵,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子绪颖,可洞房花燭夜當晚...
    茶點故事閱讀 45,033評論 2 355

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

  • 文件上傳漏洞是指用戶上傳了一個可執(zhí)行的腳本文件秽荤,并通過此腳本文件獲得了執(zhí)行服務(wù)器端命令的能力。這種攻擊方式是最為直...
    付出從未后悔閱讀 1,146評論 0 4
  • 一柠横、初步認識 1.上傳功能:網(wǎng)站上各種可以上傳文件窃款,圖片的地方可以被用作上傳點進行非法上傳 2.上傳原理:在前端代...
    楠昭閱讀 1,633評論 1 11
  • 一般防止上傳漏洞手法 客戶端檢測 客戶端驗證代碼形如下: 接收文件的腳本upload.php代碼如下: 繞過: 服...
    cws閱讀 5,798評論 1 22
  • 我情愿相信善良的姑娘都會遇到自己人間四月天。 這個快餐時代牍氛,不管是婚姻或是愛情泛濫成災(zāi)晨继。行蹤該不該...
    一顰一語閱讀 513評論 0 0
  • 刺殺 這是關(guān)于一個刺殺的故事。 丹莫羅玩祟,寒脊山小徑腹缩。 楚流香正端坐在一顆大樹上。繁茂的樹葉把他擋的嚴嚴實實,如果有...
    朱八八閱讀 442評論 5 3