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

下載本文檔

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

文檔簡介

Web應(yīng)用安全第八章Web服務(wù)器端安全--8.5XXE漏洞原理與防御2XXE漏洞原理XXE(XMLExternalEntity)是指XML外部實體引用的漏洞XML文檔一般原理XML是一種擴展標(biāo)記語言,它被設(shè)計用來傳輸和存儲數(shù)據(jù)。<?xmlversion="1.0"encoding="utf8"?><note><to>George</to><from>John</from><heading>Reminder</heading><body>Don'tforgetthemeeting!</body></note>文檔聲明,版本,編碼根元素XML文檔必須有根元素;XML文檔必須有關(guān)閉標(biāo)簽;XML標(biāo)簽對大小寫敏感;XML元素必須被正確的嵌套;XML屬性必須加引號。XML文檔示例3XXE漏洞原理XML文檔一般原理XML文檔解析<?php$str=<<<end<?xmlversion="1.0"encoding="utf8"?><note><to>George</to><from>John</from><heading>Reminder</heading><body>Don'tforgetthemeeting!</body></note>end;$a=simplexml_load_string($str);print("XML文檔解析結(jié)果--simplexml_load_string<br>");print($a->to."<br>");print($a->from."<br>");print($a->heading."<br>");print($a->body."<br>");?>如果成功,則返回SimpleXMLElement對象4XXE漏洞原理XML文檔一般原理DTDDTD(DocumentTypeDefinition,文檔類型定義)的作用是定義XML文檔的結(jié)構(gòu)<?xmlversion="1.0"?><!DOCTYPEnote[<!ELEMENTnote(to,from,heading,body)><!ELEMENTto(#PCDATA)><!ELEMENTfrom(#PCDATA)><!ELEMENTheading(#PCDATA)><!ELEMENTbody(#PCDATA)>]><note><to>George</to><from>John</from><heading>Reminder</heading><body>Don'tforgetthemeeting!</body></note>PCDATA的意思是被解析的字符數(shù)據(jù)(parsedcharacterdata)<!DOCTYPEnoteSYSTEM"t4.dtd">simplexml_load_string($str,null,LIBXML_DTDVALID);5XXE漏洞原理XML文檔一般原理DTD—不符合要求的情況<?xmlversion="1.0"?><!DOCTYPEnote[<!ELEMENTnote(to,from,other)><!ELEMENTto(#PCDATA)><!ELEMENTfrom(#PCDATA)><!ELEMENTheading(#PCDATA)><!ELEMENTbody(#PCDATA)>]><note><to>George</to><from>John</from><heading>Reminder</heading><body>Don'tforgetthemeeting!</body></note>$error=libxml_get_last_error();6XXE漏洞原理XML文檔一般原理DTD-實體—內(nèi)部實體、外部實體、參數(shù)實體用于定義引用普通文本或特殊字符的快捷方式的變量,即提供元素的內(nèi)容,使用關(guān)鍵字ENTITY定義內(nèi)部實體及引用定義方式:<!ENTITY實體名稱"實體的值">引用方式:&實體名稱;<?xmlversion="1.0"?><!DOCTYPEuser[<!ELEMENTuserANY><!ENTITYname"admin"><!ENTITYpwd"123456">]><user>&name;,&pwd;</user>示例7<?php$str=<<<XML<?xmlversion="1.0"?><!DOCTYPEuser[<!ELEMENTuserANY><!ENTITYname"admin"><!ENTITYpwd"123456">]><user>&name;,&pwd;</user>XML;print("XML文檔<br>");print(htmlentities($str)."<hr>");$a=simplexml_load_string($str,null,LIBXML_DTDVALID|LIBXML_NOENT);print("XML文檔解析結(jié)果--simplexml_load_string<br>");print("user:{$a[0]}<br>");?>實體替換XXE漏洞原理XML文檔一般原理DTD-實體內(nèi)部實體及引用8XXE漏洞原理XML文檔一般原理DTD-實體參數(shù)實體及引用定義方式:<!ENTITY%實體名稱"實體的值">特別提醒:參數(shù)實體只能在DTD中使用<?php$str=<<<XML<?xmlversion="1.0"?><!DOCTYPEdata[<!ELEMENTdataANY><!ENTITY%paramEntity"<!ENTITYgenEntity'bar'>">%paramEntity;]><data>&genEntity;</data>XML;print("XML文檔<br>");print(htmlentities($str)."<hr>");$data=simplexml_load_string($str,null,LIBXML_DTDVALID|LIBXML_NOENT);print("XML文檔解析結(jié)果--simplexml_load_string<br>");print("data:{$data[0]}<br>");?>引用方式:%實體名稱;引用方式:嵌套引用?--自學(xué)9XXE漏洞原理XML文檔一般原理DTD-實體外部實體及引用引用方式:&實體名稱;<!ENTITY實體名稱SYSTEM"URI/URL"><?xmlversion="1.0"encoding="utf-8"?><!DOCTYPEroot[<!ELEMENTroot(name,job,age)><!ELEMENTname(#PCDATA)><!ELEMENTjob(#PCDATA)><!ELEMENTage(#PCDATA)><!ENTITYname1SYSTEM"/xxe/t7.php">

<!ENTITYjob1"student">]><root>

<name>&name1;</name>

<job>&job1;</job>

<age>18</age></root>需要配置PHP選項allow_url_fopen10XXE漏洞原理XXE漏洞示例當(dāng)XML文檔中的外部實體引用被攻擊者控制時,可以實現(xiàn)多種攻擊目標(biāo),這樣的漏洞被稱為XXE漏洞。28/xxe/t8.html11XXE漏洞原理XXE漏洞示例<h3>歡迎登陸XX系統(tǒng)</h3><form>

<label>用戶ID:</label><inputtype="text"id="id"name="id"><br><label>密__碼:</label><inputtype="password"id="pass"name="pass"><br><inputtype="button"value="登陸系統(tǒng)"onclick="login()"></form><pid="messid"></p>functionlogin(){

varnode=document.getElementById('id');varxml="<?xmlversion='1.0'encoding='utf-8'?>";xml=xml+"<creds>"xml=xml+"<id>"+node.value+"</id>";node=document.getElementById("pass");xml=xml+"<pass>"+node.value+"</pass></creds>"varxhr=newXMLHttpRequest();xhr.open("POST",“xxe.php",false);//同步模式

xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded");xhr.send("creds="+xml);text=xhr.responseText;node=document.getElementById("messid");node.innerHTML=text;}HTML代碼

(xxe.html)構(gòu)造XML數(shù)據(jù)發(fā)送AJAX請求12XXE漏洞原理XXE漏洞示例PHP代碼

(xxe.php)if(!empty($_POST['creds'])){$creds=$_POST['creds'];

$xml=simplexml_load_string($creds,null,LIBXML_NOENT|LIBXML_DTDVALID);

$id=$xml->id;//登陸ID號

$pass=$xml->pass;//登陸密碼

print("歡迎{$id}訪問XX系統(tǒng)<br>");$db=mysqli_connect("","root","123456","xxetest");if($db==false)exit("連接數(shù)據(jù)庫失敗!<br>");$query="select*fromuserswhereid={$id}andpassword='{$pass}'";$result=mysqli_query($db,$query);if($result==false)exit("執(zhí)行查詢操作失敗!");$data=mysqli_fetch_assoc($result);if($data==false){print("ID/密碼錯誤!");}

else{print("登陸成功,你的用戶名為:{$data['name']}");}}dropdatabaseifexistsxxetest;createdatabasexxetest;usexxetest;createtableusers(idintprimarykey,namevarchar(50),passwordvarchar(50));insertintousersvalues(1001,"alice","a123456");insertintousersvalues(1002,"bob","b123456");xxetest.sql可以使用實體引用13XXE漏洞原理XXE漏洞測試修改HTTP請求<?xmlversion='1.0'encoding='utf-8'?><!DOCTYPEcreds[<!ELEMENTcreds(id,pass)><!ELEMENTid(#PCDATA)><!ELEMENTpass(#PCDATA)><!ENTITYid1SYSTEM"http

溫馨提示

  • 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

提交評論