2020-10-28任意文件上傳

任意文件上傳:簡單概述

任意文件上傳分為兩大類:? 客戶端? ? 服務端

客戶端 (前端繞過):js檢查

服務端(后端繞過):后綴檢查----(黑名單辕羽,白名單)似扔, 內(nèi)容檢查吨些, 其他---(條件競爭)。?


任意文件上傳

實戰(zhàn)測試

1炒辉、客戶端檢測繞過(javascript 檢測)

? ? ? 首先觀察到提示只允許上傳圖片文件豪墅,那么前端的查看代碼,當頁面發(fā)生改變時黔寇,會調(diào)用這個checkFileExt函數(shù)來檢查上傳的是不是圖片偶器,我們只需要在前端將checkFileExt函數(shù)刪除,就能上傳一個一個非圖片文件。

2屏轰、服務端驗證繞過(MIME 類型檢測)

? ? ? MIME(Multipurpose Internet Mail Extensions)多用途互聯(lián)網(wǎng)郵件擴展類型颊郎。是設定某種擴展名的文件用一種應用程序來打開的方式類型,當該擴展名文件被訪問的時候霎苗,瀏覽器會自動使用指定應用程序來打開姆吭。多用于指定一些客戶端自定義的文件名,以及一些媒體文件打開方式唁盏。

? ? ? 每個MIME類型由兩部分組成猾编,前面是數(shù)據(jù)的大類別,例如聲音audio升敲、圖象image等答倡,后面定義具體的種類。

常見的MIME類型(通用型):

超文本標記語言文本 .html text/html

xml文檔 .xml text/xml

XHTML文檔 .xhtml application/xhtml+xml

普通文本 .txt text/plain

RTF文本 .rtf application/rtf

PDF文檔 .pdf application/pdf

Microsoft Word文件 .word application/msword

PNG圖像 .png image/png

GIF圖形 .gif image/gif

JPEG圖形 .jpeg,.jpg image/jpeg

au聲音文件 .au audio/basic

MIDI音樂文件 mid,.midi audio/midi,audio/x-midi

RealAudio音樂文件 .ra, .ram audio/x-pn-realaudio

MPEG文件 .mpg,.mpeg video/mpeg

AVI文件 .avi video/x-msvideo

GZIP文件 .gz application/x-gzip

TAR文件 .tar application/x-tar

任意的二進制數(shù)據(jù) application/octet-stream

通過使用 PHP 的全局數(shù)組 $_FILES驴党,你可以從客戶計算機向遠程服務器上傳文件瘪撇。

第一個參數(shù)是表單的 input name,第二個下標可以是 "name", "type", "size", "tmp_name" 或 "error"港庄。就像這樣:

$_FILES["file"]["name"] - 被上傳文件的名稱

$_FILES["file"]["type"] - 被上傳文件的類型

$_FILES["file"]["size"] - 被上傳文件的大小倔既,以字節(jié)計

$_FILES["file"]["tmp_name"] - 存儲在服務器的文件的臨時副本的名稱

$_FILES["file"]["error"] - 由文件上傳導致的錯誤代碼

詳細可參考:http://www.w3school.com.cn/php/php_file_upload.asp

? ? ? 分析代碼邏輯:首先會獲取到前端的提交請求,然后定義了一個數(shù)組(定義圖片上傳指定類型)鹏氧,然后通過upload_sick函數(shù)對上傳的文件進行一定的檢查渤涌。

分析upload_sick函數(shù)存在漏洞的的原因是因為 $ _FILES() 這個全局的方法是通過瀏覽器http頭去獲取的content-type,content-type是前端用戶可以控制的把还。容易被繞過实蓬。

? ? 上傳一張正常的符合標準的圖片,對其content-type進行抓包操作吊履“仓澹可見正常上傳符合要求的圖片中數(shù)據(jù)包中content-type為image/png對比符合條件,而php文件則不符合條件返回文件類型錯誤艇炎。

三酌伊、代碼注入繞過--getimagesize()


? ? getimagesize() 函數(shù)用于獲取圖像大小及相關信息,成功返回一個數(shù)組缀踪,失敗則返回 FALSE 并產(chǎn)生一條 E_WARNING 級的錯誤信息居砖,如果用這個涵數(shù)來獲取類型,從而判斷是否是圖片的話驴娃,會存在問題奏候。

語法格式:

? ? array getimagesize ( string $filename [, array &$imageinfo ] )

getimagesize() 函數(shù)將測定任何 GIF,JPG托慨,PNG鼻由,SWF暇榴,SWC厚棵,PSD蕉世,TIFF,BMP婆硬,IFF狠轻,JP2,JPX彬犯,JB2向楼,JPC,XBM 或 WBMP 圖像文件的大小并返回圖像的尺寸以及文件類型及圖片高度與寬度谐区。

2湖蜕、文件包含漏洞之文件上傳漏洞利用

方法一:直接偽造頭部GIF89A

方法二:CMD方法,copy /b test.png+1.php muma.png

方法三:直接使用工具增加備注寫入一句話木馬宋列。

四昭抒、路徑/擴展名繞過

1、白名單

0x00截斷或test.asp%00.jpg

MIME繞過

2炼杖、黑名單

(1)文件名大小寫繞過

(2)名單繞過

? ? 用黑名單里沒有的名單進行攻擊冤狡,比如黑名單里沒有.php|.php5|.php4|.php3|.php2|php1|.html|.htm|.phtml|.pHp|.pHp5|.pHp4|.pHp3|.pHp2|pHp1|.Html|.Htm|.pHtml|.jsp|.jspa|.jspx|.jsw|.jsv|.jspf|.jtml|.jSp|.jSpx|.jSpa|.jSw|.jSv|.jSpf|.jHtml|.asp|.aspx|.asa|.asax|.ascx|.ashx|.asmx|.cer|.aSp|.aSpx|.aSa|.aSax|.aScx|.aShx|.aSmx|.cEr|.sWf|.swf|.htaccess后綴文件之類

(3)特殊文件名或文件夾繞過(windows)

? ? ? 還有比如發(fā)送的http 包里把文件名改成test.asp. 或test.asp_(下劃線為空格)略贮,這種命名方式在windows 系統(tǒng)里是不被允許的,所以需要在burp 之類里進行修改,然后繞過驗證后顿苇,會被windows 系統(tǒng)自動去掉后面的點和空格,但要注意Unix/Linux 系統(tǒng)沒有這個特性浮毯。

(4)0x00截斷

name = getname(http request) //假如這時候獲取到的文件名是test.asp .jpg(asp 后面為0x00)

type = gettype(name) //而在gettype()函數(shù)里處理方式是從后往前掃描擴展名媚污,所以判斷為jpg

if (type == jpg)

SaveFileToPath(UploadPath.name, name) //但在這里卻是以0x00 作為文件名截斷

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //最后以test.asp 存入路徑里

(5)把文件名改成test.asp. 或test.asp_(下劃線為空格),這種命名方式在windows 系統(tǒng)里是不被允許的黔衡,所以需要在burp 之類里進行修改消约,然后繞過驗證后,會被windows 系統(tǒng)自動去掉后面的點和空格员帮,但要注意Unix/Linux 系統(tǒng)沒有這個特性或粮。

(6)雙后綴名繞過

(7)::$DATA繞過

? ? 是Windows下NTFS文件系統(tǒng)的一個特性,即NTFS文件系統(tǒng)的存儲數(shù)據(jù)流的一個屬性 DATA 時捞高,就是請求 a.asp 本身的數(shù)據(jù)氯材,如果a.asp 還包含了其他的數(shù)據(jù)流,比如 a.asp:lake2.asp硝岗,請求 a.asp:lake2.asp::$DATA氢哮,則是請求a.asp中的流數(shù)據(jù)lake2.asp的流數(shù)據(jù)內(nèi)容。

五型檀、中間件解析漏洞繞過(參考文檔)

IIS解析漏洞

Apache解析漏洞

.htaccess

? ? 配置文件LoadModule rewrite_module modules/mod_rewrite.so前的注釋去掉冗尤,尋找關鍵詞:AllowOverride,并把后面的參數(shù)從None全部改成All

Nginx解析漏洞

.htaccess文件解析

本地文件包含解析

六、安全防范

? ? ? 針對文件上傳漏洞的特點和必須具備的三個條件裂七,我們阻斷任何一個條件就可以達到組織文件上傳攻擊的目的:

1皆看、最有效的,將文件上傳目錄直接設置為不可執(zhí)行背零,對于Linux而言腰吟,撤銷其目錄的'x'權限;實際中很多大型網(wǎng)站的上傳應用都會放置在獨立的存儲上作為靜態(tài)文件處理徙瓶,一是方便使用緩存加速降低能耗毛雇,二是杜絕了腳本執(zhí)行的可能性;

2侦镇、文件類型檢查:強烈推薦白名單方式灵疮,結(jié)合MIME Type、后綴檢查等方式(即只允許允許的文件類型進行上傳)壳繁;此外對于圖片的處理可以使用壓縮函數(shù)或resize函數(shù)始藕,處理圖片的同時破壞其包含的HTML代碼;

3氮趋、使用隨機數(shù)改寫文件名和文件路徑伍派,使得用戶不能輕易訪問自己上傳的文件;

4剩胁、單獨設置文件服務器的域名诉植;

?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市昵观,隨后出現(xiàn)的幾起案子晾腔,更是在濱河造成了極大的恐慌,老刑警劉巖啊犬,帶你破解...
    沈念sama閱讀 221,198評論 6 514
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件灼擂,死亡現(xiàn)場離奇詭異,居然都是意外死亡觉至,警方通過查閱死者的電腦和手機剔应,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,334評論 3 398
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來语御,“玉大人峻贮,你說我怎么就攤上這事∮Υ常” “怎么了纤控?”我有些...
    開封第一講書人閱讀 167,643評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長碉纺。 經(jīng)常有香客問我船万,道長刻撒,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,495評論 1 296
  • 正文 為了忘掉前任耿导,我火速辦了婚禮声怔,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘碎节。我一直安慰自己,他們只是感情好抵卫,可當我...
    茶點故事閱讀 68,502評論 6 397
  • 文/花漫 我一把揭開白布狮荔。 她就那樣靜靜地躺著,像睡著了一般介粘。 火紅的嫁衣襯著肌膚如雪殖氏。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,156評論 1 308
  • 那天姻采,我揣著相機與錄音雅采,去河邊找鬼。 笑死慨亲,一個胖子當著我的面吹牛婚瓜,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播刑棵,決...
    沈念sama閱讀 40,743評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼巴刻,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了蛉签?” 一聲冷哼從身側(cè)響起胡陪,我...
    開封第一講書人閱讀 39,659評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎碍舍,沒想到半個月后柠座,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,200評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡片橡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,282評論 3 340
  • 正文 我和宋清朗相戀三年妈经,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片捧书。...
    茶點故事閱讀 40,424評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡狂塘,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出鳄厌,到底是詐尸還是另有隱情荞胡,我是刑警寧澤,帶...
    沈念sama閱讀 36,107評論 5 349
  • 正文 年R本政府宣布了嚎,位于F島的核電站泪漂,受9級特大地震影響廊营,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜萝勤,卻給世界環(huán)境...
    茶點故事閱讀 41,789評論 3 333
  • 文/蒙蒙 一露筒、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧敌卓,春花似錦慎式、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,264評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至蜗巧,卻和暖如春掌眠,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背幕屹。 一陣腳步聲響...
    開封第一講書人閱讀 33,390評論 1 271
  • 我被黑心中介騙來泰國打工蓝丙, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人望拖。 一個月前我還...
    沈念sama閱讀 48,798評論 3 376
  • 正文 我出身青樓渺尘,卻偏偏與公主長得像,于是被迫代替她去往敵國和親说敏。 傳聞我的和親對象是個殘疾皇子沧烈,可洞房花燭夜當晚...
    茶點故事閱讀 45,435評論 2 359