HTB: Watcher
侦察
初始扫描
nmap扫描发现四个开放TCP端口:SSH(22)、HTTP(80)和两个Zabbix相关端口(10050、10051):
|
|
基于OpenSSH和Apache版本,主机可能运行Ubuntu 22.04。Web服务器存在重定向到watcher.vl。
子域名暴力破解
使用ffuf进行子域名枚举:
|
|
发现zabbix子域名,将其添加到hosts文件。
watcher.vl - TCP 80
网站分析
该网站是一个正常运行时间监控公司页面,所有按钮都会弹出表单,但提交后仅发送GET请求到/,页面无实际处理迹象。
技术栈
HTTP响应头显示:
- Server: Apache/2.4.52 (Ubuntu)
- 主页面加载为index.html,表明是静态站点
- 404页面为默认Apache页面
目录暴力破解
使用feroxbuster扫描未发现有效目录。
zabbix.watcher.vl - TCP 80
网站分析
加载Zabbix登录页面,可使用"访客登录"进入仪表板。
技术栈
- Zabbix开源监控平台
- 版本:7.0.0alpha1
- 设置zbx_session cookie
获取zabbix shell
CVE-2024-22120漏洞利用
该漏洞是Zabbix审计日志中的SQL注入漏洞,可导致远程代码执行。
漏洞识别
- CVE-2024-22116:RCE漏洞,但需要管理员权限
- CVE-2024-42327:SQL注入漏洞,可泄露管理员API令牌
- CVE-2024-22120:审计日志中的盲SQL注入
漏洞验证
在"监控→主机"中有一个条目,可对其执行ping命令。获取sessionid(从zbx_session cookie中base64解码)和hostid。
利用过程
下载并运行POC脚本:
|
|
获取shell
执行反向shell:
|
|
成功获取zabbix用户shell,用户标志位于/目录。
获取root权限
枚举
用户信息
系统中有一个ubuntu用户,但无访问权限。
Web服务器
Apache配置显示三个服务器:
- 000-default.conf
- watcher.vl.conf
- zabbix.watcher.vl.conf
主站点位于/var/www/html,仅包含单个HTML页面。
Zabbix数据库
配置文件位于/usr/share/zabbix/conf/zabbix.conf.php,包含数据库连接信息。连接数据库发现三个用户:Admin、guest和Frank。
TeamCity服务
netstat显示本地端口8111运行TeamCity服务:
|
|
通过SSH隧道访问TeamCity界面,版本为2024.03.3。
Zabbix管理员访问
通过CVE-2024-22120获取登录
使用专门脚本获取管理员cookie:
|
|
成功获取有效管理员cookie。
通过数据库操作获取访问
使用SQL查询重置管理员密码:
|
|
使用密码"zabbix"成功登录管理员账户。
审计日志分析
在审计日志中发现Frank用户每分钟登录一次。
污染Zabbix登录
修改/usr/share/zabbix/index.php文件,添加凭据记录功能:
|
|
成功获取Frank凭据:Frank:R%)3S7^Hf4TBobb(gVVs
TeamCity利用
Frank凭据在TeamCity中同样有效,且具有管理员权限。
创建构建项目
- 手动创建项目
- 创建构建配置
- 跳过VCS根设置
- 添加构建步骤→命令行
- 设置反向shell命令:
|
|
执行构建
运行构建配置,成功获取root shell:
|
|
成功获取root标志,完成整个渗透测试过程。