Доброго дня! Я уже написал статью по open source проекту bWaPP, его установке и настройке. Ну а теперь давайте начнем набивать опыт и развивать знания в прохождении различных задачек в bWapp.
Процесс его установки и настройки описан тут: bWaPP 0
Начнем с уязвимости HTMl Injection — Reflected (GET) уровень (medium)
Не могу не начать статью с шутки. Конечно, не такой древней как HTMl Injection, но что поделаешь - если заниматься некрофилией, так с юмором. А иначе для чего, дорогой коллега, ты читаешь мою статью?
Пришла пора поговорить про HTMl Injection! Для простоты понимания я буду объяснять в простой и шуточной форме.
Поскольку цикл данных статей предназначается для маленьких и неопытных, буду продолжать рассказывать детально. Для того, чтобы понять, как работает HTML-инъекция, для начала нужно понимать, что собой представляет HTML.
Цитирую Википедию
HTML (от англ. HyperText Markup Language — «язык гипертекстовой разметки») — стандартизированный язык гипертекстовой разметки документов для просмотра веб-страниц в браузере. Веб-браузеры получают HTML документ от сервера по протоколам HTTP/HTTPS или открывают с локального диска, далее интерпретируют код в интерфейс, который будет отображаться на экране монитора.
А что же такое HTML-инъекция?
Цель инъекционной атаки во внедрении HTML-кода через уязвимые части веб-сайта.
Исследователь отправляет HTML-код через любое уязвимое место в коде для изменения его дизайна или любой отображаемой информации.
Результат, как известно, налицо. Если точнее, пользователь увидит измененные исследователем данные на веб-сайте. Если кратко и простым языком, HTML-инъекция - это просто инъекция кода языка разметки\тегов в документ страницы.
Что же отправляется веб-сайту для его изменения?!
Разные HTML-теги, которые будут просто отображать отправленную информацию. А также поддельная форма или целая страница.
Не стоит надеяться на проверку - браузер не заметит разницы в подмене или изменении HTML-кода. Он отобразит измененный сайт как ликвидный без каких-либо вопросов.
Основные виды HTML Injection:
Но рассматривать и разбирать сейчас будем Reflected (GET).
Атака Reflected GET сработает, если наш введенный код\тег отразиться на веб-сайте.
В bwapp-задачке у нас есть простая страница с формой ввода данных, которая уязвима для этой атаки. Если мы введем любой HTML-код в качестве параметра, он появится на нашем веб-сайте и в то же время будет вставлен в HTML-документ.
Вводим в поле first name —
Результат
Что же дальше нам требуется? Идем в burp. Для удобства его использования предлагаю поставить в браузер плагин
После идем в burp. Если не знаете, как им пользоваться, держите видео.
Внимание! Дальнейшие действия выполняются с активированным Burp Suite.
Если все настроено корректно, будет отображаться во вкладке Proxy → Intercept введенные ранее «firstname» и «lastname».
Продолжим. Нажимаем Action → Send to Repeater или горячие клавиши Ctrl+R:
Далее переходим на вкладку Repeater
Наша цель: изменить слова "Codeby, Net" на теги для эксплуатации уязвимости:
В поле Request во вкладке Raw нужно будет прописать код с тегом, после записи GET-запроса lastname.
Напишем следующий код:
Жмем «Send», а результат нашего творчества можем увидеть в соседнем окне
Внимание! Увага! Аttention! Achtung!
Если у вас burp выдал подобный результат в правом окне (выделил красным), это не нормально. Он не отработал отправку, как это требуется. Для устранения данной ошибки попробуйте перезапустить Burp. Возможно, он у вас запущен не с правами root, ну или просто отвалился - такое частенько бывает.
Если все правильно сделано, результат будет такой:
Нам требуется найти результат нашего творчества. В окне Response нужно найти результат выполнения кода. Пишем в поиске слово, которое писали. У меня это codeby, и мы нашли его как обычный текст, а он должен там выглядеть по-другому - быть ссылкой. Продолжим работать дальше с данной уязвимостью.
Нужно скопировать ссылку, которую писали ранее в поле Request
С помощью встроенного инструмента декодера преобразуем ее. Если быть точным, зашифруем в url. Если вы не поняли, про что я говорю, вот как это будет выглядеть в виде простого примера:
В burp переходим на вкладку decoder и шифруем наш тег:
Возможно, вы не догадываетесь, что делать дальше с этой длинной кракозяброй, а я незамедлительно скажу: скопируйте ее и переходите во вкладку Repeater и вставляйте вместо <a href=codeby>codeby.net</a> в поле Request.
Для понимания, данный код - это зашифрованный тег
Это должно выглядеть вот так:
Повторно ищем слово «codeby» и находим его. Но этого нам мало.
Следовательно, требуется больше шифрования! Нужно больше шифрования богу криптографии!
Повторим процедуру в burp. Переходим на вкладку decoder и шифруем нашу кракозябру еще раз. На будущее: лучше сразу ее сохраните в какой-нибудь блокнот, чтобы не потерять.
Далее полученную кракозябру вставляем туда, где ранее была
В поиске ищем наше стоп-слово. Прошу не путать с «флюгегехаймен», это из другой пьесы. И, о, чудо! О, Мадонна! О, единороги! У нас появилась рабочая ссылка, которая в коде отображается следующим образом:
В правом окне Response, нажав правую клавишу мыши, появляется список опций. Выбираем опцию «Show response in browser» и копируем полученную ссылку:
Вставив данную ссылку в браузер
На этом все, уважаемые коллеги! В следующей статье перейдем к разбору другой, не менее интересной задаче и ее прохождению!
До скорой встречи!
Великий и ужасный Сергей Сталь
Редактор: Александра Калюжная
Процесс его установки и настройки описан тут: bWaPP 0
Начнем с уязвимости HTMl Injection — Reflected (GET) уровень (medium)
Не могу не начать статью с шутки. Конечно, не такой древней как HTMl Injection, но что поделаешь - если заниматься некрофилией, так с юмором. А иначе для чего, дорогой коллега, ты читаешь мою статью?
Пришла пора поговорить про HTMl Injection! Для простоты понимания я буду объяснять в простой и шуточной форме.
Поскольку цикл данных статей предназначается для маленьких и неопытных, буду продолжать рассказывать детально. Для того, чтобы понять, как работает HTML-инъекция, для начала нужно понимать, что собой представляет HTML.
Цитирую Википедию
HTML (от англ. HyperText Markup Language — «язык гипертекстовой разметки») — стандартизированный язык гипертекстовой разметки документов для просмотра веб-страниц в браузере. Веб-браузеры получают HTML документ от сервера по протоколам HTTP/HTTPS или открывают с локального диска, далее интерпретируют код в интерфейс, который будет отображаться на экране монитора.
А что же такое HTML-инъекция?
Цель инъекционной атаки во внедрении HTML-кода через уязвимые части веб-сайта.
Исследователь отправляет HTML-код через любое уязвимое место в коде для изменения его дизайна или любой отображаемой информации.
Результат, как известно, налицо. Если точнее, пользователь увидит измененные исследователем данные на веб-сайте. Если кратко и простым языком, HTML-инъекция - это просто инъекция кода языка разметки\тегов в документ страницы.
Что же отправляется веб-сайту для его изменения?!
Разные HTML-теги, которые будут просто отображать отправленную информацию. А также поддельная форма или целая страница.
Не стоит надеяться на проверку - браузер не заметит разницы в подмене или изменении HTML-кода. Он отобразит измененный сайт как ликвидный без каких-либо вопросов.
Основные виды HTML Injection:
- Stored HTML Injection
- Reflected HTML Injection
- GET - это запрос
- POST - отправка.
Но рассматривать и разбирать сейчас будем Reflected (GET).
Атака Reflected GET сработает, если наш введенный код\тег отразиться на веб-сайте.
В bwapp-задачке у нас есть простая страница с формой ввода данных, которая уязвима для этой атаки. Если мы введем любой HTML-код в качестве параметра, он появится на нашем веб-сайте и в то же время будет вставлен в HTML-документ.
Вводим в поле first name —
<h1>Codeby</h1>
, а в поле last name — <h2>net</h2>
Результат
Что же дальше нам требуется? Идем в burp. Для удобства его использования предлагаю поставить в браузер плагин
Ссылка скрыта от гостей
. Этому меня научил
Ссылка скрыта от гостей
.После идем в burp. Если не знаете, как им пользоваться, держите видео.
Внимание! Дальнейшие действия выполняются с активированным Burp Suite.
Если все настроено корректно, будет отображаться во вкладке Proxy → Intercept введенные ранее «firstname» и «lastname».
Продолжим. Нажимаем Action → Send to Repeater или горячие клавиши Ctrl+R:
Далее переходим на вкладку Repeater
Наша цель: изменить слова "Codeby, Net" на теги для эксплуатации уязвимости:
В поле Request во вкладке Raw нужно будет прописать код с тегом, после записи GET-запроса lastname.
Напишем следующий код:
<a href=codeby>codeby.net</a>
Жмем «Send», а результат нашего творчества можем увидеть в соседнем окне
Внимание! Увага! Аttention! Achtung!
Если у вас burp выдал подобный результат в правом окне (выделил красным), это не нормально. Он не отработал отправку, как это требуется. Для устранения данной ошибки попробуйте перезапустить Burp. Возможно, он у вас запущен не с правами root, ну или просто отвалился - такое частенько бывает.
Если все правильно сделано, результат будет такой:
Нам требуется найти результат нашего творчества. В окне Response нужно найти результат выполнения кода. Пишем в поиске слово, которое писали. У меня это codeby, и мы нашли его как обычный текст, а он должен там выглядеть по-другому - быть ссылкой. Продолжим работать дальше с данной уязвимостью.
Нужно скопировать ссылку, которую писали ранее в поле Request
<a href=codeby>codeby.net</a>
С помощью встроенного инструмента декодера преобразуем ее. Если быть точным, зашифруем в url. Если вы не поняли, про что я говорю, вот как это будет выглядеть в виде простого примера:
<a href=codeby>codeby.net</a> + encode as URL = (длинная кракозябра)
В burp переходим на вкладку decoder и шифруем наш тег:
Возможно, вы не догадываетесь, что делать дальше с этой длинной кракозяброй, а я незамедлительно скажу: скопируйте ее и переходите во вкладку Repeater и вставляйте вместо <a href=codeby>codeby.net</a> в поле Request.
Для понимания, данный код - это зашифрованный тег
<a href=codeby>codeby.net</a>
в формат URL.Это должно выглядеть вот так:
Повторно ищем слово «codeby» и находим его. Но этого нам мало.
Следовательно, требуется больше шифрования! Нужно больше шифрования богу криптографии!
Повторим процедуру в burp. Переходим на вкладку decoder и шифруем нашу кракозябру еще раз. На будущее: лучше сразу ее сохраните в какой-нибудь блокнот, чтобы не потерять.
Далее полученную кракозябру вставляем туда, где ранее была
<a href=codeby>codeby.net</a>
и его зашифрованная версия. Ну а теперь пора вставить более полную версию.В поиске ищем наше стоп-слово. Прошу не путать с «флюгегехаймен», это из другой пьесы. И, о, чудо! О, Мадонна! О, единороги! У нас появилась рабочая ссылка, которая в коде отображается следующим образом:
<a href=codeby>codeby.net</a>
. В HTML «a href» работает как
Ссылка скрыта от гостей
. Получается, мы добились того, что нам требовалось.В правом окне Response, нажав правую клавишу мыши, появляется список опций. Выбираем опцию «Show response in browser» и копируем полученную ссылку:
Вставив данную ссылку в браузер
Ссылка скрыта от гостей
, видим окно bWapp, где появилась активная ссылка.На этом все, уважаемые коллеги! В следующей статье перейдем к разбору другой, не менее интересной задаче и ее прохождению!
До скорой встречи!
Великий и ужасный Сергей Сталь
Редактор: Александра Калюжная
Последнее редактирование модератором: