防止.NET中的XXE攻击

时间:2018-09-12 07:25:36

标签: .net xml owasp xxe

我当前正在创建一个HTTP处理程序,以防止XXE攻击。

浏览了Internet上的其他文章之后,我发现设置 XMLResolver = null 可以防止XXE攻击,如果您的版本高于或等于4.5.2。在此版本以下,您需要手动添加此解析器。在版本4.5.2及更高版本中,默认情况下,此XmlResolver设置为null。

我遵循了OWASP的以下网址:

https://www.owasp.org/index.php/XML_External_Entity_(XXE)_Prevention_Cheat_Sheet#.NET

但是,进行更改后,我仍然对丢失的内容感到困惑。下面是我的请求和响应xml。

请求

 <!--?xml version="1.0" ?--> 
 <!DOCTYPE replace [
 <!ELEMENT RfMessageEnvelope (TimeMs,TraceEvents)>
<!ELEMENT TimeMs (#PCDATA)>
<!ELEMENT TraceEvents (#PCDATA)>
 <!ENTITY ent "Hello"> 
 ]> 
 <RfMessageEnvelope> 
 <TimeMs>-1</TimeMs> 
 <replace>&ent;</replace> 
 <TraceEvents></TraceEvents> 
 </RfMessageEnvelope>

OR

<!--?xml version="1.0" ?--> 
 <!DOCTYPE replace [<!ENTITY ent SYSTEM "file:///etc/passwsd"> ]> 
 <RfMessageEnvelope> 
 <TimeMs>-1</TimeMs> 
 <Result>&ent;</Result> 
 <TraceEvents></TraceEvents> 
 </RfMessageEnvelope>

响应XML

    <RfMessageEnvelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
   <TimeMs>-1</TimeMs>
   <Result>Error</Result>
   <TraceEvents>
      <RfTraceTO>
         <Application>KMWS</Application>
         <Context/>
         <Message>NullReferenceException: [1] Object reference not set to an instance of an object.</Message>
         <Machine>ISP9916D</Machine>
         <Code>15007</Code>
         <Level>Error</Level>
      </RfTraceTO>
   </TraceEvents>
   <Payload/>
   <Assembly/>
   <Type/>
   <Pipeline/>
</RfMessageEnvelope>

这是否意味着我所做的更改(设置XMLResolver = null )无法正常工作。还是我的请求xml中缺少某些内容?此外,如果我使用解析器为null,则响应xml的外观如何。我当前的响应xml看起来不太好,我仍然面临着xxe攻击

0 个答案:

没有答案