随缘审计 - cms/0day/后台篇(php)
字数 1323 2025-08-09 22:00:40
CMS/0day/后台篇(PHP)审计教学文档
1. 审计概述
本文档基于"随缘审计 - cms/0day/后台篇(php)"文章内容整理,重点讲解PHP CMS后台漏洞审计的关键技术和方法。
2. 审计准备
2.1 环境搭建
- PHP环境配置(推荐5.x和7.x版本同时测试)
- 目标CMS完整源码获取
- 调试工具准备(Xdebug、phpstorm等)
2.2 审计工具
- 静态分析工具:RIPS、Fortify、Seay源代码审计系统
- 动态调试工具:Burp Suite、Postman
- 数据库监控工具:MySQL Query Monitor
3. 常见后台漏洞类型
3.1 认证与授权漏洞
- 弱口令或默认凭证
- 认证绕过(直接访问后台URL、修改cookie等)
- 权限提升(垂直越权)
3.2 注入类漏洞
- SQL注入(重点关注管理员操作接口)
- XSS(存储型,影响其他管理员)
- 文件包含(本地/远程)
3.3 文件操作漏洞
- 任意文件上传(绕过黑名单、解析漏洞)
- 任意文件读取/下载
- 任意文件删除
3.4 逻辑漏洞
- 二次验证绕过
- 并发操作问题
- 业务逻辑缺陷
4. 审计方法详解
4.1 入口点定位
- 后台登录入口(admin.php, login.php等)
- 管理员功能路由(通常集中在admin目录)
- 数据库操作函数调用链
4.2 代码审计技巧
4.2.1 SQL注入审计
// 危险写法示例
$id = $_GET['id'];
$sql = "SELECT * FROM users WHERE id = $id";
// 审计要点:
// 1. 查找未过滤的输入直接拼接SQL
// 2. 检查预处理语句使用是否正确
4.2.2 文件上传审计
// 危险写法示例
$file = $_FILES['file'];
move_uploaded_file($file['tmp_name'], 'uploads/'.$file['name']);
// 审计要点:
// 1. 文件类型检查是否完备
// 2. 文件名处理是否安全
// 3. 目录权限设置
4.2.3 会话管理审计
// 危险写法示例
$_SESSION['is_admin'] = true;
// 审计要点:
// 1. 会话固定
// 2. 会话超时设置
// 3. 权限标记是否可伪造
4.3 敏感函数追踪
重点关注以下PHP函数的使用情况:
| 函数类别 | 示例函数 |
|---|---|
| 数据库操作 | mysql_query, mysqli_query, PDO::query |
| 文件操作 | file_get_contents, file_put_contents, unlink |
| 命令执行 | exec, system, passthru |
| 文件包含 | include, require, include_once |
| 会话管理 | session_start, session_id |
5. 漏洞利用链构建
5.1 从信息泄露到RCE
- 通过报错信息获取路径
- 读取配置文件获取数据库凭证
- 写入webshell
5.2 权限提升链条
- 低权限用户注入获取管理员密码hash
- 破解或绕过hash验证
- 登录后台执行高危操作
6. 防御建议
6.1 代码层面
- 所有输入必须过滤
- 使用预处理语句防SQL注入
- 文件上传严格限制类型和内容
6.2 配置层面
- 后台目录改名
- 限制后台访问IP
- 启用HTTPS
6.3 运维层面
- 定期更新CMS和插件
- 监控异常访问日志
- 定期备份
7. 实战案例
由于原文未提供具体漏洞细节,此处提供通用审计流程示例:
- 定位后台登录页面,分析认证逻辑
- 检查会话管理机制
- 遍历后台功能点,测试每个参数
- 追踪数据处理流程,寻找未过滤点
- 构造payload验证漏洞
8. 总结
PHP CMS后台审计需要重点关注权限控制、输入过滤和危险函数使用。通过系统化的审计方法,结合静态分析和动态测试,可以有效发现各类安全漏洞。