美文网首页菜鸟追梦
代码审计方法与准备

代码审计方法与准备

作者: xaviershun | 来源:发表于2017-09-19 15:14 被阅读230次

    代码审计环境准备

    本地测试环境:php + mysql 环境。如:phpstudy,wamp等
    文档编辑器:sublime text 2, UltraEdit, notepad++
    Sublime Text 2 还需要一些插件来辅助审计:
    Package Control,CTags,PHPTidy ,Alignment,ConvertToUTF8
    浏览器:Firefox
    Firefox 插件:FoxyProxy、Hackbar、ModifyHeaders、Use Agent Switcher、Firebug
    其他工具:Burp Suit、XDebug、vMysqlMonitoring、WEB编码转换工具
    vMysqlMonitoring:提取自Seay法师的审计工具,一款mysql语句直接日志记录工具

    审计前的准备和方法

    基础准备

    • 获取源码:大多数PHP程序都是开源的、找到官网下载最新的源码包即可。
    • 安装网站:在本地搭建网站,一边审计一边调试。实时跟踪各种动态变化

    把握大局

    • 网站结构:浏览源码文件夹,了解程序的大致目录
    • 入口文件: index.php、admin.php 文件一般是整个程序的入口,从中可以知道:
      • 程序的架构
      • 运行流程
      • 包含哪些配置文件
      • 包含哪些过滤文件和安全过滤文件
      • 了解程序的业务逻辑
    • 配置文件:一般类似config.php 等文件,保存一些数据库相关信息、程序的一些信息。
      • 先看数据库编码,如果是gbk可能存在宽字节注入。
      • 若变量的值用双引号、则可能存在双引号解析代码执行的问题
    • 过滤功能:通过详读公共函数文件和安全过滤文件等文件,清晰掌握:
      • 用户输入的数据,哪些被过滤,哪些无过滤如何过滤。
      • 在哪里被过滤了?
      • 如何过滤,过滤的方式是替换还是正则,有没有GPC,有没有使用 addslasher()处理?
      • 能否绕过过滤的数据

    把握大局-网站结构

    网站目录结构:

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

    审计方法:

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

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

    定向功能分析法:根据程序的业务逻辑审计。
    首先是用浏览器逐个访问浏览,看看这套程序有那些功能。根据相关功能,大概推测可能存在那些漏洞。
    常见功能漏洞:包括但不限于:

    • 程序初始安装
    • 站点信息泄露
    • 文件上传
    • 文件管理
    • 登录认证
    • 数据库备份恢复
    • 找回密码
    • 验证码

    总结:
    实际应用中,通常是一套组合拳,要灵活应用。一般先把握大局,考虑是否通读全文,再根据定向功能法针对每一项功能进行审计;最后,敏感函数参数回溯。

    代码审计推荐

    i春秋平台 Virink老师的《PHP代码审计实战》课程
    Seay法师的《代码审计:企业级web代码安全架构》,法师的博客:http://www.cnseay.com/

    相关文章

      网友评论

        本文标题:代码审计方法与准备

        本文链接:https://www.haomeiwen.com/subject/fzvvsxtx.html