工具推荐:三款自动化代码审计工具
0×01 简介
工欲善其事,必先利其器。
在源代码的静态安全审计中,使用自动化工具代替人工漏洞挖掘,可以显著提高审计工作的效率。学会利用自动化代码审计工具,是每一个代码审计人员必备的能力。在学习PHP源代码审计的过程中,本人搜集使用了多款自动化工具。本文将简要介绍其中三款比较实用的工具:RIPS、VCG、Fortify SCA。
RIPS是一款开源的,具有较强漏洞挖掘能力的自动化代码审计工具。它使用PHP语言编写的,用于静态审计PHP代码的安全性。
VCG(VisualCodeGrepper),是一款支持C/C++、C#、VB、PHP、Java和PL/SQL的免费代码安全审计工具。它是一款基于字典的检测工具,功能简洁,易于使用。
Fortify SCA(Static Code Analyzer)是由Fortify软件公司(已被惠普收购)开发的一款商业版源代码审计工具。它使用独特的数据流分析技术,跨层跨语言地分析代码的漏洞产生,目前支持所有的主流开发语言。
本文结合一个应用实例的分析,介绍三款工具的使用方法以及特性。
0×02 RIPS
RIPS的主要功能特点如下:
1) 能够检测XSS、SQL注入、文件泄露、本地/远程文件包含、远程命令执行以及更多种类型的漏洞。
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工具的用户使用界面如下:
最上方是所有功能按钮菜单。
扫描任务结束后,菜单中会出现4个新的按钮,分别用来显示/隐藏4个扫描结果窗口:被扫描文件、用户输入点、扫描状态信息和被扫描函数。
现在以一个简单的实例来说明RIPS的使用方法,下载链接如下:
http://jsdx.down.chinaz.com/201603/webjoker_v2.2.0.zip
该PHP应用程序用来统计某网站的用户访问情况,登录到程序后台可以查看详细访问信息。将下载后的程序解压,在RIPS的“path/file”选项中填入程序解压目录,其它选项保持默认,点击“scan”按钮开始扫描任务。
扫描结束后,点击window菜单的4个按钮可以显示任务的详细情况。
正文部分显示扫描出漏洞的详细情况,点击“hide all”按钮可以查看/隐藏每个文件的详细漏洞结果列表。
让我们来看其中某一个漏洞详情,init.php源代码中存在SQL注入漏洞。
未过滤的$procookie参数直接被cheakcookie()函数调用。将光标悬停在cheakcookie()函数上方,即可显示cheakcookie()函数是如何定义的。
cheakcookie()函数在main.php文件中被定义,可以看出未被过滤的参数直接带入SQL语句被执行。
在漏洞的详细情况中显示$procookie参数由$_COOKIE[count_admin]传递,从init.php源代码的上下文可知,该参数是为了后台登录的cookie值校验。当count_admin值无法匹配数据库中的数据时,校验失败。
将POST包中Cookie中的count_admin改为“’ or 1=1 #”,即可绕过cookie校验,直接进入后台。
0×03 VCG
VCG是一个基于字典的自动化源代码扫描工具,可以由用户自定义需要扫描的数据。它可以对源代码中所有可能存在风险的函数和文本做一个快速的定位。
VCG的下载链接如下:
http://sourceforge.net/projects/visualcodegrepp/
双击下载的msi文件进行安装即可。
在Settings->Options->ConfigFiles选项中可以对每种语言的扫描配置文件进行编辑。
点击Settings选项,选择扫描的目标语言类型。点击File->New Target Directory选项,选择需要扫描的源代码文件存放目录,我们选择上文提到的应用实例存放目录。点击Scan->Full Scan选项,扫描开始。
扫描结果以图标的形式对被扫描文件的数据做一个统计,这个功能有点鸡肋。我们重点关注Results和Summary Table两个面板显示的内容。
Results面板显示所有存在安全风险的源码,右键点击可以对结果进行排序过滤。
Summary Table面板是对Results面板内容的总结展示。
VCG是通过匹配字典的方式查找可能存在风险的源代码片段。它的扫描原理较为简单,跟RIPS侧重点不同,并不深度发掘应用漏洞。VCG可以作为一个快速定位源代码风险函数的辅助工具使用。
0×04 Fortify SCA
Fortify SCA是一款商业软件,价格较为昂贵,因此我只找到了一个早期的版本进行试用。因为是商业软件,它有详细的使用文档,查阅非常方便。它支持一些IDE的插件功能,在安装的时候会有选项。
Fortify SCA的代码审计功能依赖于它的规则库文件,我们可以下载更新的规则库,然后放置在安装目录下相应的位置。bin文件放置在安装目录下Core\config\rules文件夹,xml文件放置在Core\config\ExternalMetadata文件夹(如果该文件夹没有则新建一个)。
打开AuditWorkbench,点击Start New Project->Advanced Scan选项就可以快速开始一个审计任务。选择需要审计的应用程序根目录,在Additional Options选项中选择使用的规则库,在Audit Guide提出的四个问题中选择对应的选项,点击Run Scan即可。
审计的结果由5个面板来呈现。
我们来看跟RIPS审计结果同样的SQL注入问题。点击左侧问题,源代码面板自动定位到出现问题的源代码行。
分析跟踪面板显示了详细的数据走向。从COOKIE读入->赋值给变量$procookie->带入cheakCookie()函数->赋值给变量$sql->带入mysqli_query()函数执行。
左侧每一个图标的含义在使用手册上可以查到。点击其中每一行,自动定位到对应的源代码行。同时在问题审计面板的Diagram中,有更为形象的数据流向图,直观展示了漏洞产生的原因。
审计面板的其他标签详细说明了漏洞信息,相对于RIPS这种开源软件,Fortify SCA审计结果展示更为详细。Tools->Generate Report功能还可以根据用户的需求生成审计结果的报告。
0×05 总结
VCG与其他两款工具不同,它是一个简洁的风险函数扫描定位工具,基于字典实现扫描功能。而RIPS和Fortify SCA则是静态深度分析源代码漏洞的利器,它们使用各自的技术对应用程序执行过程进行了追踪分析,做了深层次的漏洞挖掘工作。RIPS易于部署和使用,可以作为简单应用功能的自动化审计分析工具。而Fortify SCA功能更为强大,可以胜任较为复杂的应用自动化分析。在实际审计工作中可以结合使用两种工具,取长补短。
自动化的静态代码审计工具可以节省代码审计的人力成本,是提高代码审计效率的重要手段。然而需要注意的是,自动化工具并非是完全智能的,跟所有的漏洞扫描工具一样,误报率的存在仍然是一个现实的问题。因此,报表中显示的漏洞需要审计人员进一步确认是否真的存在。此外,自动化工具还有一个很大的局限性:它仅能够对常见的Web应用漏洞类型进行挖掘,对于Web 2.0时代兴起的业务逻辑漏洞挖掘可以说是束手无力。所以,对于有经验的代码审计人员来说,审计工具起到的仅仅是辅助作用,他们会在利用工具的基础上结合自己经验挖掘出更深层次的漏洞。
* 文章由istr33投递,转载请注明来自FreeBuf黑客与极客(FreeBuf.COM)
工具推荐:三款自动化代码审计工具相关推荐
- 推荐三款高级可视化工具,解决90%的数据可视化大屏需求
对于数据分析师来说,可视化可能是最能表现自己工作价值的一个途径,因为领导喜欢看这种直观的.炫酷的.具有科技感的可视化大屏,我们也能把数据分析结果直接展示给领导,比一份纸面报告要强不知多少倍! 那么领导 ...
- 推荐三款鲜为人知的gif制作工具,原来表情包是这样做的!
有时在看剧的时候很想把人物的表情截下来做gif表情包,可是不知道该怎么做,今天为大家推荐三款超小众的gif制作工具,每款都是精品! 蜜蜂剪辑 这是一款操作简单,功能丰富的视频剪辑软件,导入视频后可以进 ...
- 推荐几款 Redis 可视化工具(太厉害了)
目录 1.命令行 2.可视化工具分类 3. RedisDesktopManager 4.medis 5.AnotherRedisDesktopManager 6.FastoRedis 7.RedisP ...
- 三款记事本替代工具 哪个最好用?
三款记事本替代工具 哪个最好用? http://www.sina.com.cn 2008年08月27日 08:35 IT168.com Windows操作系统中自带了不少的实用小程序,但是它们 ...
- 测试眉形的有哪个软件_这五款自动化软件测试工具,你最喜欢用哪个?
对测试自动化的依赖性增加导致大量自动化软件测试工具的出现,使得很难确定哪些是最好的.为了帮助您完成自动化工作,我们根据自己和他人的经验创建了五大最佳自动化软件测试工具列表. 1. Selenium S ...
- 推荐几款HTML5开发工具
推荐几款HTML5开发工具 开发工具 1. Adobe Dreamweaver 2. DevExtreme 3. JetBrains WebStorm 4. Visual Studio Code 5. ...
- 程序员常用的三款在线作图工具
文章目录 1.draw.io 2.Lucidchart 3.PrcessOn 4.小结 参考文献 正所谓"一图胜千言",无论是商务办公.PPT 演示.学习总结.技术交流.项目开发, ...
- 推荐一款手机清理工具App悟空清理
推荐一款手机清理工具App悟空清理 1 介绍 悟空清理是一款完全免费的手机加速与存储空间清理工具软件,强力去除顽固垃圾,使手机运行更畅快. 2 特色功能介绍 悟空在手,清理无忧! 悟空清理,人人都在用 ...
- 推荐一款制作表格工具|Latex|Markdown|HTML|Text|Mediawiki
推荐一款制作表格工具|Latex|Markdown|HTML|Text|Mediawiki 我们在使用latex的时候,偶尔会用到latex画表格,我们可以使用代码模版去制作表格,只不过在添加元素 ...
- 三款Zookeeper可视化工具、ZooInspector、prettyZoo、ZooKeeperAssistant
三款Zookeeper可视化工具.ZooInspector.prettyZoo.ZooKeeperAssistant ①Zookeeper图形化工具:ZooInspector 1.下载完后,解压压缩包 ...
最新文章
- 软件开发代码中各国语言对应的缩写
- LeetCode-Balanced Binary Tree
- js:进一步关闭(范围:下一个)
- Visual Studio 2013开发 mini-filter driver step by step (5) - 读写文件
- linux比较两台时间,两台linux机器时间同步
- java解决Exception in thread “main“ java.lang.OutOfMemoryError: GC overhead limit exceeded
- Android UI开发第三十九篇——Tab界面实现汇总及比较
- 运行支持kubernetes原生调度的Spark程序
- 请问最早的计算机语言是什么,最早的计算机语言是什么?
- win10自带看图工具找不到了怎么办?
- 来自清华学子的一个自述---在树洞里
- QT QDataEdit
- 怎么关闭惠普暗影精灵OMEN 8的主机灯
- 键盘跟这台计算机连接的前一个usb,键盘跟这台计算机连接的前一个usb设备不正常...
- spring的依赖注入 -------基于注解方式
- 深入浅出聊聊Java函数式编程思想
- linux 论坛的搭建
- 局域网内的计算机拒绝访问,win10系统局域网拒绝访问的解决方法
- 论文阅读笔记:vTPM
- 海信linux系统信息,海信公交车数据采集系统 调试信息
热门文章
- android 开机动画制作
- 一台计算机固定一个ip地址,两台电脑如何分享一个固定的IP地址
- 应急卫星通信系统项目建设要求
- 最近写的一个书店项目
- 上市公司高管CEO员工数据大全 1991-2021年上市公司高管CEO教育背景学历结构薪酬职务任期年龄出生地 员工学历结构人员结构
- linux网络测速工具,linux 测试网速的相关工具
- win10 Delphi7 Help帮助文档的安装
- Nvidia 的新显卡架构 Maxwell 性能相比开普勒提升了多少?
- 数学概率之z=x+y和z=x-y和z=x/y的分布
- oa系统服务器数据库,oa数据库和服务器