checkmarx的安装使用笔记
1.重启后启动或禁用checkmarx
1.1)如果是专用的代码扫描服务器可以不用管下面的命令
相关服务全部启用,重启生效
sc config MSSQL$SQLEXPRESS start= auto
sc config SQLTELEMETRY$SQLEXPRESS start= auto
sc config SQLWriter start= auto
sc config CxEngineService start= auto
sc config CxJobsManager start= auto
sc config CxSastResults start= auto
sc config CxScansManager start= auto
sc config CxSystemManager start= auto
sc config ActiveMQ start= auto
sc config iisadmin start= auto
sc config w3svc start= auto
相关服务全部禁用,重启生效
sc config MSSQL$SQLEXPRESS start= disabled
sc config SQLTELEMETRY$SQLEXPRESS start= disabled
sc config SQLWriter start= disabled
sc config CxEngineService start= disabled
sc config CxJobsManager start= disabled
sc config CxSastResults start= disabled
sc config CxScansManager start= disabled
sc config CxSystemManager start= disabled
sc config ActiveMQ start= disabled
sc config iisadmin start= disabled
sc config w3svc start= disabled
1.2)重启所有cm相关的服务
sc stop CxEngineService && sc stop CxJobsManager && sc stop CxSastResults && sc stop CxScansManager && sc stop CxSystemManager && sc stop CxServicesAvailability && sc stop ActiveMQ && sc start CxEngineService && sc start CxJobsManager && sc start CxSastResults && sc start CxScansManager && sc start CxSystemManager && sc start CxServicesAvailability && sc start ActiveMQ
1.3)如果是代码专用服务器,可以服务器名称改为checkmarx,并在内网域控dns上设置解析策略到对应的ip
1.4)域名访问也可以使用9.4开始内置的工具 CxPostInstall.exe 设置访问地址
需要使用超级管理员启动,比如我们要设置 aaa.cn 访问checkmarx
参照下图的配置,左边是hosts文件,注意ip配置和右边工具的配置需要对应
注意:每次调整url后,访问都需要清理浏览器的缓存
2.安装数据库的坑
2.1)装在windows上时,mssql如果是集成登录会提示失败,如下图
我们需要在mssql新建用户
输入NETWORK SERVICE如下图并点击检查名称
并增加数据库权限
2.2)安装时需要注意将数据库装在linux上,可以避免很多报错(确实找不到为什么,装在linux上就很顺利)
# 启动一个名为 SqlServer2019 端口为1433并只能本地访问的mssql 2019 , 登录密码需要自己改一改
docker run --restart=always -e "ACCEPT_EULA=Y" -e "MSSQL_PID=HMWJ3-KY3J2-NMVD7-KG4JR-X2G8G" -e 'SA_PASSWORD=强口令' --name SqlServer2019 -p 127.0.0.1:1433:1433 -d mcr.microsoft.com/mssql/server:2019-latest
# 查看启动好的 mssql2019的网络信息
docker inspect SqlServer2019
如上图所示,通过命令查看网络信息可知 172.17.0.2 为容器的ip地址
# 利用以下两条防火墙命令,保证只有白名单ip:172.30.81.11 才能访问本地容器172.17.0.2的mssql数据库端口
firewall-cmd --permanent --add-rich-rule='rule family=ipv4 source address=172.30.81.11 forward-port port=1445 protocol=tcp to-port=1433 to-addr=172.17.0.2'
firewall-cmd --reload
2.3)不要用中文姓名作为对接ldap的用户名,否则会间歇性报错
2.4)如果checkmarx安装后iis异常,应卸载下图中两个服务后重启电脑
重启后安装以下服务,iis就正常了
3.安装所有补丁之后再执行破解补丁,破解后checkmarx会检测到被破解并将证书销毁,应利用以下命令让授权文件变成只读,防止被销毁
cacls "C:\Program Files\Checkmarx\Licenses\license.cxl" /t /p everyone:r
必须要看到处理的文件几个字,才算成功
4.默认checkmarx不会自动加载git.exe
点击基本设置
点击编辑,如果这个页面什么内容都没有必须多刷新几次,等出现数据后再去点击编辑
输入git.exe的绝对路径
最后点击更新
5.git忽略ssl证书
必须设置操作系统环境变量
set GIT_SSL_NO_VERIFY=true
6.idea集成checkmarx
官网参考:
https://checkmarx.atlassian.net/wiki/spaces/SD/pages/1339162909/IntelliJ+Plugin
6.1)首先打开官网的插件下载地址 https://checkmarx.com/plugins/
下载整个文件包
6.2)安装插件包
在idea中打开一个项目比如webgoat,然后把文件包拖拽到代码区域,idea会自动安装并提示重启idea
当然也可以直接搜索安装,没有特殊上网速度非常慢,安装成功后如下图
6.3)输入并保存checkmarx的网页地址
6.4)右键点击工程名,点击开始扫描
6.5)我们就能直接在ide中看扫描结果了,使用体验和产品web页面一致
7.sonarqube集成checkmarx
官网参考:
https://checkmarx.atlassian.net/wiki/spaces/SD/pages/1339392378/Setting+Up+the+SonarQube+Plugin
搭建sonarqube和checkmarx就不废话了
下载地址: https://checkmarx.com/plugins/
checkmarx的sonarqube插件在写文章的时候只支持8.9
7.1)在第一次启动sonarqube前,我们要把插件放到插件目录中
7.2)之后配置Quality Profiles
7.3)如下配置
7.4)配置策略
点击Repository后选中所需要的checkmarx规则库再点击Bulk Change(我们这里演示的是java)
选择到我们创建的配置中
7.5)把我们创建的CxSonarQube设置为默认扫描配置
7.6)对项目应启动一次soanrqube的扫描,在项目的settings中选择checkmarx,并展开配置
7.7)之后使用sonarqube的扫描可以看到扫描的结果
8.checkmarx的代码审计策略
8.1)打开Checkmarx Audit
8.2)点击新建本地项目
8.3)如图进行配置并点击scan开始扫描
比如我们只扫描java,就按照下图这样配置再点击scan
8.4)第一次会跑出所有的结果
我们可以把clear All Result清空所有的结果
8.5)在java_general中我们可以找到基础函数
比如Find_Controllers中,checkmarx可以检索出所有的Controller
或者Find_Spring_Inputs可以获得所有的spring的输入值
8.6)右键策略就能执行扫描
并在resultes中看到匹配的结果
8.7)在Checkmarx Audit的同目录下可以看到api的pdf文件
8.8)定制策略
例如sql注入,我们通过解析层层分析SQL_Injection发现策略中包括了jsf、st2等老框架的策略
从以下源码中可以看出,先获取交互式输入并保存到inputs,之后查找输入到sql的输入点,当source流入到sink时,通过函数判断数据流中是否有净化函数
# Find_SQL_Injection源码
CxList inputs = Find_Interactive_Inputs();
CxList db = Find_SQL_DB_In();
CxList sanitized = Find_SQL_Sanitize();
result = inputs.InfluencingOnAndNotSanitized(db, sanitized);
以下为函数逐渐层层递进找到输入数据流入sql数据库的地方
又比如层层找到checkmarx怎么找到controller的地方
我们可以通过层层代码分析在CxDefaultQuery写入我们要执行的扫描逻辑
点击右键执行,验证我们的扫描策略
最终,通过代码开发框架约束和代码规约,执行快速而又精准的代码扫描
谢谢
标签:笔记,disabled,start,&&,sc,checkmarx,config From: https://www.cnblogs.com/k4n5ha0/p/17021867.html