**1 工具介绍 ** CodeQLpyi是一款基于CodeQL实现的自动化代码审计工具,目前专注于支持Java语言,未来将逐步增加对其他编程语言的支持。它能够对多种不同类型的Java代码进行审计,包括但不限于JSP文件、Spring MVC的WAR包、Spring Boot的JAR包以及Maven项目源代码等。
「2 功能简介」支持对多种不同类型的Java代码进行代码审计,包括 JSP 文件、Spring MVC 的 WAR 包、Spring Boot 的 JAR 包以及 Maven 项目源代码。
-
-d: 指定待扫描的数据库,通常用于第三步
-
-t: 指定待扫描的源码,支持文件夹、JAR 包和WAR 包
-
-c: 指定源码是编译前还是编译后的版本,建议使用此参数
-
-s: 是否进行环境检查,建议不跳过环境检查
-
-v: 指定待扫描的源码对应的 JDK 版本,默认为 JDK8
-
-j: 指定需要额外编译的 JAR 包,适用于第一步,例如:oa1.jar, oa2.jar。也支持通过正则表达式指定包名,比如 oa.*?.jar
-
-r: 指定目标网站根目录,仅在源码为文件夹类型时有效,如果未指定,则默认为 -t 源码路径
「3 使用介绍」首先请安装最新版本的 CodeQL,具体安装方法请查阅 CodeQL 安装文档。老版本可能无法支持某些语法。对于 Python 环境,本项目要求使用 3.7 及以上版本,具体依赖请查看 requirements.txt 文件。在 Java 环境方面,项目需要安装以下组件:JDK8、JDK11 和 Maven。请修改 config/config.ini 文件,需要调整的配置项包括 qlpath、jdk8 和 jdk11,其他配置项可以保持默认设置。如果 JDK 路径中有空格,请用双引号将路径括起来。
「项目使用」
Step 1参数说明:
-
-t 参数用于指定目标源码的路径,支持文件夹、JAR 包和WAR 包。如果是文件夹类型的源码,-t 指定的路径必须是网站根目录,否则会因为源码中相对路径错误而导致编译异常。
-
-c 表示源码属于编译后的状态,即 class 文件。如果不指定,则表示源码为编译前的状态,即 Java 文件。
Step 2: 生成数据库 在命令行环境中直接运行上一步返回的生成数据库命令。在 macOS 系统下,使用以下命令:
bash
<生成数据库的命令>
在 Windows 系统下,使用以下命令:
cmd
<生成数据库的命令>
Step 3: 代码审计 在这一步中,需要使用上一步生成数据库的路径。
-
使用 -d 参数指定待扫描的数据库路径。
-
运行完成后,最终会生成结果文件,结果以 CSV 格式保存在 out/result/ 目录下。
「CodeQLpyi应用」
CodeQLpyi用于自动化分析常见WEB应用漏洞,涵盖了SQL注入、跨站脚本攻击(XSS)、命令注入、任意文件操作、XML外部实体(XXE)、服务器端请求伪造(SSRF)等。但需要注意的是,该工具并不支持挖掘反序列化利用链。
暂无更新
pip3 install -r requirements.txt
[codeql]qlpath = D:\CodeQL\ql\java\ql\test\jdk8 = "C:\Program Files\Java\jre1.8.0_131\bin\java.exe"jdk11 = "C:\Program Files\Java\jdk-11\bin\java.exe"idea_decode_tool = lib/java-decompiler.jarjd_decode_tool = lib/jd-cli.jarjsp_decode_tool = lib/jsp2class.jarecj_tool = lib/ecj-4.6.1.jartomcat_jar = lib/tomcat_libspring_boot_jar = lib/spring_boot_libdecode_savedir = out/decode/general_dbpath = out/database/maven_savedir = out/mvn/decompile_type = jddebug = onmodel = fastthread_num = 10
[log]path = out/log/
python3 main.py -t /Users/xxx/Downloads/OAapp/ -c
arch -x86_64 codeql database create out/database/OAapp --language=java --command="/bin/bash -c /Users/xxx/CodeQLpy/out/decode/run.sh" --overwrite
codeql database create out/database/OAapp --language=java --command="run.cmd" --overwrite
python3 main.py -d /Users/xxx/CodeQLpy/out/database/OAapp/
项目获取
公众号:「吉吉说安全」,对我发消息【20240320】免费获取代码审计工具
抓紧保存收藏,随时会下架
免费红队知识库:纷传
免责声明
由于传播、利用本公众号所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,本公众号及作者不为此承担任何责任,一旦造成后果请自行承担!如有侵权烦请告知,我们会立即删除并致歉。谢谢!