Skip to content

1diot9/MyJavaSecStudy

Repository files navigation

MyJavaSecStudy

记录一下我的Java安全学习历程。会不定时更新索引和代码仓库。



Java基础

主要目标是学会Java基础语法就行,不用一下子学太深,之后遇到不会的再回来查就行

柏码知识库 | JavaSE 笔记(一)走进Java语言 这个比较推荐,看章节目录的(一)~(六)就行,后面SpringMVC,SpringBoot也可以看这个网站

简介 - Java教程 - 廖雪峰的官方网站

JavaGuide(Java学习&面试指南) | JavaGuide

【狂神说Java】Java零基础学习视频通俗易懂_哔哩哔哩_bilibili b站看其他的也行,比如黑马,找自己适合的就行


Java安全基础

主要是学习反射,类加载,动态代理,各种命令执行方式等概念,为后面的学习打下基础。

一开始看不懂很正常,能有个印象就行,后面在具体问题中发现自己不会时再回来看;多问AI


基础内容

想快一点的话,可以只看这部分文章。选取了两位师傅的文章,可以相互补充。

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链看一下


补充内容

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 | 素十八 涉及到了反序列化具体原理,比较深入


反序列化

CC链

CC链是Java反序列化的开始,每个人都应该好好学习。

Java反序列化Commons-Collections篇01-CC1链 | Drunkbaby's Blog 小叮师傅的博客讲了所有的CC链,同时也有环境搭建的示例,而且还有一张全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链=========================


hessian

Java安全学习——Hessian反序列化漏洞 - 枫のBlog

Hessian 反序列化知一二 | 素十八


其他链子&姿势

Java反序列化之C3P0链 | Drunkbaby's Blog c3p0,可以打二次反序列化

分析尝试利用tabby挖掘-SpringAOP链 - Potat0w0

realworldctf old system复盘(jdk1.4 getter jndi gadget)-先知社区 LdapAttribute链

利用特殊反序列化组件攻击原生反序列化入口-先知社区 fj,jk结合ROME,LdapAttribute等

Java利用无外网(下):ClassPathXmlApplicationContext的不出网利用 | 离别歌 第一次知道tomcat和php有自动保存临时文件的机制。里面非预期的脏字符jar包构造没见过


JNDI

基础内容

Java反序列化之RMI专题01-RMI基础 | Drunkbaby's Blog RMI先简单过一遍就行

Java反序列化之JNDI学习 | Drunkbaby's Blog JNDI要好好看,后面用的很多,学完后可以看一下log4j2漏洞

JNDI · 攻击Java Web应用-Java Web安全 里面引用了一篇命名和目录服务基本概念的文章,记得看,对后面理解RMI和LDAP很有帮助,很多东西都会在调试里遇到

=========================快速入门的话,可以先只看上面部分的=========================


高版本JDK绕过

基于BeanFactory

探索高版本 JDK 下 JNDI 漏洞的利用方法 - 跳跳糖 除了最基本的EL表达式执行,还有Snakeyaml,XStream等方式(高版本tomcat的forceString被禁)


其他Factory绕过

SolarWinds Security Event Manager AMF 反序列化 RCE (CVE-2024-0692) - X1r0z Blog Hikari跟Druid一样,都可以实现JNDI+JDBC,都是可以执行初始化sql语句

高版本JNDI注入-高版本Tomcat利用方案-先知社区

探索高版本 JDK 下 JNDI 漏洞的利用方法 - 跳跳糖 jdk17的题特别喜欢考JNDI+JDBC

JNDI jdk高版本绕过—— Druid-先知社区


未分类

RMI协议分析 - lvyyevd's 安全博客

Java RMI 攻击由浅入深 | 素十八

MyJavaSecStudy/docs/Java安全漫谈.pdf at main · 1diot9/MyJavaSecStudy 04-06详细讲了RMI的通信过程

京麟CTF 2024 ezldap 分析-先知社区 com.sun.jndi.ldap.object.trustSerialData false的绕过

奇安信攻防社区-【2024补天白帽黑客大会】JNDI新攻击面探索


JDBC

mysql

MySQL jdbc 反序列化分析 | Drunkbaby's Blog 最经典的mysql-jdbc

============如果真的很急,JDBC可以先只看上面这一个mysql,其他的遇到了再学=================

从JDBC MySQL不出网攻击到spring临时文件利用-先知社区 这个打法比较新,其中的临时文件上传适用性广


h2sql

NCTF2024 Web方向题解-CSDN博客 h2Revenge

SolarWinds Security Event Manager AMF 反序列化 RCE (CVE-2024-0692) - X1r0z Blog h2可以结合其他依赖写文件


sqlite

JavaSec/9.JDBC Attack/SQLite/index.md at main · Y4tacker/JavaSec

CISCN2024 writeup(web部分) ezjava

从一道题看利用sqlite打jdbc达到RCE-先知社区


Derby

derby数据库如何实现RCE - lvyyevd's 安全博客

N1CTF Junior 2024 Web Official Writeup - X1r0z Blog

因为项目中遇到Nacos挺多的...-知识星球


汇总

JDBC Connection URL 攻击

JDBC-Attack 攻击利用汇总-先知社区

JDBC-Attack 利用汇总 - Boogiepop Doesn't Laugh

Jdbc碎碎念三:内存数据库 | m0d9's blog h2sql,hsql,sqlite,derby

yulate/jdbc-tricks: 《深入JDBC安全:特殊URL构造与不出网反序列化利用技术揭秘》对应研究总结项目 "Deep Dive into JDBC Security: Special URL Construction and Non-Networked Deserialization Exploitation Techniques Revealed" - Research Summary Project


shiro

shiro反序列化

Java反序列化Shiro篇01-Shiro550流程分析 | Drunkbaby's Blog

Java反序列化Shiro篇02-Shiro721流程分析 | Drunkbaby's Blog

====================shiro反序列化快速入门的话,可以只看上面的======================

Shiro RememberMe 漏洞检测的探索之路 - CT Stack 安全社区 通过密钥正常错误时,回显中rememberMe字段的不同来实现密钥爆破

一种另类的 shiro 检测方式

Shiro绕过Header长度限制进阶利用 | Bmth's blog 里面还提到pen4uin师傅的文章,也可以去看看


shiro越权

待完善。。。


Fastjson&Jackson&SnakeYaml

Fastjson

Java反序列化Fastjson篇01-FastJson基础 | Drunkbaby's Blog 小叮师傅写的不错,可以先看他的fastjson系列文章,一共5篇,前四篇必看,里面列举poc的可以略看,主要先搞懂各版本为什么能这样绕过

Fastjson 反序列化漏洞 · 攻击Java Web应用-Java Web安全

=========================快速入门的话,可以只看上面的=========================

FastJsonParty/Fastjson全版本检测及利用-Poc.md at main · lemono0/FastJsonParty fastjson主要是在黑盒条件下利用,这个项目给了各版本的探测利用姿势

safe6Sec/Fastjson: Fastjson姿势技巧集合

FastJson与原生反序列化 fastjson在原生反序列化中起到toString-->getter的作用

FastJson与原生反序列化(二) 讲了高版本fastjson怎么在原生反序列化中进行绕过


SnakeYaml

Java反序列化之 SnakeYaml 链 | Drunkbaby's Blog 比较SnakeYaml反序列化的fastjson的异同;了解SPI机制是怎么被利用的

SnakeYaml利用总结 | 1diot9's Blog 列举了常用的poc;我仓库有对应poc,可以直接用

Yaml文件写法总结 | 1diot9's Blog

=========================快速入门的话,可以先只看上面的=========================

Java利用无外网(上):从HertzBeat聊聊SnakeYAML反序列化 | 离别歌

奇安信攻防社区-SnakeYaml 不出网 RCE 新链(JDK原生链)挖掘


内存马&回显技术

内存马

Java内存马系列-01-基础内容学习 | Drunkbaby's Blog 可以先看01,02,03,05,里面提到的方法适用于传统JavaWeb项目(Tomcat为中间件的)

基于内存 Webshell 的无文件攻击技术研究-安全KER - 安全资讯平台 详细讲了Spring环境下,如何一步步动态注册一个Controller或者Interceptor来实现内存马注入

针对Spring MVC的Interceptor内存马 - bitterz - 博客园 是上面landgrey师傅文章的二创

奇安信攻防社区-利用 intercetor 注入 spring 内存 webshell 也是landgrey师傅的

Spring内存马学习 | Bmth's blog 这里没讲原理,主要是给出了能直接用的内存马

=====================快速入门的话,可以先只看上面的几篇文章======================

bitterzzZZ/MemoryShellLearn: 分享几个直接可用的内存马,记录一下学习过程中看过的文章

Getshell/Mshell: Memshell-攻防内存马研究

W01fh4cker/LearnJavaMemshellFromZero: 【三万字原创】完全零基础从0到1掌握Java内存马,公众号:追梦信安

上面这三篇都是内存马学习的相关项目,里面有很多优秀的文章和案例代码

奇安信攻防社区-Solon框架注入内存马 里面提到的Java Object Searcher值得学习

c0ny1/java-object-searcher: java内存对象搜索辅助工具

Shiro RememberMe 漏洞检测的探索之路 - CT Stack 安全社区 这里也有用到Java-object-searcher 构造tomcat回显

半自动化挖掘request实现多种中间件回显 | 回忆飘如雪 java-object-searcher工具的作者

内存对象搜索原理剖析-先知社区 java-object-searcher原理


内存马工具

pen4uin/java-memshell-generator: 一款支持自定义的 Java 内存马生成工具|A customizable Java in-memory webshell generation tool.

ReaJason/MemShellParty: 一款专注于 Java 主流 Web 中间件的内存马快速生成工具,致力于简化安全研究人员和红队成员的工作流程,提升攻防效率


回显技术

pen4uin/java-echo-generator: 一款支持自定义的 Java 回显载荷生成工具|A customizable Java echo payload generation tool. 回显技术的工具


RASP

JNI攻击 · 攻击Java Web应用-Java Web安全


SpringBoot

LandGrey/SpringBootVulExploit: SpringBoot 相关漏洞学习资料,利用方法和技巧合集,黑盒安全评估 check list 总结了SpringBoot的常见利用方式


heapdump分析

主要是jdk自带的VisualVM看jdk版本,heapdump_tools分析依赖和密码

Springboot信息泄露以及heapdump的利用_heapdump信息泄露-CSDN博客

京麟CTF 2024 ezldap 分析-先知社区


文件缓存机制

从JDBC MySQL不出网攻击到spring临时文件利用-先知社区


工具开发/二开

新年快乐 | ysoserial 分析与魔改

yhy0/ExpDemo-JavaFX: 图形化漏洞利用Demo-JavaFX版 GUI工具的开发框架


JavaWeb基础

待完善。。。


代码审计

Java安全慢游记 非常好整理,强烈推荐,有基础也有例子,还讲了Tabby和CodeQL在审计中的运用

若依

若依各版本漏洞 | 1diot9's Blog

奇安信攻防社区-若依(RuoYi)框架漏洞战争手册

♪(^∇^*)欢迎肥来!RuoYi历史漏洞 | 高木のBlog

SecurityList/Java_OA/RuoYi.md at main · ax1sX/SecurityList

charonlight/RuoYiExploitGUI: 若依最新定时任务SQL注入可导致RCE漏洞的一键利用工具


WebGoat

WebGoat靶场-身份认证缺陷 | 1diot9's Blog

WebGoat代码审计-03-目录遍历漏洞 | Drunkbaby's Blog


泛微Ecology9

泛微ecology9前置 | 1diot9's Blog

ecology9代码审计 | Sn1pEr's blog

泛微e-cology9 browser.jsp SQL注入漏洞分析 | 0xf4n9x's Blog

【漏洞复现】泛微E-Cology V9 browser.jspSQL注入漏洞及分析

微信公众平台

changeUserInfo信息泄露+ofsLogin任意用户登录 | 1diot9's Blog

泛微e-cology9 changeUserInfo信息泄漏及ofsLogin任意用户登录漏洞分析


用友U8cloud

用友U8Cloud环境搭建 | 1diot9's Blog

用友U8cloud-esnserver接口RCE | 1diot9's Blog

用友U8cloud-ServiceDispacherServlet反序列化 | 1diot9's Blog

微信公众平台

用友U8cloud-LoginVideoServlet接口反序列化 | 1diot9's Blog


代码审计辅助工具

jar-analyzer

用起来比tabby和codeql都要简单,而且找到的链子也比较全,目前的不足是:对source,sink,sanitizer的设置不太灵活。总体来说,非常适合当作最先接触的辅助工具。

Jar Analyzer 官方文档


tabby

1. Neo4j CQL - 数据类型 这个写的很详细,有基础,也有案例,还提供了很多模板查询语句,十分推荐

自动化代码审计实践 | mayylu's blog

4. 案例-Tabby自动化挖掘JavaSecCode


CodeQL

Codeql全新版本从0到1-先知社区 25年的文章,比较新

1. 案例-CodeQL自动化挖掘JavaSecCode

利用Github Actions生成CodeQL数据库 -- 以AliyunCTF2024 Chain17的反序列化链挖掘为例 - KingBridge - 博客园

aliyun ctf chain17 回顾(超详细解读)-先知社区

CodeQL从入门到入土 - FreeBuf网络安全行业门户

原创 Paper | CodeQL 入门和基本使用 | CTF导航

细谈使用CodeQL进行反序列化链的挖掘过程-SecIN 相关文章关键词:codeql java反序列化

利用codeql查找hsqldb2.7.3最新反序列化链-先知社区 里面的参考文章也值得看

safe6Sec/CodeqlNote: Codeql学习笔记

自动化代码审计实践 | mayylu's blog


学习路线整合

这里是其他师傅整理的学习路线,我这里仅列举了我看过的一些,如果有其他推荐的,可以私聊我

前言 · 攻击Java Web应用-[Java Web安全]

Y4tacker/JavaSec: a rep for documenting my study, may be from 0 to 0.1

Java安全慢游记 着眼于代码审计,里面较为系统的讲了Tabby和CodeQL的使用

Drun1baby/JavaSecurityLearning: 记录一下 Java 安全学习历程,也算是半条学习路线了

phith0n/JavaThings: Share Things Related to Java - Java安全漫谈笔记相关内容

B站最全的Java安全学习路线_哔哩哔哩_bilibili 许少,推荐一下他写的工具,jar-analyzer

LyleMi/Learn-Web-Hacking: Study Notes For Web Hacking / Web安全学习笔记 这个是Web安全的


工具推荐

vulhub/java-chains: Vulhub Vulnerability Reproduction Designated Platform 利用链神器

jar-analyzer/jar-analyzer: Jar Analyzer - 一个 JAR 包 GUI 分析工具,方法调用关系搜索,方法调用链 DFS 算法分析,模拟 JVM 的污点分析验证 DFS 结果,字符串搜索,Java Web 组件入口分析,CFG 程序分析,JVM 栈帧分析,自定义表达式搜索。官方文档:https://docs.qq.com/doc/DV3pKbG9GS0pJS0tk 比tabby和codeql更简单的审计工具,功能也很丰富

ReaJason/MemShellParty: 一款专注于 Java 主流 Web 中间件的内存马快速生成工具,致力于简化安全研究人员和红队成员的工作流程,提升攻防效率 web版的内存马生成工具,可以和jmg一起用

About

在Java安全学习过程中的笔记和代码

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published