代码审计方法与步骤

前期准备:
1.获取源码
2.安装网站
3.浏览网站结构

掌握大局:
入口文件
index.php、admin.php文件一般是整个程序的入口,详细读一下index文件可以知道程序的架构、运行流程、包含那些配置文件,包含哪些过滤文件以及包含那些安全过滤文件,了解程序的业务逻辑

配置文件
一般类似config.php等文件,保存一些数据库相关信息、程序的一些信息。先看看数据库编码,如果是gbk则可能存在宽字节注入。如果变量的值用双引号、则可能存在双引号解析代码执行的问题。

过滤功能
通过详读 公共函数文件 和 安全过滤文件 等文件,清晰掌握用户输入的数据,哪些被过滤,哪些无过滤,在哪里被过滤了,如何过滤的,能否绕过过滤的数据。过滤的方式是替换还是正则?有没有GPC?有没有使用addslasher()处理?

审计方法:
1.通读全文法
通读全文发作为一种最麻烦的方法也是最全面的审计方法。特别是针对大型程序,源码成千上万行,这要读到什么时候。但是该方法也是一种必要的方法。了解整个应用的业务逻辑,才能挖掘到更多更有价值的漏洞。

2.敏感函数参数回溯法
根据敏感函数,逆向追踪参数传递的过程。
这个方法是最高效,最常用的方法。大多数漏洞的产生是因为函数的使用不当导致的。我们只要找到这样的一些使用不当的函数,就可以快速挖掘想要的漏洞。
这方面,Seay法师大大有一款神器Seay源代码审计系统,主要是利用正则匹配一些高危函数、关键函数以及敏感关键字。 然后,我们就可以分析判断敏感函数的上下文,追踪参数源头。

3.定向功能分析法
该方法主要是根据程序的业务逻辑来说审计的。
首先是用浏览器逐个访问浏览,看看这套程序有那些功能。根据相关功能,大概推测可能存在那些漏洞。

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

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

主线:把握大局 ——— 定向功能 ——— 敏感参数函数回溯

参考资料:i春秋课程-代码审计方法与步骤

你可能感兴趣的:(安全)