基于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索要。

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

目录
相关文章
|
1月前
|
运维 应用服务中间件 持续交付
自动化运维的利器:Ansible实战应用
【9月更文挑战第33天】本文将带你深入理解Ansible,一个强大的自动化运维工具。我们将从基础概念开始,逐步探索其配置管理、任务调度等功能,并通过实际案例演示其在自动化部署和批量操作中的应用。文章旨在通过浅显易懂的语言和实例,为读者揭开Ansible的神秘面纱,展示其在简化运维工作中的强大能力。
143 64
|
2月前
|
运维 安全 应用服务中间件
自动化运维的利剑:Ansible实战应用
【9月更文挑战第24天】在现代IT基础设施的快速迭代与扩展中,自动化运维成为提升效率、保障稳定性的关键。本文将深入探讨Ansible这一流行的自动化工具,通过实际案例分析其如何简化日常运维任务,优化工作流程,并提高系统的可靠性和安全性。我们将从Ansible的基础概念入手,逐步深入到高级应用技巧,旨在为读者提供一套完整的Ansible应用解决方案。
|
8天前
|
运维 监控 jenkins
运维自动化实战:利用Jenkins构建高效CI/CD流程
【10月更文挑战第18天】运维自动化实战:利用Jenkins构建高效CI/CD流程
|
17天前
|
运维 关系型数据库 MySQL
自动化运维工具Ansible的实战应用
【10月更文挑战第9天】在现代IT运维领域,效率和可靠性是衡量一个系统是否健康的重要指标。自动化运维工具Ansible因其简洁、易用的特性,成为了众多企业和开发者的首选。本文将通过实际案例,展示如何利用Ansible进行日常的运维任务,包括配置管理、软件部署以及批量操作等,帮助读者深入理解Ansible的应用场景及其带来的效益。
|
8天前
|
运维 持续交付 开发工具
基础设施即代码(IaC):自动化基础设施管理的未来
基础设施即代码(IaC):自动化基础设施管理的未来
18 0
|
2月前
|
运维 监控 应用服务中间件
自动化运维的新篇章:Ansible Playbooks入门与实战
【9月更文挑战第1天】在追求效率和稳定性的今天,自动化运维已经成为IT行业的必修课。本文将带你走进自动化工具Ansible的世界,通过实战案例深入理解Ansible Playbooks的编写和应用。文章不仅介绍基础概念,更通过具体代码示例,展示如何利用Ansible简化日常运维任务,提升工作效率。无论你是运维新手还是希望深化自动化技能的资深人士,本指南都将为你开启一段新的学习旅程。
|
3月前
|
C# 开发者 Windows
WPF遇上Office:一场关于Word与Excel自动化操作的技术盛宴,从环境搭建到代码实战,看WPF如何玩转文档处理的那些事儿
【8月更文挑战第31天】Windows Presentation Foundation (WPF) 是 .NET Framework 的重要组件,以其强大的图形界面和灵活的数据绑定功能著称。本文通过具体示例代码,介绍如何在 WPF 应用中实现 Word 和 Excel 文档的自动化操作,包括文档的读取、编辑和保存等。首先创建 WPF 项目并设计用户界面,然后在 `MainWindow.xaml.cs` 中编写逻辑代码,利用 `Microsoft.Office.Interop` 命名空间实现 Office 文档的自动化处理。文章还提供了注意事项,帮助开发者避免常见问题。
199 0
|
3月前
|
运维 Linux Apache
自动化运维工具:Ansible入门与实战
【8月更文挑战第31天】 本文将引导读者理解自动化运维的重要性,并通过介绍Ansible这一强大的自动化工具,展示如何简化和加速IT管理任务。文章不仅讲解了Ansible的基础概念,还通过实例展示了如何配置和使用Ansible进行日常的运维工作,包括部署、配置管理和任务自动化等。无论你是运维新手还是希望提高现有工作流程的效率,这篇文章都会为你提供实用的知识和技能。
|
3月前
|
前端开发 IDE 测试技术
自动化测试中的代码魔法:使用Python和Selenium框架
【8月更文挑战第31天】在软件开发的海洋中,自动化测试是一艘能够带领团队穿越波涛的帆船。本文将引导读者了解如何利用Python语言结合Selenium框架,编写简洁而强大的自动化测试脚本。我们将从搭建开发环境开始,逐步深入到实际案例,最后通过一个简单示例展示如何实现端到端的自动化测试流程。文章不仅提供实用的代码片段,还旨在激发读者对于软件测试深层次思考的热情。
|
28天前
|
机器学习/深度学习 人工智能 运维
构建高效运维体系:从自动化到智能化的演进
本文探讨了如何通过自动化和智能化手段,提升IT运维效率与质量。首先介绍了自动化在简化操作、减少错误中的作用;然后阐述了智能化技术如AI在预测故障、优化资源中的应用;最后讨论了如何构建一个既自动化又智能的运维体系,以实现高效、稳定和安全的IT环境。
52 4