Web應(yīng)用安全技術(shù)原理與實踐 課件 第8章 Web服務(wù)端安全-8.4文件操作類漏洞原理與防御_第1頁
Web應(yīng)用安全技術(shù)原理與實踐 課件 第8章 Web服務(wù)端安全-8.4文件操作類漏洞原理與防御_第2頁
Web應(yīng)用安全技術(shù)原理與實踐 課件 第8章 Web服務(wù)端安全-8.4文件操作類漏洞原理與防御_第3頁
Web應(yīng)用安全技術(shù)原理與實踐 課件 第8章 Web服務(wù)端安全-8.4文件操作類漏洞原理與防御_第4頁
Web應(yīng)用安全技術(shù)原理與實踐 課件 第8章 Web服務(wù)端安全-8.4文件操作類漏洞原理與防御_第5頁
已閱讀5頁,還剩21頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

Web應(yīng)用安全第八章Web服務(wù)器端安全

--8.4文件操作類漏洞原理與防御2本講要求1理解文件上傳原理和漏洞形式2理解文件下載原理和漏洞形式3理解文件包含漏洞的基本原理3文件上傳原理一個實例http:///filex/t1.php文件上傳功能是Web應(yīng)用中非常常見的文件操作功能,如上傳附件、遞交文檔、上傳用戶照片等。4文件上傳原理PHP配置文件上傳功能,及參數(shù)配置項默認(rèn)值功能描述file_uploadsOn為On則支持上傳,為Off則不支持文件上傳upload_tmp_dirNULL指定上傳文件臨時存放目錄upload_max_filesize2M允許上傳的文件大小post_max_size8M允許的POST數(shù)據(jù)的最大值Web前端,需要HTML的文件上傳控件功能<formaction=""method="post"enctype="multipart/form-data"><inputtype="file"name=“upfile"id="fileid"/>5超級全局變量$_FILES$_FILES[‘upfile']['tmp_name']:上傳文件的臨時保存時的臨時名字。$_FILES['upfile']['name']:上傳文件名。$_FILES['upfile']['size']:上傳文件大小,以字節(jié)為單位計數(shù)。$_FILES['upfile']['type']:上傳文件類型。$_FILES[‘upfile’][‘error’]:表示上傳過程中的錯誤代碼,如UPLOAD_ERROR_NO_FILE(4,沒有上傳的文件)文件上傳原理<formaction=""method="post"enctype="multipart/form-data"><inputtype="file"name=“upfile"id="fileid"/>6if(empty($_FILES['upfile']))exit();$filename=$_FILES['upfile']['name'];$path="upload/{$filename}";$tmp=$_FILES['upfile']['tmp_name'];$ret=move_uploaded_file($tmp,$path);if($ret==false)exit("文件上傳失敗!<br>");print("文件上傳成功!");print("<ahref='{$path}'target='_blank'>驗證上傳文件</a>");相關(guān)函數(shù)及PHP代碼文件上傳原理7文件上傳漏洞原理基本文件上傳功能的主要問題上傳文件的類型沒有限制,如a.php上傳文件保存在公開可訪問位置一句話木馬(WebShell)<?php@eval($_POST['pass']);?>中國菜刀和蟻劍文件上傳漏洞利用8文件上傳漏洞防護(hù)與對抗防護(hù)方法1:限定上傳文件的類型不允許特定類型文件上傳,如不允許PHP文件上傳,只允許特定類型文件上傳,如圖片image/jpeg等防護(hù)方法1存在的問題:數(shù)據(jù)檢查的時機Web前端JavaScript代碼檢查上傳文件類型服務(wù)器端文件類型檢測服務(wù)器端文件后綴名檢查黑白名單策略9文件上傳漏洞防護(hù)與對抗防護(hù)方法1--JavaScript代碼檢查上傳文件類型10文件上傳漏洞防護(hù)與對抗防護(hù)方法1--JavaScript代碼檢查上傳文件類型<formonsubmit="returncheck()"method="post"enctype="multipart/form-data"><label>選擇要上傳的文件</label><inputid="fileid"type="file"name="upfile"><br><inputtype="submit"value="上傳文件"></form>functioncheck(){varfilename=document.getElementById('fileid').value;varext=filename.substring(filename.length-3,filename.length);if((ext=="jpg")||(ext=="bmp")||(ext=="png"))returntrue;alert("上傳文件類型不合格!");returnfalse;}11文件上傳漏洞防護(hù)與對抗防護(hù)方法1--JavaScript代碼檢查上傳文件類型對抗方法1:屏蔽JavaScript代碼對抗方法1:修改文件后綴名a.php->a.jpg->BP->a.php將a.jpg修改為a.php12文件上傳漏洞防護(hù)與對抗防護(hù)方法2–服務(wù)器端MIME類型檢查13文件上傳漏洞防護(hù)與對抗防護(hù)方法2–服務(wù)器端MIME類型檢查$type=$_FILES['upfile']['type'];

if(($type=="image/gif")||($type=="image/jpeg")||($type=="image/png")){$filename=$_FILES['upfile']['name'];$path="upload/{$filename}";$tmp=$_FILES['upfile']['tmp_name'];$ret=move_uploaded_file($tmp,$path);if($ret==false)exit("文件上傳失敗!<br>");print("文件上傳成功!");print("<ahref='{$path}'target='_blank'>驗證上傳文件</a>");}14文件上傳漏洞防護(hù)與對抗防護(hù)方法2–服務(wù)器端MIME類型檢查對抗方法:修改Content-Type值正常圖片文件上傳PHP文件偽造成圖片文件上傳15文件上傳漏洞防護(hù)與對抗防護(hù)方法3–文件后綴名黑名單$deny=array("php","php5");//限制php和php5$filename=$_FILES['upfile']['name'];$last=strchr($filename,".");//找到.匹配的字符串$ext=ltrim($last,".");//移除.字符得到后綴名if(!in_array($ext,$deny))16文件上傳漏洞防護(hù)與對抗防護(hù)方法3–文件后綴名黑名單對抗方法:使用其他可執(zhí)行的文件后綴名,如php4,phtml等AddHandlerfcgid-script.fcgi.php.php3.php4.php5.php6.phtmlPHPStudy環(huán)境Apache配置信息httpd.conf17文件上傳漏洞防護(hù)與對抗防護(hù)方法4–檢查文件內(nèi)容對上傳的文件內(nèi)容進(jìn)行檢查,看是否是聲稱的類型,如JPEG等對抗方法:文件名截斷如%00截斷,上傳a.php.jpg(.jpg之前有一個%00)對抗方法:其他方法?結(jié)合其他漏洞使用,如文件包含漏洞等。18文件上傳漏洞防護(hù)限定上傳文件的類型上傳文件存放非公開訪問位置隱藏路徑,如存放系統(tǒng)臨時目錄中重命名上傳文件,或隨機保存文件名……檢查內(nèi)容的合法性將上傳目錄設(shè)置為不可以執(zhí)行其他方法......19文件下載原理一個實例http:///filex/t5.php20文件下載原理Content-type:

指定類型為application/octet-streamContent-Disposition

指定內(nèi)容為attachment附件形式文件下載中的HTTP頭if(isset($_GET['file']))$file=$_GET['file'];elseexit();$file="c:/tmp/".$file;if(file_exists($file)){header("Content-type:application/octet-stream");$filename=basename($file);header("Content-Disposition:attachment;filename=".$filename);readfile($file);}else{print("文件不存在");}21文件下載漏洞原理$file=$_GET['file'];$file="c:/tmp/".$file;if(file_exists($file)){…..}漏洞原理分析輸入1:a1.txt,$file="c:/tmp/a1.txt",正常文件輸入2:../secret.txt,$file="c:/tmp/../secret.txt

"

實際$file="c:/secret.txt"輸入3:../other/other1.txt,$file="c:/tmp/../other/other1.txt"

實際$file="c:/other/other1.txt"核心代碼可以下載任意目錄下的任意文件!http:///filex/t5.php目錄穿越核心的原因:對下載文件的路徑信息沒有檢查22文件下載漏洞防護(hù)漏洞防護(hù)原理基本思想:對下載文件的路徑信息進(jìn)行檢查核心防護(hù)代碼$file=$_GET['file'];$file="c:/tmp/".$file;$dir=dirname($file);if($dir!==“c:/tmp”){//c:/tmp為下載目錄print("文件路徑異常!!請確認(rèn)輸入的文件名!<br>");exit();}基本方法:提取要下載的文件的目錄,并和下載目錄進(jìn)行對比,如果相同,則正常下載,否則終止下載。http:///filex/t6.php23文件包含漏洞原理漏洞原理分析http:///filex/t7.php<formaction='t7.php'method='get'><selectname='style'><optionselected='selected'value='t7_flower.php'>花的風(fēng)格</option><optionselected='selected'value='t7_sea.php'>海的風(fēng)格</option></select><inputtype='submit'value='確定'/></form><?phpif(!isset($_GET['style']))exit();$style=$_GET['style'];include($style);?><imgsrc='./img/sea.jpg'/>t7_sea.php<imgsrc='./img/flower.jpg'/>t7_flower.php24文件包含漏洞原理漏洞原理分析輸入1:t7.php?style=‘t7_flower.php’

include(‘t7_flower.php’);<imgsrc='./img/flower.jpg'/>輸入2:

t7.php?style=‘t7_sea.php’

include(‘t7_sea.php’);<imgsrc='./img/sea.jpg'/>輸入3:t7.php?style=‘../../../secret.txt’

include(‘../../../secret.txt’);include(‘c:/secret.txt’)輸入4:t7.php

溫馨提示

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

評論

0/150

提交評論