Можно ли выполнить XSS-атаку с использованием метода jatu .attr (attributeName, value) в следующем контексте? - PullRequest
0 голосов
/ 11 февраля 2019

Приведен следующий HTML-фрагмент, который статически вводится в HTML-файл:

<div id="div001" title="abc">Test</div>

Возможно ли выполнить XSS-атаку, когда злоумышленник может предоставить произвольное значение для переменной unsafe_stringв следующем контексте:

$('#div001').attr("title", unsafe_string);

Мой вопрос таков: возможно ли вырваться из значения атрибута, чтобы вредоносный код мог быть введен и выполнен?Атакующий имеет только контроль над unsafe_string и ничем иным.

Я могу, например, заметить, что

$('#div001').attr("title", '"');

приводит к

$('#div001').attr("title") = "\""

Ответы [ 2 ]

0 голосов
/ 14 февраля 2019

Нет, поскольку jQuery заботится о том, чтобы экранировать содержимое unsafe_string, чтобы исключить возможность выделения значения атрибута.Запись html или кода javascript в значение атрибута с помощью функции attr () jQuery приведет к экранированию строки и не будет интерпретироваться как html или выполняться как код javascript.

Поведение экранирования можно проверить, посмотрев $('#div001')[0].outerHTML.

0 голосов
/ 13 февраля 2019

Да, в этом коде есть ряд уязвимостей:

  1. выполнение вредоносного JavaScript при выполнении $('#div001').attr("title", unsafe_string);

Пример: код jsp: $('#div001').attr("title", ${unsafe_string});

когда значение unsafe_string "");alert('do nasty stuff')

генерирует код js: $('#div001').attr("title", "");alert('do nasty stuff')

edit: jquery защищает вас от этих 2, избегая опасногосимволы

внедрение вредоносного javascript в значение атрибута (заголовок) внедрение html в значение атрибута

У вас естьчтобы избежать небезопасной строки, чтобы защитить от всех этих (а также вы должны проверить небезопасную строку, когда вы сохраняете ее в своем приложении).Я предлагаю использовать для этого существующую библиотеку безопасности, в зависимости от вашего технологического стека.Подробнее здесь: https://www.owasp.org/index.php/XSS_(Cross_Site_Scripting)_Prevention_Cheat_Sheet


Редактировать: 4. Если вы храните свой js-код в html-файле, вы также можете быть уязвимы для html-инъекции Пример: jsp code:

<body>
    <script>
    $(document).ready(function(){$('#mydiv').attr( "title", ${unsafe_string})});
    </script>
    <div id="mydiv" title='abc'>
        something
    </div>

Когда unsafe_string - строка уничтожение моего сайта Ваша страница будет выглядеть как this

Подробнее о том, как проверить XSS здесь:https://www.owasp.org/index.php/Cross-site_Scripting_(XSS)

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