安全服务工作中,漏洞的跟踪管理,应该是让大多数安全服务人员都头疼的事。业务系统少还好,一个Excel表格就解决了,而面对数十个不同的业务系统,邮件、报告满天飞,Excel大法就行不通了,报告整理、漏洞复测确认常常让人精疲力尽。DefectDojo正是一款解决漏洞管理之痛的开源工具,DefectDojo可将各种漏洞报告(Nessus、Nmap、Burp等)汇总分析,对漏洞的确认、复测进行跟踪,建立计划扫描任务,导出报告等。关于这款工具的更多介绍,可以看看OWASP AppSec USA 2017会议上Greg Anderson的演讲视频。
项目地址
https://github.com/OWASP/django-DefectDojo
项目文档
http://defectdojo.readthedocs.io/en/latest/
术语
DefectDojo试图用最少的定义对象来简化系统的操作,下面是一些术语的定义和使用案例,帮助你更好的理解和使用DefectDojo。
Product Types – 产品类型
产品类型用于逻辑区分产品的类型,分类方式可以是业务单元的不同分支,不同办事处、地点或者开发团队。
- Examples:
- IAM Team
- 第三方厂商
- 成都分公司
Products – 产品
一个项目或者一个产品的名称。
- Examples:
- CRM
- 网上商城
Development Environments – 开发环境
用于描述特定测试,测试对象的环境。
- Examples:
- 生产环境
- 测试环境
Test Types – 测试类型
对一次测试任务中的不同测试点,根据特征分类。
- Examples:
- 功能测试
- 安全测试
- Nessus扫描
- API测试
Test – 测试
测试是一次安全工程师对产品缺陷的分析发现过程,测试必须绑定在任务之下,有明确的起止时间和测试类型。
- Examples:
- Brup扫描@20171030-20171103
- Nessus扫描@20171025-20171029
Finding – 测试结果
测试结果表示测试过程中发现的一下软件缺陷,可以通过风险等级分为严重、高危、中危、低危和信息。
- Examples:
- OpenSSL ‘ChangeCipherSpec’中间人攻击漏洞
- CRM系统XX模块XSS漏洞
系统模型
DefectDojo是Rackspace公司的安全团队开发的一套测试跟踪工具,通过报告模板、报告生成、数据统计、基线服务等工具来简化测试过程。DefectDojo的产品:任务模型,能够有效的在多个项目和测试周期中跟踪统计漏洞情况。
DefectDojo的工作流程,从产品类型开始;
每个产品类型可以有多个不同的产品;
每个产品可以有一个或多个任务;
每个任务可以有一个或多个测试;
每一个测试,可以有一个或多个测试结果。
案例演示
下面将通过一个简单的案例演示,帮助你快速的了解DefectDojo基本使用。
新建产品类型
使用DefectDojo的第一步,是创建产品类型。
主界面左侧菜单栏,选择Products→View Product Types:
点击右上角扳手符号,弹出菜单,选择Add Product Type:
填写产品类型名称:
新建产品
添加产品类型后,接下来创建一个产品。
主界面左侧菜单栏,选择Products→All Products:
点击右上角扳手符号,弹出菜单,选择Add Product:
填写产品信息:
填写后点击Submit提交。
新建开发环境
主界面左侧菜单栏,选择Engagements→Development Environment:
点击右上角扳手符号,弹出菜单,选择New Dev Environment:
填写开发环境信息:
新建测试类型
测试类型可以帮助你区分你的工作范围,比如Nessus扫描,或定期执行的特定安全测试。
主界面左侧菜单栏,选择Engagements→Test Types:
点击右上角扳手符号,弹出菜单,选择New Test Type:
填写测试类型:
新建任务
任务名称建议使用英文或拼音,否则生成任务报告时会出错。
主界面左侧菜单栏,选择Engagements→Emgagements:
点击右上角扳手符号,弹出菜单,选择New Engagement:
填写任务信息:
信息填写完整后选择Done。
任务中添加测试
在任务界面中,点击Tests右边下拉菜单,选择Add Tests:
这里有两个选项,Add Tests和Import Scan Results,Add Tests创建一个空白测试,可以后期手动添加或导入其它安全软件测试结果,Import Scan Results直接导入一个测试结果,并生成一个Test。
两种方式均需填写此次测试的名称、起止时间等信息:
基础信息填写完成后,选择结束,返回的到任务界面中,在Tests中,已列出新建的测试。
添加测试结果 – 手工添加
在测试列表后,选择View,进入测试视图:
选择Findings→New Finding:
填写测试结果信息:
添加后如图:
点击漏洞名称后的View,可查看漏洞详情,请求复测,添加验证图片等:
添加图片:
添加图片后现在在这里:
添加测试结果 – 导入其它安全工具报告
DefectDojo可以导入多种开源或商业安全工具的扫描结果,如Brup、Nmap、Nessus、ZAP、Nexpose等,也可以参考DefectDojo的通用漏洞格式批量导入其它测试结果,或者编写Python脚本导入国产扫描器绿盟漏扫的报告。
可以通过两种方式导入报告:
- Tests中的Import Scan Results导入并新建一个Test;
- 进入一个已创建的Test,选择Re-Upload Scan。
这里以导入Nessus报告为例,在Nessus测试列表后,选择View,进入测试视图:
选择Nessus Scan→Re-Upload Scan:
填写测试基本信息,选择文件上传:
漏洞导入后:
Tests统计数据:
管理员账号的Team Dashboard显示所有测试任务统计数据和图标:
Findings页面中,列出所有的漏洞,可设置条件搜寻特定漏洞,每个漏洞后有该漏洞已存在时长:
终端页面中,显示所有已测试过的IP和手工加入的终端地址:
点击IP进入该IP详情,可查看该IP存在的所有漏洞:
创建用户、删除产品类型等
后台页面地址:http://host/admin/在前台页面中,管理员账号可创建和修改产品类型,但不能删除,需删除可进入后台管理界面操作。前台页面的用户创建,创建时不能直接设置用户密码,可在后台页面创建账号,填写更详细的个人信息,设置权限。
待续
DefectDojo有丰富的统计图表,不同维度的报告生成,漏洞的跟踪、去重等,解决漏洞管理中的一些痛点,这些功能在下一篇介绍。
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/54706.html