关键漏洞信息 漏洞类型 任意文件上传漏洞 (Arbitrary File Upload Vulnerability) 影响的产品和版本 产品: code-projects online-notes-sharing V1.0 受影响/已修复的版本: V1.0 漏洞文件 漏洞描述 由于不充分的验证和过滤, 脚本存在任意文件上传漏洞。恶意文件(如 PHP shell)被接受并存储在公开可访问的目录中,即使其扩展名被伪装(例如 .jpg)。 攻击者可以通过浏览器直接上传和执行这些文件,潜在地导致远程代码执行,从而危及整个服务器并暴露敏感数据。 影响 全服务器妥协 数据泄露或操纵 未经授权访问敏感信息 服务中断或拒绝 漏洞位置 复现步骤 (PoC) 1. 选择一个简单的 web shell payload,例如 。 2. 将文件扩展名从 更改为 以绕过基本文件类型检查。 3. 使用 中的个人资料图片上传功能上传重命名的文件。 4. 使用 Burp Suite 修改上传请求,确保服务器将其作为 PHP 文件处理,尽管扩展名为 。 5. 成功上传后,通过公共路径访问上传的文件(例如: )。 6. 发送带有 参数的 POST 请求以在服务器上执行任意 PHP 代码。 建议修复措施 严格文件类型验证: 只允许特定的安全文件类型(如 JPEG、PNG 或 GIF),并通过验证文件扩展名和 MIME 类型来实现。 重命名上传文件: 将上传的文件重命名为随机或哈希文件名,以防止覆盖和避免揭示原始文件名或扩展名。 将文件存储在 Web 根目录之外: 将上传的文件保存在公开可访问的 Web 目录之外,以防止直接访问和执行。 使用白名单,而非黑名单: 避免禁止危险文件扩展名,而是实施白名单或允许的文件类型。 实施内容扫描: 扫描上传的文件是否有恶意内容,使用防病毒或恶意软件检测工具。 限制文件大小: 限制最大上传大小,以防止拒绝服务攻击。 应用适当的权限: 确保上传的文件和文件夹具有限制性权限,尽可能防止执行。