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
二、审计方法
- 敏感关键字定位:回溯参数传递过程
- 功能点审计:通读功能代码(黑盒+白盒结合)
- 重点审计功能:
- 系统重装
- 文件上传
- 文件管理
- 登录认证
- 密码找回
- 订单支付
三、漏洞分析
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_IP和HTTP_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参数删除任意文件
四、安全建议
-
输入过滤:
- 对所有用户输入进行严格过滤和转义
- 统一处理
$_SERVER变量
-
SQL防护:
- 使用预处理语句
- 对数字型参数强制类型转换
-
文件操作:
- 限制文件操作路径
- 验证文件操作权限
-
XSS防护:
- 对所有输出进行HTML实体编码
- 实施严格的CSP策略
-
会话管理:
- 加强会话固定防护
- 使用安全的Cookie设置
五、总结
BlueCMS v1.6 SP1存在多处安全漏洞,主要问题集中在:
- 未充分过滤用户输入
- SQL语句拼接方式不安全
- 文件操作缺乏安全限制
- 会话管理不严谨
建议开发者全面审查代码,实施上述安全建议,特别是对用户输入的严格过滤和SQL查询的预处理改造。