XML External Entity Injection [XXE]
1. Введение:
2. Типичный уязвимый код:
var parserOptions = {
noblanks: true,
noent: true,
nocdata: true
};
try {
var doc = libxml.parseXmlString(data, parserOptions);
} catch (e) {
return Promise.reject('XML parse error');
}from django.http import HttpResponse
from lxml import etree
def authenticate(content):
parser = etree.XMLParser(resolve_entities=True)
try:
document = etree.fromstring(content, parser)
except etree.XMLSyntaxError:
return Noneclass Loader
{
/**
* @param string $path
* @return DOMDocument
*/
public function load($path)
{
$dom = new DOMDocument();
$dom->loadXML(file_get_contents($path));
return $dom;
}
}3. Смягчение последствий:
2.1. Отключение встроенного DTD:
2.2. Следуйте принципу наименьших привилегий:
3. Выводы:
Last updated