f1ower's Blog

邪法面前,我亦无畏

PHP审计入门总结-思路&方法

最近在看Virink师傅的代码审计入门,做笔记;


代码审计不是蛮干,需要有一个非常清晰的逻辑和思路。


代码审计的一般思路:

首先拿到一套源代码,通过分析文件夹命名与文件夹里面的文件,可以大致清晰其程序目录。

对于一些重要的文件进行标记:

  1. 入口文件:一般为:index.php/admin.php,通过分析这样的入口文件,可以知道程序的架构、运行流程、包含的配置文件,包含的安全过滤文件,了解该程序的业务逻辑。

  2. 配置文件:一般为:config.php,保存了一些数据库相关信息、程序的一些信息。

  3. 过滤功能:公共函数文件与安全过滤文件,需要进行阅读,这样可以清晰的掌握用户输入的数据,哪些被过滤?哪些无过滤?在那里被过滤?如何过滤?能够绕过过滤?过滤的方式是替换还是正则?有没有GPC?有没有使用addslasher()处理?


代码审计的一般方法:

  1. 通读全文法:直接从入门文件开始通读全文,对于各个功能进行审计,最最全面,最最完整。但是难度最高,不仅仅是因为整体的逻辑和代码量限制。

  2. 敏感函数参数回溯法(shell_exec):根据敏感函数,逆向追踪函数传递的过程。这个方法是最高效的,也是最最常用的方法,并一般与静态代码审计扫描器配合。

  3. 定向功能分析法(安装问题):大神使用,针对不同的业务逻辑和业务功能进行审计,比如:程序初始安装、站点信息泄露、文件上传、文件管理、登录认证、数据库备份恢复、找回密码、验证码等等...


Tips:

把握大局->定向功能->敏感函数参数回溯