В предыдущей статье мы узнали об ошибках XSS (межсайтовый скриптинг) и фактическом использовании XSS Reflected. Есть еще один тип XSS, который считается более опасным: хранимый XSS.
В отличие от Reflected, который напрямую атакует несколько жертв, ставших жертвами хакеров, Stored XSS нацелен на большее количество жертв. Эта ошибка возникает, когда веб-приложение не проверяет тщательно входные данные перед сохранением их в базу данных (здесь я использую это понятие для обозначения базы данных, файла или других областей, в которых хранятся данные приложения.web).
Используя технику Stored XSS, хакеры не используют ее напрямую, а должны сделать это как минимум в два этапа.
Во-первых, хакеры используют нефильтрованные точки ввода (форма, ввод, текстовая область...) для вставки опасного кода в базу данных.
Далее, когда пользователь обращается к веб-приложению и выполняет операции, связанные с этими сохраненными данными, хакерский код будет выполнен в браузере пользователя.
На данный момент хакер, похоже, добился своей цели. По этой причине метод Stored XSS также называют XSS второго порядка.
Сценарий эксплуатации описывается следующим образом:
Отраженный XSS и сохраненный XSS имеют два основных различия в процессе атаки.
- Во-первых, чтобы использовать Reflected XSS, хакер должен обманом заставить жертву получить доступ к его URL-адресу. Что касается Stored XSS, то делать этого нет необходимости: после вставки опасного кода в базу приложения хакеру остается только дождаться, пока жертва автоматически получит к нему доступ. Для жертв это совершенно нормально, поскольку они не знают, что данные, к которым они обращаются, заражены.
- Во-вторых, цели хакеру будет легче достичь, если в момент атаки жертва все еще находится в сеансе веб-приложения. С помощью Reflected XSS хакер может убедить или обманом заставить жертву войти в систему и получить доступ к предоставленному URL-адресу для выполнения вредоносного кода. Но Stored XSS отличается, поскольку вредоносный код хранится в веб-базе данных, поэтому всякий раз, когда пользователь обращается к связанным функциям, вредоносный код будет выполняться, и, скорее всего, эти функции требуют аутентификации. Сначала войдите в систему, поэтому, очевидно, в течение этого времени пользователь все еще находится в сеансе.
Из всего этого видно, что сохраненный XSS гораздо более опасен, чем отраженный XSS, затронутыми субъектами могут быть все пользователи этого веб-приложения. А если жертва выполняет административную роль, также существует риск веб-взлома.