CVE ID: CVE-2025-65899
产品: DifuseHQ Kalmia CMS
受影响版本: 0.2.0
漏洞类型: 可观察响应差异
所需权限: 无
允许未经身份验证的攻击者枚举有效用户名,从而实施有针对性的密码喷洒、凭证填充和账户发现攻击。
待维护者审批 - https://github.com/DifuseHQ/Kalmia/pull/34
Kalmia CMS 0.2.0 版本在其身份验证机制中存在用户枚举漏洞。应用程序对于不存在的用户(user_not_found)与存在但密码错误的用户(invalid_password)返回不同的错误消息。这种可观察的响应差异使未经身份验证的攻击者能够枚举系统上的有效用户名,进而可用于后续的针对性攻击,如密码喷洒或社会工程学。
/kal-api/auth/jwt/create身份验证系统未能实现一致的错误响应,通过不同的错误消息泄露了用户账户的存在信息:
{"message": "user_not_found"}{"message": "invalid_password"}这种响应差异使攻击者可以区分不存在的用户账户和有效用户账户。
攻击者尝试使用不存在的用户名进行身份验证,并观察到服务器响应返回“User not found”。
使用 Burp Suite 拦截并分析身份验证请求,攻击者确认服务器对于无效用户名返回 user_not_found,表明该用户不在系统中。
当使用有效用户名但错误密码进行测试时,Burp Suite 捕获到的服务器响应显示 invalid_password,确认该用户名存在于系统中。
对后端身份验证逻辑的分析揭示了导致返回不同错误消息的有缺陷实现:
user_not_foundinvalid_password这种顺序验证过程造成了可观察的差异,从而实现了用户枚举。
cve-2025-65899.py 脚本自动化了用户枚举过程:
python cve-2025-65899.py <TARGET_URL> [OPTIONS]
url:目标 Kalmia CMS 基础 URL(必需)-u, --user:要测试的单个用户名-p, --password:用于测试的密码(必需)-w, --wordlist:用于批量用户枚举的字典文件# 测试特定用户是否存在
python cve-2025-65899.py http://target.com:2727 -u admin -p wrongpass
# 结果:
# [+] Valid user: admin(如果用户存在)
# 或者
# (如果用户不存在则无输出)
# 从字典文件枚举用户
python cve-2025-65899.py http://target.com:2727 -w users.txt -p wrongpass
# 创建一个简单的字典文件
echo -e "admin\nuser\nadministrator\ntest\nguest" > users.txt
user_not_found 响应)免责声明:此信息仅供教育和防御目的。用户需确保在测试任何系统前已获得适当授权。