代码审计方法与步骤

代码审计方法与步骤

网站审计要点 把握大局


  • 获得源码
    大多数PHP程序都是开源的、找到官网下载最新的源码包就好了站长之家,A5源码
  • 安装网站
    在本地搭建网站,一边审计一边调试。实时跟踪各种动态变化
  • 网站结构
    浏览源码文件夹,了解该程序的大致目录
  • 入口文件
    index.php、admin.php文件一般是整个程序的入口,详细读一下index文件可以知道程序的架构、运行流程、包含那些配置文件,包含哪些过滤文件以及包含那些安全过滤文件,了解程序的业务逻辑。
  • 配置文件
    一般类似config.php等文件,保存一些数据库相关信息、程序的一些信息。先看看数据库编码,如果是gbk则可能存在宽字节注入。如果变量的值用双引号、则可能存在双引号解析代码执行的问题。
  • 过滤功能
    通过详读 公共函数文件 和 安全过滤文件 等文件,清晰掌握用户输入的数据,哪些被过滤,哪些无过滤,在哪里被过滤了,如何过滤的,能否绕过过滤的数据。过滤的方式是替换还是正则?有没有GPC?有没有使用addslasher()处理?

网站目录结构
1. 主目录
1. 模块目录
1. 插件目录
1. 上传目录
1. 模板目录
1. 数据目录
1. 配置目录
1. 配置文件
1. 公共函数文件
1. 安全过滤文件
1. 数据库结构
1. 入口文件

审计方法

  • 通读全文法

    通读全文发作为一种最麻烦的方法也是最全面的审计方法。特别是针对大型程序,源码成千上万行,这要读到什么时候。但是该方法也是一种必要的方法。了解整个应用的业务逻辑,才能挖掘到更多更有价值的漏洞。
    这种方法一般是企业对自身产品的审计,当然,对于小型应用,未尝不可以读一读。前面的把把握大局也包含在通读全文法里面。

  • 敏感函数参数回溯法 (shell_exec)

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

  • 定向功能分析法 (安装问题)

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

    常见功能漏洞:(包括但不限于)
    1. 程序初始安装
    2. 站点信息泄漏
    3. 文件上传
    4. 文件管理
    5. 登陆认证
    6. 数据库备份恢复
    7. 找回密码
    8. 验证码

审计方法 - 个人审计方法总结

就我个人而言,审计方法是涵盖了以上三种方法。
1. 首先,通读全文法的一部分-把握大局。不管是什么程序,都要把握大局。
1. 其次,根据定向功能法针对每一项功能进行审计。
1. 最后,就是敏感函数参数回溯了

猜你喜欢

转载自blog.csdn.net/u011215939/article/details/79010174