Исследование nmap -sV -sC показало:
port 22: OpenSSH
port 80: ngingx 1.23.1: redirects to http://shoppy.htb
Пропишем ip адрес машинки и shoppy.htb, для отображения, в /etc/hosts.
Vhost через gobuster:
Пока сканируем nmap, используем gobuster, чтоб найти потенциальные субдомены и расширить возможности проникновения.
gobuster vhost -w /home/hell59/SecLists/Discovery/DNS/bitquark-subdomains-top100000.txt -t 50 -u shoppy.htb
Вручную исследуем веб приложение:
Исследуем вручную исходный код приложения.
Не находим ничего, кроме таймера.
Поиск файлов и директорий
Давайте поищем директории и файлы, может найдём что-то интересное.
wfuzz -c -z file,/hell59/SecLists/Discovery/Web-Content/raft-large-directories.txt --hc 404 "http://shoppy.htb/FUZZ/"
Видим, что есть /admin префикс, через который попадаем на /login:
MongoDB NoSQL
Посмотрев на авторизацию понимаем, что тут MongoDB NoSQL база данных.
Можем войти используя следующую логику NoSQL инъекции:
login: admin'||'1==1
password: admin
Получилось!
Про NoSQL инъекции можно почитать тут: https://book.hacktricks.xyz/pentesting-web/nosql-injection .
Введём admin'||'1==1 и получим список пользователей и хэш.
Используем hashcat, чтоб взломать полученный md5 hash
Используем hashcat, со словарём rockyou.txt и посмотрим на результаты:
Логинимся в субдомен.
Теперь заходим в субдомен mattermost, предварительно добавив его в /etc/hosts ,
http://www.mattermost.shoppy.htb с добытым паролем.
Тут история чата пользователя, и мы обнаружим важную информацию о machine deploy:
Получаем юзер флаг
С полученными данными логинимся через SSH, находим user.txt flag, делаем cat user.txt.
Sudo -l
Если покопаться в окрестностях и обратить внимание на все файлы в password-manager, то можно выудить и подставить пароль Sample.
Таким образом получаем данные username и password:
Логинимся через SSH как deploy пользователь.
Получаем root flag
Используем docker уязвимость, описанную тут.
docker run -v /:/mnt --rm -it alpine chroot /mnt sh
Ура, мы получили root!
ZimM
Как?.. Не вижу в этой форме авторизации ничего, намекающего на конкретную БД...
mvyazov Автор
Опустил в статье для краткости. Используем инструменты разработчика. Wappalyzer. Буду давать более подробные пояснения впредь.
ZimM
Я просто не очень понимаю даже, как это в теории должно работать. Ну окей, допустим, смотрим, что там шлется через инструменты разработчика. Но явно ведь логин/пароль уходит на некий бекенд, который уже логинится в БД. Не может ведь браузер напрямую с БД общаться?
mvyazov Автор
Конкретно в этой ситуации смотрел через BURP suite и wapplyazer. Совершенно верно говорите, что не напрямую, всё именно так, как вы описали. Просто обнаружив, что тут MongoDB , погуглил и обнаружил такую уязвимость, что и протестировал и оно сработало в данной конкретной ситуации.