一、说明

最近要找一款代码审计工具,Fortify SCA太贵,VisualCodeGrepper不太好用。在freebuf上看到可用sonarqube来建代码自动化扫描系统所以也来试一试。

直接安装没启起来,懒得分析填接用了docker装。

二、安装

sonarqube扫描是c/s模式,sonarqube自己是服务器装在kali上,sonarqube scanner是扫描客户端装在哪都可以,我这里装在windows机上。

2.1 服务端安装docker

docker安装可参考:https://www.cnblogs.com/lsdb/p/6844750.html

2.2 服务端sonarqube安装

docker search sonarqube
docker pull sonarqube
docker run -d -p : -p : sonarqube
docker ps

2.3 客户端安装sonarqube scanner

下载页面:https://docs.sonarqube.org/display/SCAN/Analyzing+with+SonarQube+Scanner

我这里是windows,自己下自己系统对应的版本。

下载后直接解压,然后将其bin目录加到path环境变量即可。

三、sonarqube界面

3.1 登录sonarqube

启动时我们做了映射,所以访问装在的主机的9000端口即可进入sonarqube。我这里是http://10.10.16.92:9000/。

点击左上角的Log in进行登录,默认用户名密码admin/admin

首次登录会进入项目创建向导,我们后续自己创建,这里直接跳过

要退出,点击右上角的A标志即会出现“Log Out”菜单

3.2 sonarqube菜单介绍

sonarqube进入后主要有以下6项菜单:

Projects----项目菜单,登录后默认进入项面。所谓项目和eclipse等上的项目是类似的意思,由于在上边我们直接跳过所以现在还没有任何项目。

Issues----扫描到的问题列表。

Rules----sonarqube对各语言使用的扫描规则说明。我们自己并不能对规则进行增删改,也可能只是社区版没有。

Quality Profiles----扫描规则集合,这里的profile和awvs等的profile是类似的意思。我们自己也不能对规则集进行增删改,也可能只是社区版没有。

Quality Gates----似乎是扫描策略说明,不是很了解不过也没什么配置项。

Administration----管理员菜单项。只有当登录用户为管理员时才会显示,包括基本配置、账号管理、项目管理、系统信息和插件管理等四大子项。

四、创建扫描项目

4.1 创建项目

Name感觉只是为了方便记用的,Key才是相当于项目id,扫描要用到的也是key。

4.2 创建token

在弹出的对话框中,随便输一个token名称然后点击Generate生成真正的token即可(所谓token名称应该是token的种子)

点击Copy复制和保存token后边扫描需要用。这里的token和restful的access token是类似的。

由于之后再也不会显示所以要注意保存。当然如果真忘了重新生成一个token即可。

4.3 进行扫描

这里以dvwa为例。客户端进到dvwa解压目录,执行以下命令进行扫描。

sonar-scanner.bat----前面sonarqube scanner的bin目录下的脚本,我们已加path环境变量。

-Dsonar.projectKey----指定上边4.1设定的项目key。改成自己的。

-Dsonar.sources----要扫描的文件夹。改成自己的。

-Dsonar.host.url----sonarqube的url。改成自己的。

-Dsonar.login----指定的是上边4.2生成的token。改成自己的。

sonar-scanner.bat -Dsonar.projectKey=phpkey -Dsonar.sources=. -Dsonar.host.url=http://10.10.6.92:9000 -Dsonar.login=fd71c19d46683bbd847fa450579b096f79b22593

扫描成功类似如下图:

对于java项目要求是使用maven和gradle的项目,但用maven+webgoat来试一直报错;然后直接使用类似上边的命令可以成功进行扫描。

但完全直接用会报ERROR: Please provide compiled classes of your project with sonar.java.binaries property错误,需要多加“-Dsonar.java.binaries=.”参数(什么用没搞清楚)

4.4 扫描结果查看

回到projects主菜单即可看到本次扫描的结果总览

切换到Issues菜单即可查看具体问题

可点击右边的各种过滤条件进行过滤

点击问题后的“...”,在下方会出现问题的具体说明(其实就是Rules的说明)

五、总结

开始的时候很奇怪,为什么所有文档----包括官方自己----一直把sonarqube叫做“代码质量管理工具”,而不叫代码审计工具。使用下来看主要是以下三个原因

首先,sonarqube的规则很多是针对编码风格的(比如某个字符串如果出现多次就要求你定义一个变量而不是反复写这个字符串)而不是针么漏洞的。

其次,sonarqube说是开源免费的但其实免费版本只有Java/C#/Python/PHP/Go/JavaScript的插件(插件的本质是规则)c/c++/oc/sql等的扫描插件收费版才支持。(造成的结果就是免费版注入类漏洞都报不了)

再次,即便是收费版本其代码审计能力感觉也只能是超过VCG,上下文分析还是达不到Fortify SCA的水平。

参考:

http://www.freebuf.com/articles/web/185148.html

https://docs.sonarqube.org/display/SONAR/Installing+the+Server

https://hub.docker.com/_/sonarqube/

kali-rolling安装使用sonarqube教程(docker方式)的更多相关文章

  1. kali Rolling 安装QQ和虚拟机

    环境: kali Rolling   64位 WPS 官网linux版下载链接:http://community.wps.cn/download/ 使用dpkg命令安装,遇到依赖问题,用apt-get ...

  2. kali Rolling 安装QQ

    ------------------------------------------------------------------- 环境: kali Rolling   64位 所需软件包: Wi ...

  3. kali Rolling安装之后的一些常用配置总结

    添加普通用户 useradd -m -G sudo,video,audio,cdrom -s /bin/bash OKing把某个用户添加到组中: sudo usermod -a 用户名 -G 组名 ...

  4. kali Rolling安装之后的一些常用配置总结(更新)

    原文: https://ssooking.github.io/kali-rolling-an-zhuang-zhi-hou-de-yi-xie-chang-yong-pei-zhi-zong-jie/ ...

  5. SonarQube - 以Docker方式启动SonarQube

    1 - SonarQube镜像 https://hub.docker.com/_/sonarqube/ Dockerfile - 7.9.1-community https://github.com/ ...

  6. kali rolling 安装typecho

    #1 apt-get install nginx php7.0 php7.0-mysql php7.0-gd php7.0-cgi php7.0-cli php7.0-curl php7.0-fpm ...

  7. Kali linux 2016.2(Rolling) 的详细安装(图文教程)附安装VMare Tools 增强工具

    写在前面的话 因读研期间,实验室团队需要,所以,接触上了Kali Linux,需去获得网络安全方面的数据,即数据和信息收集.以便为后续的数据处理和分析,准备! 用到hadoop和spark.机器学习等 ...

  8. Windows下VMware虚拟机使用Centos,Docker方式安装openstf的小坑

    今天使用docker方式安装openstf碰到了一小坑,坑了我半天.特此记录! docker方式安装stf就不说了,网上教程一大把. 但是... 安装完之后.进入web控制界面,手机连接的好好的.但硕 ...

  9. 【工具安装】kali linux 安装教程

    日期:2019-07-14 16:36:21 介绍:使用最新版的 VMware 来安装 kali linux 0x01.下载镜像 首先需要安装 VMware,安装步骤点这里. VMware 安装教程 ...

随机推荐

  1. python基础(6)-深浅拷贝

    赋值 字符串和数字 # id()函数可以获取变量在内存中的地址标识 num1 = 2; num2 = 2; print(id(num1)) # result:8791124202560 print(i ...

  2. 新项目增加gradlew

    新项目,增加gradlew git clone http://git.inspur.com/iop/gradle.git git submodule update --init

  3. 【UML】NO.70.EBook.9.UML.4.001-【PowerDesigner 16 从入门到精通】- 基础概念

    1.0.0 Summary Tittle:[UML]NO.70.EBook.9.UML.4.001-[PowerDesigner 16 从入门到精通]-  基础概念 Style:DesignPatte ...

  4. postgres密码修改

    . 修改PostgreSQL数据库默认用户postgres的密码 PostgreSQL数据库创建一个postgres用户作为数据库的管理员,密码随机,所以需要修改密码,方式如下: 步骤一:登录Post ...

  5. Java项目中的异常处理情况

    1. java.lang.nullpointerexception这个异常大家肯定都经常遇到,异常的解释是"程序遇上了空指针",简单地说就是调用了未经初始化的对象或者是不存在的对象 ...

  6. windows10系统下安装pygame

    1.安装python,选择版本3.7.1 下载地址:https://www.python.org/downloads/windows/选择安装版本 2.安装pip 下载地址:https://pypi. ...

  7. 实现html页面自动刷新的几种方式

    自动页面刷新通常会用在对数据的实时性比较敏感的网站中,比如股票走势等,另外在普通的页面自动跳转中也会使用到页面自动刷新技术. 页面刷新我见过的有三种方式,下面来一一说明 1.通过在<head&g ...

  8. Unicode编码与中文互转

    /** * unicode编码转换为汉字 * @param unicodeStr 待转化的编码 * @return 返回转化后的汉子 */ public static String UnicodeTo ...

  9. DevOps“五宗罪”,这样向DevOps过渡注定会失败

    云计算提供的速度响应.敏捷性和规模效应,契合了如今不断变化的数字商业环境.企业基于最新的IT技术,重构IT架构,加速产品创新和服务交付的速度,从而提高运营效率和市场占有. 不过,企业IT管理者在利用云 ...

  10. POJ 2533 裸的LIS

    A numeric sequence of ai is ordered if a1 < a2 < ... < aN. Let the subsequence of the given ...