文章目錄
- 一、學習目的:
- 二、檔案上傳漏洞原理:
- 三、檔案上傳漏洞高危觸發點
- 四、前端檢測:
- 1.?原理:
- 2.?如何判斷當前頁面使用前端is的驗證方式:
- 3.?繞過方法:
- 3.1?洗掉js繞過:
- 3.2?禁用js繞過:
- 五、后端檢測_后綴名檢測漏洞:
- 1.?原理:
- 2.?黑名單:
- 2.1?原理:
- 2.2?繞過方法:
- 決議漏洞
- 截斷上傳
- 大小寫繞過
- 黑名單擴展名的漏網之魚
- 利用Windows的命名機制
- 雙寫繞過
- 3.?白名單:
- 3.1?原理:
- 3.2?繞過方法:
- 決議漏洞
- 截斷上傳
- 檔案包含
- 六、后端檢測_00截斷:
- 1.?原理:
- 2.?繞過思路:
- 七、后端檢測_MIME檢測:
- 1.?什么是MIME:
- 2.?常見的MIME型別:
- 3.?檢測方式:
- 4.?MIME繞過的原理:
- 八、后端檢測_檔案頭檢測漏洞:
- 1.?原理:
- 2.?常見的檔案頭:
- 九、后端檢測_內容檢測圖片馬繞過:
- 1.?漏洞原理:
- 2.?圖片馬制作:
- 3.?決議圖片馬:
- 十、決議漏洞:
- 1.?`.htaccess`檔案決議漏洞:
- 1.1?漏洞利用前提::
- 1.2?原理:
- 1.3?利用方式:
- 1.4?`.htaccess檔案`內容:
- 2.?`Apache`決議漏洞:
- 2.1?漏洞原理:
- 2.2?影響版本:
- 3.? `IIS6.0`決議漏洞:
- 4.?IIS7.0 | IIS7.5 | Nginx的決議漏洞:
- 4.1?原理:
- 4.2?漏洞形式:
- 4.3?另外兩種決議漏洞:
- 十一、條件競爭漏洞:
- 十二、二次渲染漏洞:
- 1.?二次渲染原理:
- 2.?繞過:
- 3.?如何判斷圖片是否進行了二次處理?
一、學習目的:
通過本次學習,了解檔案上傳漏洞的原理,及其檢測方法;
通過本次學習,了解檔案上傳漏洞的危害及其存在位置;
二、檔案上傳漏洞原理:
- 在檔案上傳的功能處,若服務端腳本語言未對上傳的檔案進行嚴格驗證和過濾,導致惡意用戶上傳惡意的腳本檔案時,就有可能獲取執行服務端命令的能力,這就是檔案上傳漏洞,
- 檔案上傳漏洞對Web應用來說是一種非常嚴重的漏洞,一般情況下,Web應用都會允許用戶上傳一些檔案,如頭像、附件等資訊,如果Web應用沒有對用戶上傳的檔案進行有效的檢查過濾,那么惡意用戶就會上傳一句話木馬等Webshell,從而達到控制Web網站的目的,

三、檔案上傳漏洞高危觸發點
- 存在檔案上傳功能的地方都有可能存在檔案上傳漏洞,比如相冊、頭像上傳,視頻、照片分享,論壇發帖和郵箱等可以上傳附件的地方也是上傳漏闊的高危地帶,另外像檔案管理器這樣的功能也有可能被攻擊者所利用,
- 值得注意的是,如果移動端也存在類似的操作的話,那么相同的原理,也存在檔案上傳漏洞的風險,

四、前端檢測:
??主要是通過
javascript代碼進行檢測,非常容易進行繞過,
1.?原理:
??Web應用系統雖然對用戶上傳的檔案進行了校驗,但是校驗是通過前端javascript代碼完成的,由于惡意用戶可以對前端javascript進行修改或者是通過抓包軟體篡改上傳的檔案,就會導致基于js的校驗很容易被繞過,
點擊進入:【檔案上傳繞過】——前端檢測_前端js驗證漏洞

2.?如何判斷當前頁面使用前端is的驗證方式:
??前端驗證通過以后,表單成功提交后會通過瀏覽器發出─條網路請求,但是如果前端驗證不成功,則不會發出這項網路請求;可以在瀏覽器的網路元素中查看是否發出了網路請求,
3.?繞過方法:
- 洗掉或者禁用js:
火狐瀏覽器-->about:config-->JavaScriptenable-false (ajax)- 使用代理上傳檔案,Burp Suite;上傳符合要求的檔案型別,抓包修改檔案型別,
3.1?洗掉js繞過:
直接洗掉代碼中onsubmit事件中關于檔案上傳時驗證上傳檔案的相關代碼即可:

或者可以不加載所有js,還可以將html原始碼copy一份到本地,然后對相應代碼進行修改,本地提交即可,
3.2?禁用js繞過:
點擊進入:禁用js繞過文章
五、后端檢測_后綴名檢測漏洞:
1.?原理:
??通常是針對檔案的擴展名后綴進行檢測,主要是通過黑白名單進行過濾檢測,如果不符全過濾規則則不允許上傳,
??點擊進入:【檔案上傳繞過】——后端檢測_檔案的擴展名檢測漏洞

2.?黑名單:
2.1?原理:
??黑名單檢測:一般有個專門的
blacklist 檔案,里面會包含常見的危險腳本檔案,
例如: fckeditor 2.4.3 或之前版本的黑名單:

2.2?繞過方法:
決議漏洞
.htaccess檔案決議漏洞- apache決議漏洞
- IIS7.0 | IIS7.5 | Nginx的決議漏洞
- IIS6.0決議漏洞
截斷上傳
- 截斷型別:PHP%00截斷
- 截斷原理:由于00代表結束符,所以會把00后面的所有字符都截斷
- 截斷條件:PHP版本小于5.3.4,PHP的magic_quotes_gpc為OFF狀態
大小寫繞過
比如:
aSp和pHp之類,
黑名單擴展名的漏網之魚
比如:
asa和cer之類
asp:asaceraspx
jsp:jspxjspf
php:phpphp3php4php5phtmlpht
exe:exee
利用Windows的命名機制
shell.php.??shell.php空格??shell.php:1.jpg??shell. php::$DATA??shell.php:1.jpg
在windows中,后綴名后面的點和空格都會被洗掉掉,
雙寫繞過
??有時候在檢測時,后臺會把敏感字符替換成空格,這個時候,我們可以使用雙寫進行繞過,比如:
pphphp
3.?白名單:
3.1?原理:
??白名單檢測:一般有個專門的
whitelist 檔案,里面會包含的正常檔案:
??JpgpngGIF
3.2?繞過方法:
決議漏洞
- .htaccess檔案決議漏洞
- apache決議漏洞
- IIS7.0 | IIS7.5 | Nginx的決議漏洞
- IIS6.0決議漏洞
截斷上傳
- 截斷型別:PHP%00截斷
- 截斷原理:由于00代表結束符,所以會把00后面的所有字符都截斷
- 截斷條件:PHP版本小于5.3.4,PHP的magic_quotes_gpc為OFF狀態
檔案包含
點擊進入:檔案包含漏洞詳解
六、后端檢測_00截斷:
點擊進入: 【檔案上傳繞過】——后端檢測_檔案名檢測00截斷繞過
1.?原理:
??雖然web應用做了校驗,但是由于檔案上傳后的
路徑用戶可以控制,攻擊者可以利用手動添加字串識別符號0X00的方式來將后面的拼接的內容進行截斷,導致后面的內容無效,而且后面的內容又可以幫助我們繞過黑白名單的檢測,
2.?繞過思路:
??在
C語言中,空字符有一個特殊含義,代表字串的拼接結束,
??這里我們使用的是php語言,屬于高級語言,底層靠C語言來實作的,也就是說空字符的字串拼接結束功能在PHP中也能實作,但是我們在URL中不能直接使用空,這樣會造成無法識別;我們通過查看ASCII對照表,發現ASCII對照表第一個就空字符,它對應的16進制是00,這里我們就可以用16進制的00來代替空字符,讓它截斷后面的內容,
使用burpsuite進行抓包,因為這里是通過URL進行傳遞的檔案上傳后存盤路徑,所以需要對16進制的00進行URL編碼,編碼的結果就是%00,通過這種方式,就可以%00截斷后面的內容,讓拼接的檔案名不再進行生效:

七、后端檢測_MIME檢測:
1.?什么是MIME:
??
MIME(Multipurpose Internet Mail Extensions)多用途互聯網郵件擴展型別,是設定某種擴展名的檔案用一種應用程式來打開的方式型別,當該擴展名檔案被訪問的時候,瀏覽器會自動使用指定應用程式來打開,
??點擊進入:【檔案上傳繞過】——后端檢測_MIME-TYPE檢測漏洞
繞過上傳限制-服務端繞過MIME檢測:

2.?常見的MIME型別:
text/plain(純文本)
text/html(HTML檔案)
text/javascript(js代碼)
application/xhtml+xml(XHTML檔案)
image/gif(GIF影像)
image/jpeg(JPEG影像)
image/png(PNG影像)
video/mpeg(MPEG影片)
application/octet-stream(二進制資料)
application/pdf(PDF檔案)
3.?檢測方式:
??在檔案上傳程序中,服務端會針對我們的上傳的檔案生成一個陣列,這個陣列其中有一項就是這個檔案的型別
file_type;服務端對檔案進行檢測時,就是通過檢測腳本中的黑白名單和這個陣列中的file_type進行對比,如果符合要求就允許上傳這個檔案,

4.?MIME繞過的原理:
??部分Web應用系統判定檔案型別是通過
content-type欄位,黑客可以通過抓包,將content-type欄位改為常見的圖片型別,如image/gif,從而繞過校驗,
??
八、后端檢測_檔案頭檢測漏洞:
1.?原理:
??在每一個檔案(包括圖片,視頻或其他的非ASCII檔案)的開頭(十六進制表示)實際上都有一片區域來顯示這個檔案的實際用法,這就是檔案頭標志,我們可以通過16進制編輯器打開檔案,添加服務器允許的檔案頭以繞過檢測,
??點擊進入:【檔案上傳繞過】——后端檢測_檔案頭檢測漏洞
2.?常見的檔案頭:
注意:下面的檔案頭的格式是16進制的格式:
GIF:47 49 46 38 39 61
png:89 50 4E 47 0D 0A 1A 0A
JPG:FF D8 FF E0 00 10 4A 46 49 46
在進行檔案頭繞過時,我們可以把上面的檔案頭添加到我們的一句話木馬內容最前面,達到繞過檔案頭檢測的目的,
九、后端檢測_內容檢測圖片馬繞過:
1.?漏洞原理:
??一般檔案內容驗證使用
getimagesize函式檢測,會判斷檔案是否是一個有效的檔案圖片,如果是,則允許上傳,否則的話不允許上傳,
??本實驗就是將一句話木馬插入到一個[合法]的圖片檔案當中,然后用webshell管理工具進行遠程連接,
??點擊進入:【檔案上傳繞過】——后端檢測_內容檢測圖片馬繞過
2.?圖片馬制作:
準備一張圖片,這里為a.png,和一個一句話木馬,通過以下命令合成一個圖片馬3.php:
a.php內容:
<?php phpinfo(); ?>

命令:
copy a.png /b + a.php /a 3.php
/b:指定以二進制格式復制、合并檔案,用于影像或者聲音類檔案
/a:指定以ascii格式復制、合并檔案用于txt等文本類檔案

注:這條命令的意思是:通過copy命令,把a.png圖片檔案,以二進制檔案形式添加到a.php檔案中,以ASCII文本檔案形式輸出為3.php檔案,
3.?決議圖片馬:
??一般決議圖片馬需要結合
決議漏洞或者檔案包含才能決議圖片馬;
十、決議漏洞:
1.?.htaccess檔案決議漏洞:
1.1?漏洞利用前提::
??web具體應用沒有禁止.htaccess檔案的上傳,同時web服務器提供商允許用戶上傳自定義的
.htaccess檔案,
??【檔案上傳繞過】——決議漏洞_.htaccess檔案決議漏洞
1.2?原理:
??
.htaccess檔案(或者"分布式組態檔"),全稱是Hypertext Access(超文本入口),提供了針對目錄改變配置的方法,即,在一個特定的檔案目錄中放置一個包含一個或多個指令的檔案,以作用于此目錄及其所有子目錄,作為用戶,所能使用的命令受到限制,管理員可以通過Apache的AllowOverride指令來設定,
1.3?利用方式:
??上傳覆寫
.htaccess檔案,重寫決議規則,將上傳的帶有腳本馬的圖片以腳本方式決議,
1.4?.htaccess檔案內容:
??
.htaccess檔案決議規則的增加,是可以按照組合的方式去做的,不過具體得自己多測驗,
<FilesMatch "evil.gif">
SetHandler application/x-httpd-php #在當前目錄下,如果匹配到evil.gif檔案,則被決議成PHP代碼執行
AddHandler php5-script .gif #在當前目錄下,如果匹配到evil.gif檔案,則被決議成PHP代碼執行
</FilesMatch>
2.?Apache決議漏洞:
2.1?漏洞原理:
??
Apache決議檔案的規則是從右到左開始判斷決議,如果后綴名為不可識別檔案決議,就再往左判斷,比如test.php.a.b的“.a”和“.b”這兩種后綴是apache不可識別決議,apache就會把test.php.a.b決議成test.php,
??點擊進入:【檔案上傳繞過】——決議漏洞_apache決議漏洞
2.2?影響版本:
apache 1.x
apache 2.2.x
3.? IIS6.0決議漏洞:
IIS6.0決議漏洞分兩種:
1、目錄決議:
以xx.asp命名的檔案夾里的檔案都將會被當成ASP檔案執行,
2、檔案決議:
xx.asp;.jpg像這種畸形檔案名在;后面的直接被忽略,也就是說當成xx.asp檔案執行,
IIS6.0默認的可執行檔案除了asp還包含這三種.asa.cer.cdx,
點擊進入:【檔案上傳繞過】——決議漏洞_IIS6.0決議漏洞
4.?IIS7.0 | IIS7.5 | Nginx的決議漏洞:
4.1?原理:
??
Nginx拿到檔案路徑(更專業的說法是URI)/test.jpg/test.php后,一看后綴是.php,便認為該檔案是php檔案,轉交給php去處理,php一看/test.jpg/test.php不存在,便刪去最后的/test.php,又看/test.jpg存在,便把/test.jpg當成要執行的檔案了,又因為后綴為.jpg,php認為這不是php檔案,于是回傳Access denied,
??這其中涉及到php的一個選項:cgi.fix_pathinfo,該值默認為1,表示開啟,開啟這一選項PHP可以對檔案路徑進行修理,
??舉個例子,當php遇到檔案路徑/1.jpg/2.txt/3.php時,若/1.jpg/2.txt/3.php不存在,則會去掉最后的/3.php,然后判斷/1.jpg/2.txt是否存在,若存在,則把/1.jpg/2.txt當做檔案/1.jpg/2.txt/3.php,若/1.jpg/2.txt仍不存在,則繼續去掉/2.txt,以此類推,
?? 點擊進入:【檔案上傳繞過】——決議漏洞_IIS7.0 | IIS7.5 | Nginx的決議漏洞
4.2?漏洞形式:
www.xxxxx.com/UploadFiles/image/1.jpg/1.php
4.3?另外兩種決議漏洞:
www.xxxxx.com/UploadFiles/image/1.jpg%00.php
www.xxxxx.com/UploadFiles/image/1.jpg/%20\0.php
十一、條件競爭漏洞:
??條件競爭漏洞是一種服務器端的漏洞,由于服務器端在處理不同用戶的請求時是并發進行的,因此,如果并發處理不當或相關操作邏輯順序設計的不合理時,將會導致此類問題的發生,
??上傳檔案源代碼里沒有校驗上傳的檔案,檔案直接上傳,上傳成功后才進行判斷:如果檔案格式符合要求,則重命名,如果檔案格式不符合要求,將檔案洗掉,
??由于服務器并發處理(同時)多個請求,假如a用戶上傳了木馬檔案,由于代碼執行需要時間,在此程序中b用戶訪問了a用戶上傳的檔案,會有以下三種情況:
??1.訪問時間點在上傳成功之前,沒有此檔案,
??2.訪問時間點在剛上傳成功但還沒有進行判斷,該檔案存在,
??3.訪問時間點在判斷之后,檔案被洗掉,沒有此檔案,`
??點擊進入:條件競爭漏洞
十二、二次渲染漏洞:
1.?二次渲染原理:
? ? 在我們上傳檔案后,網站會對圖片進行二次處理(格式、尺寸要求等),服務器會把里面的內容進行替換更新,處理完成后,根據我們原有的圖片生成一個新的圖片并放到網站對應的標簽進行顯示,
? ? 點擊進入: 【檔案上傳繞過】——二次渲染漏洞
2.?繞過:
1、配合檔案包含漏洞:
??將一句話木馬插入到網站二次處理后的圖片中,也就是把一句話插入圖片在二次渲染后會保留的那部分資料里,確保不會在二次處理時洗掉掉,這樣二次渲染后的圖片中就存在了一句話,在配合檔案包含漏洞獲取webshell,
2、可以配合條件競爭:
??這里二次渲染的邏輯存在漏洞,先將檔案上傳,之后再判斷,符合就保存,不符合洗掉,可利用條件競爭來進行爆破上傳
3.?如何判斷圖片是否進行了二次處理?
??對比要上傳圖片與上傳后的圖片大小,使用
16進制編輯器打開圖片查看上傳后保留了哪些資料,查看那些資料被改變,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/294864.html
標籤:其他
下一篇:最近做的題的wp
