官方网站找工作公众号,中国航发网上采购平台,网站内链案例,wordpress文字加边框安装CodeQL
CodeQL本身包含两部分解析引擎SDK 下载已经编译好的 CodeQL 执行程序 https://github.com/github/codeql-cli-binaries/releases 下载之后配置环境变量 安装 SDK CMD 进入 CodeQL 安装目录#xff0c;使用 Git 安装 SDK git clone https://github.com/Semmle/ql安…安装CodeQL
CodeQL本身包含两部分解析引擎SDK 下载已经编译好的 CodeQL 执行程序 https://github.com/github/codeql-cli-binaries/releases 下载之后配置环境变量 安装 SDK CMD 进入 CodeQL 安装目录使用 Git 安装 SDK git clone https://github.com/Semmle/ql安装 VS Code 插件在应用商店搜索 CodeQL安装第一个 安装之后配置 CodeQL 目录 点击插件右侧齿轮按钮填入 CodeQL 的安装目录路径中需要到 codeql.exe下图没有会有bug 因为审计 Java 代码还需要用到 maven需要安装 MVN 直接在官网下载https://maven.apache.org/download.cgi配置好环境变量即可在 Windows 系统语言为中文的情况下可能会出现报错中文乱码
简单使用
由于CodeQL的处理对象并不是源码本身而是中间生成的AST结构数据库所以我们先需要把我们的项目源码转换成CodeQL能够识别的CodeDatabase
codeql database create ../codeqldatabase --languagejava --commandmvn clean install --file pom.xml --source-rootC:\Users\admin\Downloads\micro_service_seclab-main导入 Database
在 vscode 中导入解析完成的数据库 数据库加载成功 编写测试 QL 查询在 vscode 中打开 SDK 所在文件夹如图所示目录新建 ql 文件右击 run query 进行查询 基础语法
CodeQL 的核心引擎是不开源的这个核心引擎的作用之一是帮助我们把要审计的代码文件转换成CodeQL能识别的中间层 AST 数据库然后我们需要编写 QL 查询语句来获取我们想要的数据由于 CodeQL 开源了所有的规则和规则库部分所以我们能够做的就是编写符合我们业务逻辑的 QL 规则然后使用 CodeQL 引擎去跑我们的规则发现靶场的安全漏洞 什么是source和sink 在代码自动化安全审计的理论当中有一个最核心的三元组概念就是(sourcesink和sanitizer) source是指漏洞污染链条的输入点。比如获取http请求的参数部分就是非常明显的Sourcesink是指漏洞污染链条的执行点比如SQL注入漏洞最终执行SQL语句的函数就是sink(这个函数可能叫query或者exeSql或者其它)sanitizer又叫净化函数是指在整个的漏洞链条当中如果存在一个方法阻断了整个传递链那么这个方法就叫sanitizer 只有当 source 和 sink 同时存在并且从 source 到 sink 的链路是通的才表示当前漏洞是存在的
具体语法可以学习CodeQL从入门到放弃
CodeQLpy
CodeQLpy 是一款基于 CodeQL 实现的自动化代码审计工具目前仅支持java语言后期会增加对其他语言的支持支持对多种不同类型的java代码进行代码审计包括jsp文件、SpringMVC的war包、SpringBoot的jar包、maven源代码
安装 CodeQL 之后把 python 文件放到 CodeQL 目录下安装依赖库
pip3 install -r requirements.txt然后需要进入config目录下修改ini配置有空格需要加上引号
[codeql]
qlpath D:\_Tools\My_Safe_Tools\codeql\ql\java\ql\test
jdk8 C:\Program Files\Java\jdk1.8.0_152\bin\java.exe
jdk11 C:\Program Files\Java\jdk-11\bin\java.exe
idea_decode_tool lib/java-decompiler.jar
jd_decode_tool lib/jd-cli.jar
jsp_decode_tool lib/jsp2class.jar
ecj_tool lib/ecj-4.6.1.jar
tomcat_jar lib/tomcat_lib
spring_boot_jar lib/spring_boot_lib
decode_savedir out/decode/
general_dbpath out/database/
maven_savedir out/mvn/
decompile_type jd
debug on
model fast
thread_num 10[log]
path out/log/生成数据库初始化 // -c 选项不加默认扫描java文件加上即扫描class文件
// -t参数表示目标源码的路径支持的源码类型是文件夹jar包和war包
python3 main.py -t 指向要审计的项目运行之后会在最后提示下一步要执行的命令 生成数据库 # windows
codeql database create out/database/micro_service_seclab-main --languagejava --source-rootC:\Users\admin\Downloads\micro_service_seclab-main --commandD:\_Tools\My_Safe_Tools\codeql\CodeQLpy-master\out\decode/run.cmd --overwrite
# linux
codeql database create out/database/SecExample-main --languagejava --command/bin/bash -c /Users/xxx/CodeQLpy/out/decode/run.sh --overwrite运行之后生成数据库如果有错请忽略最终只要看到 Successfully created database 就可以 最后查询漏洞 python main.py -d out/database/micro_service_seclab-main运行之后程序会使用自带的查询 ql 语句进行漏洞扫描完成之后会自动生成 csv 文件
开源项目
项目监控工具 以及 Codeql 自动运行CodeQLpy
参考文章
CodeQL从入门到放弃CodeQL与XRay联动实现黑白盒双重校验