仅仅只是想写给自己看
一个记录我Java安全学习过程的仓库,本仓库不是真正意义上的教学仓库(rep中的内容都是我在平时的一些笔记没有很强逻辑性,内容水平自然也是参差不齐,可能有些对我来说很简单的便忽略不计对其他人来说却是难点,因此作为一个学习目录的话可能会好很多),单纯这是笔者简单记一些笔记,顺便见证自己从0到0.1的过程吧,另外后面如果看到一些好的东西在学习完之后也会贴上链接,少了很多介绍性的东西,以后等厉害了再慢慢补充吧.当然如果感觉还不错的话,师傅们记得给个 Star 呀 ~
@Y4tacker
2021年10月18日,梦的开始
- Java反射
- Java动态代理
- JNDI注入
- 反序列化
- 类加载器与双亲委派模型
- 两种实现Java类隔离加载的方法(当然同名目录下也有pdf,防止以后站不在了)
- ClassLoader(类加载机制)
- SPI学习
- JavaAgent
- JMX
- JDWP远程执行命令
- Tomcat中容器的pipeline机制(学了以后更好帮助Tomcat-Valve类型内存马理解)
- ASM学习+Class文件结构了解+JVM一些简单知识
- Xpath注入
- JSTL(看菜鸟教程即可)
- JEP290基础概念
- Java中的XXE
- 通过反射扫描被注解修饰的类
- 低版本下Java文件系统00截断
- 有趣的XSS之Normalize
- 红队-java代码审计生命周期(带你简单了解审计)
很早前学了,后面补上,更多是说一点关键的东西,不会很详细,好吧这里再拓展成反序列化专区好了
如果想系统学习的话这部分还是更推荐p牛的Java安全漫谈,我只是简单写写便于自己复习而已
- Java反序列化之URLDNS
- CommonsCollections1笔记
- CommonsCollections2笔记
- CommonsCollections3笔记
- CommonsCollections5笔记
- CommonsCollections6-HashSet笔记
- CommonsCollections6-HashMap笔记
- CommonsCollections6-Shiro1.2.4笔记
- CommonsCollections7笔记
- 使用TemplatesImpl改造CommonsCollections2
- CommonsBeanutils1笔记
- CommonsBeanutils1-Shiro(无CC依赖)
- FileUpload1-写文件\删除文件
- C3P0利用链简单分析
- C3P0Tomcat不出网利用(思路就是之前高版本JNDI注入的思路)
- 反制Ysoserial0.0.6版本-JRMP(打个标签weblogic搞定后看看)
- 网上看到的神秘套娃CommonsCollections11
- SnakeYAML反序列化及可利用Gadget
- SnakeYAML出网探测Gadget(自己瞎琢磨出来的,不过在1.7以下版本就不行)
- XStream反序列化学习
- 解决反序列化serialVesionUID不一致问题(BestMatch:打破双亲委派对jbxz用工具最方便)
- 自己搞的把ROME利用链长度缩小4400-1320(Base64)
- JDK7u21
- AspectJWeaver写文件
- 反序列化在渗透测试当中值得关注的点
- 构造java探测class反序列化gadget
可以对比jackson简单学习下,这里我也会简单提一下jackson的一些利用,当然不会很详细,但是会简单列出一些触发原理,而且有些payload是共通的,这里也不以收集各个依赖下利用的payload为主
- Shell中的幽灵王者—JAVAWEB 内存马 【认知篇】
- JavaWeb与Tomcat介绍
- Tomcat-Listener型内存马
- Tomcat-Filter型内存马
- Tomcat-Servlet型内存马
- Tomcat-Valve内存马
- Tomcat-Upgrade内存马
- WebSocket代理内存马
- Executor内存马的实现
- 浅谈 Java Agent 内存马(网上看到大师傅写的很详细直接搬运工了)
- SpringBoot内存马学习-通过添加新路由
- 利用intercetor注入Spring内存马
- Timer型内存马
- 看不见的Jsp-Webshell(有点像平时CTF里面php的不死马的效果)
- 看不见的 Jsp-WebShell 第二式增强之无痕
- Spring cloud gateway通过SPEL注入内存马
- Java Instrument插桩技术初体验
- PreMain之addTransformer与redefineClasses用法学习
- AgentMain(JVM启动后动态Instrument)
- 通过JVMTI实现C/C++的JavaAgent交互
后面因为一些原因打算更系统学习,感觉在这里面直接添加有点臃肿,故开了一个新的repo来记录整个学习阶段,移步RaspLearning
一开始不想搞这个是因为很少人用了,后面想了一下可以具体看看struts2当中对OGNL策略如何做提升处理学学别人的绕过(Ps:不教怎么复现搭建环境)
- Struts2简介与漏洞环境搭建
- S2-001学习(由于是第一篇我还是分析的比较详细,后面不会重复本篇里面的一些流程内容)
- S2-002学习(太鸡肋了感觉实战也比较难出现)
- S2-003学习(比较有趣的一个洞很多小细节)
- S2-005学习(通过Ognl将上下文_memberAccess中的acceptProperties设为空绕过)
- S2-007学习(字符串拼接导致OGNL解析)
- S2-008学习(很鸡肋,稍微有点用的有开启devMode解析任意Ognl)
后面突然觉得调试的过程很无聊我也不感兴趣,更感兴趣的是关于Struts当中Ognl的攻防所以后面更偏向于这方面研究,而不再具体跟踪中间的调用过程
- S2-015学习(静态方法受限制以及没有setAllowStaticMethodAccess后如何绕过)
- S2-032学习(清空_memberAccess当中excludedXXX限制通过构造函数调用/使用DefaultMemberAccess覆盖SecurityMemberAccess绕过限制)
- S2-045学习(通过container获取全局共享的OgnlUtil实例来清除SecurityMemberAccess当中属性的限制)
- S2-057学习(突破#context被删除限制,从attr作用域获取context对象)
关于Make JDBC Attacks Brilliant Again的简单记录,当我们在 JDBC Connection URL可控的情况下,攻击者可以进行什么样的攻击?这部分可以配合探索高版本 JDK 下 JNDI 漏洞的利用方法来进行拓展攻击
因为比较重要单独列出来了
- Java RMI 攻击由浅入深(深入源码,师傅写的很好)
- 如何绕过高版本 JDK 的限制进行 JNDI 注入利用
- (自己写的流程补充)高低版JDK下的JNDI注入绕过流程跟踪(Jdk8u191+)
- 探索高版本 JDK 下 JNDI 漏洞的利用方法
- JNDI jdk高版本绕过—— Druid
-
Spring Beans RCE分析(CVE-2022-22965)(我还是喜欢叫Spring4shell,自己懒得写了,这篇还可以,稍微注意下AccessLogValve这个类WBS)
-
Spring Data MongoDB SpEL表达式注入(CVE-2022-22980)(能看但是有些逻辑还是讲得很混乱总体而已还是好的作为参考即可)
- Shiro另类检测方式
- 浅谈Shiro执行任意反序列化gadget的方案
- CVE-2010-3863权限绕过(通过/./admin绕过/admin,/abc/../admin)
- CVE-2016-6802权限绕过(通过/abc/../y4tacker/admin绕过)
- Shiro550-TemplatesImpl(CC6-Shiro)
- CommonsBeanutils与无 commons-collections的Shiro反序列化利用
- 另类的shiro检验key的检测方式
- shiro反序列化漏洞攻击拓展面--修改key
- Tomcat-Header长度受限突破shiro回显
- Spring下Shiro<1.5.0权限绕过(/unauthorize/)
- CVE-2020-13933特殊场景权限绕过(通过/unauthorize/%3b)
- SpringBoot2.3.0下Shiro<=1.5.1权限绕过(通过/aa;/%2e%2e/unauthorize绕过对/unauthorize拦截,当然也可以不用目录穿越/;y4tacker/unauthorize也可以)
- Spring-Shiro1.5.2 Bypass(通过/unauthorize/a%252Fa绕过对/unauthorize/*的权限限制)
这里再贴一个小笔记:Class.forName
不支持原生类型,但其他类型都是ok。Class.loadClass
不能加载原生类型和数组类型,其他类型也都ok
- JSP-Webshells集合(三梦的总结挺全面的利用点)
- JspWebShell新姿势解读
- jsp新webshell的探索之旅
- JspWebshell编码混淆篇(unicode和html实体编码那些就懒得写了技术性不强)
- Apache Commons Configuration 远程代码执行(虽然是配置文件RCE但也有学习意义)
- Apache Spark shell command injection vulnerability via Spark UI(之前很早前在我的各个知识星球分享了)
- Apache Commons JXPath 远程代码执行
- Apache Commons Text 远程代码执行
- Tomcat URL解析差异性导致的安全问题(网上看到的主要关注HttpServletRequest中几个解析URL的函数这个问题)
- Tomcat中url解析特性
- SpringBoot2.3.0以下路由%2e跨目录处理(可用于权限绕过)
如何影响idea反编译但不影响代码执行,暂时不想放出来,之后会放出来
- JAVA虚拟机执行模型(关注引入了栈映射帧,用于加快虚拟机中类验证过程的速度)
- What is a stack map frame
- 这里比较有意思的是:Java 1.7引入了此选项以加速类验证。框架分为两部分:变量类型和堆栈类型。第一帧由方法类型描述。在每个GOTO / JUMP调用之后,您需要提供堆栈映射框架的更新描述。为了节省空间,可以使用SAME,APPEND等选项,也可以通过指定变量类型的FULL数组再次描述所有变量。
- 为什么JVM需要DUP指令
- JMX
- GadgetInspector源码分析
- CVE-2021-2471 JDBC-XXE漏洞分析
- spring-messaging 远程代码执行漏洞分析
- CVE-2020-9484 Tomcat-RCE漏洞分析报告(备注:三梦师傅的文章,提升了我对Tomcat配置的了解)
- Java “后反序列化漏洞” 利用思路
- 关于Servlet的线程安全问题
- BypassSM
- Log4j2-RCE分析
- Spring Boot FatJar任意写目录漏洞导致Getshell
- 利用TemplatesImpl执行字节码
- 为什么补丁都喜欢打在resolveClass
- Java沙箱绕过
- 一种普遍存在于java系统的缺陷 - Memory DoS
- 如何关闭百度的Rasp
- 漫谈 JEP 290
- Java Web —— 从内存中Dump JDBC数据库明文密码(还挺好玩的)
- 普通EL表达式命令回显的简单研究
- 如何带依赖打包Jar
- 一些Java二次反序列化的点(持续收集)
- 自己写的OpenRasp分析
- Apache Unomi 表达式注入攻防
- JEXL3表达式注入
- 利用JVMTI实现JAR包加密(还没看很牛逼就是了)
- 安全同学讲Maven重打包的故事
- 某软件监控页面RCE漏洞分析(虽然过于简单,但是可以借此了解下OA系统)
特地加了一栏吧,希望从比赛当中了解Java相关的东西学习一些新的点!
- Codegate2022(关键词:绕过开头file协议读文件、xpath注入读系统配置)
- SUSCTF2022(关键词:绕rasp、fastjson、xxe)
- D^3CTF2022(关键词:ROME链缩短、Mybatis与Ognl)
- 虎符CTF2022(关键词:Hessian反序列化、Rome二次反序列化、java.security.SignedObject#getObject、UnixPrintService命令执行、Tabby)
- MRCTF2022(关键词:Kryo反序列化、Rome二次反序列化、内存马、Bypass SerialKiller黑名单-找替代类)
- GoogleCTF2022(关键词:Log4j2、Bundle、ReDoS)
- UIUCTF2022-Spoink(关键词:Pebble最新模板注入Bypass、Spring中无路由上传文件处理)
- TetCTF2023&Liferay(CVE-2019-16891)(Pre-Auth RCE)
- 解决反序列化serialVesionUID不一致问题--已经拿下
- Dubbo学习之后开启
- 无文件落地Agent型内存马植入(Java内存攻击技术漫谈-Rebyond)
- 自己对所有文件上传框架Trick总结
- 消化腾讯大师傅写的关于文件上传waf
- 本仓库仅用于合法合规用途,严禁用于违法违规用途。
- 本工具中所涉及的漏洞均为网上已公开。