源码
做白盒审计当然就必须的拥有源码。
获得源码的渠道很多、开源的都可以官方下载、某云、某mycodes……
环境
审计代码并不只是简单地阅读代码、还需要搭建环境进行实际测试
当然,你能用大脑推算运行结果的话就当我没说。
有些时候、可以是单一环境、但有些特定的漏洞需要一来不同的操作系统、不同的web服务软件的版本。
最好准备不同的环境,用虚拟机挂着几个环境就好。
同时phpstudy这个环境包也支持一键切换程序版本。
安装
搭建好本地环境、配置好数据库等相关设置。
初始化安装程序。
用submlie text打开源码文件夹
网站目录结构
主目录
模块目录
插件目录
上传目录
模板目录
数据目录
配置目录
配置文件
公共函数文件
安全过滤文件
Index入口文件
大概看一下、对整套源码程序有一个了解。
Index文件
Index文件一般是整个程序的入口,详细读一下index文件可以知道程序的架构、运行流程、包含那些配置文件,包含哪些过滤文件以及包含那些安全过滤文件,了解程序的业务逻辑。
配置文件
一般类似config.php等文件
保存一些数据库相关信息、程序的一些信息。
先看看数据库编码,如果是gbk则可能存在宽字节注入。
如果变量的值用双引号、则可能存在双引号解析代码执行的问题。
来源数据的处理
然后、通过详读 公共函数文件 和 安全过滤文件 等文件,清晰掌握用户输入的数据,哪些被过滤,哪些无过滤,在哪里被过滤了,如何过滤的,能否绕过过滤的数据。
过滤的方式是替换还是正则?有没有GPC?有没有使用addslasher()处理?
敏感函数参数回溯
大多数漏洞产生的原因是由于函数的使用不当造成的。所以,根据敏感函数来逆向追踪参数的传递过程是比较有用的一种审计方法。
略懒的我一般直接用Seay法师大大的神器 Seay源代码审计系统 ,相关用法我就不说了。
主要是利用正则匹配一些高危函数、关键函数以及敏感关键字。
然后分析判断敏感函数的上下文,追踪参数源头。
尝试控制可控的参数变量。
定向功能分析法
该方法主要是根据程序的业务逻辑来说审计的。
首先是用浏览器逐个访问浏览,看看这套程序有那些功能。
根据相关功能,大概推测可能存在那些漏洞。
常见功能漏洞:
程序初始安装
- 绕过install.lock逻辑
站点信息泄漏
- 物理路径
- 服务器相关信息
- 组建相关信息
文件上传
- 任意文件上传漏洞
- 文件名注入
文件管理
- 任意文件操作
- 任意文件读取
- 跨目录浏览
- 文件名XSS
- 任意文件覆盖
登陆认证
- Cookie算法破解
- 绕过认证
- 任意用户登陆
- 万能密码
数据库备份恢复
- 下载数据库备份文件
- 执行SQL语句
- Sql导出一句话
找回密码
- Token破解
- 重置管理员账户
验证码
- 验证码爆破
- 验证码绕过
转载请注明:Adminxe's Blog » PHP基础代码审计 3 常用审计步骤