MyJavaSecStudy
在Java安全学习过程中的笔记和代码
Install / Use
/learn @1diot9/MyJavaSecStudyREADME
MyJavaSecStudy
记录一下我的Java安全学习历程。会不定时更新索引和代码仓库。
分割线表示至少要学完上面部分才能入门。
<br>- Java基础
- Java安全基础
- 代码和jar包调试
- 反序列化
- JNDI
- JDBC
- shiro
- Fastjson&Jackson&SnakeYaml
- 内存马&回显技术
- 高版本jdk下的链子
- 表达式+SSTI
- RASP
- 中间件相关
- Spring系列
- 工具开发/二开
- 代码审计
- 代码审计辅助工具
- 查漏补缺
- 参考学习路线
- 博客&公众号整理
- 工具推荐
Java基础<a id="Java基础"></a>
主要目标是学会Java基础语法就行,不用一下子学太深,之后遇到不会的再回来查就行
柏码知识库 | JavaSE 笔记(一)走进Java语言 这个比较推荐,看章节目录的(一)~(六)就行,后面SpringMVC,SpringBoot也可以看这个网站
JavaGuide(Java学习&面试指南) | JavaGuide
【狂神说Java】Java零基础学习视频通俗易懂_哔哩哔哩_bilibili b站看其他的也行,比如黑马,找自己适合的就行
<br>Java安全基础 <a id="Java安全基础"></a>
主要是学习反射,类加载,动态代理,各种命令执行方式等概念,为后面的学习打下基础。
一开始看不懂很正常,能有个印象就行,后面在具体问题中发现自己不会时再回来看;多问AI
<br>基础内容
想快一点的话,可以只看这部分文章。选取了两位师傅的文章,可以相互补充。
2. 读文件 看里面的IO操作,反射,代理模式(可以先略看),命令执行方式,Unsafe,类加载器和序列化与反序列化就行
Java反序列化基础篇-02-Java反射与URLDNS链分析 | Drunkbaby's Blog 先看里面反射的部分就行
Java反序列化基础篇-03-Java反射进阶 | Drunkbaby's Blog
Java反序列化基础篇-05-类的动态加载 | Drunkbaby's Blog 类加载学完要知道,类加载时,会触发哪些部分的代码
Java反序列化基础篇-01-反序列化概念与利用 | Drunkbaby's Blog 看完这个可以把上面那个URLDNS链看一下
<br>补充内容
Java反序列化漏洞专题-基础篇(21/09/05更新类加载部分)_哔哩哔哩_bilibili 视频教程,内容和上面差不多
ClassLoader · 攻击Java Web应用-Java Web安全 也是上面的内容,可以看看有什么不一样
JavaSec/1.基础知识/ClassLoader(类加载机制)/ClassLoader(类加载机制).md at main · Y4tacker/JavaSec
MyJavaSecStudy/docs/Java安全漫谈.pdf at main · 1diot9/MyJavaSecStudy phith0n师傅的Java安全漫谈,也很不错,其中07.反序列化篇(1)中讲了php,python和java反序列化的异同,可以看看
phith0n/JavaThings: Share Things Related to Java - Java安全漫谈笔记相关内容 Java安全漫谈的配套代码
Java 反序列化漏洞(一) - 前置知识 & URLDNS | 素十八 涉及到了反序列化具体原理,比较深入
<br>JavaWeb基础<a id="JavaWeb基础"></a>
JavaWeb常见漏洞
XXE
XXE整理 | 1diot9's Blog 参考的文章记得看
一篇文章带你深入理解漏洞之 XXE 漏洞-先知社区 虽然不针对Java,但是写的很完整
<br>代码 / jar包调试<a id="代码和jar包调试"></a>
一开始做ctf题的时候,遇到过很尴尬的情况,拿到jar包,不知道要怎么在本地调试。后面才学习到了反编译,远程调试等内容。
奇安信攻防社区-java审计调试方式 基本涉及了所有情况
skylot/jadx: Dex to Java decompiler 反编译工具
<br>反序列化 <a id="反序列化"></a>
初学可以只看CC链
CC链
CC链是Java反序列化的开始。
Java反序列化Commons-Collections篇01-CC1链 | Drunkbaby's Blog 小叮师傅的博客讲了所有的CC链,同时也有环境搭建的示例(一定跟着配一下8u65的源码,后面查找用法的时候才能搜索到),而且还有一张全CC链的流程图JavaSecurityLearning/链子流程图 at main · Drun1baby/JavaSecurityLearning
MyJavaSecStudy/docs/Java安全漫谈.pdf at main · 1diot9/MyJavaSecStudy 挑07之后涉及CC链的内容看,18、19和涉及shiro的可以先不看(其实shiro反序列化的原理差不多,都是找链子,不过因为用的类加载器不一样,会出现一些变化)
Java 反序列化漏洞(二) - Commons Collections | 素十八 su18师傅的反序列化取经路
========================================================
CC链再次挖掘-先知社区 可以尝试一下自己能不能找到其他类利用
CC链再挖掘 | 1diot9's Blog 基于上面的文章,着重于如何审计
java反序列化漏洞commons-collections3.2.1TransformedList触发transform-先知社区
<br>hessian
Java安全学习——Hessian反序列化漏洞 - 枫のBlog 原理+Apache Dubbo
0ctf2022 hessian-only-jdk writeup jdk原生链-先知社区 tabby挖掘
<br>利用链探测
构造java探测class反序列化gadget | 回忆飘如雪 实战下利用链探测,dns法,反序列化炸弹延时法
<br>其他链子&姿势
Java反序列化之C3P0链 | Drunkbaby's Blog
分析尝试利用tabby挖掘-SpringAOP链 - Potat0w0
realworldctf old system复盘(jdk1.4 getter jndi gadget)-先知社区 LdapAttribute链
利用特殊反序列化组件攻击原生反序列化入口-先知社区 fj,jk结合ROME,LdapAttribute等
Java利用无外网(下):ClassPathXmlApplicationContext的不出网利用 | 离别歌 第一次知道tomcat和php有自动保存临时文件的机制。里面非预期的脏字符jar包构造没见过
<br>JNDI <a id="JNDI"></a>
基础内容
Java反序列化之RMI专题01-RMI基础 | Drunkbaby's Blog RMI先简单过一遍就行
Java反序列化之JNDI学习 | Drunkbaby's Blog JNDI要好好看,后面用的很多,学完后可以看一下log4j2漏洞
JNDI · 攻击Java Web应用-Java Web安全 里面引用了一篇命名和目录服务基本概念的文章,记得看,对后面理解RMI和LDAP很有帮助,很多东西都会在调试里遇到
========================================================
RMI、JRMP、JEP290、LDAP
这里的目标是:
1、搞清楚RMI的通信流程,搞清楚Server,Registry,Client三者互相的打法
2、了解JRMP在RMI中的作用,知道它和DGC的关系
3、了解两次JEP290的防护和绕过,JEP290(8u121~8u230),JEP290(>8u231)
4、了解JNDI的基本打法,包括codebase远程加载,ldap发送反序列化数据,reference本地工厂(BeanFactory为例)
RMI JRMP JEP290 LDAP基础梳理 | 1diot9's Blog 我这篇写的比较完整,但是不会过于全面,可以先看
下面整理当时看的部分文章
综合梳理
奇安信攻防社区-JAVA JRMP、RMI、JNDI、反序列化漏洞之间的风花雪月 这个感觉最清楚,底下的参考文章也看看
基于Java反序列化RCE - 搞懂RMI、JRMP、JNDI-先知社区
搞懂RMI、JRMP、JNDI-终结篇-先知社区 里面提到的文章也要看
RMI
RMI-攻击方式总结-安全KER - 安全资讯平台 有比较完整的示例代码
MyJavaSecStudy/docs/Java安全漫谈.pdf at main · 1diot9/MyJavaSecStudy 04-06详细讲了RMI的通信过程
JRMP&JEP290
RMI-JEP290的分析与绕过-安全KER - 安全资讯平台
Shiro有key但无回显利用链子-JRMP大法_shiro有key无链怎么办?-CSDN博客 可以通过jrmp进行利用链探测
<br>高版本JDK绕过
基于反序列化链
RMI JRMP JEP290 LDAP基础梳理 | 1diot9's Blog 5.1.1和5.2.2有讲
基于BeanFactory
探索高版本 JDK 下 JNDI 漏洞的利用方法 - 跳跳糖 除了最基本的EL表达式执行,还有Snakeyaml,XStream等方式(高版本tomcat的forceString被禁)
其他Factory绕过
高版本JNDI注入-高版本Tomcat利用方案-先知社区 tomcat中,非BeanFactory的工厂利用
奇安信攻防社区-【2024补天白帽黑客大会】JNDI新攻击面探索 是上面文章的参考
探索高版本 JDK 下 JNDI 漏洞的利用方法 - 跳跳糖 最后有jdbc相关工厂
SolarWinds Security Event Manager AMF 反序列化 RCE (CVE-2024-0692) - X1r0z Blog Hikari跟Druid一样,都可以实现JNDI+JDBC,都是可以执行初始化sql语句
京麟CTF 2024 ezldap 分析-先知社区 com.sun.jndi.ldap.object.trustSerialData false的绕过
RMI返回恶意stub
[2025]N1CTF WP for n1cat,eezzjs | GSBP's Blog
<br>JDBC <a id="JDBC"></a>
mysql
MySQL jdbc 反序列化分析 | Drunkbaby's Blog 最经典的mysql-jdbc
mysql JDBC 攻击 | 1diot9's Blog 整理了打法和绕过
从JDBC MySQL不出网攻击到spring临时文件利用-先知社区 这个打法比较新,其中的临时文件上传适用性广
<br>h2sql
NCTF2024 Web方向题解-CSDN博客 h2Revenge
SolarWinds Security Event Manager AMF 反序列化 RCE (CVE-2024-0692) - X1r0z Blog h2可以结合其他依赖写文件
hsql
<br>sqlite
JavaSec/9.JDBC Attack/SQLite/index.md at main · Y4tacker/JavaSec
CISCN2024 writeup(web部分) ezjava
<br>Postgresql
Postgresql JDBC Attack and Stuff | 素十八 可以设置jdbc url 来加载xml文件
<br>Derby
derby数据库如何实现RCE - lvyyevd's 安全博客
[N1CTF Junior 2024 Web Official Writeup - X1r0z Blog](
