项目简介
CodeQLpy是一款基于CodeQL实现的半自动化代码审计工具,目前仅支持java语言,后期会增加对其他语言的支持。实现从源码反编译,数据库生成,脆弱性发现的全过程,可以辅助代码审计人员快速定位源码可能存在的漏洞。
支持对多种不同类型的java代码进行代码审计,包括jsp文件、SpringMVC的war包、SpringBoot的jar包、maven源代码。
-d: 指定待扫描的数据库,一般用于step3
-t: 指定待扫描的源码,源码可以支持文件夹,jar包和war包
-c: 指定源码是编译前源码还是编译后源码,一般需要使用此参数
-s: 是否进行环境检查,不建议跳过环境检查
-v: 指定待扫描的源码对应的jdk版本,默认是jdk8
-j: 指定源码中需要额外编译的jar包,用于步骤一,用法例如:oa1.jar,oa2.jar。支持通过正则的方式指定包名,例如oa.*?.jar
-r: 指定目标网站根目录,仅在源码为文件夹类型有用,不指定默认为-t源码路径
CodeQLpy用于自动化分析常见WEB应用漏洞,包括但不限于SQL注入、XSS、命令执行、任意文件操作、XXE、SSRF、反序列化等。CodeQLpy不能用于挖掘反序列化利用链。
lgtm要求分析的源码一定是编译前的源码,而且其包含的插件有限,扩展性不够。
https://www.freebuf.com/articles/web/283795.html
2、python环境依赖,本项目依赖python3.7及以上版本,具体依赖见requirements.txt
pip3 install -r requirements.txt
[codeql]
qlpath = D:CodeQLqljavaqltest
jdk8 = "C:Program FilesJavajre1.8.0_131binjava.exe"
jdk11 = "C:Program FilesJavajdk-11binjava.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/
本项目的使用主要分成三个步骤
python3 main.py -t /Users/xxx/Downloads/OAapp/ -c
参数解释
-
-t参数表示目标源码的路径,支持的源码类型是文件夹,jar包和war包。注意如果是文件夹类型的源码,-t指定的路径必须是网站跟目录,不然会因为源码中相对路径错误导致编译异常。 -
-c表示源码是属于编译后的源码,即class文件。如果不指定,则表示源码为编译前源码,即java文件。
Step2. 生成数据库
这一步直接使用上一步命令最终返回的生成数据库的命令在cmd/bash环境中运行即可。
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
Step3. 代码审计
这一步需要使用上一步命令最终相应的生成数据库的路径
python3 main.py -d /Users/xxx/CodeQLpy/out/database/OAapp/
- -d 参数表示待扫描的数据库路径
运行完成之后最终会返回结果文件,结果文件是csv文件,保存目录在out/result/目录之下。
下载地址
https://github.com/webraybtl/CodeQLpy
原文始发于微信公众号(Hack分享吧):CodeQLpy!半自动化代码审计工具
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论