JAVA攻防-Shiro专题&断点调试&有key利用链&URL&CC&CB&原生反序列化&加密逻辑

知识点:

Java攻防-Shiro反序列化

Java安全框架,能够用于身份验证、授权、加密和会话管理。

历史漏洞:https://avd.aliyun.com/search?q=Shiro

漏洞触发:CookieRememberMeManager

黑盒特征:数据包cookie有没有rememberme

漏洞原理:利用到原生类的readObject反序列化操作导致漏洞(相比多了对数据的aes加密和base64编码),所以利用要考虑这两点。

Shiro反序列化链知识点:

1、Shiro用途和验证逻辑

2、Shiro反序列化怎么造成

3、Shiro反序列化漏洞利用

Shiro反序列化链分析

当获取用户请求时,大致的关键处理过程如下:

· 获取CookierememberMe的值

· 对rememberMe进行Base64解码

· 使用AES进行解密

· 对解密的值进行反序列化

由于AES加密的Key是硬编码的默认Key,因此攻击者可通过使用默认的Key对恶意构造的序列化数据进行加密,当CookieRememberMeManager对恶意的rememberMe进行以上过程处理时,最终会对恶意数据进行反序列化,从而导致反序列化漏洞。

问题:为什么不能用fastjson里面的jdbc那个链?
fastjson链找有setxxxgetxxx方法里面触发rce
shiro链找有readObjecttoString方法里面触发rce

漏洞环境搭建

shiro官网:https://shiro.apache.org/














演示案例-Java攻防-Shiro反序列化-Shiro 550利用链分析

1、获取AES加密属性

成功登录:项目源码全局搜索rememberMeSuccessfulLogin关键字并下断点(动态调试)











2、获取key值和偏移量和base64编码




3、整体登录流程

bash 复制代码
加密的方式:AES/CBC/PKCS5Padding
key:[-112, -15, -2, 108, -116, 100, -28, 61, -99, 121, -104, -120, -59, -58, -102, 104] //比特流数据
iv:[6, -28, 13, 52, -37, -71, 7, -11, 112, 30, -61, 7, -19, 87, -55, -99] //比特流数据(这里的IV是随机性的,而不是固定值,iv随机性的话加密的结果每次都会变)

KEY值:kPH+bIxk5D2deZiIxcaaaA==

项目源码搜索DEFAULT_CIPHER_KEY_BYTES = 关键字可找到KEY值Base64.decode("kPH+bIxk5D2deZiIxcaaaA==");



4、手动将Payload进行加密(AES+BASE64)

一、URLDNS链

要攻击的话就要把urldns.txt的序列化内容进行AES加密并base64编码。






二、借助CC&CB链






5、项目直接生成可用POC(无需手动加密编码)

借助java-chains项目生成Poc(推荐用这个项目生成POC)

项目地址:https://github.com/vulhub/java-chains


相关推荐
EXI-小洲4 小时前
Java 操作 Word:字符串替换、图片插入、动态生成表格与API接口下载
java·开发语言·spring boot·word
2601_961901705 小时前
SpringBoot使用Nacos进行application.yml配置管理
java·spring boot·spring
何以解忧,唯有..5 小时前
LangChain 工具调用(Tool Calling)实战指南
java·前端·langchain
QQ_21696290966 小时前
【源码编号:project79475】SpringBoot校内二手交易平台:商品发布、分类检索、留言交流、订单管理全流程实战
java·spring boot·后端
前端 贾公子7 小时前
第09章:上下文与记忆 (2)
java·服务器·前端
2601_962203517 小时前
Java进阶07集合(续)
java·开发语言
郑州光合科技余经理7 小时前
本地生活服务系统:模块边界与结算字段怎么拆
java·开发语言·前端·后端·系统架构·uni-app·php
roman_日积跬步-终至千里8 小时前
【数据治理(6)】DataOps 不是调度工具,而是让数据产品长期可信的运行机制
java·服务器·网络
落魄大学生之流水线上谋生计8 小时前
LangGraph 基本用法指南
java·windows·python·langchain
2601_962128418 小时前
SpringBoot篇(缓存层)
java·spring boot·缓存