某cms审计
字数 804 2025-08-25 22:59:02

某CMS任意文件上传漏洞分析与复现

漏洞概述

在某CMS中发现一个严重的任意文件上传漏洞,位于accountalert.php文件中。该漏洞允许攻击者上传任意文件到服务器,且上传后文件保持原始名称,存储在/common/feng_img/目录下。

漏洞分析

1. 过滤机制分析

该CMS采用全局过滤文件x.php对输入参数进行过滤:

  • GETPOSTCOOKIE参数进行过滤
  • 主要过滤了SQL语句中的andorform等关键词
  • 但未对文件上传功能进行有效过滤

2. 漏洞位置

漏洞位于accountalert.php文件中:

  • 检查文件是否存在后直接上传
  • 未实施任何文件类型检查或后缀限制
  • 未对上传文件进行重命名处理

3. 上传路径

上传后的文件存储在:

/common/feng_img/[原始文件名]

漏洞复现步骤

  1. 准备一个恶意文件(如webshell.php)
  2. 构造上传请求到accountalert.php
  3. 上传成功后,文件将保存在:
    /common/feng_img/webshell.php
    
  4. 直接访问上传的文件即可执行

其他安全问题

该CMS还存在其他安全问题:

  1. SQL注入漏洞
    • x.php的过滤不完善
    • 通过替换andorform等关键词可绕过过滤
    • 前台存在可被利用的注入点

防御建议

  1. 文件上传功能应实施:

    • 严格的白名单文件类型检查
    • 文件内容检测(如检查文件头)
    • 强制重命名上传文件(如使用随机文件名)
    • 限制上传目录的执行权限
  2. SQL注入防护:

    • 使用参数化查询或预处理语句
    • 实施更全面的输入过滤
    • 对特殊字符进行转义处理
  3. 其他建议:

    • 限制上传目录的访问权限
    • 定期进行安全审计和代码审查
    • 实施Web应用防火墙(WAF)

总结

该CMS的任意文件上传漏洞由于缺乏基本的文件上传安全检查机制,导致攻击者可轻易上传恶意文件获取服务器控制权。结合前台存在的SQL注入漏洞,系统面临严重的安全风险。建议开发者全面审查代码,实施多层次的安全防护措施。

某CMS任意文件上传漏洞分析与复现 漏洞概述 在某CMS中发现一个严重的任意文件上传漏洞,位于 accountalert.php 文件中。该漏洞允许攻击者上传任意文件到服务器,且上传后文件保持原始名称,存储在 /common/feng_img/ 目录下。 漏洞分析 1. 过滤机制分析 该CMS采用全局过滤文件 x.php 对输入参数进行过滤: 对 GET 、 POST 和 COOKIE 参数进行过滤 主要过滤了SQL语句中的 and 、 or 和 form 等关键词 但未对文件上传功能进行有效过滤 2. 漏洞位置 漏洞位于 accountalert.php 文件中: 检查文件是否存在后直接上传 未实施任何文件类型检查或后缀限制 未对上传文件进行重命名处理 3. 上传路径 上传后的文件存储在: 漏洞复现步骤 准备一个恶意文件(如webshell.php) 构造上传请求到 accountalert.php 上传成功后,文件将保存在: 直接访问上传的文件即可执行 其他安全问题 该CMS还存在其他安全问题: SQL注入漏洞 : x.php 的过滤不完善 通过替换 and 、 or 和 form 等关键词可绕过过滤 前台存在可被利用的注入点 防御建议 文件上传功能应实施: 严格的白名单文件类型检查 文件内容检测(如检查文件头) 强制重命名上传文件(如使用随机文件名) 限制上传目录的执行权限 SQL注入防护: 使用参数化查询或预处理语句 实施更全面的输入过滤 对特殊字符进行转义处理 其他建议: 限制上传目录的访问权限 定期进行安全审计和代码审查 实施Web应用防火墙(WAF) 总结 该CMS的任意文件上传漏洞由于缺乏基本的文件上传安全检查机制,导致攻击者可轻易上传恶意文件获取服务器控制权。结合前台存在的SQL注入漏洞,系统面临严重的安全风险。建议开发者全面审查代码,实施多层次的安全防护措施。