MCPcopy Index your code
hub / github.com/Drun1baby/JavaSecurityLearning

github.com/Drun1baby/JavaSecurityLearning @main

Chat with this repo
repository ↗ · DeepWiki ↗ · + Follow
3,074 symbols 6,864 edges 818 files 268 documented · 9%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

JavaSecurityLearning

项目的初衷是为了让更多师傅在学习 Java 安全的时候能够有一条比较清晰的学习路线,也希望师傅们通过这个项目学习 Java 安全时有能够所收获。

项目文件夹中包含了部分用于漏洞调试的代码(如果有些东西自己搭建失败,可以复用仓库代码),对应文章记录在博客中。

基础开发(是一定要学的)

先学 Springboot【狂神说Java】SpringBoot最新教程IDEA版通俗易懂

学一下 vue,VUE 可以过快一点:尚硅谷Vue2.0+Vue3.0全套教程丨vuejs从入门到精通

学完这两个之后可以自己过一个小项目【实战】基于SpringBoot+Vue开发的前后端分离博客项目完整教学

  • 学完这些内容最多花费两个月

推荐的 Java 基础,哪块不懂看哪块,二倍速【狂神说Java】Java零基础学习视频通俗易懂

Java 安全基础

可以看b站白日梦组长视频,讲的非常好。

一开始学还是会有点懵的,学到后面自然而然就会了。

Java 反序列化基础

接着就可以开始 CC 链了;CC 链是 1-6-3-2-4-5-7

还有一个 CC11;这一块 CC 链的学习要多自己总结,有利于后续的学习。

CC 链部分结束,进入 shiro 部分,shiro 之前我们已经走过开发了,所以理解起来很简单。

后面根据自己需求可以补 Shiro 权限绕过的部分。

Java 反序列化进阶

LDAP 是包含在 JNDI 里面的


学完上面的之后就可以开始学习其他的了。

Fastjson

2022 蓝帽杯初赛有一道 fastjson 1.2.68 的题目 CTFReposityStore

Log4j2

这些学完之后可以学一下内存马,Weblogic,Tomcat 和 Spring 开发;这里先学 Spring 开发。

Spring开发学习

Weblogic

以下四个洞虽然简单,但很有趣。

EL 表达式注入(本质上还是 OGNL 表达式注入)

内存马

关于内存马的环境搭建可以看我这一篇文章:Servlet 项目搭建 学习完之后最好自己可以用 Java Agent 实现一个 RASP

关于 Java 代码审计(很多人对这块其实有个误区)

其实 Java 安全不光只有反序列化,其实代码审计也是很重要的,我最开始学的时候就踏入了这个误区。

WebGoat 代码打底 WebGoat代码审计

详细的代码审计的文章与资料,指路 Java Owasp Top10 审计

Springboot 文件上传 RCE https://github.com/LandGrey/spring-boot-upload-file-lead-to-rce-tricks

查漏补缺

  • 其实链子没必要跟太多了,实战才是最重要的。

Java反序列化之C3P0链

Java OWASP 中的 XXE 代码审计

Java OWASP 中的 SQL 注入代码审计

Java 代码审计之华夏 ERP CMS v2.3

Java反序列化之 SnakeYaml 链

因为 SnakeYaml 的链子和 Fastjson 特别像,所以又复习了一遍 Fastjson 的源码

Java反序列化Fastjson篇05-写给自己看的一些源码深入分析

JS 引擎攻防 https://xz.aliyun.com/t/8697

Struts2 系列漏洞

这块应该是目前学习的重点之一

Java Struts2 学习与环境搭建

Java Struts2 系列 S2-001

Jackson 系列漏洞

Jackson 反序列化(一)漏洞原理

Jackson 反序列化(二)CVE-2017-7525

Jackson 反序列化(三)CVE-2017-17485

Jackson 反序列化 —— https://boogipop.com/2023/06/20/Jackson%E5%8F%8D%E5%BA%8F%E5%88%97%E5%8C%96%E9%80%9A%E6%9D%80Web%E9%A2%98/

Apache

Apache DolphinScheduler

CVE-2023-49299 & CVE-2024-23320 & CVE-2023-49109 漏洞概述:https://xz.aliyun.com/t/13981

Apache Ofbiz

https://y4tacker.github.io/2023/12/27/year/2023/12/Apache-OFBiz%E6%9C%AA%E6%8E%88%E6%9D%83%E5%91%BD%E4%BB%A4%E6%89%A7%E8%A1%8C%E6%B5%85%E6%9E%90-CVE-2023-51467/

CodeQL

师傅可能在编译的时候还会遇到一些问题,然而新版本的 CodeQL 对于 Java 已经不需要编译了

CodeQL 入门

CodeQL 官方文档学习

用CodeQL分析漏洞_CVE-2022-42889 | l3yx's blog

漏洞挖掘

Tabby 的使用:https://github.com/wh1t3p1g/tabby

后记

感觉现在 go 用的真的很多,java 系列可能暂时断更了,或许在不久的将来会出一个 golangSecurityLearning

Star History Chart

  • 交流群

随着点 Star 的师傅越来越多,希望给师傅们提供一个交流的平台 同时平常有一些师傅会加我好友问问题,问的人越来越多,于是决定建个群,也可以让师傅们在群里交流。(希望以后会写 golang 的 SecurityLearning)

可加 VX DrunkbabySec

image

Extension points exported contracts — how you extend this code

CustomTest (Interface)
@author mbechler [15 implementers]
JavaSecurity/ysoserial改写/ysoserial/src/test/java/ysoserial/test/CustomTest.java
UserDao (Interface)
(no doc) [11 implementers]
JavaSecurity/Spring/SpringLearn/SpringBasicLearning/IoC_Learn/src/main/java/DAO/UserDao.java
RemoteObj (Interface)
(no doc) [9 implementers]
JavaSecurity/JDK/JEP290/RMIServer/src/main/java/RemoteObj.java
IReceiver (Interface)
(no doc) [6 implementers]
JavaSecurity/Java Basic/Java 设计模式/Java-Design-Mode/Design-Principle/src/DependencyInversion/DependencyInversion2.java
Sex (Interface)
(no doc) [6 implementers]
JavaSecurity/Jackson/JacksonBasic/src/main/java/com/drunkbaby/defaultTyping/object_and_non_concrete/Sex.java
Rent (Interface)
(no doc) [3 implementers]
JavaSecurity/反序列化基础/Reappearance/Serialable/src/JdkProxy/StaticProxy/Rent.java
IPerson (Interface)
(no doc) [2 implementers]
JavaSecurity/XStream/XStream/XStream-Basic/src/main/java/IPerson.java
UserService (Interface)
(no doc) [1 implementers]
JavaSecurity/Apache/Shiro/CVE-2021-41303/src/main/java/shiro/service/UserService.java

Core symbols most depended-on inside this repo

call
called by 325
JavaSecurity/ysoserial改写/ysoserial/src/main/java/ysoserial/Serializer.java
setAccessible
called by 305
JavaSecurity/ysoserial改写/ysoserial/src/main/java/ysoserial/payloads/util/Reflections.java
add
called by 107
JavaSecurity/JDK/JMX/src/main/java/org/example/HelloWorldMBean.java
newInstance
called by 94
JavaSecurity/ysoserial改写/ysoserial/src/main/java/ysoserial/payloads/util/Reflections.java
write
called by 77
JavaSecurity/ysoserial改写/ysoserial/src/main/java/ysoserial/payloads/Wicket1.java
writeObject
called by 77
JavaSecurity/Trick/反序列化绕WAF/UTF8Deserialize/src/main/java/org/example/Evil.java
getName
called by 72
JavaSecurity/JDK/JMX/src/main/java/org/example/HelloWorldMBean.java
setFieldValue
called by 65
JavaSecurity/ysoserial改写/ysoserial/src/main/java/ysoserial/payloads/util/Reflections.java

Shape

Method 2,079
Class 828
Function 111
Interface 54
Enum 2

Languages

Java96%
TypeScript3%
Python1%
C1%

Modules by API surface

JavaSecurity/Spring/SpringBootLearn/SpringSecurity/src/main/resources/static/qinjiang/js/jquery-3.1.1.min.js85 symbols
JavaSecurity/Apache/ActiveMQ/Pkg-CVE-2023-46604/CVE-2023-46604/src/main/java/org/apache/activemq/transport/tcp/TcpTransport.java62 symbols
JavaSecurity/Apache/ActiveMQ/Pkg-CVE-2023-46604/CVE-2023-46604-Client/src/main/java/org/apache/activemq/transport/tcp/TcpTransport.java62 symbols
JavaSecurity/ysoserial改写/ysoserial/src/main/java/ysoserial/secmgr/DelegateSecurityManager.java30 symbols
JavaSecurity/ysoserial改写/ysoserial/src/main/java/ysoserial/exploit/JBoss.java28 symbols
JavaSecurity/Java Basic/Java 设计模式/Java-Design-Mode/Design-Principle/src/InterfaceSegregation/Segregation1.java27 symbols
JavaSecurity/Java Basic/Java 设计模式/Java-Design-Mode/Design-Principle/src/InterfaceSegregation/improve/Segregation2.java26 symbols
JavaSecurity/Java 代码审计/CodeReview/JavaSec-Code/SSRF/src/main/java/com/drunkbaby/config/WebConfig.java23 symbols
JavaSecurity/ysoserial改写/ysoserial/src/test/java/ysoserial/test/payloads/PayloadsTest.java21 symbols
JavaSecurity/ysoserial改写/ysoserial/src/test/java/ysoserial/test/payloads/MyfacesTest.java18 symbols
JavaSecurity/Spring/SpringLearn/SpringBasicLearning/Spring-04-DI/src/main/java/com/drunkbaby/pojo/Student.java18 symbols
JavaSecurity/Java 代码审计/CodeReview/JavaSec-Code/SSRF/src/main/java/com/drunkbaby/security/SocketHookImpl.java17 symbols

Datastores touched

(mysql)Database · 1 repos
mybatisDatabase · 1 repos
java_sec_codeDatabase · 1 repos
mp_testDatabase · 1 repos
shiro02Database · 1 repos

For agents

$ claude mcp add JavaSecurityLearning \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact