categories: Code audit
SonarQube
SonarQube 是一种自动代码审查工具,用于检测代码中的错误、漏洞和代码异常。它可以与您现有的工作流程集成,以支持跨项目分支和拉取请求的持续代码检查。
docker + psql搭建
1:使用docker pull 下载基本镜像
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->
根据提示在项目代码目录下运行SonarScanner
配置sonarscanner
找到scanner路径 \sonar-scanner\conf ,编辑配置文件sonar-scanner.properties
设置服务器地址,登录账号密码
php代码扫描
在代码根目录下创建sonar-scanner.properties
运行scanner
在命令行执行成功后,显示执行时间和内存占用
尴尬的事情出现了,样例代码时DVWA的sql漏洞代码,没扫描出问题,因该是规则和策略问题。
sonar插件与扫描策略
java代码扫描(windows客户端)
在java代码跟目录编辑sonar-scanner.properties,直接运行bat
导出报告
下载sonar-pdf-plugin:
前往https://gitee.com/zzulj/sonar-pdf-plugin开源社区下载pdf导出插件并放到sonarqube-7.3\extensions\plugins目录下,重启sonar服务。
开启pdf插件后,重新扫描一遍项目代码
docker inspect -f '{{.ID}}' yourDockerName
docker cp /home/kali/sonar-pdf-plugin DockerId:/opt/sonarqube/extensions/plugins
进入项目到处PDF报告
可读性一般,不如直接在web查阅项目漏洞,可以直接跟进到命中规则代码段。
Tips:参考资料