November 12, 2024

Writeup tokenizer.edu.stf (Bootcamp)

Задание

Для решения задания нужно реализовать SQL Injection на хосте tokenizer.edu.stf

Задание

Разведка

Хост tokenizer.edu.stf находится на ip адресе 10.124.1.239. Первым делом просканируем nmap

Сканирование показало 80 порт и 5432 - postgres

Сканирование nmap

При входе на сайт мы видим кнопку генерации токена

Первоначальная страница

После нажатия на кнопку у нас появляется JWT токен

Генерация JWT токена

При декодировании JWT токена на сайте https://jwt.io/ мы можем увидеть поле dir:sample. Это может означать, что JWT токен предоставляет доступ к директории.

Декодирование JWT токена

Первичный доступ

Что мы узнали из разведки?

  • Если токен указывает на директорию, то мы должны где-то попасть в нее
  • Можно поставить JWT токен на брут с помощью hashcat

Поиск директории

После фаззинга файлов на хосте был обнаружен check.php и samples

При входе на check.php он просит указать JWT токен

Вход на check.php

Давайте передадим ему токен, который был сгенерирован ранее

Передача JWT токена

Как мы можем увидеть он вывел какие-то txt, которые лежат в директории /samples/

Вывод из директории samples

Мы можем предположить, что с помощью токена можно просматривать содержимое директорий. остается последний шаг - взлом HS256 для получения ключа генерации токена.

Получение ключа для JWT токена

Сохраняем токен в файлик jwt и запускаем hashcat

hashcat -a 3 -m 16500 jwt ?a?a?a?a?a?a?a -i --increment-min=4

Получаем секретный ключ для генерации токена:

Получение секретного ключа

Генерируем JWT токен для просмотра /var/www/html/, меняя поле dir в самом токене. (После всех манипуляций, сгенерируйте изначальный токен еще раз и замените в нем данные)

Генерация нового токена

Возвращаемся обратно на check.php и подставляем в значение jwt наш новый токен и получаем такое:

Просмотр директорий с помощью JWT токена

При переходе на supersecretadminloginyoullneverguess.php получаем форму аутентификации.

Форма аутентификации

Сначала я подумал, что тут и надо внедрять SQL инъекцию, но оказалось все проще. Попробуй зайти со стандартным логином и паролем)

После входа обнаруживаем вот такие вот поля

Предлагаю заполнить поля и натравить скулемап (sqlmap). Для простоты можно перехватить запрос в BurpSuit, сохранить его в файл (Copy to file) и запустить такой вот командой:

sqlmap -r burp.txt --level 5 --risk 3

После сканирования мы видим, что поле phone уязвимо к инъекции

Уязвимый параметр

Нам нужны данные из таблицы secret. Поменяем нашу команду

sqlmap -r burp.txt --level 5 --risk 3 -p phone -T secret --dump

Получаем наш флаг. Profit!

Получение флага

Можешь идти и сдавать свой флаг со спокойной душой)

Подписывайся и смотри новые writeup!

Телеграм канал

Телеграм для вопросов