Базовый рабочий пример атаки XXE в HTML, часть 2

Следуйте этому: Основной рабочий пример атаки XXE в HTML

казалось легче сделать это продолжение, чем пытаться втиснуть мой прогресс в предыдущий вопрос. Я подумал, что лучше позволить правильному ответу на этот вопрос казаться правильным простым и понятным.

Теперь я развил свой пример до следующего:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <p id="xmlOut"></p>
    <script type="application/javascript">
        var xml = `
            <!DOCTYPE foo [
                <!ELEMENT foo ANY>
                <!ENTITY xxe SYSTEM "file:///etc/passwd">
                <!ENTITY bar "test that entity substitution works in general">
            ]>
            <foo>
                display some text | &bar; | &xxe;
            </foo>
        `;

        parser = new DOMParser();
        xmlDoc = parser.parseFromString(xml, "text/xml");
        document.getElementById("xmlOut").innerHTML = xmlDoc.getElementsByTagName("foo")[0].childNodes[0].nodeValue;
    </script>
</body>
</html>

Здесь я пишу XML в виде строки и анализирую ее парсером DOM. Все работает, как и ожидалось, за исключением того, что сущность xxe ничем не заполнена. Кажется возможным, как заявил ответчик на последний вопрос, что firefox блокирует внешний объект ... прочее. Я также пытался заменить текстовый файл в своем домашнем каталоге, но это тоже не сработало. Я также пытался указать путь без префикса file://. Пока ничего не сработало.

Я могу подтвердить, что DTD анализируется и используется, так что это большой шаг вперед.

Любые советы приветствуются ~!


person bgenchel    schedule 27.01.2020    source источник


Ответы (1)


похоже, что большинство браузеров не загружают внешние DTD, что делает этот тип атаки xxe довольно сложным для тестирования: ">Правильное использование внешнего DTD для XML

Если у кого-то есть другое понимание, не стесняйтесь оставлять ответ или комментарий!

person bgenchel    schedule 27.01.2020