Codeql 环境手模手搭建和简单使用
0x00 前言
最近这个东西实在太火了,而且log4j 和最近的Spring Cloud Gateway 都说是利用codeql来挖掘的,好不好用先用了再说。所以学习一下这个东西
0x01 CodeQL是什么
在我接触这个东西之前,我一直以为这是一个代码审计的工具,类似于Fortify rips 这种东西?
但其实并不是,理解大大错了。。。
还记得记得SQL的全称吗? -> Structured Query Language:结构化查询语言
所以我简单通俗的理解就是:
- Codeql = code + ql,这样就是一门面向对象的编程语言(对比SQL)
- 是把代码结构化分析后的存在一个代码数据库里面
- 然后就是写ql就可以进行各种查询
- 找某个方法、类、参数的传递等等。。。
神奇。。
官方地址:
https://github.com/github/codeql
0x01 相关下载
CodeQL本身包含两部分解析引擎+SDK
我推荐直接下载这个!可以直接配合 vscode 的现成项目,使用方便。
https://github.com/github/vscode-codeql-starter
(注意下载的时候不能直接git clon,因为里面包含子项目
0x02 安装详细步骤
我这边推荐使用 vscode-codeql-starter 这个现成的项目,使用起来很方便
1、vscode 环境
- 首先需要在官网下载并安装Visual Studio Code
Visual Studio Code - Code Editing. Redefined
- 安装codeql插件:
2 安装 CodeQL 引擎
s引擎二进制文件下载 :Releases · github/codeql-cli-binaries
(推荐直接下载codeql.zip 这个是多平台都打包在一起)
3 克隆工作车间 Codeql starter
我推荐直接下载这个!可以直接配合 vscode 的现成项目,使用方便。
https://github.com/github/vscode-codeql-starter
(注意下载的时候不能直接git clone,因为里面包含子项目
这个项目里的 submodule 也须要 Clone
使用下面命令一步到位
1 | git clone --recursive https://github.com/github/vscode-codeql-starter/ |

4 配置环境变量
1 、在 VSCode 菜单中点击 File > Open Workspace
选择 vscode-codeql-starter.code-workspace
这个文件来打开这个工作区。
2、找到插件的扩展设置
3、设置引擎地址
这里面添加引擎刚刚下载的 CodeQL 引擎的可执行文件
就是codeql.zip 解压后对于系统的可执行文件地址
5 系统环境变量添加
为了方便后面使用codeql,还需要把刚刚那个添加到系统里面
我是Mac 就是这样
1 | vim ~/.zshrc |
windows 就和添加Java环境变量一样,设置一个path到刚刚到codeql.exe 那个目录就行了
到这里环境应该就是好了,下一步就是建立数据库了(或导入数据库)
0x03 创建数据库(Java)
- 打开终端使用 codeql命令
1 | codeql database create [数据库存的路径] --language="java" --command="mvn clean install --file pom.xml" --source-root=[源码路径路径] |
例如我的用的这个项目作为审计的目标 https://github.com/godzeo/java-sec-code
1 | codeql database create /Users/zy/Documents/project/codeql/vscode-codeql-starter-main/database/codeql_java-sec-code --language="java" --command="mvn clean install --file pom.xml" --source-root=/Users/zy/Documents/project/sec_java_vul/java-sec-code |
然后把这个命令拆解看一下
codeql database create java-database | 创建数据库,名字为codeql_java-sec-code |
---|---|
-language=java | 编译语言为java |
-command=“mvn clean install –file pom.xml” | 利用命令进行源码编译 |
–source-root | 设置源码的路径 |
成功建库
0x04 导入库进行查询
在vscode里面找到 导入数据库
这样就是导入成功了
下面开始查询:
1 | 跟目录/ql/java/ql/src/Security 放着一些官方的规则(java),可直接用。 |
找到规则文件试一下,xss.ql 文件 ,右键 Run Query
出结果了,跑通了这就是
然后点一下就找到了漏洞点了。
基础的完成之后,这就能勉勉强强用了,然后就是学习语法规则,自己写规则使用了