2018年6月14日 星期四

[研究] OWASP WebGoat 8.0 - 03.Injection Flaws (4)XXE

[研究] OWASP WebGoat 8.0 - 03.Injection Flaws (4)XXE

2018-06-14

個人學習雜記。

XXE = XML Entity attack (XML 實體攻擊)

XML External Entity (XXE) Processing
https://www.owasp.org/index.php/XML_External_Entity_(XXE)_Processing

Top 10-2017 A4-XML External Entities (XXE)
https://www.owasp.org/index.php/Top_10-2017_A4-XML_External_Entities_(XXE)



(下圖)
什麼是XML實體?

一個XML實體允許定義標籤,當解析XML文檔時,標籤將被內容取代。 通常有三種類型的實體:

  • 內部實體 (internal entities)
  • 外部實體 (external entities)
  • 參數實體 (parameter entities)

一個實體必須在文檔類型定義(DTD)中創建,讓我們從一個例子開始:

<?xml version="1.0" standalone="yes" ?>
<!DOCTYPE author [
  <!ELEMENT author (#PCDATA)>
  <!ENTITY js "Jo Smith">
]>
<author>&js;</author>

所以你在任何地方使用實體 js 解析器將用實體中定義的值替換它。










(上圖) 改成這樣
<?xml version="1.0" encoding='UTF-8'?>
<!DOCTYPE comment [
  <!ELEMENT comment (Activity)>
  <!ELEMENT Activity (#PCDATA)>
  <!ENTITY xxe SYSTEM "..">
]>
<comment>  <text>&xxe;</text></comment>





(上圖) 作法待研究




https://en.wikipedia.org/wiki/Billion_laughs_attack



XXE mitigation ( XXE 緩解)

https://www.owasp.org/index.php/XML_External_Entity_(XXE)_Prevention_Cheat_Sheet





(待續)

沒有留言:

張貼留言