基于SonarQube的自动化代码缺陷检测:WebGoat实战(一)

简介: 基于SonarQube的自动化代码缺陷检测:WebGoat实战(一) 前面已经利用开源软件搭建,在阿里云环境下搭建一套基于SonarQube的自动化安全代码检测平台,具体可参见:http://www.freebuf.com/articles/security-management/160897.html 接下来,我们可以利用该平台对WebGoat源码进行分析。

基于SonarQube的自动化代码缺陷检测:WebGoat实战(一)

前面已经利用开源软件搭建,在阿里云环境下搭建一套基于SonarQube的自动化安全代码检测平台,具体可参见:
http://www.freebuf.com/articles/security-management/160897.html

接下来,我们可以利用该平台对WebGoat源码进行分析。后续相关操作,包括用户名和密码等配置都使用上一篇文章中的内容。

本次环境我们采用的是最新版本的WebGoat 8,如果对WebGoat不熟悉的同学,可以参考OWASP的官方链接:
https://www.owasp.org/index.php/Category:OWASP_WebGoat_Project

由于本次我们主要是做静态代码分析,而不是渗透测试,因此我们只需要将WebGoat 8的源代码下载下来, 并上传到“自动化安全代码检测平台”即可。

一、从GitHub上下载WebGoat 8的源代码

下载链接为:https://github.com/WebGoat/WebGoat/releases,我们直接下载最新的源码压缩包即可:
screenshot

二、下载后解压,并通过SVN上传至“自动化安全代码检测平台”

1. 清除前期的测试代码
如果前搭建环境中(包括我给大家的镜像中)都含有一个HelloWorld的源码库,因此需要删除此源码库。大家也可以重新配置SVN,但为了便于实验的方便,我们直接删除HelloWorld源码库。
删除比较简单,直接通过SVN下载本机,然后在本机上删除后再提交即可,具体步骤如下图所示:

a. 加载“自动化安全代码检测平台” (如果镜像正常,并未释放,可以跳过此操作)
在阿里云上加载镜像,创建的ECS建议大家使用的配置为:2CPU、8G内存、40G硬盘、2M带宽。
screenshot

小提示:建议大家用“竞价实例”,目前价格比较便宜。

b. 清理SVN中前期的HelloWorld源码
在前期本地创建的文件夹上点击右键,然后选择“SVN Update”,然后将同步好的代码全部删除:
screenshot

再在此文件上点击右键选择“SVN Commit”,选择所有文件,点击“OK”:
screenshot

这样平台上的“HelloWorld”源码将全部删除。

2. 将我们下载的WebGoat 8源码解压到此文件夹后上传平台
screenshot

在总文件夹上点击右键选择“SVN Commit”上传:
screenshot
screenshot

三、更新和配置SonarQube的检测插件

WebGoat 8是Java编写的,本次实验我们使用Findbugs for Java的插件来进行检测(插件相关说明将会在后续文章中描述,有兴趣的朋友也可以自行在互联网上搜索)。
1. 登录SonarQube
在Chrome浏览器中打开SonarQube,并登陆:http://ip:9000
screenshot

2. 选择“配置”—》应用市场,并在搜索中输入“findbug”,如下图:
screenshot

3. 点击“安装”
在这里直接点击安装即可,安装完成后,会提示重启服务器,点击重启等待片刻页面重新能加载即安装完成。注意:由于网络的原因,可能会安装报错,只用重新点击安装按钮即可。
screenshot

4. 质量配置
如下图所示,把Java、JSP相关的配置,把Findbugs设置为“默认”,这样就会使用Findbugs来进行检测:
screenshot

四、构建检测任务

1. 登录Jenkins,并构建一个Maven的任务
由于WebGoat是用Maven来创建并编写的,因此我们也要构建Maven的任务,如下图:
screenshot
screenshot

2. 配置任务
具体配置项如下内容:

  1. General,项目名称可以不用改动:
    screenshot
  1. 源码管理,前期我们配置过SVN,直接使用即可:
    screenshot
  1. 在Post Step中选择“Execute SonarQube Scanner”,并做如下配置:
    screenshot
  1. Analysis properties内容如下:

sonar.projectKey=my:WebGoat
# this is the name displayed in the SonarQube UI
sonar.projectName=webgoat
sonar.projectVersion=1.3.12

# Path is relative to the sonar-project.properties file. Replace "" by "/" on Windows.
# Since SonarQube 4.2, this property is optional if sonar.modules is set.
# If not set, SonarQube starts looking for source code from the directory containing
# the sonar-project.properties file.

sonar.sources=.
sonar.java.binaries=.

# Encoding of the source code. Default is default system encoding
#sonar.sourceEncoding=UTF-8

  1. 点击“保存”后,开始构建:
    screenshot

注意:第一次构建时间较长,可在console界面中查看过程:
screenshot

完成后,会在console界面中显示“success”的提示
screenshot

五、在SonarQube中分析检查结果

打开SonarQube中的结果,将会看到相关的缺陷,如下图所示:
screenshot

后续我们将针对WebGoat这个案例进行源码缺陷分析,可加我的微信(fantastic103)拉入讨论群,持续关注和讨论。需要此案例镜像的同学可发邮件至tangjf10@aliyun.com索要。

致谢:
本平台测试和搭建过程中得到了北京理工大学计算机学院计卫星教授、研究生高志伟以及“滇峰技术”团队的大力帮助和支持,在此表示感谢。

目录
相关文章
|
2月前
|
运维 应用服务中间件 持续交付
自动化运维的利器:Ansible实战应用
【9月更文挑战第33天】本文将带你深入理解Ansible,一个强大的自动化运维工具。我们将从基础概念开始,逐步探索其配置管理、任务调度等功能,并通过实际案例演示其在自动化部署和批量操作中的应用。文章旨在通过浅显易懂的语言和实例,为读者揭开Ansible的神秘面纱,展示其在简化运维工作中的强大能力。
184 64
|
29天前
|
监控 安全 测试技术
在实施自动化和持续集成的过程中,如何确保代码的安全性和合规性
在自动化和持续集成中,确保代码安全与合规至关重要。措施包括集成自动化安全工具、执行自动化合规检查、进行代码质量与安全检测、评估开源代码安全、实施基础设施即代码的安全标准、采用多层防御策略、加强安全教育与文化建设、使用合规性检测工具及许可证合规分析等,共同提升代码安全性与合规水平。
|
1月前
|
监控 安全 测试技术
在实施自动化和持续集成的过程中,如何确保代码的安全性和合规性?
在实施自动化和持续集成的过程中,如何确保代码的安全性和合规性?
|
1月前
|
运维 监控 应用服务中间件
自动化运维的利器:Ansible实战应用
【10月更文挑战第41天】在现代IT运维领域,自动化已成为提高效率、减少错误的关键。Ansible作为一种简单而强大的自动化工具,正被越来越多的企业采纳。本文将通过实际案例,展示如何使用Ansible简化日常运维任务,包括配置管理和批量部署等,旨在为读者提供一种清晰、易懂的自动化解决方案。
28 1
|
1月前
|
运维 Ubuntu 应用服务中间件
自动化运维工具Ansible的实战应用
【10月更文挑战第36天】在现代IT基础设施管理中,自动化运维已成为提升效率、减少人为错误的关键手段。本文通过介绍Ansible这一流行的自动化工具,旨在揭示其在简化日常运维任务中的实际应用价值。文章将围绕Ansible的核心概念、安装配置以及具体使用案例展开,帮助读者构建起自动化运维的初步认识,并激发对更深入内容的学习兴趣。
64 4
|
1月前
|
前端开发 数据管理 测试技术
前端自动化测试:Jest与Cypress的实战应用与最佳实践
【10月更文挑战第27天】本文介绍了前端自动化测试中Jest和Cypress的实战应用与最佳实践。Jest适合React应用的单元测试和快照测试,Cypress则擅长端到端测试,模拟用户交互。通过结合使用这两种工具,可以有效提升代码质量和开发效率。最佳实践包括单元测试与集成测试结合、快照测试、并行执行、代码覆盖率分析、测试环境管理和测试数据管理。
68 2
|
1月前
|
前端开发 JavaScript 数据可视化
前端自动化测试:Jest与Cypress的实战应用与最佳实践
【10月更文挑战第26天】前端自动化测试在现代软件开发中至关重要,Jest和Cypress分别是单元测试和端到端测试的流行工具。本文通过解答一系列问题,介绍Jest与Cypress的实战应用与最佳实践,帮助开发者提高测试效率和代码质量。
46 2
|
2月前
|
运维 监控 jenkins
运维自动化实战:利用Jenkins构建高效CI/CD流程
【10月更文挑战第18天】运维自动化实战:利用Jenkins构建高效CI/CD流程
|
2月前
|
运维 关系型数据库 MySQL
自动化运维工具Ansible的实战应用
【10月更文挑战第9天】在现代IT运维领域,效率和可靠性是衡量一个系统是否健康的重要指标。自动化运维工具Ansible因其简洁、易用的特性,成为了众多企业和开发者的首选。本文将通过实际案例,展示如何利用Ansible进行日常的运维任务,包括配置管理、软件部署以及批量操作等,帮助读者深入理解Ansible的应用场景及其带来的效益。
|
2月前
|
运维 持续交付 开发工具
基础设施即代码(IaC):自动化基础设施管理的未来
基础设施即代码(IaC):自动化基础设施管理的未来
68 0