搜尋
首頁後端開發php教程工具推荐:三款自动化代码审计工具

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)

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
PHP記錄:PHP日誌分析的最佳實踐PHP記錄:PHP日誌分析的最佳實踐Mar 10, 2025 pm 02:32 PM

PHP日誌記錄對於監視和調試Web應用程序以及捕獲關鍵事件,錯誤和運行時行為至關重要。它為系統性能提供了寶貴的見解,有助於識別問題並支持更快的故障排除

在Laravel中使用Flash會話數據在Laravel中使用Flash會話數據Mar 12, 2025 pm 05:08 PM

Laravel使用其直觀的閃存方法簡化了處理臨時會話數據。這非常適合在您的應用程序中顯示簡短的消息,警報或通知。 默認情況下,數據僅針對後續請求: $請求 -

php中的捲曲:如何在REST API中使用PHP捲曲擴展php中的捲曲:如何在REST API中使用PHP捲曲擴展Mar 14, 2025 am 11:42 AM

PHP客戶端URL(curl)擴展是開發人員的強大工具,可以與遠程服務器和REST API無縫交互。通過利用Libcurl(備受尊敬的多協議文件傳輸庫),PHP curl促進了有效的執行

簡化的HTTP響應在Laravel測試中模擬了簡化的HTTP響應在Laravel測試中模擬了Mar 12, 2025 pm 05:09 PM

Laravel 提供简洁的 HTTP 响应模拟语法,简化了 HTTP 交互测试。这种方法显著减少了代码冗余,同时使您的测试模拟更直观。 基本实现提供了多种响应类型快捷方式: use Illuminate\Support\Facades\Http; Http::fake([ 'google.com' => 'Hello World', 'github.com' => ['foo' => 'bar'], 'forge.laravel.com' =>

在Codecanyon上的12個最佳PHP聊天腳本在Codecanyon上的12個最佳PHP聊天腳本Mar 13, 2025 pm 12:08 PM

您是否想為客戶最緊迫的問題提供實時的即時解決方案? 實時聊天使您可以與客戶進行實時對話,並立即解決他們的問題。它允許您為您的自定義提供更快的服務

解釋PHP中晚期靜態結合的概念。解釋PHP中晚期靜態結合的概念。Mar 21, 2025 pm 01:33 PM

文章討論了PHP 5.3中介紹的PHP中的晚期靜態結合(LSB),允許靜態方法的運行時間分辨率調用以更靈活的繼承。 LSB的實用應用和潛在的觸摸

自定義/擴展框架:如何添加自定義功能。自定義/擴展框架:如何添加自定義功能。Mar 28, 2025 pm 05:12 PM

本文討論了將自定義功能添加到框架上,專注於理解體系結構,識別擴展點以及集成和調試的最佳實踐。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

將Eclipse與SAP NetWeaver應用伺服器整合。

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

WebStorm Mac版

WebStorm Mac版

好用的JavaScript開發工具

SecLists

SecLists

SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。