Заметка Немного о Bug Bounty, SSRF, CRLF и XSS

Темы, которые НЕ подходят по объему под префикс "Статья"

larchik

Gold Team
07.06.2019
410
480
BIT
539
Привет, Codeby!
Немного о том, как были найдены пара простых уязвимостей в ходе Bug Bounty.

Я решил не соваться на , а зарегистрировался на платформе попроще и поменьше, называется , которая ориентирована на европейские компании. Выбрал цель и в первом же домене, который начал исследовать, нашел уязвимость.
Нашел , на тот момент даже не зная, что это такое.
ssrf.png

Как это получилось и почему это заслуживает интереса.

Я просто фаззил сначала директории, потом файлы, потом параметры в URL. Обычно при таком фаззинге выполняются GET-запросы. Если бы я при фаззинге выполнял только GET-запросы, то это ничего мне не дало бы. Не знаю, что меня сподвигло, но я решил пофаззить все тоже самое POST-запросами.

В том месте, где GET-запрос возвращал мне ответ от сервера 404, метод POST возвратил мне ответ 500. То есть если я запрашивал URL - http://domen.com/image, то приходил ответ, что такого файла или пути не существует. Если делал этот же запрос, но менял значение метода с GET на POST, то приходила ошибка Internal Server Error с кодом 500. Я начал копать в сторону поиска параметров для POST-запроса. Изфаззил кучу словарей, пробовал отправлять и XML, и JSON, и в них тоже фаззил параметры. Потратил на это несколько дней и ночей, и ничего не получил. Тогда я решил вернуться к запросу GET (вы помните, он возвращал ответ 404) и тоже стал фаззить его параметры. Я не помню (прошло уже больше года), как заметил, но таки заметил, что параметр url ведет себя не обычно. Поэтому далее я стал фаззить значения этого параметра. Оказалось, что если в значение подставить localhost, то ответ от сервера приходит значительно дольше, чем если значение параметра любое другое. При этом код ответа оставался 404(!). На этом моменте я полез в гугл и узнал от такой уязвимости, как SSRF. Тут можете посмотреть презентацию на .

SSRF (server-side request forgery) - это подделка запросов от имени сервера. То есть атакующий может отправлять запросы на разные адреса в сети от имени уязвимого сервера. Иногда это может приводить к серьезным последствиям, но не в моем случае.

Я стал подставлять в значение параметра url разные ip-адреса и получил кое-какой результат (ниже скрины, которые я отправлял в репорте в программе BB. Уязвимость на сегодняшний день закрыта, поэтому не затираю адрес):

1. Если отправляем запрос на сервер с несуществующим IP, то ответ от сервера приходит через 21 секунду:
1.png


2. Если IP существует во внутренней сети, то ответ приходит значительно быстрее:
2.png


3. Можем сканировать порты, как будто бы мы находимся во внутренней сети. Если порт закрыт, то ответ приходит в течение 1.2-1.4 секунды:
3.png


4. Если порт открыт, ответ приходит быстро:
4.png


5. Можем поискать подсети:
5.png


6. Есть:
6.png


7. Можем сканировать порты в машинах, находящихся в подсетях. Тут порт закрыт:
7.png


8. Тут порт открыт:
8.png


Других возможностей эксплуатации этой уязвимости я не нашел в этом случае. Хотя, если вы немного почитаете о SSRF, то найдете, что уязвимость может привести к RCE.
Суть всей заметки выше не в самой уязвимости, а в том, как она была обнаружена. Если бы я не стал фаззить директории методом POST, то и не узнал бы о баге. Денег за это я не получил, так как уязвимость справедливо посчитали слабой, но накинули 5 баллов к рейтингу )

Затем, исследуя домены той же компании, я нашел у них такой адрес: .
Запустил сканер уязвимостей в OWASP ZAP, на который особо и не расчитывал. Но он внезапно нашел там путь, по которому была уязвимость CRLF.
Проверил прямо сейчас этот сервис на другом домене, ZAP нашел не только CRLF, но и XSS
crlfxss.png

В тот момент я видел там только CRLF, поэтому снова полез в гугл, а заодно и во строенные инструменты браузера, чтобы понять, что происходит.
Если мы перейдем на страницу , и просмотрим заголовки запроса, то увидим в Content-Disposition почти тоже самое, что и в строке запроса:
crlf1.png


Только к нашему xyz добавляется расширение .html. Если попробуем добавить после xyz символы переноса строки и возврата коретки - \r\n\ - то получим немного другой ответ от сервера:
crlf2.png

\r\n в формате URL - %0D%0A

Это значит, что мы можем сами установить любые заголовки от имени сервера.
Чем может грозить, я выше приводил ссылку.

А что там внутри html?
crlf3.png


Наш текст помещается внутрь js-скрипта. Попробуем встроить туда свой код:
crlfxss3.png


Получилась XSS:
crlfxss2.png


Я, конечно, написал производителю ПО, но производитель ответил, что они скоро прекратят поддержку этой версии приложения, на том я и закончил )
otrs.png


А прежде, чем я сообщил об уязвимости компании, в BB которой я принимал участие, компания уже закрыла уязвимость своими силами, так что ничего я за это не получил. Только опыт ))

Всем пока.
 
Последнее редактирование модератором:

rainS

Green Team
22.06.2020
26
22
BIT
0
SSRF слабая уязвимость? Если там облачный хостинг == можно украсть ключи и получить доступ к сервису.
https://github.com/nccgroup/ScoutSuite- эта утилита вообще позволяет собрать всю информацию по сервису, что можно сделать с сервисом имея определенные ключи.

Если например нашли креды AWS:

1) $ aws configure --profile hack

AWS Access Key ID [None]: AKIAI44QH8DHBEXAMPLE
AWS Secret Access Key [None]: je7MtGbClwBF/2Zp9Utk/h3yCo8nvbEXAMPLEKEY
Default region name [None]: us-east-1
Default output format [None]: text

2) $ aws s3 ls --profile hack

Расчехлить SSRFMAP и пройтись по функционалу, достаточно много можно вытянуть.

И вот статья, from SSRF to RCE.
 

ripmandin

Red Team
13.03.2020
38
147
BIT
9
Все больше убеждаюсь что bb неблагодарная тема, имеющая высокий порог вхождения, отнимающая у новичков кучу времени взамен дающая копейки и немного опыта.
Все же сперва надо стать спецом в какой-либо теме и по ней уже долбить bb проекты.
 
  • Нравится
Реакции: Rekaptcha

larchik

Gold Team
07.06.2019
410
480
BIT
539
Все больше убеждаюсь что bb неблагодарная тема, имеющая высокий порог вхождения, отнимающая у новичков кучу времени взамен дающая копейки и немного опыта.
Все же сперва надо стать спецом в какой-либо теме и по ней уже долбить bb проекты.
Чтобы стать спецом, надо больше практиковаться. ББ как раз для этого подходит
 

ripmandin

Red Team
13.03.2020
38
147
BIT
9
С точки зрения легально попробовать сломать что-то живое и реальное это конечно уникальная практика.
 

Dervish

Green Team
11.10.2019
36
4
BIT
0
я работаю и торгую на форексе на работе платят чтоб с голоду не сдох а форекс помогает чуток . Но статьи хорошие если б еще кто то помог разобраться и практику было бы отлично.
 

JIBRIL

Green Team
25.11.2018
53
62
BIT
0
Статья информативна и будет полезна другим, это лишь чужой опыт своего рода характера!

Автору отдельный респект за доходчивое обьяснение и старания +rep

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

+respect
 
  • Нравится
Реакции: Qoeda и larchik

Mike123321

One Level
03.01.2022
6
1
BIT
0
Судя по времени ответа так можно провести user enumeration, при идеальном интернете, интересно
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!