Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
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. После входа на страницу мы можем наблюдать поля для ввода.
После ввода тестовых данных наша адресная строка имеет вид:
htmli_get.php?firstname=test&lastname=test&form=submit
Из нее мы видим, что передаются два параметра firstname и lastname и видим на экране обычный результат:
Теперь попробуем добавить HTML теги в нашу адресную строку:
htmli_get.php?firstname=<h1>test</h1>&lastname=<h2>test</h2>&form=submit
Мы добавили два тега заголовка <h1> и <h2> и результат вывода на экран показывает, что данная страница уязвима к HTML инъекции:
Дальше страница полностью в нашем распоряжение и мы можем делать все, что вздумается, к примеру, использовать такой HTML код, просто введя его в поле firstname :
<h3>Please Enter Your Username and Password to Proceed:</h3>
<form method="POST" action="
Username: <input type="text" name="username" /><br />
Password: <input type="password" name="password" /><br />
<input type="submit" value="Login" /></form><!--
Результатом такой инъекции является полная замена страницы на поле авторизации и все введенные данные будут отправлены вам.
HTML Injection - Reflected (POST)
Отличие между этой и предыдущей инъекцией небольшое, а точнее только в способе передачи параметров. В POST запросе параметры передаются внутри пакета и для его просмотра можно использовать Burp Suite:
Дальнейшая методика инъекции полностью совпадает с предыдущим примером, но все параметры заменяются не в URL страницы, а в теле POST пакета.
HTML Injection - Reflected (URL)
Своеобразная уязвимость, основанная на работе самого сервера. На странице работает js, который считывает текущий URL пользователя и выводит его на страницу. Хорошее описание можно найти на страницу по DOM-XSS
Для ее эксплуатации нужно всего лишь добавить необходимые значения после адреса текущей страницы:
htmli_current_url.php#<h1>XSS DOM</h1>
htmli_current_url.php?<h1>XSS DOM</h1>
HTML Injection - Stored
Данный пример основан на всех предыдущих и необходим для наглядной эксплуатации HTML Injeaction. При входе на страницу мы видим возможность публиковать сообщения (они сохраняются в базе данных и выводятся всем, кто посетил эту страницу).
Есть несколько способов поэксплуатировать страницу:
Осталась самая скучная и долгая часть - ждать, когда кто-то введет свои данные на странице и нажмет отправить…
Поделиться Сохранить в закладках
Ещё
165 просмотров
9 фев в 11:55
Вы подписаны
В данной статье я решил собрать примеры эксплуатации 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. После входа на страницу мы можем наблюдать поля для ввода.

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

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

Дальше страница полностью в нашем распоряжение и мы можем делать все, что вздумается, к примеру, использовать такой 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><!--
Результатом такой инъекции является полная замена страницы на поле авторизации и все введенные данные будут отправлены вам.

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

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

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

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

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

Есть несколько способов поэксплуатировать страницу:
- Отправить тег открытия комментария <!-- , что позволит полностью остановить работу т.к. новые данные будут восприниматься как комментарий к коду.
- Выделять свои сообщения с помощью специальных тегов <b><h1-3><i><img> и др.
- Полностью заменить страницу и перенаправить вводимые данные к себе.

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

Поделиться Сохранить в закладках
Ещё
165 просмотров
Пожалуйста,
Вход
или
Регистрация
для просмотра содержимого URL-адресов!
Пожалуйста,
Вход
или
Регистрация
для просмотра содержимого URL-адресов!
9 фев в 11:55
Вы подписаны
Последнее редактирование модератором: