2019-10-22——文件上傳漏洞&文件包含漏洞

文件上傳漏洞

文件上傳漏洞就是用戶上傳一個可執(zhí)行的文件腳本,并通過腳本獲得執(zhí)行服務器端命令的的能力酷誓。

上傳的文件可以是:

1披坏、web腳本語言

? ? ? ? 要求:上傳的文件可以被web容器解釋執(zhí)行,文件上傳后的目錄要是web容器所覆蓋的路徑呛牲;

? ? ? ? ? ? ? ? ? ? 上傳的文件可以被用戶從web上訪問刮萌。

2驮配、Flash的策略文件crossdomain.xml:控制flash在該域下的行為

3娘扩、病毒或木馬文件:誘使用戶或管理員下載執(zhí)行

4、釣魚圖片或包含了腳本的文件:在瀏覽器中作為腳本執(zhí)行(低版本IE中壮锻,會把上傳的惡意圖片當做HTML執(zhí)行琐旁,控制瀏覽器跳轉(zhuǎn)到指定釣魚網(wǎng)站。IE 8 中有了增強的MIME Sniff緩解此問題)

繞過文件上傳檢查的方法:

大部分安全檢測方式都是通過判斷后綴名

1猜绣、00截斷:手動修改上傳過程的post包灰殴,將文件名修改為xxx.php[\0].JPG,[\0]相當于16進制字符串0x00掰邢,截斷之后的文件為xxx.php

還有的會通過判斷上傳文件的文件頭來驗證文件類型

2牺陶、偽造合法文件頭伟阔,將真實的php等腳本代碼附在合法的文件頭后,仍需要通過php來解釋此文件圖片(后綴是.php)

3掰伸、修改Content-Type:image/jpeg皱炉;image/png;image/gif等允許上傳類型對應的MIME值

常見Web Server攻擊特性:

1狮鸭、Apache

從后往前解析文件名合搅,直至遇到一個Apache認識的文件類型。

比如.rar是合理的文件上傳歧蕉,上傳xxx.php.rar.rar.rar灾部,由于Apache不認識.rar這個文件類型,因此會一直遍歷后綴到.php惯退,然后認為是一個php文件赌髓,從而導致腳本攻擊。

2催跪、IIS

(1)存在“春弥;”截斷,也就是說文件名為abc.asp;xx.jpg叠荠,會被解析為abc.asp

(2)處理文件夾擴展名出錯匿沛,導致/*.asp/目錄下的所有文件都作為asp進行解析

(3)支持PUT功能(WebDav中定義的一個方法),允許用戶上傳文件到指定路徑榛鼎。

首先使用PUT上傳一個指定的文本文件逃呼,最后通過MOVE改寫為腳本文件

3、Nginx

Nginx配置fastcgi使用PHP時者娱,或存在文件類型解析問題

訪問http://www.xxx.com/path/test.jpg/noexist.php時抡笼,test.jpg會被當做php解析。noexist.php是不存在的文件黄鳍。

設計安全的文件上傳功能:

1推姻、判斷文件類型(后綴白名單,文件頭)

對圖片的處理框沟,可以使用壓縮函數(shù)或者resize函數(shù)藏古,破壞圖片中可能存在的HTML代碼。

2忍燥、文件上傳目錄設置為不可執(zhí)行

將上傳的文件獨立存儲拧晕,作為靜態(tài)文件處理

3、使用隨機數(shù)改寫文件名和文件路徑

4梅垄、單獨設置文件服務器域名

利用瀏覽器的同源策略


文件包含漏洞

代碼注入的一種方式厂捞,常見的導致文件包含的函數(shù):include(),include_once(),require()靡馁,require_once()欲鹏,fopen(),readfile()等

以上述函數(shù)包含的文件臭墨,都將作為php代碼執(zhí)行貌虾,不論包含的到底是什么類型的文件

要想成功利用文件包含漏洞,滿足下面兩個條件:

1裙犹、include()等函數(shù)通過動態(tài)變量的方式引入需要包含的文件尽狠。

2椎组、用戶能控制該動態(tài)變量

本地文件包含

常見的敏感信息路徑:

Windows系統(tǒng)

c:\boot.ini // 查看系統(tǒng)版本

c:\windows\system32\inetsrv\MetaBase.xml // IIS配置文件

c:\windows\repair\sam // 存儲Windows系統(tǒng)初次安裝的密碼

c:\ProgramFiles\mysql\my.ini // MySQL配置

c:\ProgramFiles\mysql\data\mysql\user.MYD // MySQL root密碼

c:\windows\php.ini // php 配置信息

Linux/Unix系統(tǒng)

/etc/passwd // 賬戶信息

/etc/shadow // 賬戶密碼文件

/usr/local/app/apache2/conf/httpd.conf // Apache2默認配置文件

/usr/local/app/apache2/conf/extra/httpd-vhost.conf // 虛擬網(wǎng)站配置

/usr/local/app/php5/lib/php.ini // PHP相關配置

/etc/httpd/conf/httpd.conf // Apache配置文件

/etc/my.conf // mysql 配置文件

如果是輸入的文件名拼接特定后綴組成的文件名乌妙,需要進行截斷,截斷方式包括00截斷甫煞,長度截斷(windows OS掺冠,點號需要長于256沉馆;linux OS 長于4096:./././././././././)和點號截斷(windows OS,點號需要長于256:.......)

設置open_basedir德崭,防止目錄遍歷斥黑,跨目錄讀取文件,限制在某個特定目錄下PHP能打開的文件眉厨。

可以使用burpsuit獲取對應的payload(scanner)

本地文件包含利用技巧:

1锌奴、包含用戶上傳的文件(結合文件上傳漏洞,如果用戶上傳的文件中包含PHP代碼憾股,這些代碼被include()加載之后將會執(zhí)行)

2鹿蜀、包含data://或php://input等偽協(xié)議

(1) http://www.XXXX.com/test2.php?page=php://filter/read=convert.base64-encode/resource=xxx.php??

訪問URL,讀取PHP文件服球,即可得到經(jīng)過base64加密的文件內(nèi)容茴恰,解密即可。

(2) php://input:寫入php文件斩熊,使用時必須開啟 allow_url_include往枣。

用法:?file=php://input 數(shù)據(jù)利用POST傳過去。

file_get_contents()就要想到用php://input繞過

(3)data://(讀取文件):和php偽協(xié)議的input類似粉渠,碰到file_get_contents()來用分冈;

(4)phar://:這個參數(shù)是就是php解壓縮包的一個函數(shù),不管后綴是什么渣叛,都會當做壓縮包來解壓丈秩。

用法:?file=phar://壓縮包/內(nèi)部文件 phar://xxx.png/shell.php 注意: PHP > =5.3.0 壓縮包需要是zip協(xié)議壓縮,rar不行淳衙,將木馬文件壓縮后,改為其他任意格式的文件都可以正常使用。 步驟: 寫一個一句話木馬文件shell.php箫攀,然后用zip協(xié)議壓縮為shell.zip肠牲,然后將后綴改為png等其他格式。?

3靴跛、包含session文件(要求攻擊者可以控制session文件的內(nèi)容缀雳,默認session放在/temp/sess_SESSIONID)

4、包含日志文件梢睛,web server的access_log里記錄了客戶端的請求信息肥印,在error_log里記錄了出錯請求。日志文件目錄/user/local/apache/conf/httpd.conf

5绝葡、包含/proc/self/environ深碱,這樣的包含并不需要猜測被包含文件的位置,這個文件里都是web進程運行時的環(huán)境變量藏畅,大多數(shù)都是用戶可控制的敷硅,可以在User-Agent中注入代碼

6、包含上傳的臨時文件愉阎,PHP創(chuàng)建的臨時文件绞蹦,往往處于PHP允許訪問的目錄范圍,在php.ini的upload_tep_dir中定義榜旦,臨時文件的文件名是隨機的幽七,可以暴力猜解獲取臨時文件名

遠程文件包含

設置allow_url_include為off,阻止遠程文件包含漏洞

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末溅呢,一起剝皮案震驚了整個濱河市锉走,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌藕届,老刑警劉巖挪蹭,帶你破解...
    沈念sama閱讀 216,372評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異休偶,居然都是意外死亡梁厉,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評論 3 392
  • 文/潘曉璐 我一進店門踏兜,熙熙樓的掌柜王于貴愁眉苦臉地迎上來词顾,“玉大人,你說我怎么就攤上這事碱妆∪忭铮” “怎么了?”我有些...
    開封第一講書人閱讀 162,415評論 0 353
  • 文/不壞的土叔 我叫張陵疹尾,是天一觀的道長上忍。 經(jīng)常有香客問我骤肛,道長,這世上最難降的妖魔是什么窍蓝? 我笑而不...
    開封第一講書人閱讀 58,157評論 1 292
  • 正文 為了忘掉前任腋颠,我火速辦了婚禮,結果婚禮上吓笙,老公的妹妹穿的比我還像新娘淑玫。我一直安慰自己,他們只是感情好面睛,可當我...
    茶點故事閱讀 67,171評論 6 388
  • 文/花漫 我一把揭開白布絮蒿。 她就那樣靜靜地躺著,像睡著了一般叁鉴。 火紅的嫁衣襯著肌膚如雪土涝。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,125評論 1 297
  • 那天亲茅,我揣著相機與錄音回铛,去河邊找鬼。 笑死克锣,一個胖子當著我的面吹牛茵肃,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播袭祟,決...
    沈念sama閱讀 40,028評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼验残,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了巾乳?” 一聲冷哼從身側響起您没,我...
    開封第一講書人閱讀 38,887評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎胆绊,沒想到半個月后氨鹏,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,310評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡压状,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,533評論 2 332
  • 正文 我和宋清朗相戀三年仆抵,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片种冬。...
    茶點故事閱讀 39,690評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡镣丑,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出娱两,到底是詐尸還是另有隱情莺匠,我是刑警寧澤,帶...
    沈念sama閱讀 35,411評論 5 343
  • 正文 年R本政府宣布十兢,位于F島的核電站趣竣,受9級特大地震影響摇庙,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜期贫,卻給世界環(huán)境...
    茶點故事閱讀 41,004評論 3 325
  • 文/蒙蒙 一跟匆、第九天 我趴在偏房一處隱蔽的房頂上張望异袄。 院中可真熱鬧通砍,春花似錦、人聲如沸烤蜕。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽讽营。三九已至虎忌,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間橱鹏,已是汗流浹背膜蠢。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評論 1 268
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留莉兰,地道東北人挑围。 一個月前我還...
    沈念sama閱讀 47,693評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像糖荒,于是被迫代替她去往敵國和親杉辙。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,577評論 2 353

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

  • 文件上傳漏洞是指用戶上傳了一個可執(zhí)行的腳本文件捶朵,并通過此腳本文件獲得了執(zhí)行服務器端命令的能力蜘矢。這種攻擊方式是最為直...
    付出從未后悔閱讀 1,136評論 0 4
  • 0x01 文件上傳漏洞 文件上傳漏洞顧名思義就是用戶上傳一個可執(zhí)行的腳本文件,獲得了執(zhí)行服務器端命令的能力综看。通常品腹,...
    Pino_HD閱讀 1,905評論 0 0
  • 什么是文件上傳漏洞? 文件上傳漏洞是指由于程序員在對用戶文件上傳部分的控制不足或者處理缺陷红碑,而導致的用戶可以越過其...
    Smi1e_閱讀 24,737評論 0 24
  • 一舞吭、初步認識 1.上傳功能:網(wǎng)站上各種可以上傳文件,圖片的地方可以被用作上傳點進行非法上傳 2.上傳原理:在前端代...
    楠昭閱讀 1,628評論 1 11
  • 文件上傳漏洞 常見的漏洞分類服務器配置不當導致文件上傳開源編輯器存在上傳漏洞本地文件上傳限制可以上傳被繞過服務器端...
    二潘閱讀 17,136評論 2 3