文章总结: 文档提供了一个全面的Java安全学习路线,分为基础-1、基础-2和进阶三个阶段。基础-1包括IDEA使用、Maven配置、JavaWEB框架和TOP10漏洞等内容;基础-2涵盖Java反射、Class文件结构、JVM、字节码指令、ASM/Javassist、JavaAgent、JNI与JNA、RMI、JNDI注入、JMX漏洞和JDWP等;进阶部分则深入讲解序列化数据结构、反序列化漏洞、各种框架漏洞(如Weblogic、Shiro、Spring等)、内存马技术、Log4j2漏洞等。学习路线由浅入深,适合系统学习Java安全知识,并提供了B站视频资源辅助学习。
综合评分: 91
文章分类: 代码审计,WEB安全,应用安全,漏洞分析,安全培训
JAVA安全学习路线-4ra1n
4ra1n
哈拉少安全小队
2023年1月7日 20:02
广东
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
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:哈拉少安全小队 4ra1n《JAVA安全学习路线-4ra1n》