CyberStrikeLab-lab10 全网首发
字数 3325
更新时间 2026-03-07 12:16:32
Zabbix 5.0.18 渗透测试与内网横向移动综合靶场实战教学文档
1. 靶场背景与目标
本教学文档基于一篇关于“CyberStrikeLab-lab10”靶场实战的公开文章。该靶场环境模拟了一个包含多个漏洞节点的内部网络,旨在通过综合运用漏洞利用、权限提升和内网横向移动技术,获取多个Flag(目标文件)。核心攻击路径涉及对Zabbix监控系统的利用、Linux系统提权以及针对Windows域环境的攻击。
2. Flag1 获取:Zabbix 攻击链
2.1 信息收集与漏洞发现
- 目标:
http://172.2.3.13/ - 识别服务:访问目标发现是Zabbix监控系统。
- 漏洞探测:使用工具扫描,发现存在
api_jsonrpc.php接口信息泄露漏洞。此接口未正确实施访问控制,允许未经认证的用户调用部分API方法。
2.2 API 交互与认证绕过
-
探测API版本:
- 向
/api_jsonrpc.php发送POST请求,调用apiinfo.version方法。 - 请求载荷示例:
{"jsonrpc":"2.0","method":"apiinfo.version","id":1,"auth":null,"params":{}} - 结果:成功返回Zabbix版本号为 5.0.18,确认API接口可访问。
- 向
-
暴力破解/弱口令攻击:
- 调用
user.login方法尝试登录。 - 经过多次尝试,成功使用弱口令
Admin/cslab获得认证。 - 成功登录请求载荷示例:
{ "jsonrpc": "2.0", "method": "user.login", "params": { "user": "Admin", "password": "cslab" }, "id": 1, "auth": null } - 返回的
auth字段值即为后续API调用的会话令牌。
- 调用
2.3 后台RCE与初始立足
- Zabbix后台提供了脚本创建与执行功能(例如,用于监控的“脚本”功能)。攻击者在获得管理员(Admin)权限后,可利用此功能执行系统命令。
- 操作步骤:
- 在Zabbix管理界面的“脚本”功能中,创建一个新的脚本。
- 脚本内容为系统命令,例如
whoami、id或文件读取命令cat /flag1。 - 在主机上执行该脚本。测试成功,但发现当前权限为普通用户,无法直接读取Flag。
- 获取反向Shell:
- 在脚本中写入反向Shell命令(例如,使用
bash、python或nc)。 - 在攻击机上启动监听。
- 在Zabbix中执行该脚本,成功获得一个反向Shell连接,权限为普通用户。
- 在脚本中写入反向Shell命令(例如,使用
2.4 本地权限提升 (Privilege Escalation)
获得初始Shell后,需要将权限提升至root。
-
信息收集:
- 查找当前用户具有写权限的脚本或服务文件,这是常见的提权入口。
- 关键命令:
# 查找可写的.sh脚本 find / -writable -type f -name "*.sh" 2>/dev/null # 查找可写的systemd服务文件 find /etc/systemd/system/ -writable -type f 2>/dev/null - 发现:找到可写文件
/usr/src/setIp.sh,这是一个网络配置脚本。
-
利用计划:
- 向
setIp.sh脚本末尾追加提权命令。目标是让/bin/bash获得SUID权限,这样任何用户执行bash -p时都会以文件所有者(root)权限运行。 - 追加命令:
echo "chmod +s /bin/bash" >> /usr/src/setIp.sh
- 向
-
触发机制分析:
- 查找该脚本的调用者:
grep -r "setIp.sh" /etc/systemd/system/ /etc/cron* - 发现:该脚本被一个名为
set-ip-mine.service的systemd服务调用。 - 问题:该服务仅在系统重启时执行。攻击者当前权限无法重启系统。
- 查找该脚本的调用者:
-
组合利用漏洞触发重启 (CVE-2024-1086):
- 为了触发系统重启以执行篡改后的
setIp.sh,攻击者利用了Linux内核本地提权漏洞 CVE-2024-1086。 - 注意:在该特定靶场环境中,直接利用该EXP提权会导致系统卡住并重启。这是一个非预期的副作用,但在此被利用为触发器。
- 操作要点:
- 在
setIp.sh中除了添加chmod +s /bin/bash,还应添加反向Shell命令,以便在系统重启后能重新连接。 - 在攻击机上持续监听。
- 在靶机Shell中后台运行 CVE-2024-1086 的EXP。系统随后会崩溃重启。
- 系统重启过程中,
set-ip-mine.service会执行被篡改的setIp.sh,完成两件事:- 赋予
/bin/bashSUID 权限。 - 向攻击机反弹一个新的Shell。
- 赋予
- 在
- 备选方案:如果重启后Web服务(Zabbix)仍正常,可直接通过Zabbix脚本功能执行
/bin/bash -p获得root shell。
- 为了触发系统重启以执行篡改后的
-
获取Root权限:
- 系统重启后,等待反向Shell连接。连接成功后,执行
id命令确认已是root用户。 - 或者,直接在获得的任何一个Shell中执行
/bin/bash -p,即可获得root权限的shell。 - 最终成功读取
flag1。
- 系统重启后,等待反向Shell连接。连接成功后,执行
3. Flag2 与 Flag3 获取:内网横向移动
在获得第一台主机(Zabbix服务器)的root权限后,进行内网横向移动,攻击域内其他主机。
3.1 网络探测与代理搭建
- 在已控的Zabbix服务器上进行内网网段扫描(例如
172.2.4.0/24),发现新的目标。 - 通常需要搭建代理(如使用
frp,ew,nps等)将内网流量转发到攻击机,以便进行进一步渗透。
3.2 域内信息收集与漏洞利用
- 发现目标:扫描发现域控制器(Domain Controller)及其他主机。
- 识别漏洞:信息收集过程中,发现域控制器存在 Zerologon (CVE-2020-1472) 漏洞。这是一个严重的Netlogon特权提升漏洞,允许攻击者在未经验证的情况下,将域控的计算机账户密码置空,从而获取域控权限。
- 漏洞验证与利用:
- 使用公开的Zerologon漏洞扫描脚本(如
zerologon_tester.py)验证漏洞存在。 - 使用利用脚本(如
zerologon_exploit.py)攻击域控制器,将其计算机账户密码重置为空。
- 使用公开的Zerologon漏洞扫描脚本(如
- 导出凭据:
- 利用获得的空密码,通过
secretsdump.py(Impacket套件) 等工具从域控制器导出所有的哈希值(NTLM Hashes),包括域管理员(Administrator)的哈希。
- 利用获得的空密码,通过
- 横向移动:
- 使用导出的域管理员(Administrator)的NTLM哈希,通过Pass-the-Hash (PtH) 攻击,即可登录域内的任何主机。
- 分别登录存有
flag2和flag3的主机,读取目标文件,完成整个攻击链。
4. 关键漏洞与技术点总结
- Zabbix API 未授权访问/信息泄露:允许攻击者探测版本和尝试认证。
- 弱口令:
Admin/cslab。 - Zabbix 后台脚本功能RCE:拥有后台权限即可通过脚本功能执行操作系统命令。
- 不安全的文件权限:普通用户可修改系统启动脚本 (
/usr/src/setIp.sh)。 - 特权服务滥用:利用可写的启动脚本,结合触发系统重启的漏洞,实现权限提升。
- Linux 内核本地提权漏洞 (CVE-2024-1086):被用作触发系统重启的“扳机”。
- Zerologon 漏洞 (CVE-2020-1472):攻击域控制器的关键,可获取域内最高权限。
- Pass-the-Hash (PtH):利用获取的哈希进行横向移动,无需破解明文密码。
5. 防御建议
- Zabbix:
- 强化API接口访问控制,禁止未授权访问。
- 强制使用强密码策略,禁用或重命名默认账户。
- 严格控制脚本功能的使用范围和权限,遵循最小权限原则。
- 操作系统:
- 定期更新系统与内核,及时修补已知漏洞(如CVE-2024-1086)。
- 审计系统内关键脚本和服务的文件权限,确保非特权用户无可写权限。
- 最小化systemd服务,并严格控制其配置文件的权限。
- 域环境:
- 立即安装并确认已修复 Zerologon 漏洞(微软2020年8月补丁)。
- 启用强制认证机制,防止Netlogon特权提升。
- 实施网络分段,限制关键服务器(如域控)的访问来源。
- 监控异常的身份验证和账户行为(如计算机账户密码被重置)。
相似文章
相似文章