Spug 运维平台默认口令漏洞复现

Wayyt  2小时前

Spug 运维平台默认口令漏洞复现

0x00 漏洞概述

Spug 是面向中小型企业设计的轻量级无 Agent 自动化运维平台,开源且部署简单,整合了主机管理、主机批量执行、主机在线终端、应用发布部署、在线任务计划、配置中心、监控报警等一系列功能。

该系统在初始化部署时会创建默认管理员账户,若管理员部署后未及时修改口令,攻击者可直接使用默认账户登录平台后台,查看系统信息、修改系统配置,进而通过主机批量执行、在线终端等运维功能控制整个平台及其纳管的服务器。对于一台运维平台而言,这几乎等同于交出了内网机器的最高操作权限,危害等级高。

0x01 影响范围

  • 受影响产品:Spug 自动化运维平台。
  • 受影响版本:官方未公开受影响版本范围,本文不作推测。
  • 资产识别:该系统前端页面响应中包含 this.webpackjsonpspug_web=this.webpackJsonpspug_web 特征字符串,可据此识别暴露资产。
  • 利用条件:系统初始化后未修改默认管理员口令即可被利用,无需任何前置认证。

0x02 漏洞分析

复现过程中重点确认了两个问题:默认凭据是什么、登录接口如何判定成功。

默认凭据:该平台部署初始化会生成默认管理员账户。公开部署资料与漏洞通报中记载的默认凭据为 admin 配对 spug;亦有公开教程记载另一初始化方式生成 admin 配对 spug.dev 的账户。两者细节虽有出入,但反映的是同一事实——初始化默认口令模式固定且公开,运维人员部署后若未强制修改,凭据即可被直接猜中。建议读者以实际部署版本的初始化输出为准,本文利用验证按漏洞通报口径采用 admin:spug

登录接口:后台登录通过 /api/account/login/ 接口完成,前端以 JSON 格式提交用户名、口令及登录类型字段。从公开请求样例看,登录请求中未包含验证码字段(推断),单次请求即可完成凭据验证。

权限标识:登录成功后,响应体会携带 is_supper(超级管理员标志)与 access_token(访问令牌)字段,可直接确认所获账户权限级别,为后续操作提供凭据。

0x03 利用链与请求包

整个利用只有一步:向登录接口提交默认凭据,依据响应判定登录成功即代表获得后台权限。

请求包(以目标 http://target 为例):

POST /api/account/login/ HTTP/1.1
Host: target
Accept: application/json, text/plain, */*
X-Token: null
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36
Content-Type: application/json;charset=UTF-8
Accept-Encoding: gzip, deflate

{"username":"admin","password":"spug","type":"default"}

参数说明

  • username / password:登录用户名与口令,默认口令场景下为 adminspug
  • type:登录类型字段,取值 default,即默认的账户密码登录方式;
  • X-Token:前端预留的访问令牌请求头,未登录时传 null,属正常请求形态。

成功判定:需同时满足以下条件(条件式判定,逐项核查):

1. 响应状态码为 200;

2. 响应体包含 "is_supper": true,表明登录账户为超级管理员;

3. 响应体包含 access_token 字段,即可用于后续 API 调用的访问令牌。

三项均满足即可确认默认口令有效。攻击者随后携带该令牌调用后台各接口,进入主机管理、在线终端等功能页面,接管平台全部能力。

利用链小结:识别资产(webpack 特征)→ 向 /api/account/login/ 提交 admin:spug 登录请求 → 依据 is_supperaccess_token 判定成功 → 持令牌接管后台。全程单个请求完成验证,无需任何前置凭证。

0x04 检测与修复建议

检测方面:可在访问日志中检索对 /api/account/login/ 的 POST 请求,重点排查提交 admin 账户名且响应为 200 并返回 access_token 的记录;亦可对暴露面资产做默认口令核验,凡初始化凭据未修改的实例均应告警。

修复建议:

1. 立即修改默认管理员密码,新密码应包含大小写字母、数字和特殊字符,长度不少于 12 位;

2. 禁止将管理界面暴露到公网,通过防火墙限制访问来源;

3. 谨慎启用自定义工具等高权限功能,限制可执行代码的权限;

4. 启用操作日志审计,记录所有管理操作和 API 调用,并定期检查账户与 API 密钥使用情况。

0x05 参考资料

1. Spug 官方文档站,账户管理:http://ops.spug.cc/docs/system-account/

2. Spug 官方文档站,Docker 安装:https://ops.spug.cc/docs/2.x/install-docker

3. 开源 Spug 运维平台部署记录(初始化默认账户记载):https://www.cnblogs.com/panjh/articles/13432394.html

4. 腾讯云开发者社区相关分析:https://cloud.tencent.com/developer/article/2084700

5. CSDN 部署教程:https://blog.csdn.net/cojn52/article/details/113644833

6. NoSec 漏洞库收录页:https://nosec.org/home/detail/6092.html

最新评论

昵称
邮箱
提交评论