# XXE injection [TOC] ![](https://hackmd.io/_uploads/ryVBFUj42.png) 資料來源 : https://portswigger.net/web-security/xxe ## APPRENTICE ### Lab: Exploiting XXE using external entities to retrieve files --2023/05/15 在這一題中,有一個 "Check stock" 會解析 XML 輸入並回傳任何不被預期的資訊。然後用 XML injection 取得 /etc/passwd 的資料 ![](https://hackmd.io/_uploads/HJlrEGkHn.png) 在 Request 中很明顯地看到使用 XML ![](https://hackmd.io/_uploads/HyBi4MkSh.png) 所以可以輸入 ```<!DOCTYPE foo [<!ENTITY xxe SYSTEM "file:///etc/passwd">]>``` ,讓 response 回傳我們想要的資訊,記得底下要改成 ```&xxe;```,不然要回傳的資料就不會被帶上來XD ![](https://hackmd.io/_uploads/SJvJDM1H3.png) successful ![](https://hackmd.io/_uploads/HkFqDf1r3.png) ### Lab: Exploiting XXE to perform SSRF attacks --2023/05/15 跟上一題一樣利用 "Check stock" 進行 XML injection,但這次的 lab 跑在 EC2 上(AWS的),預設的 URL 為 ```http://169.254.169.254/```,可能可以撈到一些敏幹的資料 :)) 所以需要透過 XML + SSRF 攻擊來取得 server 的 IAM secret access key ![](https://hackmd.io/_uploads/HyVJFMJBh.png) 可以看到被拒絕訪問,所以我們收尋一下 iam 的 secret access key 放在哪裡 ![](https://hackmd.io/_uploads/rkXEof1Sh.png) 啊我找不到,所以看了一下講解的影片,收尋到了這個(哀,收尋得不好) ![](https://hackmd.io/_uploads/HkT0afkHn.png)![](https://hackmd.io/_uploads/BkYVCfyHn.png) 從 response 中我們可以得知,一個無效的 product ID : latest ![](https://hackmd.io/_uploads/By_F1mySn.png) 然後是 meta-data,重複以上動作直到 token 啦之類的出現,最後路徑是 ```http://169.254.169.254/latest/meta-data/iam/security-credentials/admin``` ![](https://hackmd.io/_uploads/HJbsJQJH2.png) ![](https://hackmd.io/_uploads/r1aTJQ1Bn.png) ![](https://hackmd.io/_uploads/BkoygX1B3.png) ![](https://hackmd.io/_uploads/Bkd-gmkBh.png) ![](https://hackmd.io/_uploads/SkoNxmJH2.png) successful ![](https://hackmd.io/_uploads/SkLYgXkrh.png)