最新消息:

软件开发与网络安全:代码审计之工具介绍

编程 koic_zhzz 153浏览 0评论

代码编辑器

不管是做开发还是代码审计,一款顺手的代码编辑器必不可少,代码编辑器从轻量级到功能复杂强大的完备型,从免费到商业,都有很多款供我们选择,我们可以根据需要选择最适合的一款,常用的轻量级代码编辑器有Nodepad++、Editplus、UltraEdit、PSPad、Vim、Gedit,等等,这些都是都是通用型文本编辑器,支持多种编程语言代码高亮,优点是操作简单,启动快并且对文本操作很方便。常用的完备型PHP开发软件也不少,这类编辑器主要的优点是功能全,对代码调试、代码提示等都支持得比较好,使我们在开发的时候bug更少,开发效率更高,常用的有Zend Studio、PhpStorm、PhpDesigner以及NetBeans等。

如果你用编辑器来做开发,并且代码量比较大,建议你使用Zend Studio。如果用来做代码审计或者少量代码的开发,建议使用Nodepad++这类轻量级文本编辑器。

  • Notepad++
软件开发与网络安全:代码审计之工具介绍-1

Notepad++是一套非常有特色的开源纯文字编辑器(许可证:GPL),运行于Windows系统,有完整的中文接口及支持多国语言撰写的功能(UTF8技术)。它的功能比Windows中的Notepad(记事本)强大,除了可以用来编辑一般的纯文字文件之外,也十分适合轻量开发的编辑器。Notepad++不仅有语法高亮显示功能,也有语法折叠功能,并且支持宏以及扩充基本功能的外挂模组。

Notepad++可以安装免费使用。支持如下语言的代码高亮显示:C、C++、Java、C#、XML、HTML、PHP、ASP、AutoIt、DOS批处理、CSS、ActionScript、Fortran、Gui4Cli、Haskell、JSP、Lisp、Lua、Matlab、NSIS、Objective-C、Pascal、Python、JavaScript等。

Notepad++拥有非常多强大的功能,特别是对文本操作非常灵活,这是笔者用得最多的一个文本编辑器,经常用来做一些有特定格式的文本批量替换、搜索、去重,等等。当然,它的强大不止如此。下面简单介绍下它的核心功能:

1)内置支持多达27种语法高亮显示(包括各种常见的源代码、脚本,能够很好地支持.nfo文件查看),还支持自定义语言。

2)可自动检测文件类型,根据关键字显示节点,节点可自由折叠/展开,还可显示缩进引导线,代码显示得很有层次感。

3)可打开双窗口,在分窗口中又可打开多个子窗口,显示比例。

4)提供了一些有用工具,如邻行互换位置、宏功能等。

5)可显示选中的文本的字节数(而不是一般编辑器所显示的字数,这在某些情况下很方便,比如软件本地化)。

6)正则匹配字符串及批量替换,也支持批量文件操作。

7)强大的插件机制,扩展了编辑能力,如Zen Coding。

  • UltraEdit
软件开发与网络安全:代码审计之工具介绍-2

UltraEdit(官网www.ultraedit.com)是一款功能强大的文本编辑器,不过它不是开源软件,官网售价79.95美元,可以完美运行在Windows、Linux以及Mac系统上。

这款编辑器不仅可以编辑文本,还支持十六进制查看以及编辑。可以直接在上面修改exe等文件

该编辑器支持将近二十种编程语言的语法高亮显示,可同时编辑多个文件,支持打开超过4GB以上的文件,支持多种编码转换、排序去重。通过配置使用的脚本运行程序路径,比如php.exe的路径,就可以在使用UltraEdit编辑PHP代码的时候直接执行代码。再结合它的代码补全功能,它也算得上一款不错的代码编辑器。要实现这个功能,首先在“高级→工具栏配置”中配置一些执行环境参数,在“命令行”的位置填入你的PHP文件路径,在“菜单项目名称”上写你想填的菜单栏名称,这里写的是php.exe,在“工作目录”中写上你的PHP exe路径,然后点击“确定”按钮,即可新建一个文件。在“高级”菜单里面点一下添加的php.exe(菜单栏名称)即可执行代码,

软件开发与网络安全:代码审计之工具介绍-3

另外一个比较好的功能是文件对比。这个功能也是经常会用到的,特别是我们在分析开源程序发布的官方补丁时,比如Phpcms某天发布了一个代码执行漏洞修补补丁,那么我们就可以在官网下载补丁文件,然后利用UltraEdit的文件对比功能来快速找到修改了哪段代码,修改的部分是不是成功修补了这个漏洞,或者未公开的漏洞。也可以根据这个方法快速找到漏洞在哪里。

这个功能可以在菜单栏“文件→比较文件”中找到,然后选择要对比的两个以上文件,勾选“比较选项”里面以忽略开头的所有选项,点击“比较”按钮即可,如果比较的文件有不同的地方,它会用红色标出,如图2-5所示。

软件开发与网络安全:代码审计之工具介绍-4

UltraEdit被公认为程序员必备的编辑器,是能够满足你一切编辑需要的编辑器。

  • Zend Studio

Zend Studio与PHP出自同一家公司,也可以说Zend Studio是PHP官方专门开发出来用来编写PHP代码的代码编辑器。Zend Studio是目前用户量最大的PHP开发工具,也是屡获大奖的专业PHP集成开发环境,具备功能强大的专业编辑工具和调试工具,支持PHP语法高亮显示,支持语法自动填充功能,支持书签功能,支持语法自动缩排和代码复制功能,内置一个强大的PHP代码调试工具,支持本地和远程两种调试模式,支持多种高级调试功能,可以完美运行在目前主流的Windows、Linux以及Mac操作系统上。

官网是zend.com/en/products/st

软件开发与网络安全:代码审计之工具介绍-5

Zend Studio最令笔者最喜欢的功能是代码提示功能,实际上,只要这个功能做得好的编辑器,笔者都非常喜欢,因为这非常人性化,可以让我们不用去记那么多函数,等你经常用的编程语言超过了6种以上,你就会深有感触。

另外Zend Studio在代码调试方面也非常强大,支持多种调试模式,利用它的调试功能,可以让我们非常快地发现bug位置,监控数据传递过程和函数运行情况

代码审计工具

代码审计工具是一类辅助我们做白盒测试的程序,它可以分很多类,例如安全性审计以及代码规范性审计,等等。当然,也可以按它能审计的编程语言分类,目前商业性的审计软件大多支持多种编程语言,也有个人或团队开发的免费开源审计软件,像笔者的“Seay源代码审计系统”就是开源程序。使用一款好的代码审计软件可以极大地降低审计成本,可以帮助审计师快速发现问题所在,同时也能降低审计门槛,但也不能过分依赖审计软件。目前常用的代码安全审计软件还有Fortify SCA、RIPS、FindBugs、Codescan等。下面介绍几款常用代码安全审计工具。

  • Seay源代码审计系统
软件开发与网络安全:代码审计之工具介绍-6

这是笔者基于C#语言开发的一款针对PHP代码安全性审计的系统,主要运行于Windows系统上。这款软件能够发现SQL注入、代码执行、命令执行、文件包含、文件上传、绕过转义防护、拒绝服务、XSS跨站、信息泄露、任意URL跳转等漏洞,基本上覆盖常见PHP漏洞。另外,在功能上,它支持一键审计、代码调试、函数定位、插件扩展、自定义规则配置、代码高亮、编码调试转换、数据库执行监控等数十项强大功能。

Seay源代码审计系统主要特点如下:

1)一键自动化白盒审计,新建项目后,在菜单栏中打开“自动审计”即可看到自动审计界面。点击“开始”按钮即可开始自动化审计。当发现可疑漏洞后,则会在下方列表框显示漏洞信息,双击漏洞项即可打开文件跳转到漏洞代码行并高亮显示漏洞代码行

2)代码调试,代码调试功能极大地方便了审计师在审计过程中测试代码。可以在编辑器中选中代码,然后点击右键选择“调试选中”即可将代码在调试界面打开。

3)正则编码,Seay源代码审计系统集成了实时正则调试功能,考虑到特殊字符无法直接在编辑框进行输入,在实时正则调试功能中还支持对字符串实时解码后调试。另外,支持MD5、URl、Base64、Hex、ASCII、Unicode等多种编码解码转换功能。

4)自定义插件及规则,Seay源代码审计系统支持插件扩展,并且插件的开发非常简单,只需要将插件的dll文件放入到安装目录下的plugins文件夹内即可自动加载插件。目前自带插件包括黑盒+白盒的信息泄露审计以及MySQL数据库执行监控。

除了上述功能外,它还支持自定义审计规则,在规则配置界面中即可添加或修改以及禁用、删除规则,还可针对审计过程做很多审计习惯优化,使得程序简单容易上手。

  • Fortify SCA

Fortify SCA是由惠普研发的一款商业软件产品,针对源代码进行专业的白盒安全审计,当然,它是收费的,而且这种商业软件一般都价格不菲。它有Windows、Linux、UNIX以及Mac版本,通过内置的五大主要分析引擎(数据流、控制流、语义、结构以及配置)对应用软件的源代码进行静态分析。关于这五大分析引擎的介绍如表所示。

软件开发与网络安全:代码审计之工具介绍-7

分析的过程中与它特有的软件安全漏洞规则集进行全面的匹配、搜索,在最终的漏洞结果中,包括详细的漏洞信息,以及漏洞相关的安全知识说明和修复意见。

  • RIPS

RIPS是一款基于PHP开发的针对PHP代码安全审计的软件。另外,它也是一款开源软件,由国外安全研究员Johannes Dahse开发,程序只有450KB,目前能下载到的最新版是0.54,笔者发现这款程序在2013年2月已经暂停更新。在写这段文字之前笔者特意读过它的源码,它最大的亮点在于调用了PHP内置解析器接口token_get_all,并且使用Parser做了语法分析,实现了跨文件的变量及函数追踪,扫描结果中非常直观地展示了漏洞形成及变量传递过程,误报率非常低。RIPS能够发现SQL注入、XSS跨站、文件包含、代码执行、文件读取等多种漏洞,支持多种样式的代码高亮。比较有意思的是,它还支持自动生成漏洞利用。

RIPS的使用非常简单,只需在主界面填入我们要扫描的路径,其余配置可根据自己的需要设置。完成设置后点击scan按钮即可开始自动审计。扫描结束后,程序会显示漏洞数量、漏洞比例等信息。查看漏洞详情时,只需点击提示漏洞处的“-”即可显示漏洞源代码和变量过程

漏洞验证辅助

  1. Burp Suite

Burp Suite是一款基于Java语言开发的安全测试工具,使用它需要安装Java运行环境。这款软件只有不到10MB的大小,但是其强大的功能受到几乎所有安全人员的青睐。Burp Suite主要分为Proxy、Spider、Scanner、Intruder、Repeater、Sequencer、Decoder和Comparer几个大模块。下面简单介绍下各个模块:

  • Proxy(代理)Burp Suite的代理抓包功能是这款软件的核心功能,当然也是使用最多的功能。使用这个代理,可以截获并修改从客户端到Web服务器的HTTP/HTTPS数据包。如果你只需要监听本地的数据,绑定地址的地方设置Loopback only即可。如果需要监听到本机的所有HTTPS/HTTP流量,则选中All interfaces。默认监听8080端口,在这里可以自行修改,点击OK按钮完成设置。
  • Spider(蜘蛛)用来分析网站目录结构,爬行速度非常不错,爬行结果会显示在Target模块中,支持自定义登录表单,让它自动提交数据包进行登录验证。
  • Scanner(扫描器)用于发现Web程序漏洞,它能扫描出SQL注入、XSS跨站、文件包含、HTTP头注入、源码泄露等多种漏洞。
  • Intruder(入侵)用来进行暴力破解和模糊测试。它最强大的地方在于高度兼容的自定义测试用例,通过Proxy功能抓取的数据包可以直接发送到Intruder,设置好测试参数和字典、线程等,即可开始漏洞测试。
  • Repeater(中继器)用于数据修改测试,通常在测试一些像支付等逻辑漏洞的时候经常需要用到它,只需要设置好代理拦截数据包,然后发送到Repeater模块即可对数据随意修改之后再发送。
  • Sequencer(会话)用于统计、分析会话中随机字符串的出现概率,从而分析Session、Token等存在的安全风险。
  • Decoder(解码)用于对字符串进行编码和解码,支持百分号、Base64、ASCII等多种编码转换,还支持Md5、sha等Hash算法。
  • Comparer(比较器)用于比较两个对象之间的差异性,支持text和hex形式的对比,通常用来比较两个request或者response数据包之间不同的地方,功能类似于网上常见的文本或者文件对比软件。

2. 浏览器扩展

  • HackBar

Hackbar是安全测试最常用的一款Firefox扩展,主要作用是非常方便安全人员对漏洞进行手工测试。它有三个输入框,分别是URL、Post数据以及Referer的参数设置,在输入框上部还提供了一个菜单栏,有各种各样编码、解码的小功能。

  • Firebug

Firebug是一款开发者工具,功能与火狐自带的开发者工具差不多,支持直接对网页HTML、CSS等元素进行编辑,其中的“网络”功能可以直接嗅探Request和Response数据包。通常在利用一些支付漏洞或者SQL注入漏洞的时候,我们只需要把鼠标指针定位到要修改的网页区域,右键点击“使用Firebug查看元素”即可对网页进行修改测试漏洞,

  • Live HTTP Headers

Live HTTP Headers主要的功能是抓取浏览器Request和Response数据包,也支持对Request数据进行修改后再次请求。不好的一点在于它只能抓取到HTTP的数据,对HTTPS无效,不过用来分析简单页面数据它已经足够

  • Modify

Modify是一款火狐扩展工具,顾名思义,这是一款用来修改的扩展,Modify仅支持添加和修改Request中HTTP Header的字段,而且它是做全局修改,即开启Modify之后,它会把浏览器对任何网站的所有请求中对应字段进行修改

3. 编码转换及加解密工具

  • Seay代码审计系统自带的编码功能

主界面菜单栏点击“正则编码”即可打开该功能,目前支持Md5算法、URL、Base64、Hex、ASCII、Unicode多种常用编码方式转换。另外还针对MySQL与MSSQL注入等做利用格式做针对性处理

  • Burp Suite上有一个Decoder功能

这个功能可对字符串进行编码和解码,支持百分号、Base64、ASCII等多种编码转换,还支持Md2、Md5、Sha系列等Hash算法。它的使用也非常简单,只需要输入要转换要的字符,选择需要转换成的编码即可

  • 超级加解密转换工具

另外介绍一个专门用来加解密的国产小工具,支持的算法比较多,独立的exe文件轻巧干净,在百度搜索“超级加解密转换工具”即可找到这款小软件,

软件开发与网络安全:代码审计之工具介绍-8

4. 正则调试工具

正则表达式是用自定义好的特定字符组合,在正则解析引擎内进行字符匹配。正则表达式有非常强的灵活性,在很多不同的场景都会用到正则表达式,比如验证注册用户名、邮箱等格式是否合格,再比如用来搜索文件内容,很大一部分的WAF(Web应用防火墙)的规则也是基于正则表达式,等等,可谓无处不在,然而如果正则表达式写得不严谨,就经常会导致各种bug出现,像防火墙被绕过,等等。

  • Seay代码审计系统中自带的正则调试功能

在Seay代码审计系统的菜单栏点击“正则编码”项,即可看到正则调试功能的主界面,它支持正则实时预览,即你在输入框修改正则表达式或者要匹配的源字符的时候,调试的结果会实时显示在下方的信息栏中,非常的直观和方便。

软件开发与网络安全:代码审计之工具介绍-9

除了实时调试,它还支持实时解码调试,一些特殊字符我们无法在输入框输入,但是可以利用编码处理后输入,只要设置解码选项,程序在用正则匹配前会先将源字符进行指定的编码转换后在进入正则引擎匹配,目前支持URL编码、Base64编码以及Hex编码。

软件开发与网络安全:代码审计之工具介绍-10
  • 灵者正则调试

这是一款从RenGod(灵者更名)中提取出来的绿色版正则调试工具,单文件的大小只有400多K,支持正则搜索、正则替换,也同样支持实时预览,在正则性能上也做的相当不错。

这款工具使用起来也非常简单,比如正则搜索功能的使用,将要搜索的文本放入到“要搜索的文本”输入框中,在“正则表达式”输入框中输入正则表达式,即可实时的在下方看到匹配上的结果。

5. SQL执行监控工具

SQL执行监控可以非常高效地帮助我们发现一些SQL注入和XSS等问题,帮助我们非常方便地观察到数据在Web程序与数据库中的交互过程,在做模糊测试时,只需利用模拟测试工具爬取页面的URL及表单,提交特定的参数如带单引号(‘)等,通过分析SQL执行日志则可以非常准确地判断出SQL注入漏洞是否存在,同样的注入<>”等符合也可以用来测试XSS漏洞。

开启MySQL的general_log来记录MySQL的历史执行语句:

set global general_log=on;
SET GLOBAL log_output='table';

另外一种开启方法是在MySQL配置文件中修改,在[mysqld]配置中加入如下代码:

general_log=ON
general_log_file={日志路径}/query.log

重启MySQL后可以看到所有的SQL查询语句都会记录在设置的这个文件中。

Seay代码审计系统支持快速过滤实时预览。只要点击下断,操作完之后点击更新即可看到这段时间内在MySQL执行过的所有SQL语句,如图所示:

软件开发与网络安全:代码审计之工具介绍-11

SQL Server执行监控也很简单,在SQL Server上自带有一个性能监控的工具SQL Server Profiler,在开始菜单里可以找到它,使用SQL Server Profiler可以将SQL执行过程保存到文件和数据库表,同时它还支持实时查看和搜索。

下面我们来看看怎么使用它,打开SQL Server Profiler后,在左上角的菜单栏里选择“文件→新建跟踪”,在常规栏输入跟踪名(随意)后,点击“事件选择”标签,我们只需要SQL执行过程,所以要过滤掉一些干扰的东西,比如登录、退出等,在事件选择里只保留TSQL下面的SQL:BatchCompleted事件,然后点击“运行”,如图所示:

软件开发与网络安全:代码审计之工具介绍-12

转载请注明:落伍老站长 » 软件开发与网络安全:代码审计之工具介绍

发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址