静态源代码扫描之Sonarqube


categories: Code audit

SonarQube

SonarQube 是一种自动代码审查工具,用于检测代码中的错误、漏洞和代码异常。它可以与您现有的工作流程集成,以支持跨项目分支和拉取请求的持续代码检查。

docker + psql搭建

1:使用docker pull 下载基本镜像

img

2:启动镜像时注意psql与sonar进行联通

postgres: docker run --name sonarqube_postgres -e POSTGRES_USER=sonar -e POSTGRES_PASSWORD=sonar -d postgres

sonarqube: docker run --name sonar --link sonarqube_postgres -e SONARQUBE_JDBC_URL=jdbc:postgresql://sonarqube_postgres:5432/sonar -p 9000:9000 -d sonarqube

由于镜像版本存在差异,最新版docker启动时加载es服务可能由于root权限导致启动失败,遇见启动一场可使用 docker logs [$dockername] 进行排查。
启动后访问http://localhost:9000,admin,admin即可进入管理面板。

代码扫描

创建扫描项目

设置你的扫描对象,选择语言和本地的系统,下载相应的SonarScanner
project -> create new project -> set up->

img

img

img

根据提示在项目代码目录下运行SonarScanner

配置sonarscanner

找到scanner路径 \sonar-scanner\conf ,编辑配置文件sonar-scanner.properties
设置服务器地址,登录账号密码

img

php代码扫描

在代码根目录下创建sonar-scanner.properties

img

运行scanner

img

在命令行执行成功后,显示执行时间和内存占用

img

尴尬的事情出现了,样例代码时DVWA的sql漏洞代码,没扫描出问题,因该是规则和策略问题。

img

sonar插件与扫描策略

java代码扫描(windows客户端)

在java代码跟目录编辑sonar-scanner.properties,直接运行bat

img

img

导出报告

下载sonar-pdf-plugin:

前往https://gitee.com/zzulj/sonar-pdf-plugin开源社区下载pdf导出插件并放到sonarqube-7.3\extensions\plugins目录下,重启sonar服务。
开启pdf插件后,重新扫描一遍项目代码

img
docker inspect -f '{{.ID}}' yourDockerName

docker cp /home/kali/sonar-pdf-plugin DockerId:/opt/sonarqube/extensions/plugins

img

进入项目到处PDF报告
img

可读性一般,不如直接在web查阅项目漏洞,可以直接跟进到命中规则代码段。


Tips:参考资料

  1. 扫描原理:https://blog.csdn.net/wmq880204/article/details/117866872


文章作者: augu5t
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 augu5t !
  目录