CodeQLpy是一款基于CodeQL实现的自动化代码审计工具,目前仅支持java语言。
支持对多种不同类型的java代码进行代码审计,包括jsp文件、SpringMVC的war包、SpringBoot的jar包、maven源代码。
项目地址:
https://github.com/webraybtl/CodeQLpy
codeql 应该是在前年log4j2那次核弹级漏洞后火起来的
安装codeql
在安装之前需要安装codeql 和sdk,都需要最新版本
https://github.com/github/codeql-cli-binaries/releases
最好是放在同一目录下
~/CodeQL/codeql
然后设置环境变量
export PATH=/User/xxxx/CodeQL/codeql:$PATH
Windows 我的电脑-高级配置-环境变量-安装目录
加载配置文件
source一下/etc/profile
shell输入codeql 成功即可配置完成
安装sdk
然后在 ~/CodeQL/codeql 下下载ql
git clone https://github.com/Semmle/ql
安装CodeQLpy
然后环境就安装成功,把py脚本文件也解压放到CodeQL目录下
安装依赖
pip3 install -r requirements.txt
然后需要进入config目录下修改ini配置
注:有空格需要加上引号
[codeql]
qlpath = /Users/xxxx/CodeQL/codeql/ql/java/ql/test
jdk8 = /Library/Java/JavaVirtualMachines/jdk1.8.0_112.jdk/Contents/Home/bin/java
jdk11 = /Library/Java/JavaVirtualMachines/jdk-11.0.15.1.jdk/Contents/Home/bin/java
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 /Users/xxx/Desktop/SecExample-main
生成数据库
arch -x86_64 codeql database create out/database/SecExample-main --language=java --command="/bin/bash -c /Users/xxx/CodeQLpy/out/decode/run.sh" --overwrite
windows
codeql database create out/database/SecExample-main --language=java --command="run.cmd" --overwrite
当你完成第一步,它会把第二步的命令显示出来,直接复制即可。
开始扫描
指定out目录下生成的数据看目录
python3 main.py -d out/database/SecExample-main
扫描过程中,如发现漏洞,会高亮显示
等待一会,生成csv文件,打开就可以了
然后打开代码,进行分析