前期准备
源码,环境
网站目录结构
- 主目录
- 模块目录
- 插件目录
- 上传目录
- 模板目录
- 数据目录
- 配置目录
- 配置文件:一般类似config.php等文件。保存一些数据库相关信息、程序的一些信息。先看看数据库编码,如果是gbk则可能存在宽字节注入。如果变量的值用双引号、则可能存在双引号解析代码执行的问题。
- 公共函数文件
- 安全过滤文件
- Index入口文件:Index文件一般是整个程序的入口,详细读一下index文件可以知道程序的架构、运行流程、包含那些配置文件,包含哪些过滤文件以及包含那些安全过滤文件,了解程序的业务逻辑。
看输入
用户输入哪些被过滤,哪些无过滤,以及过滤方式是怎样的
敏感函数参数回溯
大多数漏洞产生的原因是由于函数的使用不当造成的。所以,根据敏感函数来逆向追踪参数的传递过程是比较有用的一种审计方法。
推荐工具:Seay源代码审计系统
主要是利用正则匹配一些高危函数、关键函数以及敏感关键字。
然后分析判断敏感函数的上下文,追踪参数源头。
尝试控制可控的参数变量。
功能分析
首先是用浏览器逐个访问浏览,看看这套程序有那些功能。
根据相关功能,大概推测可能存在那些漏洞。
常见功能漏洞:
- 程序初始安装
- 绕过install.lock逻辑
- 站点信息泄漏
- 物理路径
- 服务器相关信息
- 组建相关信息
- 文件上传
- 任意文件上传漏洞
- 文件名注入
- 文件管理
- 任意文件操作
- 任意文件读取
- 跨目录浏览
- 文件名XSS
- 任意文件覆盖
- 登陆认证
- Cookie算法破解
- 绕过认证
- 任意用户登陆
- 万能密码
- 数据库备份恢复
- 下载数据库备份文件
- 执行SQL语句
- Sql导出一句话
- 找回密码
- Token破解
- 重置管理员账户
- 验证码
- 验证码爆破
- 验证码绕过