Нужно ли устанавливать XMLResolver на ноль для предотвращения XXE-атак? - PullRequest
1 голос
/ 27 марта 2019

Я пытаюсь воспроизвести сценарий XXE, который размещен по следующей ссылке

https://github.com/OWASP/CheatSheetSeries/blob/master/cheatsheets/XML_External_Entity_Prevention_Cheat_Sheet.md

Как я читал из документации, следующий блок кода не должен загружать DTD, когда он запускается с целевой версией платформы 4.5.2+, когда XMLResolver не установлен явно. Однако я вижу содержание файла. Если я установлю для XMLResolver значение null, содержимое не будет загружаться должным образом.

Почему целевая структура не влияет на результат? Моя цель - проверить этот сценарий здесь и применить решение в моем проекте.

static void LoadXML()
 {
   string xxePayload = "<!DOCTYPE doc [<!ENTITY win SYSTEM 'file:///C:/Users/testdata2.txt'>]>" 
                     + "<doc>&win;</doc>";
   string xml = "<?xml version='1.0' ?>" + xxePayload;

   XmlDocument xmlDoc = new XmlDocument();
   // Setting this to NULL disables DTDs - Its NOT null by default.
   // xmlDoc.XmlResolver = null;   
   xmlDoc.LoadXml(xml);
   Console.WriteLine(xmlDoc.InnerText);
   Console.ReadLine();
 }
...