1 审计工具Fortity信息
Fortify 全名为 Fortify SCA(Source Code Analysis),Fortity的核心功能是通过静态代码分析技术,帮助开发人员在软件开发过程中发现潜在的安全漏洞。Fortity支持多种编程语言,包括 Java、C/C++、Python、PHP 等。
Fortity工具主要功能总结见表1-1。
功能类别 | Fortify功能描述 |
多语言支持 | 支持 Java、C/C++、Python、JavaScript、PHP 等多种主流编程语言,满足不同开发需求。 |
漏洞检测范围 | 能够检测超过 961 个漏洞类别,覆盖 OWASP Top 10、CWE/SANS Top 25 等安全标准。 |
快速扫描 | 1 分钟可扫描约 1 万行代码,适合大规模代码库的快速分析。 |
精准定位 | 通过数据流、语义、结构、控制流、配置流五大分析引擎,精准定位漏洞产生的路径。 |
自定义规则 | 用户可编写自定义规则库,适应特定开发需求,提高分析的针对性。 |
集成能力 | 支持与主流 IDE(如 Eclipse、IntelliJ IDEA)、构建工具(如 Maven、Gradle)以及缺陷管理平台(如 Jira)集成。 |
详细报告 | 提供详细的漏洞报告,包括漏洞描述、修复建议等,帮助开发人员快速理解和修复问题。 |
表1-1 Fortity软件整体介绍
2 Fortity软件安装
2.1系统环境
Fortity源码审计系统对计算机系统环境及配置有一定要求,本次实验环境及计算机配置如图所示。
图2-1 系统环境信息
2.2安装Fortity软件
访问Fortity下载链接获取安装包,Fortity软件的下载地址为:https://jayden.matchcess.com/2021/02/23/java/security/Fortify%20SCA%E6%BA%90%E4%BB%A3%E7%A0%81%E6%89%AB%E6%8F%8F%E5%B7%A5%E5%85%B7/
图2-2 下载文件
将下载得到的压缩包解压至本地指定目录,确保下载的所有文件完整之后完成解压,解压安装包后,双击 Fortify_SCA_and_Apps_20.1.1_windows_x64.exe文件进行安装。
图2-3 解压后的源文件
进入Fortity安装程序,点击Next
图2-4 安装界面
阅读并且点击同意软件使用协议,点击Next
图2-5 安装软件协议界面
选择软件安装路径,安装路径可以进行自定义选择,完成后点击Next。
图2-6 安装选择路径界面
选择安装软件的具体插件,可根据实验与使用的具体需求进行勾选,完成后点击Next。
图2-7 安装插件界面
软件License路径选择,默认即可,完成后点击Next。
图2-8 安装许可证选择路径界面
设置更新服务器相关信息,无需更改,点击Next。
图2-9 更新服务器配置界面
SCA Migration选项为No,点击Next
图2-10 SCA Migration界面
Samples选修选择Yes即可,点击Next。
图2-11 Samples界面
设置均完成准备后,点击Next。
图2-12 安装界面
等待安装,完成后,点击Next。
图2-13 安装界面
安装完成,点击Finish。
图2-14 完成安装界面
将破解文件拖动至安装路径,点击Next。
图2-15 破解操作
点击安装目录下/bin/scapostinstall.cmd,按照提示依次输入:2、1、1、q切换为中文。
图2-16 Cmd界面
在文件安装目录在找到Fortify.license,修改时间2025-02-04为其他距今较远的时间即可。
图2-17 License修改与替换
时间完成替换后如下图显示,即完成破解。
图2-18 License完成替换
在安装目录下点击auditworkbench.cmd,等待软件运行。
图2-19 运行界面
Fortify完成运行进入主界面。
图2-20 Fortify主界面
在options中找到对应选项进行简体中文进行切换。
图2-21 更新文本界面
等待后完成替换,扫描结果中由中文替换。
图2-22 中文文本
此时完成Fortify安装,并且相关设置全部完成。
图2-23 Fortify软件界面
3 Fortity软件使用
3.1 DVWA靶场环境
DVWA (Damn Vulnerable Web Application) 是一个用于渗透测试和漏洞利用的 Web 应用程序,包含了多种常见的 Web 安全漏洞,适合渗透测试人员进行漏洞分析与利用练习,实验中搭建用作Fority工具进行代码审计的对象。
完成下载后将 DVWA 解压到 phpStudy 的安装目录 phpStudy_pro/WWW/文件目录下 ,路径为安装路径下的phpstudy\phpstudy_pro\WWW。
图3-1 DVWA文件夹
找到 DVWA-master 文件目录下的 config 配置文件,路径为安装路径下的phpstudy_pro\WWW\DVWA-master\config
将 config.inc.php.dist 复制到原路径并重新命令为 config.inc.php
图3-2 DVWA文件夹config修改
用记事本打开重命名后的 config.inc.php 文件。将数据库的用户名与密码都修改为“dvwadvwa”。保存文件后关闭即可。
图3-3 config修改数据库密码
小皮面板打开网站,并且创建新网站,命名为dvwa,修改端口避免重复占用,点击管理并打开网站,即可进入靶场。
图3-4 config修改数据库密码
或者打开浏览器直接输入“http://dvwa:8089/index.php”,也可以进入靶场。如图,登录账户和密码为默认用户名:admin,默认密码:password。
图3-5 DVWA输入账户密码
输入正确后进入靶场。
图3-6 DVWA靶场界面
3.2 Fortity扫描与实战
我们打开fortify使用advanced Scan完成环境配置后,进入软件网站界面。
图3-7 Fortify软件界面
通过工具栏中的路径选择选项,进入目标靶场DVWA环境中的审计源码的绝对路径中进行选择。
图3-8 Fortify工具选择审计源文件夹
系统自动加载指定目录下的源码文件,并且进入配置选择界面,点击Next。
图3-9 扫描配置选项
进入深一层配置界面,可以自行增减相关关键字等内容,保持默认,点击Next。
图3-10 配置界面
选择对应选项默认即可,点击Sacn。
图3-11 自定义选项
等待扫描。
图3-12 等待扫描
接下来,对整个系统进行扫描,弹出提示窗口,完成扫描后进入下界面。
图3-12 扫描结果
完成扫描后,DVWA所有文件中的漏洞扫描结果进行展现,可以看到具体承载漏洞的数量等信息,左侧筛选栏可以对扫描结果进行筛选。
图3-13 筛选扫描结果
完成扫描后,DVWA所有文件中的漏洞扫描结果中涉及的代码片段,都可以具体查看并分析。
图3-14 部分扫描结果代码展示
完成扫描后,DVWA所有文件中的漏洞扫描结果中涉及的代码片段,都可以具体查看并分析,具体分析如下。
图3-15 部分扫描代码结果细节展示
选取常见的漏洞,如SQL注入漏洞,如下进行查看。
图3-15 部分扫描代码结果细节展示
3.3 Fortity扫描结果验证
选择靶场对应的模块,对靶场进行SQL注入,使用以下语句进行注入:
1' union select version(),@@version_compile_os#
进行SQL注入后,可以回显数据库版本信息等,显然存在SQL注入漏洞,与Fortify扫描得到的结果相同。
图3-16 SQL注入回显
4 参考文献
[1] 孟宪勇, 张伟. 基于Fortify SCA的GB/T 3494X源码审计规则研究与应用[J]. 计算机应用文摘, 2024, 40(12):41-43
基于Fortify SCA的GB/T3494X源码审计规则研究与应用
[2] Damn Vulnerable Web Application (DVWA) 项目[OL]. GitHub. GitHub - digininja/DVWA: Damn Vulnerable Web Application (DVWA).
[3] OWASP. OWASP Top Ten – 2017[OL]. OWASP Foundation, 2017. https://owasp.org/www-project-top-ten/.
[4] 王志刚. Web安全攻防实战[M]. 北京: 电子工业出版社, 2010: 1-300.
5 反思总结
通过本次基于Fortify的代码安全审计实验,加深了我对代码安全审计的理解。实验中,我使用Fortify工具,按照实验指导手册中的操作流程,对准备好的DVWA/Pikach靶场源代码进行审计。
Fortify 作为一款专业的代码审计工具,其强大的功能在实验中得到了充分展现。我学会了如何使用它进行静态和动态应用程序安全审计。在静态审计过程中,Fortify 能够快速扫描源代码,识别出潜在的安全漏洞,如 SQL 注入、跨站脚本攻击(XSS)等常见漏洞类型。通过与 DVWA/Pikach 靶场的结合,我看到了应用程序在运行时的真实行为表现,以及如何触发那些静态审计发现的漏洞。例如,在 DVWA 的 SQL 注入低级防护场景中,我通过动态审计观察到攻击者如何构造恶意 SQL 语句,绕过简单的输入验证,篡改数据库内容,这让我对漏洞的危害有了更直观的认识。同时,我也掌握了运行时应用程序监控的基本方法,学会了如何设置监控点,实时查看应用程序的运行状态,及时发现异常行为并进行预警,这对于后续的防护措施制定提供了有力支持。
今后的学习过程中,我也会加强对网络安全漏洞原理和防御技术的学习,通过实践积累更多的经验,为今后从事相关工作打下坚实的基础。