某CMS注入审计
字数 1048 2025-08-18 11:35:59

某CMS注入审计分析报告

前言

本文档基于某基于ThinkPHP3.2.2框架开发的企业网站内容管理系统进行SQL注入漏洞审计分析。通过代码审计,发现该系统存在多处SQL注入漏洞,包括前台和后台多个功能点。

系统架构

  • 框架:ThinkPHP3.2.2
  • 重点审计目录:App文件夹
  • 后台文件特点:使用Zend加密(需使用在线解密工具如http://dezend.qiling.org/free/进行解密)

前台SQL注入漏洞

漏洞位置

\App\Home\Controller\UserController.class.php文件中的多个方法:

  1. do_name()方法

    • 漏洞描述:直接将POST传入的id参数带入find查询,未进行有效过滤
    • 利用条件:需要前台登录
    • 利用方式:
      http://www.a.com/index.php?s=/user/do_name.html
      id[where]=1%20and%20updatexml(1,concat(0x7e,user(),0x7e),1)--
      
    • 漏洞原理:利用ThinkPHP3的SQL注入特性,通过数组参数构造恶意SQL语句
  2. do_detail()方法

    • 同do_name()方法类似,存在相同类型的注入漏洞
  3. do_pass()方法

    • 同样存在未过滤参数直接带入查询的问题

防御机制分析

  • 系统大部分文件在获取参数时会进行一次正则匹配,对非整数参数直接结束程序
  • 但上述方法未使用该防御机制,导致漏洞存在

后台SQL注入漏洞

漏洞位置

\App\Manage\Controller\PhotoController.class.php

  • 漏洞描述:通过GET请求获取ID参数并直接带入where查询,且无引号保护
  • 漏洞特点:后台多个文件存在类似问题
  • 利用方式:构造恶意ID参数进行注入攻击

其他安全问题

  • 后台还存在一处任意文件删除漏洞(文中提到已有分析,未详细说明)

ThinkPHP3注入原理参考

参考链接:https://xz.aliyun.com/t/2629

总结与修复建议

漏洞总结

  1. 前台多个用户相关功能存在SQL注入
  2. 后台多个控制器存在SQL注入
  3. 后台存在任意文件删除漏洞

修复建议

  1. 对所有用户输入进行严格过滤和验证
  2. 使用参数化查询或预处理语句
  3. 对整数型参数强制类型转换
  4. 对后台功能增加更严格的权限验证
  5. 升级ThinkPHP框架版本

审计经验

  1. 重点关注直接使用用户输入作为查询条件的方法
  2. 注意框架特性可能带来的安全隐患
  3. 加密文件需要解密后才能进行完整审计
  4. 参数过滤不统一是常见的安全隐患来源

通过本次审计可以看出,即使是经过一定安全设计的系统,也可能因为部分功能未遵循统一的安全规范而导致漏洞存在。全面的代码审计和安全开发规范是保障系统安全的重要手段。

某CMS注入审计分析报告 前言 本文档基于某基于ThinkPHP3.2.2框架开发的企业网站内容管理系统进行SQL注入漏洞审计分析。通过代码审计,发现该系统存在多处SQL注入漏洞,包括前台和后台多个功能点。 系统架构 框架:ThinkPHP3.2.2 重点审计目录:App文件夹 后台文件特点:使用Zend加密(需使用在线解密工具如http://dezend.qiling.org/free/进行解密) 前台SQL注入漏洞 漏洞位置 \App\Home\Controller\UserController.class.php 文件中的多个方法: do_ name()方法 漏洞描述:直接将POST传入的id参数带入find查询,未进行有效过滤 利用条件:需要前台登录 利用方式: 漏洞原理:利用ThinkPHP3的SQL注入特性,通过数组参数构造恶意SQL语句 do_ detail()方法 同do_ name()方法类似,存在相同类型的注入漏洞 do_ pass()方法 同样存在未过滤参数直接带入查询的问题 防御机制分析 系统大部分文件在获取参数时会进行一次正则匹配,对非整数参数直接结束程序 但上述方法未使用该防御机制,导致漏洞存在 后台SQL注入漏洞 漏洞位置 \App\Manage\Controller\PhotoController.class.php 漏洞描述:通过GET请求获取ID参数并直接带入where查询,且无引号保护 漏洞特点:后台多个文件存在类似问题 利用方式:构造恶意ID参数进行注入攻击 其他安全问题 后台还存在一处任意文件删除漏洞(文中提到已有分析,未详细说明) ThinkPHP3注入原理参考 参考链接:https://xz.aliyun.com/t/2629 总结与修复建议 漏洞总结 前台多个用户相关功能存在SQL注入 后台多个控制器存在SQL注入 后台存在任意文件删除漏洞 修复建议 对所有用户输入进行严格过滤和验证 使用参数化查询或预处理语句 对整数型参数强制类型转换 对后台功能增加更严格的权限验证 升级ThinkPHP框架版本 审计经验 重点关注直接使用用户输入作为查询条件的方法 注意框架特性可能带来的安全隐患 加密文件需要解密后才能进行完整审计 参数过滤不统一是常见的安全隐患来源 通过本次审计可以看出,即使是经过一定安全设计的系统,也可能因为部分功能未遵循统一的安全规范而导致漏洞存在。全面的代码审计和安全开发规范是保障系统安全的重要手段。