Обнаружение и устранение критического недостатка безопасности

При тестировании веб-приложения я обнаружил уязвимость Stored DOM XSS. Онлайн-приложение имеет область, в которой пользователи могут вводить данные, которые будут сохранены в базе данных и представлены на последующих страницах, где находится уязвимость.

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

Когда пользователь вводит тщательно сконструированный ввод в поле, которое появляется на последующих страницах программы, уязвимость активируется.

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

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

Этапы воспроизведения:

  1. Войдите в веб-приложение как обычный пользователь
  2. Перейдите в раздел, где данные вводятся и сохраняются в базе данных.
  3. Введите следующую полезную нагрузку в текстовое поле:
"><img src="x" onerror="alert(1)">

4. Введите данные

5. Перейдите на любую другую страницу приложения, где отображается ввод.

6. Отобразится предупреждающее сообщение «1».

Подтверждение концепции:

Здесь я предоставляю лабораторию для практики хранимого дома xss.



Влияние:

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

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

Рекомендации:

  • Дезинфицируйте весь пользовательский ввод, прежде чем сохранять его в базе данных или отображать на других страницах приложения.
  • Внедрите заголовки Content Security Policy (CSP), чтобы предотвратить выполнение встроенных сценариев и ограничить источники внешних сценариев.
  • Выполняйте регулярные оценки безопасности веб-приложения для выявления и устранения любых других уязвимостей.

Твиттер