前言
参考:
https://mp.weixin.qq.com/s/y9d04tnRaKHQBfZubj1cKg
审计思路
敏感函数查找
危险函数:
eval
、system
SQL注入:
select
,from
XFF注入:
HTTP_CLIENT_IP
、REMOTE_ADDR
通读全文代码
函数集文件:
function
、common
等关键词,一般是公共函数统一调用配置文件:
config
等关键词,了解功能配置与数据库配置;观察参数值,如果存在双引号可能存在代码执行安全过滤文件:
filter
、safe
、check
等关键词,wafindex文件:入口文件,可知 CMS 的架构,运行流程、包含到的文件、核心文件有哪些等
根据功能点定向审计
- 文件上传:任意文件上传、sql注入(文件名可能记录到数据库)
- 文件管理
- 登入认证
- 找回密码:重置管理员密码、验证码爆破
系统分类
原生非开发框架:WordPress、phpMyAdmin
- 无额外抽象层
- 传统 PHP 项目的路由访问一般是直接访问对应文件
- 容易出洞
- GitHub 上居多
框架二开CMS:ThinkPHP、Laravel、Yii
- MVC 等标准化结构,多数不支持直接访问
- 内置功能:路由、ORM、模板引擎等
- 安全性:内置CSRF防护,XSS过滤等
- 社区支持:文档
- Gitee 上居多
自研框架系统
审计方法
黑白盒结合
黑盒:XSS、CSRF、越权、文件操作
白盒:SQL注入、SSRF、鉴权、XXE
前台漏洞挖掘
- 无需授权即可访问
- 后台文件/功能点,但存在鉴权但可绕过
寻找文件
非框架
寻找鉴权文件,关注哪些文件有包含鉴权文件
因为非框架类的路由通常是直接访问文件,所以可以考虑直接把所有 php 文件的文件名作为字典,丢 bp 或者 yakit 里面爆破看返回包