Предотвращение атаки XXE в .net - PullRequest
       43

Предотвращение атаки XXE в .net

0 голосов
/ 12 сентября 2018

В настоящее время я создаю обработчик http, который предотвратит XXE-атаку.

Пройдя через другой пост, доступный в Интернете, я обнаружил, что установка XMLResolver = null предотвратит атаку XXE, если у вас версия выше или равна 4.5.2. Ниже этой версии вам нужно вручную добавить этот преобразователь. В версиях 4.5.2 и выше этот XmlResolver по умолчанию имеет значение null.

Я следовал нижеприведенному URL из 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? Кроме того, как будет выглядеть мой ответ xml, если я использую решатель для нуля. мой текущий ответ не выглядит хорошо, и я все еще сталкиваюсь с атакой xxe

...