zzzphp save.php save_content方法下sql注入
字数 1074 2025-08-05 08:19:01

ZZZPHP CMS save.php save_content方法SQL注入漏洞分析

漏洞概述

ZZZPHP CMS的save.php文件中save_content方法存在SQL注入漏洞,攻击者可以通过构造特定的POST请求,在未经过滤的情况下将恶意SQL语句注入到数据库查询中,导致任意SQL命令执行。

漏洞环境搭建

  1. 本地搭建服务器,配置httpd-vhosts.conf绑定域名
  2. 下载并安装ZZZPHP CMS
  3. 本地CMS后台访问地址为admin264
  4. 成功登录后台获取有效cookie

漏洞复现步骤

  1. 使用Postman发送请求:

    http://[本地绑定的域名]/[后台地址]/save.php?act=content
    
  2. 在请求头中设置已登录的有效cookie

  3. POST参数中关键参数:

    POST /admin264/save.php?act=content HTTP/1.1
    Host: [本地绑定的域名]
    Cookie: [有效cookie]
    
    c_content=content',1,9);create database kaixinjiuhao;//
    
  4. 其他POST参数可以忽略,但必须包含act=content参数

漏洞分析

  1. 请求处理流程

    • save.php接收act=content参数后调用save_content()方法
    • getform函数获取POST提交的参数
    • $c_content参数值被转义,但存在绕过方式
  2. 关键注入点

    • 当不传递$c_pagedesc参数时,系统会从$c_content获取值
    • 获取的值未经过转义处理
    • 同样,$c_title2在POST请求未传值时也会从$c_title获取值,存在类似风险
  3. SQL执行流程

    • 第237行执行db_insert函数
    • 第243行执行db_exec函数
    • 最终通过$d->exec($sql)执行SQL命令
  4. 注入验证

    • 成功创建kaixinjiuhao数据库
    • 可在数据库中查看到新创建的数据库

漏洞利用

  1. 通过构造c_content参数实现SQL注入:

    content',1,9);[任意SQL语句];//
    
  2. 可执行的恶意操作包括但不限于:

    • 创建/删除数据库
    • 创建/删除表
    • 读取/修改敏感数据
    • 执行系统命令(如果数据库配置允许)

修复建议

  1. 对所有用户输入进行严格的过滤和转义
  2. 使用参数化查询或预处理语句
  3. 对数据库操作进行权限最小化配置
  4. 对关键函数添加输入验证
  5. 更新到最新版本的ZZZPHP CMS

补充说明

  1. 该漏洞需要有效的后台cookie才能利用
  2. $c_title2参数也存在类似的注入风险
  3. 漏洞利用成功后Postman会返回执行结果
  4. 该漏洞属于二次注入类型,通过参数传递绕过初始过滤

总结

ZZZPHP CMS的save_content方法由于未对用户输入进行充分过滤,导致SQL注入漏洞。攻击者可以通过构造特定的POST请求执行任意SQL命令,对系统安全构成严重威胁。建议开发者及时修复并加强输入验证机制。

ZZZPHP CMS save.php save_ content方法SQL注入漏洞分析 漏洞概述 ZZZPHP CMS的 save.php 文件中 save_content 方法存在SQL注入漏洞,攻击者可以通过构造特定的POST请求,在未经过滤的情况下将恶意SQL语句注入到数据库查询中,导致任意SQL命令执行。 漏洞环境搭建 本地搭建服务器,配置 httpd-vhosts.conf 绑定域名 下载并安装ZZZPHP CMS 本地CMS后台访问地址为 admin264 成功登录后台获取有效cookie 漏洞复现步骤 使用Postman发送请求: 在请求头中设置已登录的有效cookie POST参数中关键参数: 其他POST参数可以忽略,但必须包含 act=content 参数 漏洞分析 请求处理流程 : save.php 接收 act=content 参数后调用 save_content() 方法 getform 函数获取POST提交的参数 $c_content 参数值被转义,但存在绕过方式 关键注入点 : 当不传递 $c_pagedesc 参数时,系统会从 $c_content 获取值 获取的值未经过转义处理 同样, $c_title2 在POST请求未传值时也会从 $c_title 获取值,存在类似风险 SQL执行流程 : 第237行执行 db_insert 函数 第243行执行 db_exec 函数 最终通过 $d->exec($sql) 执行SQL命令 注入验证 : 成功创建 kaixinjiuhao 数据库 可在数据库中查看到新创建的数据库 漏洞利用 通过构造 c_content 参数实现SQL注入: 可执行的恶意操作包括但不限于: 创建/删除数据库 创建/删除表 读取/修改敏感数据 执行系统命令(如果数据库配置允许) 修复建议 对所有用户输入进行严格的过滤和转义 使用参数化查询或预处理语句 对数据库操作进行权限最小化配置 对关键函数添加输入验证 更新到最新版本的ZZZPHP CMS 补充说明 该漏洞需要有效的后台cookie才能利用 $c_title2 参数也存在类似的注入风险 漏洞利用成功后Postman会返回执行结果 该漏洞属于二次注入类型,通过参数传递绕过初始过滤 总结 ZZZPHP CMS的 save_content 方法由于未对用户输入进行充分过滤,导致SQL注入漏洞。攻击者可以通过构造特定的POST请求执行任意SQL命令,对系统安全构成严重威胁。建议开发者及时修复并加强输入验证机制。