Basi c Рабочий пример атаки XXE в HTML - PullRequest
0 голосов
/ 27 января 2020

Я пытаюсь запустить некоторые тесты с атаками XXE на странице html, но у меня возникают проблемы с рабочим примером. После долгого осмотра inte rnet я придумал следующее:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script id="embeddedXML" type="text/xml">
        <!DOCTYPE foo [
            <!ELEMENT foo ANY>
            <!ENTITY xxe SYSTEM "file:///etc/passwd">
        ]>
        <foo>&xxe;</foo>
    </script>
</head>
<body>
    <script type="application/javascript">
        alert(document.getElementById('embeddedXML').innerHTML);
    </script>
</body>
</html>

Но это не работает. XML внутри тега скрипта, по сути, не «запускается», а это означает, что при появлении предупреждения он просто отображает xml в виде открытого текста. Он не интерпретирует заголовок DOCTYPE и не получает информацию из указанного файла.

Гуглить было очень сложно, потому что, очевидно, XML не "работает", но что-то должно произойти, когда этот текст интерпретируется, а не просто записывается. Я не знаю, что это за штука или как заставить ее работать на странице HTML, как написано здесь.

любые советы высоко ценится. Спасибо!

1 Ответ

2 голосов
/ 27 января 2020

См. OW ASP

Среди факторов риска:

Приложение анализирует XML документы.

Теперь элементы сценария определены (в терминах HTML 4) как содержащие CDATA, поэтому разметка в них (кроме </script>) не имеет особого значения. Таким образом, XML синтаксический анализ здесь не выполняется.

Между тем alert() работает со строками, а не с разметкой, поэтому синтаксический анализ XML по-прежнему не выполняется.

Поскольку у вас есть нет XML синтаксического анализатора, уязвимости нет.

В общем, если вы хотите XML синтаксический анализ в середине веб-страницы, вам нужно использовать JavaScript (например, с DOM Parser *) 1020 * но я бы не удивился, если бы он не был осведомлен о DTD и поэтому не был уязвим (и даже если он был уязвим, он вполне мог бы заблокировать доступ к локальным внешним объектам).

...