В современном мире кибербезопасности задача поиска и эксплуатации уязвимостей в веб-приложениях остаётся очень актуальной. Одним из часто встречающихся багов являются XSS (Cross-Site Scripting) уязвимости, позволяющие атакующему выполнять вредоносный код в контексте сайта. На примере учебной площадки Hack The Box и машины Cat рассмотрим, как можно через XSS найти приватные данные и повысить привилегии, используя веб-приложение Gitea. Начинается всё с разведки. Изначально необходимо изучить целевую машину, определить IP-адрес, а также добавить его в файл /etc/hosts для удобства работы.
В данном случае IP 10.10.11.53 соответствует имени хоста cat.htb.
Следующий шаг — сканирование портов, классический этап любой атаки, который отвечает на вопрос: какие сервисы открыты и доступны для взаимодействия. Для сканирования используется инструмент Nmap, позволяющий получить полный перечень работающих на сервере сервисов и их версий. Специальный скрипт помогает ускорить процесс, выделяя открытые порты и углублённо анализируя их. В ходе проверки обнаруживаются два открытых порта: 22 (служба OpenSSH) и 80 (веб-сервер Apache). Работая с веб-приложением, внимание обращается на порт 80 и содержимое корневого каталога веб-сервера.
Там был найден репозиторий Gitea — популярного инструмента для управления Git-репозиториями. Ключевой момент в работе с Gitea — копирование репозитория с помощью утилиты git-dumper. Процесс сбора всего кода открывает доступ к исходным файлам, что даёт конкурентные преимущества для поиска уязвимостей в реализации функционала. Исследование истории коммитов позволяет понять, был ли совершен полный аудит проекта и насколько свежи учетные данные. Одной из заметных страниц веб-приложения является vote.
php — модуль голосования за котов. Кроме того, доступна регистрация и авторизация пользователей. Важно отметить, что аутентифицированные пользователи имеют расширенный функционал и доступ к дополнительным возможностям сайта. Это стандартный сценарий, который можно использовать для проведения последующих атак. Особое внимание стоит уделить обработчику форм join.
php, который отвечает за регистрацию и авторизацию. Анализ кода показывает, что данные от пользователя, например, имя пользователя, сохраняются в базу без должной фильтрации и проверки. Такое поведение может привести к уязвимостям, связанным с XSS и SQL инъекциями. Наличие в базе данных сырых данных без обработки создаёт потенциальный путь для атакующего вывести скрипт на сторону клиента. Эксплуатация XSS в данном контексте позволяет захватить сессионные куки администратора и, таким образом, получить доступ к привилегированному аккаунту.
Получив контроль над сессией, атакующий может перейти к репозиторию Gitea и использовать имеющиеся возможности для повышения прав в системе Linux. Успешное выполнение подобных действий часто сопровождается задействованием нескольких техник, например, SQL-инъекциями для получения учетных данных и локальным повышением привилегий. Для успешного проникновения всегда рекомендуется использовать средства анонимизации и виртуализации, чтобы защитить собственный компьютер и личные данные. Взаимодействие с HTB участниками требует аккуратности и соблюдения правил, иначе можно столкнуться с непредвиденными последствиями. Важно помнить про этические нормы и использовать полученные знания исключительно в легитимных целях.
В заключение стоит подчеркнуть, что изучение подобных кейсов помогает глубже понять механизмы работы веб-приложений, типовые ошибки разработчиков и эффективные способы их использования в тестах на проникновение. Применение XSS для получения приватных данных и последующего повышения привилегий иллюстрирует важность комплексного подхода в кибербезопасности и необходимость постоянного совершенствования навыков специалистов в этой области.