B站许少4ra1n的java安全学习路线总结,以下是去年许少博客发的大纲,加上最近b站发的视频讲解,个人进行整理的,非常推荐大家看看,视频在文章最后,建议搭配食用!
基础-1
名称
|
学习内容
|
难度
|
如何使用IDEA
|
IDEA安装,如何调试,常见BUG如何解决
|
⭐
|
如何使用Maven
|
Maven安装配置,常见BUG解决,如何加速,各种常见Maven插件,多模块项目是什么,了解Gradle
|
⭐⭐
|
JAVA WEB、常见框架
|
Servle,Tomcat,JSP,通过XML和注解配置的SSM项目介绍,什么是SpringBoot框架,演示多个Java CMS如何配置启动,常见难点解决,常见Spring相关报错解决
|
⭐⭐⭐
|
TOP10漏洞
|
学习审计JAVA WEB的top10漏洞,审计一些java开发的cms
|
⭐⭐⭐
|
微服务(了解即可)
|
通过简单的Spring Cloud项目演示什么是微服务,以及微服务各个组件的作用
|
⭐⭐
|
基础-2
名称
|
学习内容
|
难度
|
Java反射
|
详细学习反射的各种用法,并介绍常见问题,比如反射调用方法、修改字段以及如何修改final static变量等,学习高版本绕过反射限制
|
⭐⭐
|
Class文件结构
|
从真实的Class文件每一个字节开始分析,介绍字节码的每一部分的意义,如何参考官方文档自己写工具解析Class文件
|
⭐⭐⭐⭐
|
JVM
|
简单介绍字节码如何在JVM中执行,以及常见的JVM基础,例如类加载器与双亲委派模型
|
⭐⭐
|
字节码指令(用到再学)
|
参考JVM官方文档介绍常见的字节码指令的作用和意义
|
⭐⭐⭐
|
ASM/Javassist(用到再学)
|
如何使用ASM修改字节码,如何使用Javassist生成字节码,通过Javassist框架实现插桩,和ASM进行对比
|
⭐⭐⭐⭐
|
Java Agent
|
启动前和运行中Agent,静态和动态的Java Agent技术,从简单的Hello World例子开始,破解简单的软件,最终自己实现一个简单的RASP防御,从ASM和Javassist两种方式实现
|
⭐⭐⭐⭐⭐
|
JNI与JNA
|
介绍JNI技术,实现Java加载Shellcode
|
⭐⭐⭐⭐
|
RMI
|
RMI是什么,攻击Server端,攻击Registry端,攻击Client端,攻击DGC
|
⭐⭐⭐
|
JNDI注入
|
JNDI注入原理,8u191以下如何攻击、8u191以上如何打(通过本地Factory的绕过,通过LDAP打本地Gadget的绕过),如何审计,尝试自己写一个简单的jndi exploit
|
⭐⭐⭐⭐
|
JMX漏洞
|
介绍什么是JMX, MLet安全问题,演示如何利用JMX实现RCE
|
⭐⭐⭐
|
JDWP
|
参考Oracle官方文档介绍JDWP协议,并演示如何RCE
|
⭐⭐⭐
|
进阶
名称
|
学习内容
|
难度
|
序列化数据结构
|
参考Oracle官方文档分析序列化数据
|
⭐⭐⭐
|
反序列化漏洞基础
|
学习分析URLDNS、CC1-CC7、CB、7u21、8u20等常用反序列化链,对每一条链进行手动调试分析
|
⭐⭐⭐
|
阅读ysoserial源码
|
分析这个工具的代码,并尝试自己写工具、尝试魔改(需要学懂ASM/Javassist)
|
⭐⭐
|
反序列化炸弹
|
学习什么是反序列化炸弹,如何利用它探测gadget
|
⭐⭐⭐
|
JEP290
|
什么是JEP290,它从哪几方面修复了反序列化漏洞,JEP290的鸡肋绕过
|
⭐⭐⭐⭐
|
反序列化数据缩小
|
从字节码和序列化数据结构本身来分析,演示修改字节码进行缩小
|
⭐⭐⭐⭐
|
反序列化绕WAF
|
演示如何通过延时分块传输和脏数据绕WAF
|
⭐⭐⭐⭐
|
Hessian反序列化
|
学习Hessian协议并分析Dubbo的历史漏洞
|
⭐⭐⭐⭐
|
XML-RPC反序列化
|
学习XML-RPC协议并分析OFBIZ的历史漏洞
|
⭐⭐⭐⭐
|
Fastjson反序列化
|
学习Fastjson历史版本1.2.x各个小版本的绕过,1.2.47以前的分析和绕过、1.2.47-1.2.68的分析和绕过,1.2.80的分析,出网和不出网利用链的分析
|
⭐⭐⭐⭐
|
XStream/Jackson
|
学习XStream、Jackson的多个历史漏洞,历史上有很多Gadget,重点放在如何寻找新的Gadget
|
⭐⭐⭐
|
SnakeYaml反序列化
|
学习SnakeYaml的多个历史漏洞
|
⭐⭐⭐
|
Weblogic
|
各种反序列化、二次反序列化漏洞,14882、14883绕过,XML Decoder,IIOP/T3,文件上传、SSRF漏洞,复现演示CVE-2018-3245,CVE-2018-3191,CVE-2020-14645,CVE-2020-14756,CVE-2020-2551,CVE-2021-2394等历史漏洞
|
⭐⭐⭐
|
Shiro550
|
经典Shiro反序列化漏洞分析和复现,学习如何手动编写探测和利用工具
|
⭐⭐⭐
|
Shiro进阶
|
学习如何通过shiro注入内存马、修改key,绕过请求头过大限制的办法,对请求头长度严格限制情况下的两种绕过思路,存在Nginx反代和负载均衡下的问题解决,以及如何检测
|
⭐⭐⭐⭐⭐
|
Shiro721
|
介绍Padding Oracle Attack并演示如何利用Shiro高版本
|
⭐⭐⭐⭐
|
Shiro权限绕过
|
分析历史上所有的Shiro权限绕过漏洞
|
⭐⭐⭐
|
Spring Security权限绕过
|
分析历史上所有的Spring Security权限绕过漏洞
|
⭐⭐⭐
|
SPEL相关
|
学习什么是SPEL并分析历史上所有SPEL导致的RCE漏洞,例如Spring Cloud Function和Spring Cloud Gateway等系列
|
⭐⭐⭐
|
Spring相关
|
学习SpringBoot Actuator多种利用姿势,Spring RCE漏洞的原理、复现
|
⭐⭐⭐
|
Tomcat漏洞相关
|
复现分析PUT RCE,CGI Servlet RCE,SESSION RCE以及AJP RCE等经典漏洞,其他鸡肋洞
|
⭐⭐⭐⭐
|
内存马技术
|
内存马原理学习,学习Serlvet,Filter,Listener,Valve,Websocket,Executor,Spring Controller,Interceptor等所有类型的内存马,动手实践调试每一种内存马,并研究如何挖掘内存马的思路(核心context)
|
⭐⭐⭐⭐
|
内存马进阶
|
介绍Tomcat内存马的查杀,如何反查杀,两种持久化后门的思路
|
⭐⭐⭐⭐
|
其他内存马相关
|
介绍zhouyu马,介绍Java Agent内存马原理和查杀,学习不死马与线程马,c0ny1师傅的jsp查杀,核心:类名,存在文件,dump class查杀,sa-jdi dump agent
|
⭐⭐⭐⭐
|
Log4j2漏洞
|
学习Log4j2原理与最初版RCE和RC1绕过,并学习2.15的特殊绕过(特殊操作系统),以及拒绝服务漏洞、原理,几种修复方案(以洞修洞),并基于Java Agent编写线上修复工具,尝试自己写burp检测插件
|
⭐⭐⭐⭐
|
Struts2
|
学习分析Struts2历史漏洞,大部分是OGNL相关的,学习下如何绕过的
|
⭐⭐⭐
|
其他组件漏洞
|
Apache Solr(几个RCE)、ApacheFlink(文件上传)、Apache Spark(命令注入)、Apache Skywalking(Sqli-RCE)、JDBC反序列化(尝试自己写一个fake mysql server)
|
⭐⭐⭐
|
进阶
|
tabby、codeql、自己分析字节码、自己写JVM
|
⭐⭐⭐⭐
|
todo
|
todo
|
todo
|
【B站最全的Java安全学习路线】 https://www.bilibili.com/video/BV1Sv4y1i7jf/?share_source=copy_web&vd_source=4077839630528882f3da9fc507a79ed3
![JAVA安全学习路线-4ra1n JAVA安全学习路线-4ra1n]()
原文始发于微信公众号(哈拉少安全小队):JAVA安全学习路线-4ra1n
评论