代码审计入门之BlueCMS v1.6 sp1
字数 1348 2025-08-18 11:38:41

BlueCMS v1.6 sp1 代码审计教学文档

0x00 环境准备

所需工具:

  • Phpstudy(集成环境)
  • BlueCMS v1.6 sp1源码
  • 代码审计工具(推荐Seay源代码审计系统)
  • Burp Suite(用于抓包测试)

0x01 安装漏洞审计

漏洞描述

CMS安装后install目录未删除,可重复安装导致数据重置

验证方法

  1. 正常安装CMS后
  2. 再次访问install目录
  3. 观察是否能重新安装系统

风险

攻击者可重置整个网站数据,设置新的管理员账号

0x02 用户注册功能审计

1. 用户名枚举漏洞

发现过程:

  • 注册时抓包发现检测用户名的请求
  • 请求中包含user_name参数

利用方法:

  • user_name参数进行爆破
  • 获取已存在的用户名列表

2. 存储型XSS漏洞

位置: 用户注册邮箱字段

**验证步骤:

  1. 注册用户时拦截数据包
  2. 修改email参数为XSS payload:<script>alert(1)</script>
  3. 成功弹窗证明漏洞存在

未过滤原因:

  • INSERT语句直接拼接用户输入
  • 无htmlspecialchars等过滤函数

3. SQL注入漏洞

注入点: 用户注册功能

Payload示例:

%df' or updatexml(1,concat(0x7e,(SELECT database())),1,1)#

绕过方法:

  • 使用宽字节注入绕过魔术引号:%df'

高级利用:
通过插入多行数据泄露信息:

%df',1,1),(100,0x6162717765,md5(123456),(select database()),1,1)#

0x03 登录功能审计

1. SQL注入(万能密码)

注入点: 登录表单

Payload:

%df') or 1=1#

验证方法:

  1. 使用该payload作为密码尝试登录
  2. 成功登录任意账户

2. 修改资料处漏洞

  • 同样存在XSS和SQL注入

0x04 评论系统审计

1. IP头注入漏洞

漏洞原理:

  • 评论系统记录用户IP
  • IP通过getip()函数获取
  • 优先获取HTTP_CLIENT_IPHTTP_X_FORWARDED_FOR

利用方法:

  1. 添加请求头:X-Forwarded-For: 1'#
  2. 触发SQL报错

0x05 后台漏洞

1. 数据库备份泄露

发现过程:

  1. 后台执行数据库备份
  2. 备份文件按日期命名(如backup_20250816.sql)
  3. 爆破备份文件路径可下载

风险:

  • 泄露管理员账号密码(MD5存储,可破解)

0x06 文件包含漏洞

1. 本地文件包含

位置: user.php的pay参数

利用条件:

  • 需要能上传文件(如头像上传图片马)
  • Windows系统路径长度限制可利用

Payload:

pay=../../1.txt...................................(256个点)

利用步骤:

  1. 上传图片马到可访问目录
  2. 通过包含漏洞执行图片马

0x07 审计方法论总结

1. 黑盒+白盒结合

  • 先功能点分析
  • 再追踪参数传递

2. 核心关注点

  • 所有用户输入点
  • 数据库操作语句
  • 文件包含/上传功能
  • 安装/配置相关功能

3. 常见测试方法

  1. 输入特殊字符测试过滤
  2. 追踪参数传递流程
  3. 检查敏感函数调用
  4. 验证安装/配置安全性

0x08 防御建议

  1. 安装后删除install目录
  2. 对所有用户输入进行过滤
  3. 使用预处理语句防止SQL注入
  4. 限制IP头信任范围
  5. 备份文件随机命名并限制访问
  6. 禁用危险函数如include的动态包含

本教学文档基于ZKAQ聂风的原创文章整理,重点提取了BlueCMS v1.6 sp1的代码审计关键点,可作为PHP代码审计入门学习材料。

BlueCMS v1.6 sp1 代码审计教学文档 0x00 环境准备 所需工具: Phpstudy(集成环境) BlueCMS v1.6 sp1源码 代码审计工具(推荐Seay源代码审计系统) Burp Suite(用于抓包测试) 0x01 安装漏洞审计 漏洞描述 CMS安装后install目录未删除,可重复安装导致数据重置 验证方法 正常安装CMS后 再次访问install目录 观察是否能重新安装系统 风险 攻击者可重置整个网站数据,设置新的管理员账号 0x02 用户注册功能审计 1. 用户名枚举漏洞 发现过程: 注册时抓包发现检测用户名的请求 请求中包含 user_name 参数 利用方法: 对 user_name 参数进行爆破 获取已存在的用户名列表 2. 存储型XSS漏洞 位置: 用户注册邮箱字段 ** 验证步骤: 注册用户时拦截数据包 修改email参数为XSS payload: <script>alert(1)</script> 成功弹窗证明漏洞存在 未过滤原因: INSERT语句直接拼接用户输入 无htmlspecialchars等过滤函数 3. SQL注入漏洞 注入点: 用户注册功能 Payload示例: 绕过方法: 使用宽字节注入绕过魔术引号: %df' 高级利用: 通过插入多行数据泄露信息: 0x03 登录功能审计 1. SQL注入(万能密码) 注入点: 登录表单 Payload: 验证方法: 使用该payload作为密码尝试登录 成功登录任意账户 2. 修改资料处漏洞 同样存在XSS和SQL注入 0x04 评论系统审计 1. IP头注入漏洞 漏洞原理: 评论系统记录用户IP IP通过 getip() 函数获取 优先获取 HTTP_CLIENT_IP 和 HTTP_X_FORWARDED_FOR 利用方法: 添加请求头: X-Forwarded-For: 1'# 触发SQL报错 0x05 后台漏洞 1. 数据库备份泄露 发现过程: 后台执行数据库备份 备份文件按日期命名(如backup_ 20250816.sql) 爆破备份文件路径可下载 风险: 泄露管理员账号密码(MD5存储,可破解) 0x06 文件包含漏洞 1. 本地文件包含 位置: user.php的pay参数 利用条件: 需要能上传文件(如头像上传图片马) Windows系统路径长度限制可利用 Payload: 利用步骤: 上传图片马到可访问目录 通过包含漏洞执行图片马 0x07 审计方法论总结 1. 黑盒+白盒结合 先功能点分析 再追踪参数传递 2. 核心关注点 所有用户输入点 数据库操作语句 文件包含/上传功能 安装/配置相关功能 3. 常见测试方法 输入特殊字符测试过滤 追踪参数传递流程 检查敏感函数调用 验证安装/配置安全性 0x08 防御建议 安装后删除install目录 对所有用户输入进行过滤 使用预处理语句防止SQL注入 限制IP头信任范围 备份文件随机命名并限制访问 禁用危险函数如include的动态包含 本教学文档基于ZKAQ聂风的原创文章整理,重点提取了BlueCMS v1.6 sp1的代码审计关键点,可作为PHP代码审计入门学习材料。