# CodeQLpy
## 项目简介
CodeQLpy是一款基于CodeQL实现的自动化代码审计工具,目前仅支持java语言,后期会增加对其他语言的支持。
支持对多种不同类型的java代码进行代码审计,包括jsp文件、SpringMVC的war包、SpringBoot的jar包、maven源代码。
![image-20230111103754888](imgs/help.png)
-d: 指定待扫描的数据库,一般用于step3
-t: 指定待扫描的源码,源码可以支持文件夹,jar包和war包
-c: 指定源码是编译前源码还是编译后源码,一般需要使用此参数
-s: 是否进行环境检查,不建议跳过环境检查
-v: 指定待扫描的源码对应的jdk版本,默认是jdk8
-j: 指定源码中需要额外编译的jar包,用于步骤一,用法例如:oa1.jar,oa2.jar。支持通过正则的方式指定包名,例如oa.*?\.jar
-r: 指定目标网站根目录,仅在源码为文件夹类型有用,不指定默认为-t源码路径
## 安装准备
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.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/
```
## 项目使用
本项目的使用主要分成三个步骤,
**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/目录之下。
## CodeQLpy应用
CodeQLpy用于自动化分析常见WEB应用漏洞,包括但不限于SQL注入、XSS、命令执行、任意文件操作、XXE、SSRF、反序列化等。CodeQLpy不能用于挖掘反序列化利用链。
为什么不直接在lgtm网站上分析?
lgtm要求分析的源码一定是编译前的源码,而且其包含的插件有限,扩展性不够。
## 案例
案例一,[javasec测试用例](https://github.com/webraybtl/StudyCodeQLpy/tree/main/javasec_demo)
案例二,[若依RuoYi测试用例](https://github.com/webraybtl/StudyCodeQLpy/tree/main/ruoyi_demo)
案例三,[SpringMVC测试用例](https://github.com/webraybtl/StudyCodeQLpy/tree/main/springmvc_demo)
## 联系作者
如果有任何疑问,联系作者微信@ppdevxin
## 免责声明:
本篇文章仅用于技术交流学习和研究的目的,严禁使用文章中的技术用于非法目的和破坏,否则造成一切后果与发表本文章的作者无关。
### 中文版本:
本免责声明旨在明确指出,本文仅为技术交流、学习和研究之用,不得将文章中的技术用于任何非法目的或破坏行为。发表本文章的作者对于任何非法使用技术或对他人或系统造成的损害概不负责。
阅读和参考本文章时,您必须明确并承诺,不会利用文章中提供的技术来实施非法活动、侵犯他人的权益或对系统进行攻击。任何使用本文中的技术所导致的任何意外、损失或损害,包括但不限于数据损失、财产损失、法律责任等问题,都与发表本文章的作者无关。
本文提供的技术信息仅供学习和参考之用,不构成任何形式的担保或保证。发表本文章的作者不对技术的准确性、有效性或适用性做任何声明或保证。
### 英文版本:
This disclaimer is intended to clearly state that this article is solely for the purpose of technical exchange, learning, and research, and the use of the techniques mentioned in the article for any illegal purposes or destructive actions is strictly prohibited. The author of this article shall not be held responsible for any consequences resulting from the misuse of the techniques mentioned.
By reading and referring to this article, you must acknowledge and commit that you will not exploit the techniques provided in the article for any illegal activities, infringement of rights of others, or attacks on systems. The author of this article bears no responsibility for any accidents, losses, or damages caused by the use of the techniques mentioned in this article, including but not limited to data loss, property damage, legal liabilities, etc.
The technical information provided in this article is for learning and reference purposes only and does not constitute any form of warranty or guarantee. The author of this article makes no representations or warranties regarding the accuracy, effectiveness, or applicability of the techniques mentioned.
没有合适的资源?快使用搜索试试~ 我知道了~
基于CodeQL实现的半自动化代码审计工具,目前仅支持java语言。实现从源码反编译.zip
共265个文件
jar:143个
ql:79个
py:23个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 150 浏览量
2024-03-23
23:02:06
上传
评论
收藏 172.68MB ZIP 举报
温馨提示
基于CodeQL实现的半自动化代码审计工具,目前仅支持java语言。实现从源码反编译
资源推荐
资源详情
资源评论
收起资源包目录
基于CodeQL实现的半自动化代码审计工具,目前仅支持java语言。实现从源码反编译.zip (265个子文件)
HashWithoutSalt.ql.bak 6KB
.DS_Store 10KB
.DS_Store 8KB
.DS_Store 6KB
.gitignore 38B
config.ini 599B
rt.jar 65MB
rt.jar 61.61MB
rt.jar 42.97MB
jfxrt.jar 17.71MB
jfxrt.jar 14.59MB
jsp2class.jar 6.37MB
charsets.jar 6.31MB
cldrdata.jar 3.68MB
charsets.jar 3.52MB
resources.jar 3.4MB
deploy.jar 3.25MB
charsets.jar 2.99MB
resources.jar 2.36MB
ecj-4.6.3.jar 2.34MB
ecj-4.6.1.jar 2.33MB
deploy.jar 2.14MB
deploy.jar 1.99MB
nashorn.jar 1.94MB
jsse.jar 1.84MB
plugin.jar 1.68MB
catalina.jar 1.65MB
spring-web-5.3.23.jar 1.57MB
jackson-databind-2.14.1.jar 1.54MB
jd-cli.jar 1.5MB
java-decompiler.jar 1.42MB
spring-core-5.3.23.jar 1.42MB
spring-boot-2.7.4.jar 1.38MB
spring-context-5.3.23.jar 1.22MB
localedata.jar 1.12MB
spring-context-4.3.9.RELEASE.jar 1.09MB
resources.jar 1.08MB
spring-core-4.3.9.RELEASE.jar 1.07MB
spring-webmvc-5.3.23.jar 1005KB
plugin.jar 922KB
plugin.jar 921KB
spring-webmvc-4.3.9.RELEASE.jar 894KB
tomcat-coyote.jar 867KB
localedata.jar 816KB
javaws.jar 811KB
spring-web-4.3.9.RELEASE.jar 801KB
spring-test-5.3.23.jar 769KB
spring-beans-4.3.9.RELEASE.jar 745KB
spring-beans-5.3.23.jar 683KB
fastjson-1.2.80.jar 656KB
jersey-server.jar 653KB
jasper.jar 591KB
spring-test-4.3.9.RELEASE.jar 586KB
spring-security-config-4.2.8.RELEASE.jar 575KB
jsse.jar 573KB
jsse.jar 564KB
commons-collections-3.2.1.jar 562KB
jfr.jar 560KB
localedata.jar 538KB
jfr.jar 518KB
javaws.jar 472KB
spring-rabbit-1.7.9.RELEASE.jar 469KB
spring-orm-4.3.9.RELEASE.jar 466KB
jackson-core-2.14.1.jar 449KB
jersey-core.jar 447KB
spring-websocket-4.3.9.RELEASE.jar 446KB
spring-jdbc-4.3.9.RELEASE.jar 418KB
spring-security-core-4.2.8.RELEASE.jar 410KB
spring-security-web-4.2.8.RELEASE.jar 379KB
spring-messaging-4.3.9.RELEASE.jar 376KB
spring-aop-5.3.23.jar 374KB
spring-aop-4.3.9.RELEASE.jar 372KB
commons-codec-1.11.jar 327KB
catalina-tribes.jar 289KB
sunjce_provider.jar 285KB
spring-expression-5.3.23.jar 283KB
sunpkcs11.jar 282KB
tomcat-dbcp.jar 280KB
commons-lang-2.5.jar 273KB
spring-tx-4.3.9.RELEASE.jar 261KB
spring-expression-4.3.9.RELEASE.jar 257KB
gson-2.8.9.jar 252KB
servlet-api.jar 245KB
junit-4.11.jar 239KB
sunpkcs11.jar 233KB
spring-boot-test-2.7.4.jar 231KB
tomcat-websocket.jar 231KB
sunpkcs11.jar 227KB
commons-beanutils-1.8.0.jar 226KB
spring-boot-test-autoconfigure-2.7.4.jar 211KB
tomcat-util-scan.jar 210KB
sunjce_provider.jar 194KB
spring-context-support-4.3.9.RELEASE.jar 183KB
tomcat-util.jar 179KB
tomcat-i18n-ja.jar 175KB
tomcat-i18n-ko.jar 173KB
jasper-el.jar 167KB
sunjce_provider.jar 166KB
tomcat-i18n-zh-CN.jar 159KB
json-lib-2.4-jdk15.jar 155KB
共 265 条
- 1
- 2
- 3
资源评论
Kwan的解忧杂货铺
- 粉丝: 1w+
- 资源: 3661
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功