CodeQL配合靶场使用
1.靶场准备
下载到本地即可。
https://github.com/l4yn3/micro_service_seclab/
2.CodeQL配置
命令行查看java环境变量,填进去。(可以顺便把maven也配了)
"java.jdt.ls.java.home":"/Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home",
"java.configuration.maven.globalSettings": "/Users/apps/apache-maven-3.8.5/conf/setting.xml",
"maven.executable.path":"/Users/apps/apache-maven-3.8.5/bin/mvn",
3.Codeql简单使用
(1)生成数据库
CodeQL是将代码转化成类似数据库的形式,基于该数据库进行分析,所以分析前要将代码生成数据库
/Users/Codeql/databases/micro为生成的文件名称,–source-root后为源代码文件夹
database create /Users/Codeql/databases/micro --language="java" --command="mvn clean install --file pom.xml" --source-root=/Users/codes/micro-service-seclab/
ps:如果有以下报错,检查java配置。
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project micro-service-seclab: Fatal error compiling: java.lang.IllegalAccessError: class lombok.javac.apt.LombokProcessor (in unnamed module @0x5d318e91) cannot access class com.sun.tools.javac.processing.JavacProcessingEnvironment (in module jdk.compiler) because module jdk.compiler does not export com.sun.tools.javac.processing to unnamed module @0x5d318e91 -> [Help 1]
刚开始一直报错,后面排查发现是JAVA_HOME配置错误。如下图即为创建database成功,为文件夹。
(2)导入数据库与ql
VSCode-CodeQL-From a folder,选择生成的数据库文件夹。出现对勾即为连接数据库成功。
在代码区打开ql的文件夹(从git上克隆的ql)
(3)测试.ql查询
在下图所示的snippets下新建test.ql文件,写入以下内容。
在test.ql上右键,选择【Run Queries in Selected Files】,出现下图右边的result即为成功。
ql下有很多查询语法,对ql文件按上述操作即可。