Writeup tokenizer.edu.stf (Bootcamp)
Задание
Для решения задания нужно реализовать SQL Injection на хосте tokenizer.edu.stf
Разведка
Хост tokenizer.edu.stf находится на ip адресе 10.124.1.239. Первым делом просканируем nmap
Сканирование показало 80 порт и 5432 - postgres
При входе на сайт мы видим кнопку генерации токена
После нажатия на кнопку у нас появляется JWT токен
При декодировании JWT токена на сайте https://jwt.io/ мы можем увидеть поле dir:sample. Это может означать, что JWT токен предоставляет доступ к директории.
Первичный доступ
- Если токен указывает на директорию, то мы должны где-то попасть в нее
- Можно поставить JWT токен на брут с помощью hashcat
Поиск директории
После фаззинга файлов на хосте был обнаружен check.php и samples
При входе на check.php он просит указать JWT токен
Давайте передадим ему токен, который был сгенерирован ранее
Как мы можем увидеть он вывел какие-то txt, которые лежат в директории /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 наш новый токен и получаем такое:
При переходе на 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
Можешь идти и сдавать свой флаг со спокойной душой)