Найти в Дзене
Black_Fox

Hack The Box. Neonify. SSTI.

Оглавление

SSTI (Server Side Template Injection) уязвимость позволяет внедрить вредоносный код в шаблон на сайте для дальнейшего выполнения на сервере. Для обнаружения используют фаззинг, перебирая данные со специальными символами, используемых в выражениях шаблона, таких как ${{<%[%'"}}%\, чтобы получить выполнение кода или ошибку. Типичный пример проверки это выполнение математических операций в шаблоне.

Чем опасно.

Внедрение вредоносного кода может повлечь за собой такие последствия как:

  • Раскрытие внутренних файлов на сервере.
  • Получение полного контроля над сервером
  • Утечка конфиденциальной информации, доступ к БД и т.д

Пример реализации на платформе Hack the box.

Входной точкой атаки является форма ввода данных, которые возвращаются в ответе. Пример - таск «Neonify». В центре сайта форма для ввода данных. Результат, высвечиваются под формой.

-2

Нетрудно было догадаться, что на сайте используется ЯП Ruby. Попробуем подготовить такую полезную нагрузку

<%=3*7%>.

Закодируем текст кодировщиком URL.

%3C%25=3*7%25%3E

Если в таске вставить запрос в форму, вылетит ошибка. Надо ее обойти.

-3

Главная задача отправить POST запрос с полезной нагрузкой на сервер. В данной статье используем средства браузера. Откроем вкладку «Сеть» в панели разработчика в браузере. Отправим в форму слово «сyber» и увидим POST запрос, которые создается при отправке данных.

-4

Повторим POST запрос, изменив тело запроса на полезную нагрузку. Видно, что запрос прошел успешно.

-5

Для выполнения таска создадим запрос на вывод файла «flag.txt»:

<%= File.open('flag.txt').read %>

Перекодируем.

%3C%25%3D%20File.open%28%27flag.txt%27%29.read%20%25%3E

Что и даст ответ на таск!