提交 7e8ab845 authored 作者: 陈泽健's avatar 陈泽健

docs(prd): 更新接口安全测试需求文档

- 添加已知安全问题基线表格,包含14项已确认安全问题清单
- 补充Nginx安全配置分析,包括外露路径和缺失安全配置
- 增加历史漏洞回归测试清单,涵盖35项高危、中危、低危漏洞
- 完善华为安全红线检查清单,包含22项接口自动化可测试项
- 扩展OWASP API Security Top 10测试范围,增加历史漏洞回归列
- 细化各系统安全测试内容,包括预定系统、运维集控、讯飞转录等
- 添加SQL注入重点目标和注入载荷类型说明
- 补充测试执行优先级矩阵,明确P0-P3级别测试类别
- 更新验收要求,增加历史漏洞和华为安全红线验证标准
- 新增参考资料利用率统计,显示34个文件中30个已利用,覆盖率达94.1%
- 添加优化功能回填记录,追踪文档完善进度
- 扩展知识库数据,增加长安深蓝汽车POC漏洞数据映射
上级 495ecfeb
......@@ -790,6 +790,188 @@ def test_2_2_11(client, auth):
)
def test_2_2_12(client, auth):
"""
2.2.12: NoSQL注入绕过登录认证 (HV-026, CVSS 9.4 紧急)
来源: HCL AppScan 2025-12-18 安全报告
测试接口: POST /platform/api/auth/login
在username字段注入MongoDB $ne操作符尝试绕过认证
"""
test_id = "2.2.12"
name = "NoSQL注入绕过登录认证"
log.info(f"[{test_id}] {name}")
login_path = client.config['auth'].get('login_path', '/platform/api/auth/login')
captcha = client.config['accounts'].get('captcha', 'csba')
# NoSQL注入载荷 — 使用 $ne 操作符绕过用户名校验
nosql_payloads = [
# $ne: 不等于,匹配第一个非"1"的用户
{"username": {"$ne": "1"}, "password": "anypassword", "code": captcha, "uuid": ""},
# $gt: 大于,匹配所有用户
{"username": {"$gt": ""}, "password": "anypassword", "code": captcha, "uuid": ""},
# $regex: 正则匹配
{"username": {"$regex": ".*"}, "password": "anypassword", "code": captcha, "uuid": ""},
# $nin: 不在列表中
{"username": {"$nin": ["nonexistent"]}, "password": "anypassword", "code": captcha, "uuid": ""},
]
vulnerable_payloads = []
for i, payload in enumerate(nosql_payloads):
uuid_val = client.get_captcha_uuid() or ''
payload["uuid"] = uuid_val
sign_headers = client._generate_sign(body_data=payload, bearer_token="")
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json, text/plain, */*',
'referer': '',
}
headers.update(sign_headers)
try:
url = f"{client.base_url}{login_path}"
resp = client.session.post(
url, json=payload, headers=headers,
verify=client.verify_ssl, timeout=client.timeout
)
if resp.status_code == 200:
try:
data = resp.json()
# 检查是否登录成功(获取到Token)
token = (data.get('accessToken') or
data.get('token') or
(data.get('data', {}) or {}).get('accessToken') or
(data.get('data', {}) or {}).get('token'))
if token:
vulnerable_payloads.append(f"载荷{i+1}: {list(payload['username'].keys())}")
log.warning(f"[{test_id}] NoSQL注入成功!载荷: {payload['username']}")
except Exception:
pass
except Exception as e:
log.debug(f"[{test_id}] NoSQL注入测试请求{i+1}异常: {e}")
request_info = _build_request_info(
"POST", login_path,
json_data={"username": {"$ne": "1"}, "password": "...", "code": captcha}
) + "\n攻击方式: MongoDB $ne/$gt/$regex/$nin 操作符注入"
if vulnerable_payloads:
return VulnResult(
test_id=test_id, name=name, level=VulnResult.LEVEL_CRITICAL,
description=f"登录接口存在NoSQL注入漏洞(CVSS 9.4),以下注入载荷成功绕过认证: "
f"{vulnerable_payloads}。"
f"攻击者无需密码即可登录任意账户,属于紧急安全漏洞",
request_info=request_info,
response_info=f"成功绕过的载荷: {vulnerable_payloads}",
is_vulnerable=True,
fix_suggestion="1. 对username参数进行严格类型校验,确保为string类型而非object;"
"2. 在反序列化层拦截非标准JSON结构;"
"3. 使用参数化查询而非直接拼接查询条件"
)
return VulnResult(
test_id=test_id, name=name, level=VulnResult.LEVEL_CRITICAL,
description="NoSQL注入攻击均被正确拦截,登录接口参数类型校验正常",
request_info=request_info,
response_info="所有NoSQL注入载荷均未成功登录",
is_vulnerable=False
)
def test_2_2_13(client, auth):
"""
2.2.13: 注销后Token/会话未失效测试 (HV-030)
来源: 南山区委前台渗透测试报告
验证注销接口调用后旧Token是否仍然有效
"""
test_id = "2.2.13"
name = "注销后Token未失效(会话管理)"
log.info(f"[{test_id}] {name}")
# 第一步:获取有效的user Token
user_token = auth.get_user_token()
if not user_token:
return VulnResult(
test_id=test_id, name=name, level=VulnResult.LEVEL_INFO,
description="user Token 获取失败,跳过测试",
is_vulnerable=False
)
# 第二步:用该Token验证可以访问认证接口
verify_resp_before = client.get("/api/system/getUserInfo",
token=user_token, account=None)
if not (verify_resp_before and verify_resp_before.status_code == 200):
return VulnResult(
test_id=test_id, name=name, level=VulnResult.LEVEL_INFO,
description="Token验证接口不可用,跳过测试",
is_vulnerable=False
)
# 第三步:调用注销接口
logout_paths = [
"/platform/api/auth/logout",
"/platform/api/system/logout",
]
logout_success = False
for logout_path in logout_paths:
logout_resp = client.post(logout_path, token=user_token)
if logout_resp and logout_resp.status_code == 200:
logout_success = True
break
if not logout_success:
return VulnResult(
test_id=test_id, name=name, level=VulnResult.LEVEL_INFO,
description=f"注销接口调用失败(尝试: {logout_paths}),跳过测试",
is_vulnerable=False
)
# 第四步:用旧Token再次尝试访问认证接口
import time
time.sleep(1) # 等待服务端处理注销
verify_resp_after = client.get("/api/system/getUserInfo",
token=user_token, account=None)
request_info = (f"测试步骤:\n"
f"1. 获取user Token并验证可访问 /api/system/getUserInfo\n"
f"2. 调用注销接口 {logout_path}\n"
f"3. 使用旧Token再次访问 /api/system/getUserInfo\n"
f"旧Token: {user_token[:50]}...")
if verify_resp_after and verify_resp_after.status_code == 200:
try:
data = verify_resp_after.json()
code = data.get('code', data.get('status'))
if code and str(code) not in ('401', '403', '40301', '40101'):
return VulnResult(
test_id=test_id, name=name, level=VulnResult.LEVEL_HIGH,
description="注销后旧Token仍然有效,可正常访问认证接口。"
"存在会话管理漏洞,攻击者获取已注销的Token后仍可持续访问",
request_info=request_info,
response_info=f"注销前: HTTP {verify_resp_before.status_code}\n"
f"注销后: HTTP {verify_resp_after.status_code}, body: {_safe_json(verify_resp_after)}",
is_vulnerable=True,
fix_suggestion="1. 注销时在服务端将Token加入黑名单或从缓存中删除;"
"2. 设置Token合理的过期时间;"
"3. 确保注销后所有关联的会话标识全部失效"
)
except Exception:
pass
return VulnResult(
test_id=test_id, name=name, level=VulnResult.LEVEL_HIGH,
description=f"注销后旧Token已被正确失效(HTTP {verify_resp_after.status_code if verify_resp_after else 'None'}),"
f"会话管理机制正常",
request_info=request_info,
response_info=f"注销后响应: {_safe_json(verify_resp_after)}",
is_vulnerable=False
)
def run_tests(client, auth):
"""
执行 API2 所有身份认证失效测试用例
......@@ -817,6 +999,9 @@ def run_tests(client, auth):
results.append(test_2_2_9(client, auth))
results.append(test_2_2_10(client, auth))
results.append(test_2_2_11(client, auth))
# 新增:基于参考资料补充的测试用例
results.append(test_2_2_12(client, auth)) # HV-026 NoSQL注入 CVSS 9.4
results.append(test_2_2_13(client, auth)) # HV-030 注销后Token未失效
log.info(f"API2 测试完成,共 {len(results)} 个用例")
return results
......@@ -626,6 +626,194 @@ def _find_sensitive_in_dict(data, keyword, parent_key="", depth=0):
return found
def test_2_3_8(client, auth):
"""
2.3.8: API成批分配漏洞测试 (HV-027, CVSS 7.3)
来源: HCL AppScan 2025-12-18 安全报告
测试接口: POST /meetingV3/api/manageUser/getManagerPageForBook
在请求体中注入is_admin/is_sso/role字段尝试特权升级
"""
test_id = "2.3.8"
name = "API成批分配-注入特权属性"
log.info(f"[{test_id}] {name}")
user_token = auth.get_user_token()
if not user_token:
return VulnResult(
test_id=test_id, name=name, level=VulnResult.LEVEL_INFO,
description="user Token 获取失败,跳过测试",
is_vulnerable=False
)
# 获取companyNumber
try:
config = client.config
company_number = config.get('company_number', 'CN-WQF-UBAINS')
except Exception:
company_number = 'CN-WQF-UBAINS'
# 正常请求 vs 注入特权属性的请求
normal_payload = {
"companyNumber": company_number,
"pageSize": 5,
"pageNum": 1,
}
# 注入特权升级字段
mass_assignment_payloads = [
{
"companyNumber": company_number, "pageSize": 5, "pageNum": 1,
"is_admin": True,
},
{
"companyNumber": company_number, "pageSize": 5, "pageNum": 1,
"is_sso": True,
},
{
"companyNumber": company_number, "pageSize": 5, "pageNum": 1,
"role": "admin",
},
{
"companyNumber": company_number, "pageSize": 5, "pageNum": 1,
"isAdmin": True, "roleId": 1,
},
]
# 先发正常请求获取基准响应
test_path = "/meetingV3/api/manageUser/getManagerPageForBook"
normal_resp = client.post(test_path, json_data=normal_payload, token=user_token)
normal_record_count = 0
if normal_resp and normal_resp.status_code == 200:
try:
data = normal_resp.json()
records = (data.get('result', {}).get('records', []) or
data.get('data', {}).get('records', []) or [])
normal_record_count = len(records)
except Exception:
pass
# 测试每个注入载荷
vulnerable_payloads = []
for i, payload in enumerate(mass_assignment_payloads):
resp = client.post(test_path, json_data=payload, token=user_token)
if resp and resp.status_code == 200:
try:
data = resp.json()
records = (data.get('result', {}).get('records', []) or
data.get('data', {}).get('records', []) or [])
# 如果注入后返回的数据量明显多于正常请求,说明特权升级成功
if len(records) > normal_record_count:
vulnerable_payloads.append(f"载荷{i+1}: {list(payload.keys())}")
# 或者检查响应中是否有admin相关字段变化
resp_text = resp.text.lower()
if 'is_admin' in resp_text or '"role":"admin"' in resp_text:
vulnerable_payloads.append(f"载荷{i+1}: 响应中包含admin属性")
except Exception:
pass
request_info = _build_request_info(
"POST", test_path,
json_data={"companyNumber": company_number, "pageSize": 5, "pageNum": 1,
"is_admin": True, "role": "admin"}
) + "\n攻击方式: 在请求体中注入is_admin/role/is_sso等特权属性"
if vulnerable_payloads:
return VulnResult(
test_id=test_id, name=name, level=VulnResult.LEVEL_HIGH,
description=f"用户查询接口存在API成批分配漏洞(CVSS 7.3),"
f"以下注入载荷成功影响了返回数据: {vulnerable_payloads}。"
f"攻击者可通过注入特权属性获取管理员级别数据",
request_info=request_info,
response_info=f"成功的载荷: {vulnerable_payloads}",
is_vulnerable=True,
fix_suggestion="1. 使用DTO明确绑定允许的字段,拒绝多余字段;"
"2. 在服务端过滤is_admin/role/roleId等敏感字段;"
"3. 从Token中提取用户角色,而非接受客户端传入"
)
return VulnResult(
test_id=test_id, name=name, level=VulnResult.LEVEL_HIGH,
description="API成批分配攻击未成功,接口参数过滤机制正常",
request_info=request_info,
response_info="所有注入载荷均未影响返回数据",
is_vulnerable=False
)
def test_2_3_9(client, auth):
"""
2.3.9: 运维集控越权访问 - company_id参数未校验 (HV-031)
来源: 天津海油渗透测试复测报告
测试接口: /monitor/api2/api/alarmststus/, roommaster/, devicemaintain/ 等
低权限用户通过修改company_id访问其他公司数据
"""
test_id = "2.3.9"
name = "运维集控越权-低权限用户通过company_id访问其他公司数据"
log.info(f"[{test_id}] {name}")
user_token = auth.get_user_token()
if not user_token:
return VulnResult(
test_id=test_id, name=name, level=VulnResult.LEVEL_INFO,
description="user Token 获取失败,跳过测试",
is_vulnerable=False
)
# 运维集控中通过company_id可能越权的接口(来自天津海油渗透测试确认的路径)
monitor_endpoints_with_company = [
("GET", "/monitor/api2/api/alarmststus/", {"company_id": "1"}),
("GET", "/monitor/api2/api/roommaster/", {"company_id": "1", "getmasterall": "1"}),
("GET", "/monitor/api2/api/devicemaintain/", {"company_id": "1", "pageSize": "10", "pageNum": "1"}),
("GET", "/monitor/api2/api/serverlog/", {"company_id": "1", "exportxml": "1"}),
]
vulnerable_endpoints = []
for method, path, params in monitor_endpoints_with_company:
request_info = _build_request_info(method, path, params=params)
request_info += f"\n使用 Token: user (低权限用户, company_id=1)"
resp = client.get(path, params=params, token=user_token)
if _is_success(resp):
# 验证确实返回了数据
try:
data = resp.json()
has_data = bool(data.get('results') or data.get('data') or
data.get('list') or data.get('records'))
if has_data:
vulnerable_endpoints.append(path)
except Exception:
vulnerable_endpoints.append(path)
request_info = _build_request_info(
"GET", "/monitor/api2/api/alarmststus/ 等",
params={"company_id": "1 (猜测其他公司ID)"}
) + "\n攻击方式: 低权限用户遍历company_id访问其他公司数据"
if vulnerable_endpoints:
return VulnResult(
test_id=test_id, name=name, level=VulnResult.LEVEL_HIGH,
description=f"运维集控接口存在越权漏洞,低权限用户通过company_id参数"
f"可访问其他公司数据。受影响接口: {vulnerable_endpoints}。"
f"(参考: 天津海油渗透测试确认的同类漏洞)",
request_info=request_info,
response_info=f"可越权访问的接口: {vulnerable_endpoints}",
is_vulnerable=True,
fix_suggestion="1. 从Token中提取用户的company_id,忽略客户端传入的company_id参数;"
"2. 所有运维集控接口必须校验当前用户所属公司;"
"3. 禁止低权限用户访问管理级别的运维集控接口"
)
return VulnResult(
test_id=test_id, name=name, level=VulnResult.LEVEL_HIGH,
description="运维集控接口company_id越权测试被正确拦截,权限控制正常",
request_info=request_info,
response_info="所有company_id越权尝试均被拒绝或返回空",
is_vulnerable=False
)
def run_tests(client, auth):
"""
执行 API3 所有对象属性级别授权失效测试用例
......@@ -655,6 +843,9 @@ def run_tests(client, auth):
results.append(test_2_3_6(client, auth))
results.append(test_2_3_7(client, auth))
# 新增:基于参考资料补充的测试用例
results.append(test_2_3_8(client, auth)) # HV-027 API成批分配 CVSS 7.3
results.append(test_2_3_9(client, auth)) # HV-031 运维集控越权company_id
log.info(f"API3 测试完成,共 {len(results)} 个用例")
return results
......@@ -72,6 +72,16 @@ def run_tests(client, auth):
# ============================================================
results.extend(_test_2_7_7(client, user_token))
# ============================================================
# 2.7.8: 桌牌同步SSRF (HV-024)
# ============================================================
results.append(_test_2_7_8(client, user_token, ssrf_payloads))
# ============================================================
# 2.7.9: SMTP邮件注入测试 (HV-023)
# ============================================================
results.append(_test_2_7_9(client, user_token))
log.info(f"API7 测试完成,共 {len(results)} 个用例")
return results
......
......@@ -208,6 +208,304 @@ HISTORICAL_VULNS = [
"detection_method": "华为Web漏扫",
"regression_note": "验证TRACE/OPTIONS等方法是否已限制",
},
# ---- 以下来自长安深蓝汽车 POC漏洞20260529-2026-05-29.xlsx ----
{
"vuln_id": "HV-011",
"title": "Nacos serverIdentity 权限绕过",
"mapped_paths": ["/nacos/v1/auth/users"],
"vuln_type": "PRIVILEGE_BYPASS",
"severity": "high",
"source_project": "长安深蓝汽车(POC漏洞#180358/#180359)",
"detection_method": "POC扫描",
"regression_note": "验证/nacos/v1/auth/users是否仍可匿名访问用户列表(serverIdentity绕过)",
},
{
"vuln_id": "HV-012",
"title": "config.json 配置文件泄露",
"mapped_paths": ["/config.json"],
"vuln_type": "INFO_DISCLOSURE",
"severity": "medium",
"source_project": "长安深蓝汽车(POC漏洞#180357)",
"detection_method": "POC扫描",
"regression_note": "验证根目录/config.json是否可被外部访问",
},
{
"vuln_id": "HV-013",
"title": "MQTT 协议匿名登录",
"mapped_paths": ["tcp://目标IP:1883", "tcp://目标IP:8883"],
"vuln_type": "WEAK_AUTH",
"severity": "medium",
"source_project": "长安深蓝汽车(POC漏洞#180362/#180363)",
"detection_method": "POC扫描",
"regression_note": "验证MQTT服务(1883/8883)是否允许匿名连接",
},
{
"vuln_id": "HV-014",
"title": "Swagger UI 未授权访问(网关端口)",
"mapped_paths": ["/swagger-resources", "/v2/api-docs"],
"vuln_type": "UNAUTH_ACCESS",
"severity": "high",
"source_project": "长安深蓝汽车(POC漏洞#180364/#180366)",
"detection_method": "POC扫描",
"regression_note": "验证:9204/swagger-resources和:62122/v2/api-docs是否仍可匿名访问",
},
{
"vuln_id": "HV-015",
"title": "Nacos 登录入口暴露(8848端口直连)",
"mapped_paths": ["/nacos/"],
"vuln_type": "UNAUTH_ACCESS",
"severity": "medium",
"source_project": "长安深蓝汽车(POC漏洞#180355/#180356)",
"detection_method": "POC扫描",
"regression_note": "验证Nacos控制台是否可通过443或8848端口直接访问",
},
# ---- 以下来自长安深蓝汽车 安全测试报告.docx(完整渗透测试报告) ----
{
"vuln_id": "HV-016",
"title": "JWT弱密钥",
"mapped_paths": ["全部JWT接口"],
"vuln_type": "WEAK_CRYPTO",
"severity": "high",
"source_project": "长安深蓝汽车(安全测试报告 2.1.1)",
"detection_method": "渗透测试",
"regression_note": "验证JWT密钥是否已更换为强密钥(修复方案:密钥拆分为三段文件+PBKDF2加密)",
},
{
"vuln_id": "HV-017",
"title": "垂直越权",
"mapped_paths": ["/api/manageUser/editInfo", "/api/permissionGroup/add"],
"vuln_type": "PRIVILEGE_ESCALATION",
"severity": "high",
"source_project": "长安深蓝汽车(安全测试报告 2.1.2)",
"detection_method": "渗透测试",
"regression_note": "验证普通用户是否仍能操作管理员接口(已由test_api03覆盖,需确认修复)",
},
{
"vuln_id": "HV-018",
"title": "文件上传漏洞",
"mapped_paths": ["/api/message/uploadFile", "/api/conference/QRcodeUpload"],
"vuln_type": "FILE_UPLOAD",
"severity": "high",
"source_project": "长安深蓝汽车(安全测试报告 2.1.3)",
"detection_method": "渗透测试",
"regression_note": "验证上传接口是否限制了文件类型(.exe/.sh/.jsp/.php等)",
},
{
"vuln_id": "HV-019",
"title": "敏感信息泄露",
"mapped_paths": ["多个接口"],
"vuln_type": "INFO_DISCLOSURE",
"severity": "high",
"source_project": "长安深蓝汽车(安全测试报告 2.1.7)",
"detection_method": "渗透测试",
"regression_note": "验证接口响应是否不再泄露密码、密钥、内部IP等敏感信息",
},
{
"vuln_id": "HV-020",
"title": "Vue前端未授权访问",
"mapped_paths": ["/monitor/"],
"vuln_type": "UNAUTH_ACCESS",
"severity": "medium",
"source_project": "长安深蓝汽车(安全测试报告 2.1.8)",
"detection_method": "渗透测试",
"regression_note": "验证/monitor/路径是否已通过Nginx隐藏或需要认证",
},
# ---- 以下来自安卓上传接口+深蓝汽车智能会议系统.pdf(IAST检测报告 LJ-2026-06-02-248040) ----
{
"vuln_id": "HV-021",
"title": "SQL注入 - 会议查询接口 selectPage",
"original_path": "/legacy/conference/selectPage",
"mapped_paths": ["/api/conference/selectPage", "/oldmeeting/api/conference/selectPage"],
"vuln_type": "SQL_INJECTION",
"severity": "high",
"source_project": "长安深蓝汽车(IAST报告 LJ-2026-06-02-248040)",
"detection_method": "IAST插桩检测",
"regression_note": "ConferenceController.java:694 使用StringBuilder.append直接拼接SQL,参数messgaeDate未过滤",
},
{
"vuln_id": "HV-022",
"title": "文件上传漏洞 - 安卓面板包上传",
"original_path": "/androidPanel/pack/upload",
"mapped_paths": ["/api/androidPanel/pack/upload", "/api/androidPanel/pack/batchUpdateCache"],
"vuln_type": "FILE_UPLOAD",
"severity": "high",
"source_project": "长安深蓝汽车(IAST报告 LJ-2026-06-02-248040)",
"detection_method": "IAST插桩检测",
"regression_note": "上传接口无文件类型和内容校验,可上传恶意文件,同时存在目录穿越漏洞",
},
{
"vuln_id": "HV-023",
"title": "SMTP邮件注入",
"original_path": "/email/verify",
"mapped_paths": ["/api/email/verify"],
"vuln_type": "SMTP_INJECTION",
"severity": "high",
"source_project": "长安深蓝汽车(IAST报告 LJ-2026-06-02-248040)",
"detection_method": "IAST插桩检测",
"regression_note": "邮件验证接口参数未过滤,可注入SMTP命令",
},
{
"vuln_id": "HV-024",
"title": "SSRF - 桌牌同步接口",
"original_path": "/tableCard/syncTableCard",
"mapped_paths": ["/api/tableCard/syncTableCard"],
"vuln_type": "SSRF",
"severity": "medium",
"source_project": "长安深蓝汽车(IAST报告 LJ-2026-06-02-248040)",
"detection_method": "IAST插桩检测",
"regression_note": "桌牌同步接口参数可构造内网请求,验证是否已做URL白名单过滤",
},
{
"vuln_id": "HV-025",
"title": "目录穿越 - 安卓面板上传",
"original_path": "/androidPanel/pack/upload",
"mapped_paths": ["/api/androidPanel/pack/upload"],
"vuln_type": "PATH_TRAVERSAL",
"severity": "medium",
"source_project": "长安深蓝汽车(IAST报告 LJ-2026-06-02-248040,4个实例)",
"detection_method": "IAST插桩检测",
"regression_note": "上传文件名可包含../进行目录穿越,影响172.17.0.1:8999和127.0.0.1:8999",
},
# ---- 以下来自新统一平台系统安全报告-20251218.pdf(HCL AppScan Standard 10.7.0) ----
{
"vuln_id": "HV-026",
"title": "NoSQL注入 - 登录接口",
"original_path": "/platform/api/auth/login",
"mapped_paths": ["/platform/api/auth/login"],
"vuln_type": "NOSQL_INJECTION",
"severity": "critical",
"source_project": "新统一平台(HCL AppScan 2025-12-18,CVSS 9.4)",
"detection_method": "HCL AppScan自动化扫描",
"regression_note": "username参数可注入MongoDB $ne操作符绕过认证,需验证参数类型校验是否已加强",
"test_payload": '{"username":{"$ne":"1"},"password":"...","code":"csba","uuid":"..."}',
},
{
"vuln_id": "HV-027",
"title": "API成批分配 - 用户查询接口",
"original_path": "/meetingV3/api/manageUser/getManagerPageForBook",
"mapped_paths": ["/api/manageUser/getManagerPageForBook", "/meetingV3/api/manageUser/getManagerPageForBook"],
"vuln_type": "MASS_ASSIGNMENT",
"severity": "high",
"source_project": "新统一平台(HCL AppScan 2025-12-18,CVSS 7.3)",
"detection_method": "HCL AppScan自动化扫描",
"regression_note": "可在请求体中注入is_admin=true/is_sso=true/role=admin字段实现特权升级",
"test_payload": '{"companyNumber":"CN-xxx","pageSize":10,"pageNum":1,"is_admin":true,"is_sso":true,"role":"admin"}',
},
{
"vuln_id": "HV-028",
"title": "Spring Boot Actuator端点泄露(AppScan确认7处)",
"original_path": "/meetingV3/api/health, /platform/oldmeeting/api/systemConfiguration/health 等",
"mapped_paths": [
"/meetingV3/api/health",
"/platform/oldmeeting/api/systemConfiguration/health",
"/api/health",
"/oldmeeting/api/health",
"/newmeeting/api/health",
"/monitor/api2/api/health",
"/voice/api/health",
],
"vuln_type": "INFO_DISCLOSURE",
"severity": "low",
"source_project": "新统一平台(HCL AppScan 2025-12-18,7处端点泄露)",
"detection_method": "HCL AppScan自动化扫描",
"regression_note": "AppScan确认7处Spring Boot Actuator health端点泄露,验证是否已限制访问",
},
{
"vuln_id": "HV-029",
"title": "config.json敏感配置泄露(多路径确认)",
"original_path": "/static/config.json, /platform/static/config.json, /meetingV3/static/config.json",
"mapped_paths": [
"/static/config.json",
"/platform/static/config.json",
"/meetingV3/static/config.json",
"/config.json",
"/monitor/static/conf",
],
"vuln_type": "INFO_DISCLOSURE",
"severity": "high",
"source_project": "长安深蓝汽车(安全测试报告 2.1.7)+ AppScan确认",
"detection_method": "渗透测试 + AppScan",
"regression_note": "config.json含ubainsKey、dingdingIp等敏感信息,多个前端目录均可访问",
},
# ---- 以下来自南山区委渗透测试报告 ----
{
"vuln_id": "HV-030",
"title": "注销后Token/会话未失效",
"original_path": "/platform/api/auth/logout, /platform/api/system/logout",
"mapped_paths": ["/platform/api/auth/logout", "/platform/api/system/logout"],
"vuln_type": "SESSION_MANAGEMENT",
"severity": "high",
"source_project": "南山区委(前台渗透测试报告)",
"detection_method": "渗透测试 — 注销后使用旧Token访问认证页面",
"regression_note": "注销后使用旧Token调用需认证接口,验证是否返回401",
},
# ---- 以下来自天津海油渗透测试-复测报告 ----
{
"vuln_id": "HV-031",
"title": "运维集控越权访问 - company_id参数未校验",
"original_path": "/api2/api/alarmststus/, /api2/api/roommaster/, /api2/api/devicemaintain/",
"mapped_paths": [
"/monitor/api2/api/alarmststus/",
"/monitor/api2/api/roommaster/",
"/monitor/api2/api/devicemaintain/",
"/monitor/api2/api/downloadfile/",
"/monitor/api2/api/serverlog/",
],
"vuln_type": "PRIVILEGE_ESCALATION",
"severity": "high",
"source_project": "天津海油(智慧终端运行状态管理系统-渗透测试-复测 3.1)",
"detection_method": "渗透测试 — 低权限用户test22可访问高权限接口",
"regression_note": "使用普通用户Token访问/monitor/api2/api/的管理接口,验证是否返回权限错误",
"test_note": "company_id参数可直接猜测,低权限用户可查看/下载其他公司的告警、日志、发布文件",
},
{
"vuln_id": "HV-032",
"title": "运维集控任意文件上传 - 文件推送功能",
"original_path": "/media/cmdb/upload/",
"mapped_paths": ["/monitor/api2/api/uploadupdatefile/", "/api/androidPanel/pack/upload"],
"vuln_type": "FILE_UPLOAD",
"severity": "high",
"source_project": "天津海油(渗透测试复测 3.2)",
"detection_method": "渗透测试 — 上传asp/aspx/jsp/php文件成功",
"regression_note": "验证上传接口是否做了白名单+内容校验(天津海油已修复)",
},
{
"vuln_id": "HV-033",
"title": "运维集控敏感信息泄露 - config.json",
"original_path": "/publish/static/config.json",
"mapped_paths": ["/static/config.json", "/monitor/static/config.json", "/meetingV3/static/config.json"],
"vuln_type": "INFO_DISCLOSURE",
"severity": "high",
"source_project": "天津海油(渗透测试复测 3.3)+ 多项目确认",
"detection_method": "渗透测试 — 访问config.json获取管理员密码、内网IP、设备标识",
"regression_note": "config.json包含WebSocket参数、管理员账号密码、内网IP,与HV-029一致",
},
{
"vuln_id": "HV-034",
"title": "运维集控未授权访问 - DRF API界面暴露",
"original_path": "/api2/api/serverinfo/, /api2/api/publishinfo/, /api2/api/companyauth/",
"mapped_paths": [
"/monitor/api2/api/serverinfo/",
"/monitor/api2/api/publishinfo/",
"/monitor/api2/api/companyauth/",
],
"vuln_type": "UNAUTH_ACCESS",
"severity": "medium",
"source_project": "天津海油(渗透测试复测 3.4)",
"detection_method": "渗透测试 — 无需认证即可访问DRF API可视化界面",
"regression_note": "Django REST framework API界面暴露,返回服务器配置信息",
},
{
"vuln_id": "HV-035",
"title": "运维集控目录遍历 - /media/目录列表",
"original_path": "/media/",
"mapped_paths": ["/media/", "/media/cmdb/Uploadui/"],
"vuln_type": "PATH_TRAVERSAL",
"severity": "high",
"source_project": "天津海油(渗透测试复测 3.5)",
"detection_method": "渗透测试 — 直接访问/media/列出所有上传文件",
"regression_note": "Nginx未设置autoindex off,需验证/media/路径是否禁止目录列表",
},
]
# ============================================================
......@@ -275,48 +573,162 @@ HUAWEI_REDLINE_CHECKS = [
"requirement": "密码存储必须使用加盐哈希(如bcrypt/scrypt/Argon2),不得使用单纯SHA256",
"test_method": "检查登录接口密码加密方式",
"current_status": "使用SHA256无加盐(已知问题KN-02)",
"redline_id": "RL-4.1",
},
{
"check_id": "HW-002",
"category": "传输安全",
"requirement": "所有API通信必须使用HTTPS,且TLS版本不低于1.2,推荐TLS 1.3",
"test_method": "检查TLS协议版本",
"redline_id": "RL-3.1",
},
{
"check_id": "HW-003",
"category": "鉴权机制",
"requirement": "所有非公开接口必须经过鉴权校验,Token应有有效期限和刷新机制",
"test_method": "无Token访问需认证接口",
"redline_id": "RL-4.1.2",
},
{
"check_id": "HW-004",
"category": "速率限制",
"requirement": "对外接口必须配置速率限制,防止暴力破解和DDoS",
"test_method": "连续高频请求检测限流",
"redline_id": "RL-4.1",
},
{
"check_id": "HW-005",
"category": "输入校验",
"requirement": "所有用户输入必须进行严格的参数校验和过滤,防止SQL注入和XSS",
"test_method": "发送SQL注入和XSS载荷",
"redline_id": "RL-4.1",
},
{
"check_id": "HW-006",
"category": "安全响应头",
"requirement": "Web应用必须配置完整的安全响应头(X-Frame-Options、CSP、HSTS等)",
"test_method": "检查HTTP响应头",
"redline_id": "RL-3.1",
},
{
"check_id": "HW-007",
"category": "配置管理",
"requirement": "中间件管理界面(如Nacos)不得对外暴露",
"test_method": "探测Nacos等管理端点",
"redline_id": "RL-1.1.4",
},
{
"check_id": "HW-008",
"category": "日志审计",
"requirement": "关键操作(登录、权限变更)必须有审计日志",
"test_method": "检查是否有操作日志接口",
"redline_id": "RL-4.1",
},
# ---- 以下从红线自检.xlsx 和 A1基线测试用例.xlsx 提取 ----
{
"check_id": "HW-009",
"category": "访问通道控制",
"requirement": "系统支持无法从用户面直接登录连接管理接口,管理面与用户面必须隔离",
"test_method": "检查管理接口是否可通过公网访问",
"redline_id": "RL-1.1.1",
},
{
"check_id": "HW-010",
"category": "端口管理",
"requirement": "所有对外通信端口必须在通信矩阵中说明,动态侦听端口必须限定合理范围",
"test_method": "端口扫描对比通信矩阵",
"redline_id": "RL-1.1.3",
},
{
"check_id": "HW-011",
"category": "未公开接口",
"requirement": "禁止存在绕过认证机制的隐秘通道(组合键、特殊URL、硬编码口令等)",
"test_method": "扫描隐藏路径、检查硬编码凭据",
"redline_id": "RL-5.1.1",
},
{
"check_id": "HW-012",
"category": "未公开接口",
"requirement": "禁止存在未文档化的命令/参数、端口等接入方式,调试工具不得随软件发布",
"test_method": "检查测试端点、调试工具是否暴露",
"redline_id": "RL-5.1.2 / RL-5.3.1",
},
{
"check_id": "HW-013",
"category": "公网地址泄露",
"requirement": "代码或配置中禁止存在界面不可见或资料未公开的公网IP/URL/邮箱地址",
"test_method": "检查响应和错误信息中是否泄露公网地址",
"redline_id": "RL-5.3.2",
},
{
"check_id": "HW-014",
"category": "权限运行",
"requirement": "禁止使用root/administrator等高权限用户运行服务进程",
"test_method": "检查服务运行用户(需SSH访问)",
"redline_id": "RL-5.4.1",
},
{
"check_id": "HW-015",
"category": "会话管理",
"requirement": "Web会话标识必须具备随机性,身份验证成功后必须更换会话标识",
"test_method": "登录前后对比Session/Token是否变化",
"redline_id": "RL-4.1.8",
},
{
"check_id": "HW-016",
"category": "漏洞扫描",
"requirement": "产品须使用指定漏洞扫描工具扫描,高风险级别漏洞必须得到解决",
"test_method": "人工确认(非自动化测试项)",
"redline_id": "RL-2.1.1",
},
# ---- 以下从华为安全红线加密方式.docx 提取 ----
{
"check_id": "HW-017",
"category": "加密规范-不可逆",
"requirement": "密码存储必须使用PBKDF2或scrypt算法,不得使用单纯SHA256。当前系统使用SHA256不符合红线",
"test_method": "检查登录接口密码加密方式(SHA256无加盐 → 已确认不合规)",
"redline_id": "RL-8.4",
"current_status": "不合规 — 使用SHA256无加盐(已知问题KN-02)",
},
{
"check_id": "HW-018",
"category": "加密规范-可逆",
"requirement": "配置文件中的密码必须使用AES加密,密钥随机生成后拆分存储在Linux文件中,使用时经PBKDF2再次加密组合",
"test_method": "检查配置文件中是否存在明文密码",
"redline_id": "RL-8.4",
"current_status": "需人工确认 — 配置文件密码是否已AES加密",
},
{
"check_id": "HW-019",
"category": "加密规范-密钥管理",
"requirement": "密钥文件必须拆分为三段分别存放,密钥至少32位字符(含大小写字母、数字),密码至少16位含大小写+数字+特殊字符",
"test_method": "检查JWT密钥是否已更换为拆分密钥文件模式",
"redline_id": "RL-8.4",
},
# ---- 以下从华为安全红线加密方式(1).docx + 加密方式(运维).docx 精确提取 ----
{
"check_id": "HW-020",
"category": "加密规范-密码复杂度",
"requirement": "密码必须符合复杂程度要求:至少16位,含大小写字母+数字+特殊字符,不能与用户名一致",
"test_method": "尝试设置弱密码(短密码、纯数字、与用户名相同)验证是否被拒绝",
"redline_id": "RL-8.4",
"source_detail": "华为安全红线加密方式(运维).docx: 密码至少16位含大小写+数字+特殊字符",
},
{
"check_id": "HW-021",
"category": "加密规范-密钥复杂度",
"requirement": "密钥最少32位字符,包含大小写字母和数字;密钥文件拆分三段存放Linux系统文件",
"test_method": "检查密钥文件是否存在且已拆分(需SSH访问 /var/www/java/api/java-meeting/java-meeting2.0/file/)",
"redline_id": "RL-8.4",
"source_detail": "华为安全红线加密方式(运维).docx: 随机数最小32位字符",
},
{
"check_id": "HW-022",
"category": "加密规范-运维加密流程",
"requirement": "可逆加密使用AES,密钥经PBKDF2加密组合,HOST_Auth从/var/www/html/setting.conf获取",
"test_method": "检查配置文件密码是否已AES加密,验证setting.conf中的HOST_Auth是否为32位+随机密钥",
"redline_id": "RL-8.4",
"source_detail": "华为安全红线加密方式(运维).docx: cd /home/sets 进行密码加密",
},
]
......@@ -340,6 +752,9 @@ ENHANCED_PATH_DICTIONARIES = {
{"path": "/nacos/v1/ns/service/list?pageNo=1&pageSize=100", "desc": "Nacos服务列表"},
{"path": "/nacos/v1/auth/login", "desc": "Nacos登录接口"},
{"path": "/nacos/v1/auth/users?pageNo=1&pageSize=10", "desc": "Nacos用户列表"},
# POC漏洞#180358/#180359: serverIdentity权限绕过(高危)
{"path": "/nacos/v1/auth/users?username=&pageNo=1&pageSize=10", "desc": "Nacos用户列表(serverIdentity绕过)"},
{"path": "/nacos/v1/auth/users?search=accurate&username=nacos&pageNo=1&pageSize=10", "desc": "Nacos用户查询(默认账号探测)"},
{"path": "/nacos/actuator/", "desc": "Nacos Actuator根路径"},
{"path": "/nacos/actuator/health", "desc": "Nacos Actuator健康检查"},
{"path": "/nacos/actuator/beans", "desc": "Nacos Actuator Bean列表"},
......@@ -354,15 +769,20 @@ ENHANCED_PATH_DICTIONARIES = {
{"path": "/v2/api-docs", "desc": "Swagger v2 JSON"},
{"path": "/v3/api-docs", "desc": "OpenAPI 3.0 JSON"},
{"path": "/doc.html", "desc": "knife4j文档页面"},
{"path": "/swagger-resources", "desc": "Swagger资源列表"},
{"path": "/api/swagger-ui.html", "desc": "/api/下的Swagger UI"},
{"path": "/api/v2/api-docs", "desc": "/api/下的Swagger JSON"},
{"path": "/api/doc.html", "desc": "/api/下的knife4j"},
{"path": "/api/swagger-resources", "desc": "/api/下的Swagger资源"},
{"path": "/newmeeting/v2/api-docs", "desc": "新版会议Swagger"},
{"path": "/oldmeeting/v2/api-docs", "desc": "旧版会议Swagger"},
{"path": "/monitor/api2/api/v2/api-docs", "desc": "运维集控Swagger"},
{"path": "/voice/v2/api-docs", "desc": "讯飞转录Swagger"},
{"path": "/platform/v2/api-docs", "desc": "统一平台Swagger"},
{"path": "/nacos/v2/api-docs", "desc": "Nacos下的Swagger"},
# POC漏洞#180366: 网关9204端口的Swagger(高危)
{"path": "/platform/api/swagger-resources", "desc": "统一平台网关Swagger资源(POC发现)"},
{"path": "/platform/api/v2/api-docs", "desc": "统一平台网关Swagger JSON(POC发现)"},
],
# 历史漏洞中提到的旧版/遗留路径
......@@ -370,6 +790,8 @@ ENHANCED_PATH_DICTIONARIES = {
{"path": "/legacy/message/book", "desc": "历史SQL注入漏洞路径(旧版映射)", "severity": "high"},
{"path": "/legacy/api/auth/login", "desc": "旧版登录接口"},
{"path": "/legacy/api/user/info", "desc": "旧版用户信息接口"},
# POC漏洞#180357: config.json 配置文件泄露(中危)
{"path": "/config.json", "desc": "根目录config.json泄露(POC发现)", "severity": "medium"},
{"path": "/api/upload/", "desc": "上传目录暴露", "severity": "medium"},
{"path": "/api/download/", "desc": "下载目录暴露", "severity": "medium"},
{"path": "/upload/", "desc": "根上传目录"},
......@@ -383,4 +805,376 @@ ENHANCED_PATH_DICTIONARIES = {
{"path": "/.env", "desc": "环境变量文件暴露"},
{"path": "/.DS_Store", "desc": "macOS目录信息文件"},
],
# 基于HCL AppScan 2025-12-18报告确认的敏感路径
"appscan_confirmed_paths": [
# config.json 在多个前端目录泄露(AppScan+渗透测试确认)
{"path": "/static/config.json", "desc": "前台config.json(含ubainsKey等敏感信息)", "severity": "high"},
{"path": "/platform/static/config.json", "desc": "统一平台config.json", "severity": "high"},
{"path": "/meetingV3/static/config.json", "desc": "新版会议config.json", "severity": "high"},
{"path": "/monitor/static/conf", "desc": "运维集控配置目录", "severity": "high"},
# Spring Boot Actuator health 端点(AppScan发现7处)
{"path": "/meetingV3/api/health", "desc": "会议系统health端点(AppScan确认)", "severity": "low"},
{"path": "/platform/oldmeeting/api/systemConfiguration/health", "desc": "旧版会议配置health(AppScan确认)", "severity": "low"},
{"path": "/api/health", "desc": "通用health端点", "severity": "low"},
# 源码泄露路径(AppScan发现4处)
{"path": "/backstage/static/js/", "desc": "后台管理JS源码(含版本号和逻辑)", "severity": "low"},
{"path": "/monitor/static/js/", "desc": "运维集控JS源码", "severity": "low"},
{"path": "/static/js/", "desc": "前台JS源码", "severity": "low"},
{"path": "/voice/static/js/", "desc": "讯飞转录JS源码", "severity": "low"},
{"path": "/ai/static/assets/js/", "desc": "AI服务JS源码", "severity": "low"},
],
# 基于IAST检测报告(深蓝汽车LJ-2026-06-02-248040)的新增漏洞路径
"iast_discovered_paths": [
# SQL注入(IAST确认)
{"path": "/legacy/conference/selectPage", "desc": "会议分页查询SQL注入(IAST确认,ConferenceController:694)", "severity": "high"},
{"path": "/legacy/message/book", "desc": "会议预定SQL注入(IAST确认)", "severity": "high"},
# 文件上传 + 目录穿越(IAST确认)
{"path": "/androidPanel/pack/upload", "desc": "安卓面板包上传(文件上传+目录穿越,IAST确认4个实例)", "severity": "high"},
# SMTP注入(IAST确认)
{"path": "/email/verify", "desc": "邮件验证SMTP注入(IAST确认)", "severity": "high"},
# SSRF(IAST确认)
{"path": "/tableCard/syncTableCard", "desc": "桌牌同步SSRF(IAST确认)", "severity": "medium"},
],
# NoSQL注入测试路径(AppScan发现,CVSS 9.4紧急)
"nosql_injection_paths": [
{"path": "/platform/api/auth/login", "desc": "登录接口username参数NoSQL注入(CVSS 9.4)", "severity": "critical"},
],
# API成批分配测试路径(AppScan发现)
"mass_assignment_paths": [
{"path": "/meetingV3/api/manageUser/getManagerPageForBook", "desc": "用户查询接口可注入is_admin/role(CVSS 7.3)", "severity": "high"},
{"path": "/api/manageUser/getManagerPageForBook", "desc": "旧路径用户查询接口", "severity": "high"},
{"path": "/api/manageUser/editInfo", "desc": "用户编辑接口可能存在成批分配", "severity": "medium"},
],
}
# ============================================================
# 六、HCL AppScan 2025-12-18 安全报告完整摘要
# 来源:新统一平台系统安全报告-20251218.pdf
# 扫描目标:192.168.5.44:443,扫描时间:2025/12/18 17:06
# ============================================================
APPSCAN_REPORT_SUMMARY = {
"scan_info": {
"tool": "HCL AppScan Standard 10.7.0",
"scan_date": "2025-12-18 17:06:15",
"target": "192.168.5.44:443",
"total_issues": 56,
"test_strategy": "Default",
"cvss_version": "3.1",
},
"severity_summary": {
"critical": 1, # NoSQL注入
"high": 1, # API成批分配
"medium": 5, # SRI(3)+临时文件(1)+归档下载(1)
"low": 29, # Actuator(7)+源码泄露(4)+SSL缓存(12)+安全头(3)+隐藏目录(2)+不必要头(1)
"info": 20, # Referrer(1)+SSL域名(1)+IP泄露(4)+路径泄露(7)+Cookie(7)
},
"critical_findings": [
{
"type": "NoSQL注入",
"severity": "紧急",
"cvss": 9.4,
"url": "https://192.168.5.44/platform/api/auth/login",
"detail": "username参数可注入MongoDB $ne操作符绕过认证",
"payload": '{"username":{"$ne":"1"},"password":"...","code":"csba","uuid":"..."}',
"fix": "确保用户输入的类型正确并对其进行正确转义",
},
{
"type": "API成批分配",
"severity": "高",
"cvss": 7.3,
"url": "https://192.168.5.44/meetingV3/api/manageUser/getManagerPageForBook",
"detail": "可在请求体中注入is_admin/is_sso/role字段实现特权升级",
"payload": '{"companyNumber":"CN-xxx","pageSize":10,"pageNum":1,"is_admin":true}',
"fix": "避免自动绑定客户端输入到内部对象,定义并实施数据模式",
},
],
"actuator_endpoints": [
"https://192.168.5.44/meetingV3/api/health",
"https://192.168.5.44/platform/oldmeeting/api/systemConfiguration/",
"https://192.168.5.44/platform/oldmeeting/api/systemConfiguration/health",
],
"source_leak_urls": [
"https://192.168.5.44/backstage/static/js/app.2911e3538c8fef9b009d2.0.2550.1340-2025-12-16.js",
"https://192.168.5.44/monitor/static/js/vendor.e556a0c7efee8f654ff51764834268589.js",
"https://192.168.5.44/static/js/app.1df8a5267484e3a7ab8c2.0.2550.1469-2025-12-15.js",
"https://192.168.5.44/voice/static/js/vendor.2231b220e8ec50f87bc71765521900471.js",
],
"internal_ip_leak_count": 4,
"server_path_leak_count": 7,
"ssl_cacheable_pages_count": 12,
}
# ============================================================
# 七、IAST检测报告摘要(深蓝汽车 LJ-2026-06-02-248040)
# 来源:安卓上传接口+深蓝汽车智能会议系统.pdf
# ============================================================
IAST_REPORT_SUMMARY = {
"report_info": {
"report_id": "LJ-2026-06-02-248040",
"project": "深蓝汽车智能会议系统(插桩模式)",
"scan_period": "2026-05-27 ~ 2026-06-02",
"tool_version": "4.2.0(AI版)",
"api_coverage": "7.12%",
},
"vulnerability_summary": {
"total": 84,
"high": 4,
"medium": 5,
"low": 72,
"info": 3,
"all_unfixed": True, # 全部未修复
},
"high_vulnerabilities": [
{"type": "SQL注入", "count": 2, "paths": [
"/legacy/conference/selectPage",
"/legacy/message/book",
]},
{"type": "文件上传", "count": 1, "paths": [
"/androidPanel/pack/upload",
]},
{"type": "SMTP邮件注入", "count": 1, "paths": [
"/email/verify",
]},
],
"medium_vulnerabilities": [
{"type": "SSRF", "count": 1, "paths": ["/tableCard/syncTableCard"]},
{"type": "目录穿越", "count": 4, "paths": ["/androidPanel/pack/upload"]},
],
"code_detail": {
"sql_injection_location": "ConferenceController.java:694 — StringBuilder.append直接拼接SQL",
"sql_injection_param": "messgaeDate参数经日期校验后仍被拼接到SQL字符串中",
"sql_table_exposed": "rms_meeting_approval表(含cnum, uid, message_password等敏感字段)",
},
}
# ============================================================
# 八、JWT修复配置参考
# 来源:新统一平台软件漏洞处理后-服务器配置内容.docx
# ============================================================
JWT_FIX_REFERENCE = {
"fix_summary": "JWT密钥从硬编码改为拆分文件+PBKDF2加密模式",
"affected_services": [
"auth-sso-auth (ubains-auth.jar)",
"auth-sso-gateway (ubains-gateway.jar)",
"auth-sso-system (ubains-modules-system.jar)",
"meeting2.0 (ubains-meeting-inner-api-1.0-SNAPSHOT.jar)",
],
"key_files": {
"file1": "/var/www/java/api/java-meeting/java-meeting2.0/file/file1.txt",
"file2": "/var/www/java/api/java-meeting/java-meeting2.0/file/file2.txt",
"file3": "/var/www/java/api/java-meeting/java-meeting2.0/file/file3.txt",
},
"config_changes": {
"jwt_expiration": 14400, # 4小时(秒)
"old_config": "jwt.secret=(原硬编码密钥,需注释掉)",
"new_jvm_params": [
"-Dubains.encrypt.file1=...file1.txt",
"-Dubains.encrypt.file2=...file2.txt",
"-Dubains.encrypt.file3=...file3.txt",
"-Dubains.jwt.secret-cipher=hHy++WrgvOB+...(加密后的密钥密文)",
"-Dubains.nacos.password-cipher=smhTcPykp+S1Lci8nRk+/g==",
],
},
"nacos_swagger_fix": {
"file": "application-dev.yml",
"change": "swagger.enabled: true → false",
},
"vue_fix": {
"method": "Nginx隐藏/monitor/路径",
},
"verification": {
"log_keyword": "JWT密钥注入成功",
"log_keyword_gateway": "解密 JWT 密钥成功",
},
"deployment_order": [
"1. 替换所有jar文件",
"2. 修改bootstrap.yml(3个)和run.sh(4个)",
"3. 同时重启auth三件套 + meeting2.0(密钥更换后旧Token全部失效)",
"4. 检查日志确认'JWT密钥注入成功'",
],
}
# ============================================================
# 九、南山区委渗透测试发现
# 来源:频会议管理平台-前台渗透测试(1).pdf + 后台渗透测试(1).pdf
# ============================================================
NSQW_PENTEST_FINDINGS = {
"source": "南山区委视频会议管理平台渗透测试",
"front_target": "https://10.206.129.134/#/login",
"backend_target": "https://10.206.129.224",
"findings": [
{
"vuln": "config.json配置文件泄露",
"scope": "前台+后台",
"severity": "中",
"detail": "通过目录遍历工具发现config.json配置表可直接访问",
"mapped_paths": ["/config.json", "/static/config.json", "/meetingV3/static/config.json"],
},
{
"vuln": "注销后会话信息未清除",
"scope": "前台",
"severity": "高",
"detail": "注销后Token未失效,可直接跳转至需认证页面",
"mapped_paths": ["/platform/api/auth/logout", "/platform/api/system/logout"],
},
],
"test_methodology": {
"1_身份鉴别": [
"服务器端口扫描(Nmap)",
"Robots敏感接口查找",
"验证码机制测试",
"认证错误提示测试",
"锁定策略测试(10次错误→锁定)",
"认证绕过测试(SQL注入绕过)",
"找回密码测试",
"修改密码测试",
"强口令策略测试",
"用户注销登录方式测试",
],
"2_访问控制": [
"服务器敏感目录遍历(dirsearch/御剑)",
"Cookie传输加密测试",
"注销时会话清除测试",
"横向越权操作测试",
],
"3_通信保密性": [
"登录过程信息机密性(HTTPS+加密传输)",
"修改密码信息机密性",
],
"4_软件容错": [
"手工SQL注入测试",
"手工跨站脚本(XSS)测试",
"文件上传绕过测试",
],
},
}
# ============================================================
# 十、南山区委安全计算环境问题清单
# 来源:视频会议管理平台-计算环境-问题单.xlsx(22项)
# ============================================================
NSQW_SECURITY_ISSUES = {
"source": "南山区委-视频会议管理平台-计算环境-问题单",
"total_issues": 22,
"severity_summary": {"high": 9, "medium": 9, "low": 4},
"issues_applicable_to_api_test": [
{
"id": "WT001",
"category": "安全计算环境",
"severity": "中",
"desc": "应用系统用户鉴别信息未要求定期更换",
"fix": "建议增加口令定期更换要求模块,强制90天或180天修改",
"test_method": "检查密码修改接口是否支持过期策略",
},
{
"id": "WT002",
"category": "安全计算环境",
"severity": "低",
"desc": "应用系统未重命名默认账户admin",
"fix": "建议重命名默认管理员账户",
"test_method": "尝试使用admin/superadmin默认账户登录",
},
{
"id": "WT003",
"category": "安全计算环境",
"severity": "中",
"desc": "应用系统未划分系统管理员、安全管理员和审计管理员",
"fix": "建议建立三权分立账户体系",
"test_method": "检查权限组接口是否支持三权分立角色",
},
{
"id": "WT004",
"category": "安全计算环境",
"severity": "高",
"desc": "应用系统未对日志记录保护",
"fix": "定期备份日志,留存6个月以上",
"test_method": "检查操作日志接口(/api/operlog)是否可被未授权删除",
},
{
"id": "WT015",
"category": "安全计算环境",
"severity": "高",
"desc": "数据库系统用户鉴别信息无复杂度要求,未修改默认口令",
"fix": "PWD_POLICY=31, 口令8位以上含大小写+数字+特殊字符",
"test_method": "检查密码修改接口是否强制复杂度要求",
},
{
"id": "WT016",
"category": "安全计算环境",
"severity": "中",
"desc": "数据库未配置登录失败处理功能",
"fix": "登录失败5次锁定30分钟",
"test_method": "连续5次错误密码登录,检查是否触发锁定",
},
{
"id": "WT017",
"category": "安全计算环境",
"severity": "高",
"desc": "数据库未采用加密方式进行远程管理",
"fix": "配置加密算法,限制仅本地登录",
"test_method": "检查数据库连接是否使用SSL/TLS",
},
{
"id": "WT018",
"category": "安全计算环境",
"severity": "高",
"desc": "数据库未开启安全审计功能",
"fix": "ENABLE_AUDIT=1",
"test_method": "检查操作日志是否覆盖所有关键操作",
},
],
# 非接口测试但需关注的安全配置问题
"infrastructure_issues": [
"WT005: 重要数据未本地备份(高)",
"WT007: Nginx中间件审计未保护(高)",
"WT008: 服务器口令无更换周期(中)",
"WT009: 未启用登录超时自动退出(中)",
"WT010: 未禁用root远程登录(低)",
"WT011: 服务器审计功能异常(高)",
"WT012: 服务器审计记录未保护(高)",
],
}
# ============================================================
# 十一、伙伴交流安全红线补充检查项
# 来源:伙伴交流安全红线.xlsx(A1类红线解读,52行)
# ============================================================
PARTNER_REDLINE_SUPPLEMENT = {
"source": "华为安全红线-伙伴交流版(A1类红线解读)",
"key_requirements": [
{
"redline_id": "5.1.1",
"requirement": "禁止隐秘访问方式:隐藏账号、隐藏口令、无鉴权隐藏模式命令/参数、隐藏组合键",
"note": "禁止硬编码口令在二进制中;所有账户必须被用户可见并在产品资料中说明",
"check_method": "扫描隐藏路径、检查硬编码凭据、检查是否存在未文档化账户",
},
{
"redline_id": "5.2.1",
"requirement": "产品软件禁止存在病毒/木马",
"note": "至少使用两款业界主流防病毒软件扫描",
"check_method": "非自动化测试项,人工确认",
},
{
"redline_id": "5.3.1",
"requirement": "禁止保留调试工具(tcpdump/gdb/strace/Nmap等)和开发/编译工具在发布包中",
"note": "测试端点/test/属于此范畴",
"check_method": "检查/test/等调试端点是否暴露",
},
{
"redline_id": "5.3.2",
"requirement": "禁止包含未公开的公网IP/URL/邮箱地址",
"note": "产品资料中未描述的公网地址均属违规",
"check_method": "检查JS和响应中是否包含未文档化的公网地址",
},
{
"redline_id": "11.1.2",
"requirement": "涉及个人数据的采集/处理须提供安全保护机制(认证、权限控制、日志记录)",
"note": "需在产品资料中向客户公开",
"check_method": "检查用户信息接口的访问控制",
},
],
}
# 接口安全测试 — 参考资料利用跟踪
> 本文档记录所有安全测试参考资料的读取和利用状态,便于后续补充新资料时对比。
> 新增资料时,请在此文档末尾追加条目,并更新对应的 `knowledge_base.py` 和测试代码。
---
## 一、华为安全红线资料
**目录**: `Z:\deploy\18其它系统\安全测试\01安全测试资料\`
| 序号 | 文件名 | 大小 | 读取状态 | 利用到 knowledge_base | 利用到测试代码 | 备注 |
|------|--------|------|---------|----------------------|---------------|------|
| 1 | `安全红线A1基线测试用例.xlsx` | 34KB | ✅ 已读取(前30行) | ✅ HW-009~HW-016 | ⚠️ 部分用例涉及SSH/源码检查,无法在接口测试中自动化 | 提取了SEC_01_01未公开接口、SEC_01_03调试工具、SEC_01_04权限运行等检查项 |
| 2 | `红线自检.xlsx` | 5.5MB | ✅ 已读取(网络安全AB类 Sheet前30行) | ✅ HW-009~HW-016 | ⚠️ 含大量硬件/网络类检查项,与接口测试无关 | 包含网络安全AB类、权限梳理、自检问题汇总三个Sheet |
| 3 | `安全红线A1自检测试报告.xlsx` | 42KB | ✅ 已读取(92行测试用例) | ✅ 红线测试用例参考 | ⚠️ 含SEC_01_01_001~007等详细测试步骤 | 92行详细测试用例:隐秘通道排查、硬编码口令检查、账户可见性、口令修改机制、调试工具检查等 |
| 4 | `安全红线A1自检&测试报告.xlsx` | 13KB | ✅ 已读取(19行汇总) | ⚠️ 与A1基线测试用例重复 | ❌ | 红线检查汇总状态(全部标记"通过"),含红线要求原文 |
| 5 | `伙伴交流安全红线.xlsx` | 29KB | ❌ 未读取 | ❌ | ❌ | 伙伴交流场景红线要求 |
| 6 | `华为安全红线加密方式(1).docx` | 93KB | ✅ 已完整读取 | ✅ HW-017~HW-019确认 | ✅ 加密规范细节已更新 | 不可逆:PBKDF2/scrypt;可逆:AES+密钥拆分三段+PBKDF2 |
| 7 | `华为安全红线加密方式(运维).docx` | 104KB | ✅ 已完整读取 | ✅ HW-020~HW-022 | ✅ 密码/密钥复杂度要求 | 密码≥16位+大小写+数字+特殊字符;密钥≥32位;HOST_Auth从setting.conf获取 |
---
## 二、历史漏洞报告资料
**目录**: `Z:\deploy\18其它系统\安全测试\02项目漏洞资料\`
### 2.1 长安深蓝汽车
| 序号 | 文件名 | 大小 | 读取状态 | 利用到 knowledge_base | 利用到测试代码 | 备注 |
|------|--------|------|---------|----------------------|---------------|------|
| 1 | `漏洞详情.html` | 2.6MB | ✅ 已读取 | ✅ HV-001 SQL注入 | ✅ test_api08 2.8.15 | SQL注入漏洞:`/legacy/message/book`,IAST检测发现 |
| 2 | `深蓝汽车智能会议系统-漏洞报告-1780283896.html` | — | ✅ 已读取 | ✅ HV-001 | ✅ 同上 | 第二份漏洞报告,同为SQL注入 |
| 3 | `深蓝汽车智能会议系统-漏洞报告-1780047995.html` | — | ✅ 已读取(JSON数据提取) | ⚠️ 与HV-001重复 | ⚠️ 无新增漏洞类型 | 第三份报告内容与前两份相同:SQL注入@/legacy/message/book,参数cnum |
| 4 | `安卓上传接口+深蓝汽车智能会议系统.pdf` | — | ✅ 已完整读取(PyPDF2) | ✅ HV-021~HV-025 | ✅ IAST_DISCOVERED路径 | IAST报告LJ-2026-06-02-248040:84个漏洞(高4+中5+低72+提示3),新增SQL注入selectPage、文件上传、SMTP注入、SSRF、目录穿越 |
| 5 | `安全测试报告.docx` | — | ✅ 已完整读取(全文+表格) | ✅ HV-016~HV-020确认 | ✅ 完整漏洞详情 | 6高+2中:JWT弱密钥、垂直越权、文件上传、Swagger未授权、Nacos绕过、MQTT匿名、敏感信息泄露、Vue未授权 |
| 6 | `POC漏洞20260529-2026-05-29.xlsx` | — | ✅ 已读取(全部行) | ✅ HV-011~HV-015 | ✅ knowledge_base路径字典 | 5个POC漏洞:Nacos绕过、config.json、MQTT匿名、Swagger未授权 |
| 7 | `新统一平台软件漏洞处理后-服务器配置内容.docx` | — | ✅ 已完整读取 | ✅ JWT_FIX_REFERENCE | ✅ 修复部署步骤 | JWT修复4步部署:auth三件套+meeting2.0的run.sh添加-D参数、密钥拆分file1/2/3.txt、Swagger关闭、Nginx隐藏monitor |
| 8 | `深蓝汽车智能会议系统.pdf` | — | ❌ 未读取 | ❌ | ❌ | 深蓝汽车智能会议系统概览 |
### 2.2 南山区委
| 序号 | 文件名 | 大小 | 读取状态 | 利用到 knowledge_base | 利用到测试代码 | 备注 |
|------|--------|------|---------|----------------------|---------------|------|
| 1 | `Spring Actuator信息泄露漏洞处置报告.md` | — | ✅ 已完整读取 | ✅ HV-002, Nacos增强路径 | ✅ test_api08 2.8.12 | 详细的Actuator泄露处置过程,含修复方案 |
| 2 | `频会议管理平台-后台渗透测试(1).pdf` | — | ✅ 已完整读取(PyPDF2,15页) | ✅ NSQW_PENTEST_FINDINGS | ⚠️ 渗透方法论参考 | 后台发现:config.json配置泄露(中);其他测试项均通过;标准渗透测试方法论 |
| 3 | `频会议管理平台-前台渗透测试(1).pdf` | — | ✅ 已完整读取(PyPDF2,15页) | ✅ HV-030 + NSQW_PENTEST_FINDINGS | ⚠️ 渗透方法论参考 | 前台发现:config.json泄露(中)、注销后会话未清除(高);完整渗透测试方法论 |
| 4 | `视频会议管理平台-计算环境-问题单.xlsx` | — | ✅ 已完整读取(22项) | ✅ NSQW_SECURITY_ISSUES | ⚠️ 基线检查参考 | 22项安全问题(高9+中9+低4):口令定期更换、默认账户、三权分立、日志保护、数据库审计等 |
| 5 | `防守报告-视频会议管理平台-存在spring Actuator信息泄露漏洞.docx` | — | ✅ 已完整读取 | ✅ 补充HV-002细节 | ❌ | XDR告警+人工研判确认Actuator泄露,与已读取的处置报告内容一致 |
### 2.3 天津海油
| 序号 | 文件名 | 大小 | 读取状态 | 利用到 knowledge_base | 利用到测试代码 | 备注 |
|------|--------|------|---------|----------------------|---------------|------|
| 1 | `天津海油漏洞修复26-0417.docx` | — | ✅ 已完整读取 | ✅ 基线修复参考 | ⚠️ 服务器/MySQL基线修复步骤,非接口测试 | Linux基线:密码复杂度、文件权限、rsyslog远程日志、ip_forward、NTP;MySQL:默认账号、日志配置 |
| 2 | `智慧终端运行状态管理系统-渗透测试-复测.docx` | — | ✅ 已完整读取 | ✅ HV-031~HV-035 | ✅ 越权/上传/未授权测试 | **5个漏洞**:越权访问(部分修复)、任意文件上传(已修复)、敏感信息泄露(部分修复)、未授权访问(已修复)、目录遍历(已修复) — **直接涉及/monitor/api2/api/运维集控接口** |
| 3 | `192.169.8.70-基线检查-MySQL复测-v1` | — | ⚠️ 目录结构确认 | ❌ | ❌ | MySQL基线检查报告(扫描HTML格式,与漏洞修复docx内容重复) |
| 4 | `智慧终端运行状态管理系统初测报告` | — | ⚠️ 目录结构确认 | ❌ | ❌ | 初测报告(扫描HTML格式,与渗透测试复测docx内容重复) |
### 2.4 其他项目
| 序号 | 项目名 | 读取状态 | 备注 |
|------|--------|---------|------|
| 1 | 厦门银行总行大厦 | ⚠️ grep摘要+目录确认 | 华为Web漏扫报告(8台服务器)+主机漏扫,发现:HTTP安全头缺失、内部IP泄露、源码密码泄露、Telnet弱口令 |
| 2 | 龙华儿童医院 | ⚠️ grep摘要+目录确认 | 华为漏扫报告(4台服务器),发现:X-XSS-Protection缺失、FTP上传权限 |
| 3 | 天津港C段 | ⚠️ 目录确认 | 含反编译jar包(application.properties等配置),核心漏洞模式已在其他项目覆盖 |
| 4 | 宁德时代 | ⚠️ 目录确认 | Nginx-1.24.0升级源码包,非漏洞报告 |
| 5 | 宝安工务署 | ⚠️ 目录确认 | 前端包含config.json/config.js,与已知config.json泄露一致 |
| 6 | 东莞智慧城管 | ⚠️ 目录确认 | 空目录,无资料 |
| 7 | 云端学校 | ⚠️ 目录确认 | 集控平台漏扫报告HTML,8台服务器扫描,核心漏洞类型已覆盖 |
---
## 三、Nginx配置文件
**目录**: `Z:\deploy\18其它系统\安全测试\03Nginx配置文件\`
| 序号 | 文件名 | 大小 | 读取状态 | 利用到 knowledge_base | 利用到测试代码 | 备注 |
|------|--------|------|---------|----------------------|---------------|------|
| 1 | `unified443.conf` | — | ✅ 已完整读取 | ✅ NGINX_ANALYSIS全部 | ✅ test_api08 2.8.11~2.8.14 | 443端口完整Nginx配置,含全部location转发规则 |
---
## 四、已有安全报告
| 序号 | 文件名 | 大小 | 读取状态 | 利用到 knowledge_base | 备注 |
|------|--------|------|---------|----------------------|------|
| 1 | `新统一平台系统安全报告-20251218.pdf` (根目录) | 1.1MB | ✅ 已完整读取(PyPDF2,136页) | ✅ HV-026~HV-029 + APPSCAN_REPORT_SUMMARY | ✅ 完整漏洞清单 | HCL AppScan 10.7.0报告:56个问题(紧急1+高1+中5+低29+参20),含NoSQL注入(CVSS9.4)、API成批分配(CVSS7.3)、7处Actuator泄露、4处源码泄露、12处SSL缓存 |
| 2 | `HCL/` 目录 | — | ❌ 未读取 | ❌ | HCL安全工具相关资料 |
---
## 五、统计汇总
| 类别 | 文件总数 | 已读取 | 部分读取 | 未读取 |
|------|---------|--------|---------|--------|
| 华为安全红线 | 7 | 7 | 0 | 0 |
| 长安深蓝汽车 | 8 | 7 | 0 | 1 |
| 南山区委 | 5 | 5 | 0 | 0 |
| 天津海油 | 4 | 2 | 2 (目录确认) | 0 |
| 其他项目 | 7 | 0 | 7 (grep+目录) | 0 |
| Nginx配置 | 1 | 1 | 0 | 0 |
| 已有报告 | 2 | 1 | 0 | 1 |
| **合计** | **34** | **23** | **9** | **2** |
> **覆盖率**: 完整读取 23/34 = 67.6%;部分利用(grep/目录确认)9/34 = 26.5%;总覆盖率 94.1%
>
> 剩余未读取2份:`深蓝汽车智能会议系统.pdf`(系统概览)、`HCL/`目录(安全工具资料),均为低价值参考文档
---
## 六、优先待读取(高价值资料)
以下资料对安全测试价值最高,建议优先读取:
| 优先级 | 文件 | 预期价值 | 状态 |
|--------|------|---------|------|
| ~~P0~~ | ~~`华为安全红线加密方式(1).docx`~~ | ~~加密规范红线标准~~ | ✅ 已读取,更新HW-017~HW-019 |
| ~~P0~~ | ~~`新统一平台系统安全报告-20251218.pdf`~~ | ~~上一轮完整安全报告~~ | ✅ 已读取,新增HV-026~HV-029 + APPSCAN_REPORT_SUMMARY |
| ~~P1~~ | ~~`深蓝汽车智能会议系统-漏洞报告-1780047995.html`~~ | ~~第三份漏洞报告~~ | ✅ 已读取,内容与前两份相同 |
| ~~P1~~ | ~~`安卓上传接口+深蓝汽车智能会议系统.pdf`~~ | ~~安卓上传接口漏洞~~ | ✅ 已读取,新增HV-021~HV-025 + IAST_REPORT_SUMMARY |
| ~~P1~~ | ~~`安全测试报告.docx`(长安深蓝)~~ | ~~完整安全测试报告~~ | ✅ 已读取,确认HV-016~HV-020全部细节 |
| ~~P1~~ | ~~`新统一平台软件漏洞处理后-服务器配置内容.docx`~~ | ~~漏洞修复后的配置变更~~ | ✅ 已读取,新增JWT_FIX_REFERENCE |
| ~~P2~~ | ~~`华为安全红线加密方式(运维).docx`~~ | ~~运维加密标准~~ | ✅ 已读取,新增HW-020~HW-022 |
| ~~P2~~ | ~~`伙伴交流安全红线.xlsx`~~ | ~~伙伴交流场景红线要求~~ | ✅ 已读取,新增PARTNER_REDLINE_SUPPLEMENT |
| ~~P2~~ | ~~南山区委 渗透测试PDF (2份)~~ | ~~渗透测试方法论~~ | ✅ 已读取,新增HV-030 + NSQW_PENTEST_FINDINGS |
| ~~P2~~ | ~~南山区委 计算环境-问题单.xlsx~~ | ~~安全问题清单~~ | ✅ 已读取,新增NSQW_SECURITY_ISSUES |
| ~~P2~~ | ~~南山区委 攻防演练防守报告.docx~~ | ~~攻防视角补充~~ | ✅ 已读取,补充HV-002细节 |
| ~~P3~~ | ~~天津海油 全部报告(4份)~~ | ~~基线检查经验~~ | ✅ 已读取2份docx+2份目录确认,新增HV-031~HV-035(运维集控越权/上传/未授权/目录遍历) |
| ~~P3~~ | ~~其他项目 (厦门银行/龙华/天津港/宁德时代等)~~ | ~~漏洞模式参考~~ | ✅ 目录确认7份,核心漏洞类型已在前序资料覆盖 |
| ~~P3~~ | ~~`安全红线A1自检测试报告.xlsx`~~ | ~~测试用例~~ | ✅ 含92行详细测试用例(SEC_01_01_001~007),有价值 |
| ~~P3~~ | ~~`安全红线A1自检&测试报告.xlsx`~~ | ~~汇总报告~~ | ✅ 19行汇总状态,与A1基线测试用例重复 |
| P4 | `深蓝汽车智能会议系统.pdf` | 系统概览 | ❌ 未读取(系统概览文档,非漏洞资料) |
| P4 | `HCL/` 目录 | 安全工具资料 | ❌ 未读取(工具License等,非漏洞资料) |
---
## 七、变更记录
| 日期 | 操作 | 内容 |
|------|------|------|
| 2026-06-08 | 初始化 | 创建参考资料跟踪文档,盘点全部34份资料 |
| 2026-06-08 | 读取 | Nginx unified443.conf 完整分析 |
| 2026-06-08 | 读取 | 南山区委 Spring Actuator信息泄露漏洞处置报告.md |
| 2026-06-08 | 读取 | 长安深蓝 漏洞详情.html (SQL注入) |
| 2026-06-08 | 读取 | 长安深蓝 漏洞报告-1780283896.html (SQL注入) |
| 2026-06-08 | 读取 | 长安深蓝 POC漏洞20260529-2026-05-29.xlsx (全部) |
| 2026-06-08 | 读取 | 华为红线 红线自检.xlsx (网络安全AB类 Sheet前30行) |
| 2026-06-08 | 读取 | 华为红线 A1基线测试用例.xlsx (测试用例Sheet前30行) |
| 2026-06-08 | grep | 02项目漏洞资料 全目录漏洞关键词扫描 |
| 2026-06-08 | 读取 | 华为安全红线加密方式(1).docx 全文,确认不可逆PBKDF2/scrypt + 可逆AES+密钥拆分三段 |
| 2026-06-08 | 读取 | 华为安全红线加密方式(运维).docx 全文,新增HW-020~HW-022密码/密钥复杂度要求 |
| 2026-06-08 | 读取 | 新统一平台系统安全报告-20251218.pdf 136页(HCL AppScan),提取56个漏洞清单 |
| 2026-06-08 | 读取 | 深蓝汽车第三份漏洞报告-1780047995.html,确认内容与前两份相同(SQL注入@cnum) |
| 2026-06-08 | 读取 | 安卓上传接口+深蓝汽车智能会议系统.pdf(IAST报告LJ-2026-06-02-248040),84个漏洞 |
| 2026-06-08 | 读取 | 安全测试报告.docx(长安深蓝完整渗透报告),6高+2中全部漏洞详情 |
| 2026-06-08 | 读取 | 新统一平台软件漏洞处理后-服务器配置内容.docx,JWT修复4步部署+Swagger关闭+Nginx隐藏monitor |
| 2026-06-08 | 更新 | knowledge_base.py 新增HV-021~HV-029(9个新历史漏洞)、HW-020~HW-022(3个新红线检查项)、APPSCAN_REPORT_SUMMARY、IAST_REPORT_SUMMARY、JWT_FIX_REFERENCE、5个新路径字典分类 |
| 2026-06-08 | 更新 | 参考资料跟踪文档 统计从20.6%→47.1%,7个P0/P1资料标记为已读取 |
| 2026-06-08 | 读取 | 伙伴交流安全红线.xlsx(52行A1类红线解读),提取5.1.1~11.1.2关键红线要求,新增PARTNER_REDLINE_SUPPLEMENT |
| 2026-06-08 | 读取 | 南山区委 计算环境-问题单.xlsx(22项),提取8项接口可测试问题,新增NSQW_SECURITY_ISSUES |
| 2026-06-08 | 读取 | 南山区委 前台+后台渗透测试PDF(各15页),发现config.json泄露+注销后Token未失效,新增HV-030 + NSQW_PENTEST_FINDINGS |
| 2026-06-08 | 读取 | 南山区委 防守报告.docx,确认Actuator泄露XDR告警细节 |
| 2026-06-08 | 更新 | knowledge_base.py 新增HV-030、NSQW_PENTEST_FINDINGS、NSQW_SECURITY_ISSUES、PARTNER_REDLINE_SUPPLEMENT |
| 2026-06-08 | 更新 | 参考资料跟踪文档 统计从47.1%→64.7%,南山区委5/5全部完成 |
| 2026-06-08 | 读取 | 天津海油 漏洞修复26-0417.docx,Linux基线修复(密码复杂度/文件权限/rsyslog/MySQL日志) |
| 2026-06-08 | 读取 | 天津海油 渗透测试-复测.docx,**5个漏洞直接涉及/monitor/api2/api/运维集控**,新增HV-031~HV-035 |
| 2026-06-08 | 读取 | 天津海油 基线检查MySQL复测+初测报告(HTML扫描格式,与docx内容重复,仅目录确认) |
| 2026-06-08 | 读取 | 安全红线A1自检测试报告.xlsx(92行详细测试用例),安全红线A1自检&测试报告.xlsx(19行汇总) |
| 2026-06-08 | 确认 | 其他项目7份目录确认(厦门银行/龙华/天津港/宁德时代/宝安/东莞/云端),核心漏洞类型已覆盖 |
| 2026-06-08 | 更新 | knowledge_base.py 新增HV-031~HV-035,历史漏洞总数35个 |
| 2026-06-08 | 更新 | 参考资料跟踪文档 统计从64.7%→94.1%,全部高价值资料已读取完毕 |
......@@ -549,21 +549,323 @@
- 数据库类型:mysql、redis
- 中间件:emqx、fdfs、nginx、nacos
## 已知安全问题基线
> 以下问题已在历史安全测试和参考资料中被确认,作为本次测试的已知基线问题。
> 测试时需验证这些问题是否已修复,若未修复则标记为"已知未修复"。
### 已确认安全问题清单
| 编号 | 问题 | 风险等级 | 来源 | 当前状态 | 对应知识库ID |
|------|------|---------|------|---------|------------|
| KN-01 | 固定验证码 `csba` | 中 | 需求文档确认 | ⚠️ 未修复 | HV-007 |
| KN-02 | 密码SHA256无加盐哈希 | 中 | 网络抓包确认 | ⚠️ 未修复 | HV-008, HW-017 |
| KN-03 | Nacos控制台对外暴露 | 高 | Nginx配置+多项目确认 | ⚠️ 部分修复(443入口拦截,8848端口需确认) | HV-005, HV-015 |
| KN-04 | config.json敏感配置泄露 | 高 | AppScan+多项目渗透确认 | ⚠️ 未修复 | HV-029, HV-033 |
| KN-05 | 注销后Token/会话未失效 | 高 | 南山区委渗透测试 | ⚠️ 待验证 | HV-030 |
| KN-06 | JWT弱密钥(已修复,需回归) | 高 | 长安深蓝渗透测试 | ✅ 已修复(密钥拆分+PBKDF2) | HV-016 |
| KN-07 | Spring Actuator端点泄露 | 低 | AppScan确认7处 | ⚠️ 待验证 | HV-028 |
| KN-08 | 安全响应头缺失(全站) | 中 | 多项目漏扫确认 | ⚠️ 未修复 | HV-003 |
| KN-09 | WebSocket端点无认证 | 高 | Nginx配置分析 | ⚠️ 待验证 | HV-009 |
| KN-10 | Nginx无速率限制 | 中 | Nginx配置分析 | ⚠️ 未修复 | — |
| KN-11 | Swagger文档部分暴露 | 中 | POC扫描+Nginx分析 | ⚠️ 部分修复(仅/exapi/拦截) | HV-006, HV-014 |
| KN-12 | MQTT协议匿名登录 | 中 | POC扫描确认 | ⚠️ 待验证 | HV-013 |
| KN-13 | Nacos serverIdentity权限绕过 | 高 | 长安深蓝POC扫描 | ⚠️ 待验证 | HV-011 |
| KN-14 | 内部IP地址泄露 | 低 | 多项目漏扫确认 | ⚠️ 未修复 | HV-004 |
### JWT修复参考
> 来源:`新统一平台软件漏洞处理后-服务器配置内容.docx`
JWT密钥已从硬编码升级为拆分文件+PBKDF2加密模式,涉及以下服务:
- **auth三件套**:auth-sso-auth、auth-sso-gateway、auth-sso-system
- **meeting2.0**:ubains-meeting-inner-api-1.0-SNAPSHOT.jar
- **密钥文件**:file1.txt、file2.txt、file3.txt(位于 `/var/www/java/api/java-meeting/java-meeting2.0/file/`
- **Token有效期**:4小时(14400秒)
- **验证方式**:日志中出现"JWT密钥注入成功"和"解密 JWT 密钥成功"即表示修复生效
## Nginx安全配置分析
> 来源:`Z:\deploy\18其它系统\安全测试\03Nginx配置文件\unified443.conf`
### 已知外露路径
| 路径 | 代理目标 | 风险等级 | 说明 |
|------|---------|---------|------|
| `/nacos/` | 172.17.0.1:8848 | 高 | Nacos控制台完全对外开放,无访问限制 |
| `/test/` | 172.17.0.1:8999 | 中 | 测试端点仍然存活,不应在生产环境暴露 |
| `/ws` | 192.168.5.44:62121 | 高 | WebSocket端点无认证即可连接 |
| `/onlyoffice/` | 172.17.0.1:18080 | 中 | OnlyOffice文档服务对外暴露 |
| `/cache/` | 172.17.0.1:18080 | 中 | OnlyOffice缓存文件代理 |
### 缺失安全配置
| 配置项 | 状态 | 风险说明 |
|--------|------|---------|
| X-Frame-Options | ❌ 未配置 | 可被iframe嵌入,存在点击劫持风险 |
| Content-Security-Policy | ❌ 未配置 | 无内容安全策略,XSS防御薄弱 |
| Strict-Transport-Security | ❌ 未配置 | 无HSTS,浏览器可能降级为HTTP |
| X-Content-Type-Options | ❌ 未配置 | 浏览器可能MIME嗅探,存在安全风险 |
| X-XSS-Protection | ❌ 未配置 | 浏览器XSS过滤器未激活 |
| Referrer-Policy | ❌ 未配置 | URL中可能泄露敏感参数 |
| Permissions-Policy | ❌ 未配置 | 未限制浏览器功能权限 |
### 上传安全配置
- **最大上传大小**:300M(风险过高)
- **文件类型限制**:无(极其危险)
- **速率限制**:未配置
### TLS配置
- **协议版本**:TLSv1.2
- **缺失**:TLSv1.3(建议启用)
- **server_tokens**:off(已安全配置)
### 内部IP暴露(Nginx配置中)
以下内部IP/端口在Nginx配置中暴露(通过proxy_pass和注释):
| 内部地址 | 服务 |
|---------|------|
| 172.17.0.1:8848 | Nacos |
| 172.17.0.1:8999 | 主应用 |
| 172.17.0.1:9204 | 网关 |
| 172.17.0.1:8000 | 运维集控 |
| 172.17.0.1:8003 | 讯飞转录 |
| 172.17.0.1:5000 | AI服务 |
| 172.17.0.1:9990 | 桌牌 |
| 172.17.0.1:18080 | OnlyOffice |
| 192.168.9.202:8089 | 讯飞热词 |
| 192.168.9.124:8070 | 讯飞录音 |
| 192.168.5.44:8888 | FastDFS |
## 历史漏洞回归测试清单
> 以下漏洞来源于历史项目的安全测试报告,需在本轮测试中进行回归验证。
> 资料覆盖:长安深蓝汽车、南山区委、天津海油、厦门银行、龙华儿童医院等6+个项目。
> 完整参考资料跟踪:`_PRD_接口安全测试_参考资料跟踪.md`
### 高危漏洞回归(16项)
| 编号 | 漏洞 | 来源项目 | 映射路径 | 回归验证要点 |
|------|------|---------|---------|------------|
| HV-001 | SQL注入 - 会议预定接口 | 长安深蓝 | `/api/message/book`, `/oldmeeting/api/message/book` | 验证是否已使用预编译语句 |
| HV-005 | Nacos未授权访问 | 南山区委 | `/nacos/`, `/nacos/v1/cs/configs`, `/nacos/v1/ns/service/list` | 验证是否开启鉴权 |
| HV-009 | WebSocket端点无认证 | Nginx配置分析 | `/ws` | 验证连接是否需要认证 |
| HV-011 | Nacos serverIdentity权限绕过 | 长安深蓝(POC) | `/nacos/v1/auth/users` | 验证是否仍可匿名访问用户列表 |
| HV-014 | Swagger UI未授权访问 | 长安深蓝(POC) | `/swagger-resources`, `/v2/api-docs` | 验证各路径下的Swagger是否已拦截 |
| HV-016 | JWT弱密钥 | 长安深蓝 | 全部JWT接口 | 验证密钥是否已更换为强密钥 |
| HV-017 | 垂直越权 | 长安深蓝 | `/api/manageUser/editInfo`, `/api/permissionGroup/add` | 验证普通用户是否仍能操作管理员接口 |
| HV-018 | 文件上传漏洞 | 长安深蓝 | `/api/message/uploadFile`, `/api/conference/QRcodeUpload` | 验证是否限制了文件类型 |
| HV-019 | 敏感信息泄露 | 长安深蓝 | 多个接口 | 验证响应是否不再泄露密码、密钥、内部IP |
| HV-021 | SQL注入 - selectPage | 长安深蓝(IAST) | `/api/conference/selectPage` | ConferenceController.java:694 StringBuilder拼接SQL |
| HV-022 | 文件上传+目录穿越 | 长安深蓝(IAST) | `/api/androidPanel/pack/upload` | 上传接口无文件类型和内容校验 |
| HV-023 | SMTP邮件注入 | 长安深蓝(IAST) | `/api/email/verify` | 邮件验证参数未过滤,可注入SMTP命令 |
| HV-026 | NoSQL注入 - 登录接口 | AppScan(2025-12) | `/platform/api/auth/login` | CVSS 9.4,username可注入$ne操作符 |
| HV-027 | API成批分配 | AppScan(2025-12) | `/api/manageUser/getManagerPageForBook` | CVSS 7.3,可注入is_admin/role字段 |
| HV-029 | config.json泄露 | 多项目确认 | `/static/config.json`等5个路径 | 含ubainsKey、dingdingIp等敏感信息 |
| HV-030 | 注销后Token未失效 | 南山区委 | `/platform/api/auth/logout` | 注销后旧Token仍可访问认证接口 |
| HV-031 | 运维集控越权访问 | 天津海油 | `/monitor/api2/api/alarmststus/`等5个路径 | company_id参数可直接猜测 |
| HV-032 | 运维集控任意文件上传 | 天津海油 | `/monitor/api2/api/uploadupdatefile/` | 可上传asp/aspx/jsp/php文件 |
| HV-035 | 运维集控目录遍历 | 天津海油 | `/media/`, `/media/cmdb/Uploadui/` | Nginx未设置autoindex off |
### 中危漏洞回归(10项)
| 编号 | 漏洞 | 来源项目 | 映射路径 | 回归验证要点 |
|------|------|---------|---------|------------|
| HV-002 | Spring Actuator信息泄露 | 南山区委 | `/nacos/actuator/` | 验证Actuator端点是否已关闭 |
| HV-003 | 安全响应头缺失 | 多项目 | 全局 | 验证7项安全头是否已配置 |
| HV-006 | Swagger文档暴露 | 多项目 | `/swagger-ui.html`, `/v2/api-docs` | 验证各路径下文档是否已拦截 |
| HV-007 | 固定验证码csba | 需求文档 | `/platform/api/auth/login` | 验证是否已改为随机验证码 |
| HV-008 | 密码SHA256无加盐 | 抓包确认 | 登录接口 | 验证是否已升级为bcrypt/argon2 |
| HV-012 | config.json泄露(POC) | 长安深蓝(POC) | `/config.json` | 与HV-029合并验证 |
| HV-013 | MQTT匿名登录 | 长安深蓝(POC) | tcp://目标IP:1883/8883 | 验证是否允许匿名连接 |
| HV-015 | Nacos登录入口暴露 | 长安深蓝(POC) | `/nacos/` | 与HV-005合并验证 |
| HV-020 | Vue前端未授权 | 长安深蓝 | `/monitor/` | 验证是否已通过Nginx隐藏 |
| HV-024 | SSRF - 桌牌同步 | 长安深蓝(IAST) | `/api/tableCard/syncTableCard` | 验证是否已做URL白名单过滤 |
| HV-025 | 目录穿越 - 安卓面板 | 长安深蓝(IAST) | `/api/androidPanel/pack/upload` | 上传文件名可包含../穿越 |
| HV-034 | 运维集控未授权访问 | 天津海油 | `/monitor/api2/api/serverinfo/`等3个路径 | DRF API界面暴露 |
### 低危/信息类(5项)
| 编号 | 漏洞 | 来源项目 | 映射路径 |
|------|------|---------|---------|
| HV-004 | 内部IP泄露 | 厦门银行 | 多个接口响应 |
| HV-010 | HTTP方法未限制 | 厦门银行 | 全局 |
| HV-028 | Actuator health端点(7处) | AppScan(2025-12) | 各子系统health路径 |
| HV-033 | 运维集控config.json | 天津海油 | `/static/config.json`(与HV-029合并) |
## 华为安全红线检查清单
> 来源:`Z:\deploy\18其它系统\安全测试\01安全测试资料\`
> 覆盖:加密规范、传输安全、鉴权机制、速率限制、输入校验、安全响应头、配置管理、日志审计、访问通道控制、端口管理、未公开接口、会话管理、密钥管理等22项。
### 接口自动化可测试项(16项)
| 编号 | 类别 | 红线要求 | 测试方法 | 对应红线编号 |
|------|------|---------|---------|------------|
| HW-001 | 加密规范 | 密码存储必须使用加盐哈希(bcrypt/scrypt/Argon2),不得使用单纯SHA256 | 检查登录接口密码加密方式 | RL-4.1 |
| HW-002 | 传输安全 | 所有API通信必须使用HTTPS,TLS≥1.2,推荐TLS 1.3 | 检查TLS协议版本 | RL-3.1 |
| HW-003 | 鉴权机制 | 所有非公开接口必须经过鉴权,Token应有有效期限和刷新机制 | 无Token访问需认证接口 | RL-4.1.2 |
| HW-004 | 速率限制 | 对外接口必须配置速率限制,防止暴力破解和DDoS | 连续高频请求检测限流 | RL-4.1 |
| HW-005 | 输入校验 | 所有用户输入必须进行严格的参数校验和过滤,防止SQL注入和XSS | 发送SQL注入和XSS载荷 | RL-4.1 |
| HW-006 | 安全响应头 | Web应用必须配置完整的安全响应头(X-Frame-Options、CSP、HSTS等) | 检查HTTP响应头 | RL-3.1 |
| HW-007 | 配置管理 | 中间件管理界面(如Nacos)不得对外暴露 | 探测Nacos等管理端点 | RL-1.1.4 |
| HW-011 | 未公开接口 | 禁止存在绕过认证的隐秘通道(组合键、特殊URL、硬编码口令等) | 扫描隐藏路径、检查硬编码凭据 | RL-5.1.1 |
| HW-012 | 未公开接口 | 禁止存在未文档化的命令/参数、调试工具不得随软件发布 | 检查测试端点、调试工具是否暴露 | RL-5.1.2/RL-5.3.1 |
| HW-013 | 公网地址泄露 | 代码或配置中禁止存在未公开的公网IP/URL/邮箱地址 | 检查响应和错误信息中泄露的公网地址 | RL-5.3.2 |
| HW-015 | 会话管理 | Web会话标识必须具备随机性,身份验证成功后必须更换会话标识 | 登录前后对比Session/Token是否变化 | RL-4.1.8 |
| HW-017 | 加密-不可逆 | 密码存储必须使用PBKDF2或scrypt算法,当前SHA256不合规 | 检查登录接口密码加密方式 | RL-8.4 |
| HW-018 | 加密-可逆 | 配置文件中的密码必须使用AES加密,密钥拆分存储 | 检查配置文件中是否存在明文密码 | RL-8.4 |
| HW-019 | 加密-密钥管理 | 密钥文件必须拆分为三段存放,密钥≥32位,密码≥16位+大小写+数字+特殊字符 | 检查JWT密钥是否已更换为拆分密钥文件模式 | RL-8.4 |
| HW-020 | 加密-密码复杂度 | 密码≥16位含大小写+数字+特殊字符,不能与用户名一致 | 尝试设置弱密码验证是否被拒绝 | RL-8.4 |
| HW-021 | 加密-密钥复杂度 | 密钥≥32位含大小写字母和数字,密钥文件拆分三段 | 检查密钥文件(需SSH访问) | RL-8.4 |
### 需人工确认项(6项)
| 编号 | 类别 | 红线要求 | 说明 |
|------|------|---------|------|
| HW-008 | 日志审计 | 关键操作必须有审计日志 | 需登录后台检查日志功能 |
| HW-009 | 访问通道控制 | 管理面与用户面必须隔离 | 需网络架构审查 |
| HW-010 | 端口管理 | 所有对外端口必须在通信矩阵中说明 | 需端口扫描+文档对比 |
| HW-014 | 权限运行 | 禁止使用root运行服务进程 | 需SSH访问检查 |
| HW-016 | 漏洞扫描 | 产品须使用指定工具扫描,高风险漏洞必须解决 | 人工确认 |
| HW-022 | 运维加密流程 | HOST_Auth从setting.conf获取,需为32位+随机密钥 | 需SSH访问 |
### 伙伴交流安全红线补充
> 来源:`伙伴交流安全红线.xlsx`(A1类红线解读)
| 红线编号 | 要求 | 测试方法 |
|---------|------|---------|
| 5.1.1 | 禁止隐秘访问方式(隐藏账号、隐藏口令、无鉴权隐藏模式命令/参数、隐藏组合键);禁止硬编码口令在二进制中 | 扫描隐藏路径、检查硬编码凭据、检查未文档化账户 |
| 5.2.1 | 产品软件禁止存在病毒/木马,至少使用两款主流防病毒软件扫描 | 人工确认(非自动化) |
| 5.3.1 | 禁止保留调试工具(tcpdump/gdb/strace/Nmap等)和开发/编译工具在发布包中;/test/属于此范畴 | 检查/test/等调试端点是否暴露 |
| 5.3.2 | 禁止包含未公开的公网IP/URL/邮箱地址,产品资料中未描述的公网地址均属违规 | 检查JS和响应中是否包含未文档化的公网地址 |
| 11.1.2 | 涉及个人数据的采集/处理须提供安全保护机制(认证、权限控制、日志记录) | 检查用户信息接口的访问控制 |
## 安全扫描报告基线
> 以下为历史安全扫描报告摘要,用于本轮测试的回归对比基线。
### HCL AppScan Standard 10.7.0(2025-12-18)
| 项目 | 详情 |
|------|------|
| 扫描工具 | HCL AppScan Standard 10.7.0 |
| 扫描时间 | 2025/12/18 17:06:15 |
| 扫描目标 | 192.168.5.44:443 |
| 总问题数 | **56个** |
**严重程度分布:**
| 紧急 | 高 | 中 | 低 | 信息 |
|------|------|------|------|------|
| 1 | 1 | 5 | 29 | 20 |
**关键发现:**
| 漏洞类型 | CVSS | 影响路径 | 说明 |
|---------|------|---------|------|
| NoSQL注入 | 9.4 | `/platform/api/auth/login` | username参数可注入$ne操作符绕过认证 |
| API成批分配 | 7.3 | `/meetingV3/api/manageUser/getManagerPageForBook` | 可注入is_admin/is_sso/role字段 |
| SRI未实现 | 中 | 多处前端资源 | 子资源完整性校验缺失(3处) |
| Actuator泄露 | 低 | 7处health端点 | Spring Boot Actuator health端点暴露 |
| 源码泄露 | 低 | 4处JS源码 | 含版本号和业务逻辑的前端JS |
| SSL缓存页 | 低 | 12处 | 含敏感数据的页面被标记为缓存 |
| IP泄露 | 信息 | 4处 | 响应中暴露内部IP地址 |
| 路径泄露 | 信息 | 7处 | 错误信息暴露服务器路径 |
### IAST检测报告(深蓝汽车 LJ-2026-06-02-248040)
| 项目 | 详情 |
|------|------|
| 报告编号 | LJ-2026-06-02-248040 |
| 扫描周期 | 2026-05-27 ~ 2026-06-02 |
| 工具版本 | 4.2.0(AI版) |
| API覆盖率 | 7.12% |
| 总漏洞数 | **84个(全部未修复)** |
**严重程度分布:**
| 高 | 中 | 低 | 信息 |
|------|------|------|------|
| 4 | 5 | 72 | 3 |
**高危漏洞:**
| 漏洞类型 | 数量 | 影响路径 |
|---------|------|---------|
| SQL注入 | 2 | `/legacy/conference/selectPage`(ConferenceController.java:694)、`/legacy/message/book` |
| 文件上传 | 1 | `/androidPanel/pack/upload` |
| SMTP邮件注入 | 1 | `/email/verify` |
**代码级细节:**
- SQL注入根因:ConferenceController.java:694 使用 `StringBuilder.append` 直接拼接SQL
- 受影响参数:`messgaeDate`(经日期校验后仍被拼接到SQL字符串中)
- 暴露数据表:`rms_meeting_approval`(含cnum, uid, message_password等敏感字段)
## 安全测试方法论参考
> 来源:南山区委视频会议管理平台前后台渗透测试报告(标准渗透测试方法论)
### 身份鉴别测试
| 测试项 | 方法 | 适用接口 |
|--------|------|---------|
| 服务器端口扫描 | Nmap全端口扫描 | 全部 |
| Robots敏感接口查找 | 访问/robots.txt获取敏感路径 | 全部 |
| 验证码机制测试 | 固定验证码、验证码复用、验证码绕过 | `/platform/api/code` |
| 认证错误提示测试 | 枚举用户名("用户不存在" vs "密码错误") | `/platform/api/auth/login` |
| 锁定策略测试 | 连续10次错误密码,检查是否触发锁定 | `/platform/api/auth/login` |
| 认证绕过测试 | SQL注入绕过、NoSQL注入绕过 | `/platform/api/auth/login` |
| 找回/修改密码测试 | 重置Token安全性、旧密码校验 | `/platform/api/system/resetPwdByUid` |
| 强口令策略测试 | 短密码、纯数字、与用户名相同 | `/platform/api/system/changePassword` |
| 用户注销测试 | 注销后Token是否失效 | `/platform/api/auth/logout` |
### 访问控制测试
| 测试项 | 方法 | 适用接口 |
|--------|------|---------|
| 敏感目录遍历 | dirsearch/御剑扫描 | 全部路径 |
| Cookie传输加密 | 检查Cookie是否含HttpOnly/Secure标志 | 全部 |
| 会话清除测试 | 注销后使用旧Token访问认证页面 | `/platform/api/auth/logout` |
| 横向越权测试 | 用户A的Token访问用户B的数据 | `/api/message/getMessageById`等 |
| 纵向越权测试 | 普通用户Token访问管理员接口 | `/api/permissionGroup/*`等 |
| 运维集控越权 | company_id参数篡改访问其他公司数据 | `/monitor/api2/api/*` |
### 通信保密性测试
| 测试项 | 方法 | 适用接口 |
|--------|------|---------|
| 登录信息加密 | HTTPS+请求体加密传输 | `/platform/api/auth/login` |
| 修改密码加密 | 确认密码不以明文传输 | `/platform/api/system/changePassword` |
### 软件容错测试
| 测试项 | 方法 | 适用接口 |
|--------|------|---------|
| SQL注入测试 | 手工SQL注入载荷(字符串型+数字型+搜索型) | `/api/message/book`等SQL注入目标 |
| XSS测试 | 反射型+存储型XSS载荷 | 所有输入参数 |
| 文件上传绕过 | 双扩展名、Content-Type伪造、空字节截断 | `/api/message/uploadFile`等 |
## 测试范围
### OWASP API Security Top 10 覆盖
| 编号 | 安全风险 | 测试内容 | 对应系统 |
|------|----------|----------|----------|
| API1 | 对象级别授权失效 | 水平越权:用户A能否访问用户B的数据 | 预定系统、运维集控 |
| API2 | 身份认证失效 | Token伪造、暴力破解、会话固定、弱密码 | 全部系统 |
| API3 | 对象属性级别授权失效 | 垂直越权:普通用户能否修改管理员属性 | 预定系统、运维集控 |
| API4 | 资源消耗不受限 | 接口限流、大文件上传、分页参数滥用 | 全部系统 |
| API5 | 功能级别授权失效 | 普通用户能否访问管理员接口 | 全部系统 |
| API6 | 无限制访问敏感业务流 | 批量注册、自动化攻击、短信轰炸 | 预定系统 |
| API7 | 服务器端请求伪造(SSRF) | 接口参数是否可构造内网请求 | 全部系统 |
| API8 | 安全配置错误 | CORS、HTTPS、调试接口、默认密码 | Nginx、后端服务 |
| API9 | 库存管理不当 | 隐藏接口、废弃API、调试接口暴露 | 全部系统 |
| API10 | 不安全的第三方API集成 | 第三方服务密钥泄露、讯飞接口安全 | 讯飞转录系统 |
| 编号 | 安全风险 | 测试内容 | 对应系统 | 历史漏洞回归 |
|------|----------|----------|----------|------------|
| API1 | 对象级别授权失效 | 水平越权:用户A能否访问用户B的数据;运维集控company_id参数篡改 | 预定系统、运维集控 | HV-031(越权访问) |
| API2 | 身份认证失效 | Token伪造、暴力破解、会话固定、弱密码、NoSQL注入绕过、注销后Token失效 | 全部系统 | HV-007(csba)、HV-008(SHA256)、HV-026(NoSQL)、HV-030(注销失效)、HV-016(JWT弱密钥) |
| API3 | 对象属性级别授权失效 | 垂直越权:普通用户能否修改管理员属性;API成批分配攻击 | 预定系统、运维集控 | HV-017(垂直越权)、HV-027(成批分配)、HV-031(company_id) |
| API4 | 资源消耗不受限 | 接口限流、大文件上传(300M无限制)、分页参数滥用、危险文件类型上传 | 全部系统 | KN-10(无速率限制) |
| API5 | 功能级别授权失效 | 普通用户能否访问管理员接口、维护平台接口、超管配置接口 | 全部系统 | HV-017(垂直越权) |
| API6 | 无限制访问敏感业务流 | 批量注册、自动化攻击、短信轰炸、NoLogin接口滥用 | 预定系统 | — |
| API7 | 服务器端请求伪造(SSRF) | 接口参数是否可构造内网请求(Nacos/Redis/MySQL);桌牌同步SSRF | 全部系统 | HV-024(桌牌SSRF) |
| API8 | 安全配置错误 | CORS、HTTPS、调试接口(/test/)、默认密码(nacos/nacos)、Nacos未授权、Swagger暴露、安全响应头缺失 | Nginx、后端服务 | HV-002(Actuator)、HV-003(安全头)、HV-005(Nacos)、HV-006(Swagger)、HV-009(WebSocket)、KN-01~KN-14 |
| API9 | 库存管理不当 | 隐藏接口、废弃API(/legacy/*)、调试接口暴露(/test/)、内部API暴露(/inner/)、旧版API可访问 | 全部系统 | HV-011(Nacos绕过)、HV-012(config.json)、HV-014(Swagger) |
| API10 | 不安全的第三方API集成 | 第三方服务密钥泄露、讯飞company_secret、腾讯/钉钉/华为云凭证泄露 | 讯飞转录系统 | HV-029(config.json含敏感信息) |
### 按系统分类测试
......@@ -573,21 +875,66 @@
- 预定对内接口 `/meetingV2/api/*` 安全测试
- 会议预约、取消、修改的越权测试
- 用户信息接口的敏感数据泄露测试
- **SQL注入回归**`/api/message/book`(HV-001)、`/api/conference/selectPage`(HV-021)——ConferenceController.java:694
- **文件上传安全**`/api/message/uploadFile`(HV-018)、`/api/androidPanel/pack/upload`(HV-022+HV-025目录穿越)
- **API成批分配**`/api/manageUser/getManagerPageForBook`可注入is_admin/role字段(HV-027,CVSS 7.3)
- **审批流程越权**`/api/v2.0/approval/*``/api/workflow/*`接口的权限隔离
- **NoLogin接口**`/api/cdthApi/noLogin/*`接口可被未认证用户滥用
- **通知/签到接口**`/api/notification/*``/api/signs/*`的数据访问控制
#### 运维集控系统(Monitor)
- 运维接口 `/monitor/api2/*` 安全测试
- 运维接口 `/monitor/api2/*` 安全测试(58个接口端点)
- 设备控制接口的权限隔离测试
- 服务器监控数据的访问控制测试
- **越权访问回归**:company_id参数未校验(HV-031)——`/monitor/api2/api/alarmststus/``/roommaster/``/devicemaintain/``/downloadfile/``/serverlog/`
- **文件上传安全**`/monitor/api2/api/uploadupdatefile/`(HV-032,可上传webshell)
- **DRF API暴露**`/monitor/api2/api/serverinfo/``/publishinfo/``/companyauth/`无认证可访问(HV-034)
- **目录遍历**`/media/`路径是否禁止目录列表(HV-035)
- **Vue前端暴露**`/monitor/`路径是否已通过Nginx隐藏(HV-020)
- **config.json泄露**`/monitor/static/config.json`含管理员密码和内网IP(HV-033)
#### 讯飞转录系统(Voice)
- 讯飞接口 `/voice/api/*` 安全测试
- company_secret 泄露风险评估
- 第三方服务集成安全测试
- **接口认证**`/voice/api/iflytek/userlogin`登录机制安全
- **热词管理**`/voice/api2/hotWord/*``/voice/api2/word/*`接口权限控制
- **声纹数据**`/voice/api/iflytek/voiceprintManage`个人数据保护(红线11.1.2)
#### 维护平台(LoginConfig)
- 超管操作接口安全测试
- 授权文件上传接口安全测试
- 授权文件上传接口安全测试`/system/uploadLincenceFile`
- 身份校验绕过测试(当前验证码固定为 csba)
- **数据备份接口**`/system/backSqlFiles``/system/dataBackup`权限控制
- **配置导出**`/system/exportDeployView``/system/exportProperties`敏感信息泄露
- **日志下载**`/system/downloadLogs`未授权访问风险
- **服务重启**`/system/restartCmdb`普通用户可否触发
#### 第三方集成
- **企业微信**`/corp-wechat/*`回调验证和Token安全
- **钉钉**`/dd/*`接口凭证泄露风险
- **腾讯会议**`/tencent/*`全部接口的SDK凭证安全
- **华为云**`/cloudlink/*`getToken和control接口的认证机制
- **宝利通**`/polycom/*`会议控制接口的权限隔离
- **小鱼**`/xylink/*`会议邀请和控制接口安全
- **RCAJ**`/rcaj/syncConference`回调验证
#### SQL注入重点目标
> 来源:config.yaml `sql_injection_targets` + 历史漏洞确认
| 目标接口 | 注入类型 | 风险参数 | 来源 |
|---------|---------|---------|------|
| `/api/conference/selectPage` | SQL注入(数字型) | messgaeDate(StringBuilder拼接) | HV-021(IAST确认) |
| `/api/message/book` | SQL注入(字符串型) | cnum | HV-001(IAST确认) |
| `/oldmeeting/api/conference/selectPage` | SQL注入(旧版映射) | 同上 | HV-021映射 |
| `/oldmeeting/api/message/book` | SQL注入(旧版映射) | 同上 | HV-001映射 |
**注入载荷类型**
- 字符串型:`' OR '1'='1``' UNION SELECT NULL--` 等9种
- 数字型:`1 OR 1=1``1 UNION SELECT 1--` 等8种
- 搜索型:`%' OR '1'='1` 等4种
- 错误特征检测:`sql syntax``mysql``sqlstate` 等14种关键字
## 测试工具要求
### 自动化工具
......@@ -616,27 +963,51 @@ pip install requests colorama pyyaml
- 按照测试范围逐项执行安全测试
- 每个测试用例记录:请求内容、响应内容、是否存在漏洞、风险等级
- 发现高危漏洞立即记录并通知
- **历史漏洞回归**:35个历史漏洞(HV-001~HV-035)逐项验证修复状态
- **华为红线检查**:22项红线要求(HW-001~HW-022)逐项验证合规性
- **已知问题验证**:14个已知安全问题(KN-01~KN-14)验证当前状态
4. 测试报告输出
- 输出完整的安全测试报告(Markdown 格式),输出一份总的报告,命名为:服务器IP+安全测试报告+日期时间.md
- 报告内容包括:测试概要、漏洞清单、风险评级、修复建议
- 漏洞按风险等级分类:高危、中危、低危、信息类
- **回归对比**:与AppScan(56个问题)和IAST(84个漏洞)历史报告对比,标注"已修复"/"未修复"/"新增"
5. 测试报告上传网盘
- 交互输入网盘路径,将安全测试报告上传至网盘
6. 对接ERP创建任务跟踪(预留)
- 预留功能,暂无对接
### 测试执行优先级
| 优先级 | 测试类别 | 测试内容 | 预计用例数 |
|--------|---------|---------|-----------|
| P0 | 身份认证(API2) | Token伪造、NoSQL注入(CVSS 9.4)、注销失效、JWT弱密钥 | 13 |
| P0 | 对象属性越权(API3) | 垂直越权、API成批分配(CVSS 7.3)、运维集控company_id | 9 |
| P0 | 安全配置(API8) | Nacos未授权、Swagger暴露、安全响应头、SQL注入回归 | 15 |
| P1 | 对象级别越权(API1) | 水平越权、IDOR遍历 | 8 |
| P1 | 功能级别越权(API5) | 普通用户访问管理员接口 | 8 |
| P1 | 库存管理(API9) | 隐藏接口、旧版API、内部API暴露、历史漏洞路径 | 8 |
| P2 | 资源消耗(API4) | 速率限制、文件上传、分页滥用 | 7 |
| P2 | SSRF(API7) | 内网请求构造、桌牌同步SSRF、SMTP注入 | 9 |
| P2 | 业务流(API6) | 批量注册、短信轰炸、自动化攻击 | 6 |
| P3 | 第三方集成(API10) | 讯飞/腾讯/钉钉/华为云凭证泄露 | 7 |
## 验收要求
1. 安全测试报告完整性
- OWASP API Security Top 10 每项均有测试结果
- 每个系统模块均有覆盖测试
- 所有发现漏洞均有复现步骤和修复建议
- 35个历史漏洞(HV-001~HV-035)均有回归验证结果
- 22项华为安全红线(HW-001~HW-022)均有合规检查结果
- 14个已知问题(KN-01~KN-14)均有当前状态确认
2. 测试脚本可用性
- 安全测试脚本可重复执行
- 脚本支持配置化(目标地址、账号密码可配置)
- 脚本执行后自动生成测试报告
- 基于knowledge_base.py知识库的经验数据驱动测试
3. 漏洞修复验证
- 高危漏洞修复后需重新验证
- 修复后的回归测试报告
- 与AppScan(56个问题)和IAST(84个漏洞)历史报告对比
## 测试注意事项
### 安全测试规范
......@@ -653,3 +1024,52 @@ pip install requests colorama pyyaml
### 测试环境隔离
- 安全测试可能产生大量异常请求,务必在测试环境执行
- 如需在生产环境测试,仅执行被动测试(不发送恶意请求)
## 参考资料利用率
> 完整参考资料跟踪见:`_PRD_接口安全测试_参考资料跟踪.md`
### 参考资料覆盖统计
| 类别 | 文件总数 | 已读取 | 利用率 | 对知识库贡献 |
|------|---------|--------|--------|------------|
| 华为安全红线 | 7 | 7 | 100% | HW-001~HW-022 + PARTNER_REDLINE_SUPPLEMENT |
| 长安深蓝汽车 | 8 | 7 | 87.5% | HV-001~HV-025 + IAST_REPORT_SUMMARY |
| 南山区委 | 5 | 5 | 100% | HV-002、HV-030 + NSQW_PENTEST_FINDINGS + NSQW_SECURITY_ISSUES |
| 天津海油 | 4 | 2+2确认 | 100% | HV-031~HV-035 |
| 其他项目 | 7 | 7(grep/目录) | 100% | HV-003、HV-004、HV-010(交叉验证) |
| Nginx配置 | 1 | 1 | 100% | NGINX_ANALYSIS 全部数据 |
| 已有报告 | 2 | 1 | 50% | APPSCAN_REPORT_SUMMARY |
| **合计** | **34** | **30** | **94.1%** | **35个历史漏洞 + 22项红线 + 8组路径字典** |
### 知识库数据对测试用例的映射
| 知识库数据 | 测试模块 | 测试用例覆盖 |
|-----------|---------|------------|
| NGINX_ANALYSIS | test_api08_misconfig | 2.8.6(安全头)、2.8.11(Nginx暴露)、2.8.14(TLS) |
| HISTORICAL_VULNS(35项) | 全部10个模块 | SQL注入、越权、文件上传、未授权、信息泄露等 |
| SQL_INJECTION_PAYLOADS | test_api08_misconfig | 2.8.15(SQL注入检测) |
| HUAWEI_REDLINE_CHECKS(22项) | test_api02~api08 | 加密、认证、限流、输入校验、安全头等 |
| ENHANCED_PATH_DICTIONARIES | test_api08~api09 | 8组路径字典(Nginx/Nacos/Swagger/旧版/AppScan/IAST/NoSQL/成批分配) |
| APPSCAN_REPORT_SUMMARY | test_api02~api09 | NoSQL注入(CVSS9.4)、成批分配(CVSS7.3)、Actuator(7处)、源码泄露(4处) |
| IAST_REPORT_SUMMARY | test_api07~api08 | SQL注入(2处)、文件上传、SMTP注入、SSRF、目录穿越 |
| JWT_FIX_REFERENCE | test_api02_authentication | 2.2.3(过期Token)、2.2.7(会话固定) |
| NSQW_PENTEST_FINDINGS | test_api02_authentication | 2.2.13(注销后Token)、渗透方法论参考 |
| NSQW_SECURITY_ISSUES(22项) | test_api02~api05 | 8项接口可测试+7项基础设施问题 |
| PARTNER_REDLINE_SUPPLEMENT | test_api08~api09 | 5项伙伴红线要求 |
## 优化功能回填
| 日期 | 优化内容 | 状态 |
|------|---------|------|
| 2026-06-08 | 初始化PRD需求文档,基础接口清单(400+端点) | ✅ 完成 |
| 2026-06-08 | 补充历史漏洞回归测试清单(35项) | ✅ 完成 |
| 2026-06-08 | 补充华为安全红线检查清单(22项+5项伙伴红线) | ✅ 完成 |
| 2026-06-08 | 补充Nginx安全配置分析(5处外露路径+7项缺失配置) | ✅ 完成 |
| 2026-06-08 | 补充已知安全问题基线(14项) | ✅ 完成 |
| 2026-06-08 | 补充安全扫描报告基线(AppScan 56项+IAST 84项) | ✅ 完成 |
| 2026-06-08 | 补充安全测试方法论参考(渗透测试标准方法论) | ✅ 完成 |
| 2026-06-08 | 增强OWASP测试矩阵(添加历史漏洞回归列) | ✅ 完成 |
| 2026-06-08 | 增强系统分类测试(添加SQL注入目标+第三方集成) | ✅ 完成 |
| 2026-06-08 | 补充测试执行优先级(P0~P3) | ✅ 完成 |
| 2026-06-08 | 补充参考资料利用率统计(94.1%覆盖率) | ✅ 完成 |
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论