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

代码审计方法与准备

作者: 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/

相关文章

  • 代码审计方法与准备

    代码审计环境准备 本地测试环境:php + mysql 环境。如:phpstudy,wamp等文档编辑器:subl...

  • 代码审计的方法

    1.通读全文法 2.函数回溯法(工具审计) 3.定向功能分析法 具体 1.通读全文法: 通读全文:顾名思义,就是通...

  • 🎐代码审计

    ?源代码审计分为白盒、黑盒、灰盒 白盒:拥有源代码进行审计黑盒:不知道源代码的情况下进行渗透审计灰盒:介于黑盒与白...

  • 【代码审计】PHP代码审计

    1. 概述 代码审核,是对应用程序源代码进行系统性检查的工作。它的目的是为了找到并且修复应用程序在开发阶段存在的一...

  • 代码审计

    代码审计工具 1、三款自动化代码审计工具教程2、seay源代码审计系统 PHP核心配置详解 注意PHP各个版本中配...

  • 2021-12-06-java代码审计初步认知

    一、代码审计的定义代码审计是一种以发现安全漏洞,程序错误和程序违规为目标的源代码分析技能。 二、代码审计需要的能力...

  • PHP 漏洞与代码审计

    作者:lanz 博客链接:http://netsecurity.51cto.com/art/201303/3862...

  • 代码审计之YIXUNCMS

    在代码审计中,看懂有问题的代码其实很简单,难的是如何从一套源码中找到那个有问题的点。每个人都有一套自己的审计方法,...

  • 审计方法与步骤

    1. 环境搭建 1. PHP代码审计 1.1 环境 Package Control(管理其他插件的插件) CTag...

  • 代码审计初尝

    @(代码审计学习笔记) [TOC] 代码审计初尝 [图片上传失败...(image-f76662-15823837...

网友评论

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

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