关键漏洞信息 漏洞名称 任意文件读取漏洞存在于Novel-Plus v5.1.0及更早版本 影响范围 Novel-Plus < v5.1.8 官方网站: https://novel.xsopen.com/index.htm GitHub: https://github.com/20120603B/novel-plus 漏洞概述 目录遍历漏洞是一种常见的Web安全缺陷,允许攻击者通过精心构造的URL路径访问服务器上的未经授权的文件或目录。这种漏洞通常是由于Web应用程序对用户输入的验证不足引起的。 Java Web代码审计过程 源文件: novel-admin/src/main/java/com/java/re/common/controller/FileController.java, 行号270-297 漏洞原因 1. 未验证的用户可控参数: - 参数是用户可控的,代码没有对其进行任何验证或过滤。 - 攻击者可以构造恶意的 值(例如: )来访问服务器上的敏感文件,可能导致未经授权的数据泄露。 2. 路径拼接问题: - 代码直接将用户输入的 与上传路径进行拼接。 - 如果 包含路径遍历字符(例如: ),它可以绕过预期的上传目录限制并访问服务器上的任意目录。 3. 文件访问权限无限制: - 代码缺乏对文件访问范围的限制,允许攻击者利用路径遍历漏洞并访问服务器上的任意文件。 漏洞复现步骤 1. 使用管理员账户登录以获取会话cookie(授予管理员权限)。 2. 后续测试表明,目录遍历攻击成功检索了来自Windows/win.ini的敏感数据。 POC (概念验证) 漏洞修复建议 1. 严格验证用户输入: - 对用户提供的文件名和路径参数进行合法性检查,过滤掉路径遍历序列(如: )和URL编码形式(如:%2e%2e%2f)。 2. 使用白名单机制: - 只允许特定字符集(如字母、数字、下划线)或文件扩展名(如.jpg、.pdf)。