IPBUF安全漏洞报告
English
CVE-2026-6796 CVSS 4.3 中危

CVE-2026-6796 Sanluan PublicCMS明文存储漏洞

披露日期: 2026-04-21

漏洞信息

漏洞编号
CVE-2026-6796
漏洞类型
信息泄露
CVSS评分
4.3 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
Sanluan PublicCMS

相关标签

信息泄露明文存储Sanluan PublicCMS日志安全CVE-2026-6796

漏洞概述

Sanluan PublicCMS 6.202506.d及更早版本在登录处理组件中存在信息泄露漏洞。位于`LoginAdminController.java`的`log_login`函数未能正确处理`errorPassword`参数,导致系统在记录登录失败信息时,直接将用户密码以明文形式写入磁盘文件。攻击者可利用此特性远程发起攻击,结合日志读取权限获取敏感凭据。

技术细节

该漏洞源于Sanluan PublicCMS后台登录控制器的日志记录逻辑缺陷。具体受影响文件为`core/src/main/java/com/publiccms/controller/admin/LoginAdminController.java`,问题函数为`log_login`。在用户尝试登录失败的场景下,系统运行的“失败登录处理程序”会处理`errorPassword`参数。由于开发人员未对该敏感参数进行过滤或哈希处理,导致原始密码字符串被直接以明文形式持久化存储到服务器的日志文件或磁盘中。攻击者利用网络向量(AV:N)远程触发此行为,虽然攻击需要低权限(PR:L),但结合常见的日志泄露漏洞(如路径遍历或日志文件未授权下载),攻击者可轻易获取管理员或其他用户的明文密码。这种不安全的存储方式违反了敏感数据保护原则,极大地增加了凭证被盗用的风险。

攻击链分析

STEP 1
步骤1
攻击者识别目标系统为Sanluan PublicCMS,且版本低于6.202506.d。
STEP 2
步骤2
攻击者向后台登录接口`/admin/login`发送POST请求,模拟登录失败行为,并在密码字段输入恶意构造或敏感的字符串。
STEP 3
步骤3
服务器端`LoginAdminController`捕获失败请求,调用`log_login`函数,将包含`errorPassword`的参数明文写入日志文件。
STEP 4
步骤4
攻击者利用系统的其他漏洞(如目录遍历)或配置不当,访问服务器日志文件,读取并提取明文密码。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests # PoC for CVE-2026-6796: PublicCMS Cleartext Password Storage # Target: Sanluan PublicCMS <= 6.202506.d target_url = "http://target-host:port/admin/login" # The payload simulates a failed login attempt # The 'password' field will be stored in cleartext in logs if vulnerable login_data = { "username": "admin", "password": "ClearTextPassword123!" } try: response = requests.post(target_url, data=login_data) print(f"Status Code: {response.status_code}") print("If the application is vulnerable, 'ClearTextPassword123!' is now stored in cleartext in the server logs.") print("Check log files such as: logs/cms.log or similar paths.") except Exception as e: print(f"Error occurred: {e}")

影响范围

Sanluan PublicCMS <= 6.202506.d

防御指南

临时缓解措施
建议立即排查服务器日志文件,确认是否已泄露敏感凭据。临时修复方案是编辑`core/src/main/java/com/publiccms/controller/admin/LoginAdminController.java`文件,在`log_login`方法中删除对`errorPassword`参数的记录,或将其替换为掩码(如“******”),随后重新编译部署。

参考链接

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