layout | title | tags |
---|---|---|
col-document |
WSTG - Latest |
WSTG |
{% include breadcrumb.html %}
ID |
---|
WSTG-CLNT-02 |
Уязвимость инъекции JavaScript — подтип межсайтового скриптинга (XSS), который предполагает возможность инъекции произвольного кода JavaScript, который выполняется приложением в браузере жертвы. Эта уязвимость может иметь множество последствий, таких как раскрытие сессионных cookie пользователя, которые могут использоваться для выдачи себя за жертву, или, в более общем смысле, она может позволить злоумышленнику изменить содержимое страницы, которую видят жертвы, или изменить поведение приложения.
Уязвимости инъекции JavaScript могут возникать, когда в приложении отсутствует надлежащая проверка входных и выходных данных, предоставляемых пользователем. Поскольку JavaScript используется для динамического наполнения web-страниц, эта инъекция происходит на этапе обработки контента и, следовательно, влияет на жертву.
При тестировании на наличие этой уязвимости учитывайте, что некоторые символы обрабатываются разными браузерами по-разному. Для справки см. XSS на основе DOM.
Вот пример скрипта, который никак не проверяет переменную rr
. Переменная в строке запроса содержит пользовательский ввод и, кроме того, не указывает никакой кодировки:
var rr = location.search.substring(1);
if(rr) {
window.location=decodeURIComponent(rr);
}
Это означает, что злоумышленник может ввести код JavaScript, просто отправив следующую строку запроса www.victim.com/?javascript:alert(1)
.
- Найти приёмники и возможные точки инъекции JavaScript.
Рассмотрим следующее упражнение на DOM XSS
Страница содержит следующий скрипт:
<script>
function loadObj(){
var cc=eval('('+aMess+')');
document.getElementById('mess').textContent=cc.message;
}
if(window.location.hash.indexOf('message')==-1) {
var aMess='({"message":"Hello User!"})';
} else {
var aMess=location.hash.substr(window.location.hash.indexOf('message=')+8)
}
</script>
Приведённый выше код содержит источник location.hash
, который контролируется злоумышленником, который может вставить код JavaScript непосредственно в значение message
, чтобы получить контроль над браузером пользователя.