工具推荐:三款自动化代码审计工具

0×01  简介php

工欲善其事,必先利其器。mysql

在源代码的静态安全审计中,使用自动化工具代替人工漏洞挖掘,能够显著提升审计工做的效率。学会利用自动化代码审计工具,是每个代码审计人员必备的能力。在学习PHP源代码审计的过程当中,本人搜集使用了多款自动化工具。本文将简要介绍其中三款比较实用的工具:RIPS、VCG、Fortify SCA。web

RIPS是一款开源的,具备较强漏洞挖掘能力的自动化代码审计工具。它使用PHP语言编写的,用于静态审计PHP代码的安全性。sql

VCG(VisualCodeGrepper),是一款支持C/C++、C#、VB、PHP、Java和PL/SQL的免费代码安全审计工具。它是一款基于字典的检测工具,功能简洁,易于使用。数据库

Fortify SCA(Static Code Analyzer)是由Fortify软件公司(已被惠普收购)开发的一款商业版源代码审计工具。它使用独特的数据流分析技术,跨层跨语言地分析代码的漏洞产生,目前支持全部的主流开发语言。浏览器

本文结合一个应用实例的分析,介绍三款工具的使用方法以及特性。安全

0×02  RIPS服务器

RIPS的主要功能特色以下:cookie

1)      可以检测XSS、SQL注入、文件泄露、本地/远程文件包含、远程命令执行以及更多种类型的漏洞。ide

2)      有5种级别选项用于显示以及辅助调试扫描结果。

3)      标记存在漏洞的代码行。

4)      对变量高亮显示。

5)      在用户定义函数上悬停光标能够显示函数调用。

6)      在函数定义和调用之间灵活跳转。

7)      详细列出全部用户定义函数(包括定义和调用)、全部程序入口点(用户输入)和全部扫描过文件(包括include的文件)。

8)      以可视化的图表展现源代码文件、包含文件、函数及其调用。

9)      仅用几个鼠标点击就可使用CURL建立针对检测到漏洞的EXP实例。

10)   详细列出每一个漏洞的描述、举例、PoC、补丁和安全函数。

11)   7种不一样的语法高亮显示模式。

12)   使用自顶向下或者自底向上的方式追溯显示扫描结果。

13)   一个支持PHP的本地服务器和浏览器便可知足使用需求。

14)   正则搜索功能。

最新版本的RIPS是0.55,下载连接以下:

https://sourceforge.net/projects/rips-scanner/

解压下载的zip文件到Web服务器网站目录下便可。在浏览器中输入Web服务器地址和对应目录,RIPS工具的用户使用界面以下:

14603368358218.png!small

最上方是全部功能按钮菜单。

14603368689686.png!small

扫描任务结束后,菜单中会出现4个新的按钮,分别用来显示/隐藏4个扫描结果窗口:被扫描文件、用户输入点、扫描状态信息和被扫描函数。

14603368908669.png!small

如今以一个简单的实例来讲明RIPS的使用方法,下载连接以下:

http://jsdx.down.chinaz.com/201603/webjoker_v2.2.0.zip

该PHP应用程序用来统计某网站的用户访问状况,登陆到程序后台能够查看详细访问信息。将下载后的程序解压,在RIPS的“path/file”选项中填入程序解压目录,其它选项保持默认,点击“scan”按钮开始扫描任务。

Clipboard Image.png

扫描结束后,点击window菜单的4个按钮能够显示任务的详细状况。

Clipboard Image.png

正文部分显示扫描出漏洞的详细状况,点击“hide all”按钮能够查看/隐藏每一个文件的详细漏洞结果列表。

Clipboard Image.png

让咱们来看其中某一个漏洞详情,init.php源代码中存在SQL注入漏洞。

Clipboard Image.png

未过滤的$procookie参数直接被cheakcookie()函数调用。将光标悬停在cheakcookie()函数上方,便可显示cheakcookie()函数是如何定义的。

Clipboard Image.png

cheakcookie()函数在main.php文件中被定义,能够看出未被过滤的参数直接带入SQL语句被执行。

在漏洞的详细状况中显示$procookie参数由$_COOKIE[count_admin]传递,从init.php源代码的上下文可知,该参数是为了后台登陆的cookie值校验。当count_admin值没法匹配数据库中的数据时,校验失败。

Clipboard Image.png

将POST包中Cookie中的count_admin改成“’ or 1=1 #”,便可绕过cookie校验,直接进入后台。

Clipboard Image.png

 

0×03  VCG

VCG是一个基于字典的自动化源代码扫描工具,能够由用户自定义须要扫描的数据。它能够对源代码中全部可能存在风险的函数和文本作一个快速的定位。

VCG的下载连接以下:

http://sourceforge.net/projects/visualcodegrepp/

双击下载的msi文件进行安装便可。

Clipboard Image.png

在Settings->Options->ConfigFiles选项中能够对每种语言的扫描配置文件进行编辑。

Clipboard Image.png

点击Settings选项,选择扫描的目标语言类型。点击File->New Target Directory选项,选择须要扫描的源代码文件存放目录,咱们选择上文提到的应用实例存放目录。点击Scan->Full Scan选项,扫描开始。

Clipboard Image.png

扫描结果以图标的形式对被扫描文件的数据作一个统计,这个功能有点鸡肋。咱们重点关注Results和Summary Table两个面板显示的内容。

Clipboard Image.png

Results面板显示全部存在安全风险的源码,右键点击能够对结果进行排序过滤。

Clipboard Image.png

Summary Table面板是对Results面板内容的总结展现。

VCG是经过匹配字典的方式查找可能存在风险的源代码片断。它的扫描原理较为简单,跟RIPS侧重点不一样,并不深度发掘应用漏洞。VCG能够做为一个快速定位源代码风险函数的辅助工具使用。

0×04  Fortify SCA

Fortify SCA是一款商业软件,价格较为昂贵,所以我只找到了一个早期的版本进行试用。由于是商业软件,它有详细的使用文档,查阅很是方便。它支持一些IDE的插件功能,在安装的时候会有选项。

Clipboard Image.png

Fortify SCA的代码审计功能依赖于它的规则库文件,咱们能够下载更新的规则库,而后放置在安装目录下相应的位置。bin文件放置在安装目录下Core\config\rules文件夹,xml文件放置在Core\config\ExternalMetadata文件夹(若是该文件夹没有则新建一个)。

打开AuditWorkbench,点击Start New Project->Advanced Scan选项就能够快速开始一个审计任务。选择须要审计的应用程序根目录,在Additional Options选项中选择使用的规则库,在Audit Guide提出的四个问题中选择对应的选项,点击Run Scan便可。

Clipboard Image.png

Clipboard Image.png

审计的结果由5个面板来呈现。

Clipboard Image.png

咱们来看跟RIPS审计结果一样的SQL注入问题。点击左侧问题,源代码面板自动定位到出现问题的源代码行。

Clipboard Image.png

分析跟踪面板显示了详细的数据走向。从COOKIE读入->赋值给变量$procookie->带入cheakCookie()函数->赋值给变量$sql->带入mysqli_query()函数执行。

Clipboard Image.png

左侧每个图标的含义在使用手册上能够查到。点击其中每一行,自动定位到对应的源代码行。同时在问题审计面板的Diagram中,有更为形象的数据流向图,直观展现了漏洞产生的缘由。

Clipboard Image.png

审计面板的其余标签详细说明了漏洞信息,相对于RIPS这种开源软件,Fortify SCA审计结果展现更为详细。Tools->Generate Report功能还能够根据用户的需求生成审计结果的报告。

0×05  总结

VCG与其余两款工具不一样,它是一个简洁的风险函数扫描定位工具,基于字典实现扫描功能。而RIPS和Fortify SCA则是静态深度分析源代码漏洞的利器,它们使用各自的技术对应用程序执行过程进行了追踪分析,作了深层次的漏洞挖掘工做。RIPS易于部署和使用,能够做为简单应用功能的自动化审计分析工具。而Fortify SCA功能更为强大,能够胜任较为复杂的应用自动化分析。在实际审计工做中能够结合使用两种工具,取长补短。

自动化的静态代码审计工具能够节省代码审计的人力成本,是提升代码审计效率的重要手段。然而须要注意的是,自动化工具并不是是彻底智能的,跟全部的漏洞扫描工具同样,误报率的存在仍然是一个现实的问题。所以,报表中显示的漏洞须要审计人员进一步确认是否真的存在。此外,自动化工具还有一个很大的局限性:它仅可以对常见的Web应用漏洞类型进行挖掘,对于Web 2.0时代兴起的业务逻辑漏洞挖掘能够说是束手无力。因此,对于有经验的代码审计人员来讲,审计工具起到的仅仅是辅助做用,他们会在利用工具的基础上结合本身经验挖掘出更深层次的漏洞。

本文来自来自FreeBuf***与极客(FreeBuf.COM)

相关文章
相关标签/搜索