审计方法与步骤

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.phplib.php
user:这里面记录着用户的一些操作,如用户注册等

3. 审计方法

  • 通读全文法
  • 敏感函数参数回溯法

根据敏感函数,逆向追踪参数传递的过程
这个方法是最高效,最厂用的方法
大多数漏洞的产生是因为函数的使用不当产生的,只要找到这样的一些使用不当的函数,就可以快速挖掘想要的漏洞

  • 定向功能分析法(*)

该方法主要是根据程序的业务逻辑来做审计的
首先是用浏览器逐个访问浏览,看看这套程序有哪些功能,根据相关功能大概推测存在哪些功能

常见功能漏洞(包括但不限于):

  1. 程序初始安装
  2. 站点信息泄露
  3. 文件上传
  4. 文件管理
  5. 登录认证
  6. 数据库备份恢复
  7. 找回密码

你可能感兴趣的:(审计方法与步骤)