Web安全技術(shù) 課件 5 文件上傳攻擊_第1頁(yè)
Web安全技術(shù) 課件 5 文件上傳攻擊_第2頁(yè)
Web安全技術(shù) 課件 5 文件上傳攻擊_第3頁(yè)
Web安全技術(shù) 課件 5 文件上傳攻擊_第4頁(yè)
Web安全技術(shù) 課件 5 文件上傳攻擊_第5頁(yè)
已閱讀5頁(yè),還剩37頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第5章文件上傳攻擊01文件上傳攻擊的原理02文件上傳的業(yè)務(wù)流程03文件上傳攻擊的條件04文件上傳檢測(cè)繞過(guò)技術(shù)目錄CONTENTS文件上傳攻擊的原理上傳攻擊文件上傳攻擊的定義

文件上傳功能是用戶與服務(wù)器進(jìn)行文件交互的重要手段。通過(guò)上傳功能,用戶可實(shí)現(xiàn)自有內(nèi)容的個(gè)性化修改,為業(yè)務(wù)開(kāi)展及用戶體驗(yàn)提供良好的實(shí)現(xiàn)方式。

但是,上傳過(guò)程中存在重大安全隱患。攻擊者的目的是取得當(dāng)前Web服務(wù)器的權(quán)限。如果通過(guò)Web層面開(kāi)展攻擊,那么必須將攻擊者的木馬插入Web系統(tǒng)中,并在服務(wù)器端執(zhí)行。這個(gè)過(guò)程就是對(duì)Web服務(wù)器進(jìn)行文件注入攻擊。這時(shí),上傳點(diǎn)可作為上傳木馬有效途徑,上傳攻擊將直接威脅當(dāng)前系統(tǒng)的安全性。文件上傳攻擊的原理上傳攻擊文件上傳攻擊的定義

文件上傳攻擊,是指攻擊者利用Web應(yīng)用對(duì)上傳文件過(guò)濾不嚴(yán)的漏洞,將應(yīng)用程序定義類型之外的文件上傳到Web服務(wù)器,并且此類文件通常為木馬,在上傳成功后攻擊者即可獲得當(dāng)前的Webshell。webshell就是以asp、php、jsp或者cgi等網(wǎng)頁(yè)文件形式存在的一種命令執(zhí)行環(huán)境,也可以將其稱做為一種網(wǎng)頁(yè)后門。黑客在入侵了一個(gè)網(wǎng)站后,通常會(huì)將asp或php后門文件與網(wǎng)站服務(wù)器WEB目錄下正常的網(wǎng)頁(yè)文件混在一起,然后就可以使用瀏覽器來(lái)訪問(wèn)asp或者php后門,得到一個(gè)命令執(zhí)行環(huán)境,以達(dá)到控制網(wǎng)站服務(wù)器的目的。顧名思義,“web”的含義是顯然需要服務(wù)器開(kāi)放web服務(wù),“shell”的含義是取得對(duì)服務(wù)器某種程度上操作權(quán)限。webshell常常被稱為入侵者通過(guò)網(wǎng)站端口對(duì)網(wǎng)站服務(wù)器的某種程度上操作的權(quán)限。由于webshell其大多是以動(dòng)態(tài)腳本的形式出現(xiàn),也有人稱之為網(wǎng)站的后門工具。文件上傳攻擊的原理上傳攻擊文件上傳攻擊的原理

攻擊者想取得Webshell,最直接的方式就是將Web木馬插入服務(wù)器端并進(jìn)行成功解析。假設(shè)目標(biāo)服務(wù)器為PHP環(huán)境,那么針對(duì)上傳點(diǎn)就要利用PHP木馬,并且要求木馬在服務(wù)器以.php為后綴名進(jìn)行保存。因此,上傳木馬的過(guò)程就是在Web系統(tǒng)中新增一個(gè)頁(yè)面,當(dāng)木馬上傳成功后,攻擊者就可以遠(yuǎn)程訪問(wèn)這個(gè)木馬文件,相當(dāng)于瀏覽一個(gè)頁(yè)面,只當(dāng)過(guò)這個(gè)頁(yè)面就是木馬,具備讀取、修改文件內(nèi)容、連接數(shù)據(jù)庫(kù)等功能。

因此,上傳漏洞存在的前提是:存在上傳點(diǎn)且上傳點(diǎn)用戶可獨(dú)立控制上傳內(nèi)容,同時(shí)上傳文件可被順利解析。01文件上傳攻擊的原理02文件上傳的業(yè)務(wù)流程03文件上傳攻擊的條件04文件上傳檢測(cè)繞過(guò)技術(shù)目錄CONTENTS文件上傳的業(yè)務(wù)流程文件上傳的業(yè)務(wù)流程用戶發(fā)送請(qǐng)求客戶端提交上傳表單表單服務(wù)器接收上傳信息上傳信息存儲(chǔ)為臨時(shí)文件文件用戶上傳攻擊轉(zhuǎn)存為正式文件臨時(shí)文件調(diào)用與執(zhí)行文件正式文件文件上傳的業(yè)務(wù)流程文件上傳的業(yè)務(wù)流程上傳攻擊客戶端表單:<html><head><metacharset="UTF-8"><title>fileupload</title></head><body><formaction="upload_file.php"method="post"enctype="multipart/form-data"><labelfor="file">上傳文件:</label> <inputtype="file"name="upfile"id="file"/> <inputtype="submit"name="submit"value="上傳"/></form></body></html>文件上傳的業(yè)務(wù)流程文件上傳的業(yè)務(wù)流程上傳攻擊<?phpif(is_uploaded_file($_FILES["upfile"]["tmp_name"]))

{$upfile=$_FILES["upfile"];

$name=$upfile["name"];

$type=$upfile["type"];

$size=$upfile["size"];

$tmp_name=$upfile["tmp_name"];

echo"上傳文件名:".$name."</br>";

echo"上傳文件類型:".$type."</br>";echo"上傳文件大小:".($size/1024)."KB</br>";

$destination="./file/".$name;

move_uploaded_file($tmp_name,$destination);

echo"文件上傳成功!";}else

{echo"文件上傳失敗!";echo$_FILES["upfile"]["error"];}?>服務(wù)端:$_FILES參數(shù)詳解:$_FILES["file"]["name"]–被上傳文件的名稱$_FILES["file"]["type"]–被上傳文件的類型$_FILES["file"]["size"]–被上傳文件的大小,以字節(jié)計(jì)$_FILES["file"]["tmp_name"]–存儲(chǔ)在服務(wù)器的文件臨時(shí)副本的名稱$_FILES["file"]["error"]–由文件上傳導(dǎo)致的錯(cuò)誤代碼$_FILES["file"]["error"]中的["error"]值情況:0:沒(méi)有錯(cuò)誤發(fā)生,文件上傳成功UPLOAD_ERR_OK1:上傳的文件超過(guò)了php.ini中upload_max_filesize(默認(rèn)情況為2M)選項(xiàng)限制的值UPLOAD_ERR_INI_SIZE

UPLOAD_ERR_FORM_SIZE2:上傳文件的大小超過(guò)了HTML表單中MAX_FILE_SIZE選項(xiàng)指定的值3:文件只有部分被上傳UPLOAD_ERR_PARTIAL4:沒(méi)有文件被上傳UPLOAD_ERR_NO_FILE5:上傳文件大小為0判斷文件是否通過(guò)httppost上傳的,如果是,返回true繼續(xù)執(zhí)行上傳文件操作01文件上傳攻擊的原理02文件上傳的業(yè)務(wù)流程03文件上傳攻擊的條件04文件上傳檢測(cè)繞過(guò)技術(shù)目錄CONTENTS條件二條件一條件四條件三目標(biāo)網(wǎng)站具有上傳功能上傳攻擊實(shí)現(xiàn)的前提是:目標(biāo)網(wǎng)站具有上傳功能,可以上傳文件,并且文件上傳到服務(wù)器后可被存儲(chǔ)。上傳的目標(biāo)文件能夠被Web服務(wù)器解析執(zhí)行在Apache+PHP環(huán)境下,要求上傳的Web木馬采用.php后綴名(或能有以PHP方式解析的后綴名),并且存放上傳文件的目錄要有執(zhí)行腳本的權(quán)限。知道文件上傳到服務(wù)器后的存放路徑和文件名稱如果上傳成功但不知道真實(shí)路徑,那么攻擊過(guò)程沒(méi)有意義。目標(biāo)文件可被用戶訪問(wèn)如果文件上傳后,卻不能通過(guò)Web訪問(wèn),或者真實(shí)路徑無(wú)法獲得,木馬則無(wú)法被攻擊者打開(kāi),那么就不能成功實(shí)施攻擊。上傳攻擊文件上傳攻擊的條件文件上傳攻擊的流程上傳攻擊文件上傳攻擊的條件編寫一句話木馬:上傳一句話木馬:文件上傳攻擊的流程上傳攻擊文件上傳攻擊的條件打開(kāi)“中國(guó)菜刀”:連接網(wǎng)站:01文件上傳攻擊的原理02文件上傳的業(yè)務(wù)流程03文件上傳攻擊的條件04文件上傳檢測(cè)繞過(guò)技術(shù)目錄CONTENTS文件上傳檢測(cè)繞過(guò)技術(shù)文件上傳攻擊的防護(hù)DVWA-Medium上傳攻擊<?phpif(isset($_POST['Upload'])){$target_path=DVWA_WEB_PAGE_TO_ROOT."hackable/uploads/";$target_path.=basename($_FILES['uploaded']['name']);$uploaded_name=$_FILES['uploaded']['name'];$uploaded_type=$_FILES['uploaded']['type'];$uploaded_size=$_FILES['uploaded']['size'];

if(($uploaded_type=="image/jpeg"||$uploaded_type=="image/png")&&

($uploaded_size<100000))

{

if(!move_uploaded_file($_FILES['uploaded']['tmp_name'],$target_path))

{echo'<pre>Yourimagewasnotuploaded.</pre>';

}

else

{echo"<pre>{$target_path}succesfullyuploaded!</pre>";}}else

{echo'<pre>Yourimagewasnotuploaded.WecanonlyacceptJPEGorPNGimages.</pre>';

}}?>對(duì)上傳文件的類型、大小做了限制文件上傳檢測(cè)繞過(guò)技術(shù)文件上傳攻擊防護(hù)的繞過(guò)DVWA-Medium繞過(guò)上傳攻擊嘗試修改filename為hack.php。Burpsuite抓包:文件上傳檢測(cè)繞過(guò)技術(shù)文件上傳攻擊的防護(hù)DVWA-High上傳攻擊<?phpif(isset($_POST['Upload'])){$target_path=DVWA_WEB_PAGE_TO_ROOT."hackable/uploads/";$target_path.=basename($_FILES['uploaded']['name']);

$uploaded_name=$_FILES['uploaded']['name'];$uploaded_ext=substr($uploaded_name,strrpos($uploaded_name,'.')+1);$uploaded_size=$_FILES['uploaded']['size'];$uploaded_tmp=$_FILES['uploaded']['tmp_name'];if((strtolower($uploaded_ext)=="jpg"||strtolower($uploaded_ext)=="jpeg"||strtolower($uploaded_ext)=="png")

&&($uploaded_size<100000)&&getimagesize($uploaded_tmp))

{if(!move_uploaded_file($uploaded_tmp,$target_path))

{echo'<pre>Yourimagewasnotuploaded.</pre>';}

else

{echo"<pre>{$target_path}succesfullyuploaded!</pre>";}}else

{echo'<pre>Yourimagewasnotuploaded.WecanonlyacceptJPEGorPNGimages.</pre>';}}?>strrpos(string,find,start)返回字符串find在另一字符串string中最后一次出現(xiàn)的位置,如果沒(méi)有找到字符串則返回false,可選參數(shù)start規(guī)定在何處開(kāi)始搜索。substr(string,start,length)返回string串中從start開(kāi)始,長(zhǎng)度為length的子串(默認(rèn)可以不指定length,直到string串的末尾)getimagesize(stringfilename)函數(shù)會(huì)通過(guò)讀取文件頭,返回圖片的長(zhǎng)、寬等信息,如果沒(méi)有相關(guān)的圖片文件頭,函數(shù)會(huì)報(bào)錯(cuò)。文件上傳檢測(cè)繞過(guò)技術(shù)文件上傳攻擊的防護(hù)DVWA-Impossiable上傳攻擊imagecreatefromjpeg(filename)函數(shù)返回圖片文件的圖像標(biāo)識(shí),失敗返回falseimagejpeg(image,filename,quality)從image圖像以filename為文件名創(chuàng)建一個(gè)JPEG圖像,可選參數(shù)quality,范圍從0(最差質(zhì)量,文件更?。┑?00(最佳質(zhì)量,文件最大)。

imagedestroy(img)函數(shù)銷毀圖像資源可以看到,Impossible級(jí)別的代碼對(duì)上傳文件進(jìn)行了重命名(為md5值,導(dǎo)致%00截?cái)酂o(wú)法繞過(guò)過(guò)濾規(guī)則),加入Anti-CSRFtoken防護(hù)CSRF攻擊,同時(shí)對(duì)文件的內(nèi)容作了嚴(yán)格的檢查,導(dǎo)致攻擊者無(wú)法上傳含有惡意腳本的文件。文件上傳檢測(cè)繞過(guò)技術(shù)文件上傳攻擊的防護(hù)客戶端JavaScript檢測(cè)上傳攻擊防護(hù)思路在網(wǎng)站中部署JavaScript腳本,在用戶訪問(wèn)時(shí),腳本隨同網(wǎng)頁(yè)一起到達(dá)客戶端瀏覽器。當(dāng)用戶上傳文件時(shí),JS腳本對(duì)用戶表單提交的數(shù)據(jù)進(jìn)行檢查,如果發(fā)現(xiàn)非法后綴,則直接終止上傳,從而起到防護(hù)的效果。

文件上傳檢測(cè)繞過(guò)技術(shù)文件上傳攻擊的防護(hù)客戶端JavaScript檢測(cè)上傳攻擊防護(hù)代碼:

</head><body><h2>文件上傳漏洞——JavaScript防護(hù)</h2><formname="form1"action="upload_file.php"onsubmit="returnlastname()"method="post"enctype="multipart/form-data"><labelfor="file">上傳文件:</label> <inputtype="file"name="upfile"id="file"/> <inputtype="submit"name="submit"value="上傳"/></form>

文件上傳檢測(cè)繞過(guò)技術(shù)文件上傳攻擊的防護(hù)客戶端JavaScript檢測(cè)上傳攻擊

防護(hù)代碼:JS代碼<script>functionlastname()

{varfile=document.getElementsByName('upfile')[0].value;

if(file==null||file=="")

{alert("你還沒(méi)有選擇任何文件,不能上傳!");

returnfalse;

} varallow_ext=".jpg|.jpeg|.png|.gif|.bmp|";//提取上傳文件的類型

varext_name=file.substring(file.lastIndexOf("."));

ext_name=ext_name.toLowerCase();

if(allow_ext.indexOf(ext_name+"|")==-1)//判斷上傳文件類型是否允許上傳

{varerrMsg="該文件不允許上傳,請(qǐng)上傳"+allow_ext+"類型的文件,當(dāng)前文件類型為:"+ext_name;

alert(errMsg);

returnfalse;

}

}</script>

返回一個(gè)指定的字符串值最后出現(xiàn)的位置,在一個(gè)字符串中的指定位置從后向前搜索。substring(start,stop)返回從start開(kāi)始到stop-1結(jié)束的子串,如果沒(méi)有stop,則到串的結(jié)尾返回某個(gè)指定的子串在字符串中首次出現(xiàn)的位置。文件上傳檢測(cè)繞過(guò)技術(shù)文件上傳攻擊防護(hù)的繞過(guò)客戶端JavaScript檢測(cè)上傳攻擊

雖然上述方式實(shí)現(xiàn)了后綴名的檢查,并且在用戶端完成了檢測(cè),看似防護(hù)效果良好,其實(shí)還存在重大隱患。瀏覽器可以禁用JS方式,禁止防護(hù)腳本執(zhí)行,導(dǎo)致防護(hù)功能直接失效。如果這種防護(hù)手段在HTTP數(shù)據(jù)包發(fā)出之前執(zhí)行完畢,那么攻擊者可利用Web代理類攻擊,抓取含有上傳表單的HTTP數(shù)據(jù)包,并在包中將其修改為預(yù)想的后綴,則也可繞過(guò)此JS防護(hù)手段。

文件上傳檢測(cè)繞過(guò)技術(shù)文件上傳攻擊的防護(hù)客戶端MIME檢測(cè)上傳攻擊防護(hù)思路

在HTTP協(xié)議中,會(huì)利用Content-Type標(biāo)識(shí)本次上傳的內(nèi)容類型。這個(gè)類型由客戶端的瀏覽器根據(jù)本次上傳文件的反綴名自動(dòng)生成。常見(jiàn)的類型如下:Content-Type類型含義Content-Type類型含義Image/jpgJPG圖像Text/htmlHTML文檔Image/gifGIF圖像Applocation/XMLXML文檔Image/pngPNG圖像Applocation/PDFPDF文檔文件上傳檢測(cè)繞過(guò)技術(shù)文件上傳攻擊的防護(hù)客戶端MIME檢測(cè)上傳攻擊防護(hù)思路

服務(wù)器接收到HTTP包后,先判斷Content-Type是否合法。如果合法,則進(jìn)行后續(xù)代碼流程;如果非法,則直接中斷本次上傳。

許多地方將Content-Type稱為MIME(MultipurposeInternetMailExtensions)信息。因此,此種防護(hù)手段通常也叫做MIME檢測(cè)機(jī)制。文件上傳檢測(cè)繞過(guò)技術(shù)文件上傳攻擊的防護(hù)客戶端MIME檢測(cè)上傳攻擊防護(hù)代碼$file_type=$_FILE[“upfile”][“type”];If($file_type==“image/gif”||$file_type==“image/jpg”||$file_type==“image/png”||$file_type==“image/gif”){if(move_uploaded_file($_FILE[“upload”][“tmp_name”],$destination.’/’.$_FILE[“upload”][name]))

{echo“文件上傳成功!”;}

else

{echo“文件上傳失?。 ?

}}Else{echo“文件類型不正確!”;}

文件上傳檢測(cè)繞過(guò)技術(shù)文件上傳攻擊防護(hù)的繞過(guò)客戶端MIME檢測(cè)上傳攻擊防護(hù)繞過(guò)方式由于校驗(yàn)通過(guò)驗(yàn)證MIME值完成,而Content-Type類型是由客戶端瀏覽器自動(dòng)生成的,那么在這個(gè)過(guò)程中其實(shí)Content-Type類型是可控的。只要偽造MIME值即可繞過(guò)防護(hù)。利用Burpsuite抓包后修改Content-Type類型,即可繞過(guò)該檢測(cè)。如DVWA-Medium級(jí)別。將Content-Type的值改為image/jpeg,即可繞過(guò)文件上傳檢測(cè)繞過(guò)技術(shù)文件上傳攻擊防護(hù)的繞過(guò)客戶端MIME檢測(cè)上傳攻擊防護(hù)繞過(guò)方式MIME在服務(wù)端檢測(cè),比JS在客戶端的檢測(cè)效果略好,但由于Content-Type類型依然由客戶端瀏覽器生成,因此實(shí)際上MIME還是處于用戶可控制狀態(tài)(修改文件頭、修改Content-Type等均可)。因此,MIME的防護(hù)效果依然較差,不建議作為主要防護(hù)手段使用。文件上傳檢測(cè)繞過(guò)技術(shù)文件上傳攻擊防護(hù)的繞過(guò)服務(wù)端文件擴(kuò)展名檢測(cè)上傳攻擊既然用戶可操控參數(shù),那么從理論上說(shuō),基于客戶端參數(shù)的檢測(cè)手段都可以被攻擊者繞過(guò)。因此,只能在服務(wù)器端進(jìn)行全面檢查,且不能依賴由用戶瀏覽器生成并提交的數(shù)據(jù)。有效的防護(hù)思路為:當(dāng)服務(wù)器接收到上傳信息后,檢驗(yàn)文件名是否合法。如果不合法,則直接丟棄,從而避免攻擊者欺騙檢測(cè)機(jī)制。完全不信賴用戶所上傳文件的后綴名,在用戶上傳文件之后,重新給上傳文件添加后綴名。文件上傳檢測(cè)繞過(guò)技術(shù)文件上傳攻擊防護(hù)的繞過(guò)服務(wù)端文件擴(kuò)展名檢測(cè)上傳攻擊防護(hù)思路(1)文件后綴重命名只允許單一文件上傳,例如針對(duì)頭像上傳,只允許JPG格式(此種方式下,其他格式文件也可上傳,但由于后綴名會(huì)被重命名為.jpg,因此其他格式文件無(wú)法執(zhí)行)(2)白名單過(guò)濾只允許一種或幾種類型的文件上傳,如圖片上傳,允許jpg、png、gif三種(3)黑名單過(guò)濾禁止幾種類型的文件上傳,其他都放行。文件上傳檢測(cè)繞過(guò)技術(shù)文件上傳攻擊防護(hù)的繞過(guò)服務(wù)端文件擴(kuò)展名檢測(cè)上傳攻擊防護(hù)代碼(1)文件后綴重命名$filerename=‘jpg’;$newfile=md5(uniqid(microtime().’-’.$filerename));If(move_uploaded_file($_FILES[‘upfile’][tmp_name]),$destination.

‘/’.$newfile)……文件上傳檢測(cè)繞過(guò)技術(shù)文件上傳攻擊防護(hù)的繞過(guò)服務(wù)端文件擴(kuò)展名檢測(cè)上傳攻擊防護(hù)代碼(2)白名單防護(hù)$ext_arr=array(‘flv’,‘swf’,‘mp3’,‘mp4’);$file_ext=substr($_FILES[‘file’][‘name’],strrpos($_FILES[‘file’][‘name’],‘.’)+1);If(in_array($file_ext,$ext_arr))……文件上傳檢測(cè)繞過(guò)技術(shù)文件上傳攻擊防護(hù)的繞過(guò)服務(wù)端文件擴(kuò)展名檢測(cè)上傳攻擊針對(duì)黑名單的防護(hù)代碼繞過(guò)(1)多重測(cè)試過(guò)濾文件名針對(duì)黑名單過(guò)濾的文件名,考慮嘗試其他類似的文件名是否也被過(guò)濾。例如.php被過(guò)濾,可以嘗試.php4、.php5等文件名。(2)判斷是否存在大小寫繞過(guò)中間件會(huì)區(qū)分文件名的大小寫,但操作系統(tǒng)并不區(qū)分文件后綴名的大小寫。因此,如果黑名單寫得不完全,攻擊者可以利用大小寫進(jìn)行繞過(guò)。例如.php被過(guò)濾,可以嘗試.PHp、.pHp等文件名。文件上傳檢測(cè)繞過(guò)技術(shù)文件上傳攻擊防護(hù)的繞過(guò)服務(wù)端文件擴(kuò)展名檢測(cè)上傳攻擊針對(duì)黑名單的防護(hù)代碼繞過(guò)(3)特殊文件名構(gòu)造(Windows下)構(gòu)造shell.php.或shell.php_(此種命名方式在Windows下不允許,可用Burpsuite劫持HTTP包并手動(dòng)修改),當(dāng)上傳文件的HTTP包到達(dá)Web服務(wù)器后,并在中間件進(jìn)行緩存轉(zhuǎn)存時(shí),由于Windows不識(shí)別上述后綴機(jī)制,會(huì)自動(dòng)去掉.和_等特殊符號(hào),從而使攻擊者可以繞過(guò)黑名單防護(hù)規(guī)則。文件上傳檢測(cè)繞過(guò)技術(shù)文件上傳攻擊防護(hù)的繞過(guò)服務(wù)端文件擴(kuò)展名檢測(cè)上傳攻擊針對(duì)黑名單的防護(hù)代碼繞過(guò)(4)%00截?cái)啻死@過(guò)方式利用的是C語(yǔ)言的終止符特性。當(dāng)C語(yǔ)言在執(zhí)行過(guò)程中遇到%00,會(huì)被當(dāng)成終止符,程序會(huì)自動(dòng)截?cái)嗪罄m(xù)信息,僅保留%00之前的內(nèi)容。此漏洞僅存在于PHP5.3.7之前的版本,如shell.php%00.jpg,擴(kuò)展名.jpg符合系統(tǒng)對(duì)文件擴(kuò)展名的要求,在上傳頁(yè)面進(jìn)行轉(zhuǎn)存時(shí),之前文件名中的%00會(huì)被當(dāng)成終止符,導(dǎo)致其后的內(nèi)容被忽略。因此,最終文件名會(huì)變?yōu)閟hell.php,從而繞過(guò)了文件后綴名檢查。文件上傳檢測(cè)繞過(guò)技術(shù)文件上傳攻擊防護(hù)的繞過(guò)服務(wù)端文件擴(kuò)展名檢測(cè)上傳攻擊針對(duì)白名單的防護(hù)代碼繞過(guò)白名單的限制更加嚴(yán)格,非允許的后綴名一律拒絕上傳,所以在黑名單中常用的修改大小寫繞過(guò)、多類型后綴名繞過(guò)等手段,都無(wú)法滿足白名單的過(guò)濾規(guī)則,只有如下兩種方式可以繞過(guò)防護(hù)機(jī)制:(1)特殊文件名構(gòu)造(參考黑名單防護(hù))(2)0x00截?cái)啵▍⒖己诿麊畏雷o(hù))文件上傳檢測(cè)繞過(guò)技術(shù)文件上傳攻擊防護(hù)的繞過(guò)服務(wù)端文件內(nèi)容檢測(cè)上傳攻擊

通過(guò)檢測(cè)文件內(nèi)容來(lái)判斷上傳文件是否合法,防護(hù)手段更加嚴(yán)格,允許的內(nèi)容也就更加單一,這里針對(duì)圖片上傳功能進(jìn)行防護(hù)分析。防護(hù)思路對(duì)文件內(nèi)容的檢測(cè)主要有以下三種方法:(1)通過(guò)檢測(cè)上傳文件的文件頭來(lái)判斷當(dāng)前文件類型(2)調(diào)用API或函數(shù)對(duì)文件進(jìn)行加載測(cè)試,常見(jiàn)的是圖像二次渲染(3)檢測(cè)上傳文件是否為圖像文件內(nèi)容文件上傳檢測(cè)繞過(guò)技術(shù)文件上傳攻擊防護(hù)的繞過(guò)服務(wù)端文件內(nèi)容檢測(cè)上傳攻擊防護(hù)代碼(1)文件頭判斷:讀取文件開(kāi)頭部分的數(shù)個(gè)字節(jié),判斷文件頭與文件類型是否匹配。通常情況下,通過(guò)判斷前10個(gè)字節(jié)基本上就能判斷出一個(gè)文件的真實(shí)類型。functiongetTypeList(){returnarray(array(“FFD8FFE0”,“jpg”),

array(“89504E47”,“png”),

array(“424D”,”bmp”));}

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論