初逢CodeQL

本文最后更新于:4 分钟前

参考文章:

codeql官方文档说明:

https://docs.github.com/zh/code-security/codeql-cli/getting-started-with-the-codeql-cli/about-the-codeql-cli

按照官方文档的要求,下载成功codeql-bundle后,将codeql路径配置到环境变量中

codeql的简单工作原理是通过记录程序在编译过程中生成的语法树,并形成关联,构建成一个数据库,数据库中包含项目代码的所有基本信息(有什么类、类继承了什么、实现了什么、什么修饰符,类里有什么方法、什么属性,方法里调用了什么方法、属性,方法的返回值是什么等等。。。)方便我们通过代码审计寻找bug、漏洞

那么一切准备就绪后,第一件事要做的自然就是生成一个数据库

codeql支持相当多的语言(悲惨的php被排除在外了),但是我的目的主要还是用来审计java代码,以及寻找一些反序列化过程中的gadget利用链,所以初步学习还是拿java开刀了

话不多说,开始

创建数据库

https://docs.github.com/zh/code-security/codeql-cli/getting-started-with-the-codeql-cli/preparing-your-code-for-codeql-analysis

构建一个数据库只需要以下一个命令:

1
codeql database create <数据库名> --source-root=<待分析的项目路径> --language=<代码语言> --command=<编译代码>

--source-root参数若不指定则默认当前目录下为项目代码根目,有时候--command也可以不指定会自动用maven帮我们编译打包

vscode导入数据库并查询

codeql高效使用需结合vscode的codeql插件,安装完成后侧边栏会出现一个QL的图标

安装好插件之后,我们先把目光转移到下面这个目录:

codeql根目录/qlpacks/codeql,在这个目录下有非常多的内置ql查询语句:

我们首先就需要使用vscode打开一个书写ql语句的文件,可以是自己编写的,也可以是内置的,比方说我们就使用vscode打开这个内置ql语句目录

使用vscode打开codeql根目录/qlpacks/codeql,然后在database处选择通过上一步生成的数据库: