iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 6
1
Security

應用程式弱點與它們的產地系列 第 6

[Day06]A4-XML External Entity Injection

沒錯!也是 Injection 的一種!以下簡稱 XXE。

弱點瞄述

話說這個弱點,會發現在 XML 引用內部或外用部資源,由於 XML 解析器不會阻止及限制外部實體解析,如此可導致解析器遭受 XML 外部實體攻擊…
主要是因為 XML 本身支援存取資源的弱點,所以 XML 有用過應該就很有感(!
呃,好,我們直接看範例 =v=+

弱點利用

用於 XML 引用內部或外部資源,我們可以用 Burpsute 或是相關工具可以重送 Request:

  • 回應 Response
    HTTP/1.0 200 OK
    root:x:0:0:root:/root:/bin/bash
    bin:x:2:2:bin:/bin:/bin/sh
    sys:x:3:3:sys:/dev:/bin/sh

或是使用迴圈讓它中止服務之類的…

https://ithelp.ithome.com.tw/upload/images/20190922/201036472b0aH7FiaW.png

圖片來源:https://www.acunetix.com/blog/articles/xml-external-entity-xxe-vulnerabilities/

修改建議

弱點的根源在於
(1) 接收XML Input,而沒有針對內容做過濾。
(2) XML 中參考內部 DTD 或 外部 DTD
防止 XXE 攻擊的最佳方式:就是不要用… 或升級解析器的版本。
如果是Web Services 建議 SOAP 1.2 以上版本。

由於語言的框架太多了,簡單附上幾種實體解析的方式:

  • 停用內嵌 DTD:將 DtdProcessing 設為 DtdProcessing.Prohibit
  • 停用 XML 實體解析:將XmlReaderSettings.XmlResolver 屬性設為 Null 以停用 XML 實體解析。
  • 資料消毒:過濾關鍵詞:<!DOCTYPE和<!ENTITY、SYSTEM和PUBLIC

或是可以直接參考OWASP TOP 10 中的 XXE 修復方式:
https://cheatsheetseries.owasp.org/cheatsheets/XML_External_Entity_Prevention_Cheat_Sheet.html

參考資料

https://www.tutorialspoint.com/dtd/dtd_entities.htm
https://www.acunetix.com/blog/articles/xml-external-entity-xxe-vulnerabilities/

相關新聞

微軟「遠端協助」有漏洞,恐使用戶資料不保 https://www.ithome.com.tw/news/121985

參考資料

XXE 漏洞的學習與利用總結 https://www.cnblogs.com/r00tuser/p/7255939.html


上一篇
[Day05]A3 - Sensitive Data Exposure
下一篇
[Day07]A5- Broken Access Control
系列文
應用程式弱點與它們的產地17
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言