Featured image of post CodeQL基础使用

CodeQL基础使用

CodeQL基础使用

https://mp.weixin.qq.com/s/QbO-WHxm90DkdCQpX8EX7w

原创 Paper | CodeQL 入门和基本使用

1.什么是CodeQL

CodeQL是由 GitHub 开发并维护的静态应用安全测试(SAST)工具,其核心思想是将代码转化为可查询的 “数据库”,通过自定义或官方的查询规则,自动化检测源代码中的安全漏洞、代码质量问题与合规风险。它不仅是 GitHub 代码扫描(Code Scanning)功能的核心引擎,也是开发者、安全团队保障软件供应链安全的重要工具。

https://codeql.github.com/docs/ 官方文档

2.为什么要使用CodeQL

拿到源码后,一般会根据自己的经验和直觉自己审计或者参考已知漏洞进行利用

3.如何使用CodeQL

3.1.CodeQL安装

https://github.com/github/codeql-cli-binaries/releases/tag/v2.23.1

配置环境变量

1
C:\Users\24767>codeql           //出现帮助命令及安装成功

下载QL标准规则库:https://github.com/github/codeql

Vscode安装CodeQL插件

3.2.CodeQL初步使用

这里使用WebGoat靶场进行测试

1
2
3
4
5
6
7
//创建数据库
codeql database create 数据库地址 目标语言 编译命令  -DskipTests跳过测试 --source源码地址
--overwrite 如果存在数据库则覆盖

codeql database create database/WebGoat-db --language=java --command="mvn clean install -DskipTests -Dmaven.compiler.release=17" --source-root=D:\Java_Project\soft\CodeQL\Source\WebGoat --overwrite

codeql database create database/mushroom-db --language=java --command="mvn clean install -DskipTests" --source-root=D:\Java_Project\soft\CodeQL\Source\mushroom --overwrite

使用maven进行编译时一直出现编译错误,运行以下命令即可

1
2
echo %JAVA_HOME%
.\mvnw.cmd spotless:apply       //在项目目录下运行

创建一个文件夹,文件夹里创建一个名为**qlpack.yml**的配置文件,内容如下

1
2
3
name: my-query
version: 0.0.1
libraryPathDependencies: codeql-java

此时数据库中存在对应文件

将codeQL的规则库添加到Vscode的工作区中


在Vscode的插件中,选择对应的语言和刚刚生成的数据库文件夹

1
2
3
4
import java

from Call c
select c                    //选择一个方法调用

运行CodeQL

出来结果就ok了

By Lsec
最后更新于 Oct 10, 2025 00:09 +0800
comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计
¹鵵ҳ