1. 环境搭建
1. PHP代码审计
1.1 环境
Package Control(管理其他插件的插件)
CTags(为函数建立索引的插件)
PHPTidy(php代码整理的插件)
ConvertToUTF8(非UTF-8编码转换为UTF-8插件)
vMysqlMonitoring(一款mysql语句直接日志查询记录工具)
2. 把握大局
-
入口文件
index.php,admin.php文件一般是整个程序的入口,详细读一下index文件可以知道程序的架构,运行流程,包含哪些配置文件,包含哪些过滤文件以及包含哪些安全过滤文件,了解程序的业务逻辑。
-
配置文件
一般类似config.php等文件,保存一些数据库相关信息,程序的一些信息。先看看数据库编码,如果是gbk则可能存在宽字节注入。如果变量的值用双引号,则可能存在双引号解析代码执行的问题(php中双引号可以直接解析变量,而单引号不会)
-
过滤功能
通过详读公共函数文件和安全过滤文件等文件,清晰掌握用户输入的数据,哪些被过滤,哪些无过滤,在哪里被过滤了, 如何过滤,能否绕过过滤的数据 。过滤的方式是替换还是正则?有没有GPC,有没有使用addslasher()处理?
admin:后台管理目录
install:网站的安装目录,其中的install.sql为数据库的结构信息
sys:这个目录里面一般存放着配置信息文件和公共函数库,分别为config.php
和lib.php
user:这里面记录着用户的一些操作,如用户注册等
3. 审计方法
-
通读全文法
-
敏感函数参数回溯法
根据敏感函数,逆向追踪参数传递的过程
这个方法是最高效,最厂用的方法
大多数漏洞的产生是因为函数的使用不当产生的,只要找到这样的一些使用不当的函数,就可以快速挖掘想要的漏洞
-
定向功能分析法(*)
该方法主要是根据程序的业务逻辑来做审计的
首先是用浏览器逐个访问浏览,看看这套程序有哪些功能,根据相关功能大概推测存在哪些功能
常见功能漏洞(包括但不限于):
- 程序初始安装
- 站点信息泄露
- 文件上传
- 文件管理
- 登录认证
- 数据库备份恢复
- 找回密码
网友评论