CodeQLpy!半自动化代码审计工具

华盟原创文章投稿奖励计划

项目简介

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应用

CodeQLpy用于自动化分析常见WEB应用漏洞,包括但不限于SQL注入、XSS、命令执行、任意文件操作、XXE、SSRF、反序列化等。CodeQLpy不能用于挖掘反序列化利用链。

为什么不直接在lgtm网站上分析?

lgtm要求分析的源码一定是编译前的源码,而且其包含的插件有限,扩展性不够。

工具使用

1、首先安装CodeQL,具体安装方法可以参考CodeQL安装。注意一定要使用新版本,老版本中有不支持的语法

https://www.freebuf.com/articles/web/283795.html

2、python环境依赖,本项目依赖python3.7及以上版本,具体依赖见requirements.txt

pip3 install -r requirements.txt

3、java环境依赖,本项目运行需要安装下面的java组件:JDK8、JDK11、maven。4、修改config/config.ini文件,需要修改的配置项是qlpath和jdk8和jdk11,其他项目可保持默认。注意jdk的路径中有空格的话需要用双引号包裹。

[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/

项目使用

本项目的使用主要分成三个步骤

Step1. 生成数据库初始化

python3 main.py -t /Users/xxx/Downloads/OAapp/ -c

参数解释

  • -t参数表示目标源码的路径,支持的源码类型是文件夹,jar包和war包。注意如果是文件夹类型的源码,-t指定的路径必须是网站跟目录,不然会因为源码中相对路径错误导致编译异常。
  • -c表示源码是属于编译后的源码,即class文件。如果不指定,则表示源码为编译前源码,即java文件。

Step2. 生成数据

这一步直接使用上一步命令最终返回的生成数据库的命令在cmd/bash环境中运行即可。

mac命令如下

arch -x86_64 codeql database create out/database/OAapp --language=java --command="/bin/bash -c /Users/xxx/CodeQLpy/out/decode/run.sh" --overwrite

windows命令如下

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分享吧

黑白之道发布、转载的文章中所涉及的技术、思路和工具仅供以安全为目的的学习交流使用,任何人不得将其用于非法用途及盈利等目的,否则后果自行承担!

如侵权请私聊我们删文


END

本文来源Hack分享吧,经授权后由华盟君发布,观点不代表华盟网的立场,转载请联系原作者。

发表回复