JavaEE开发篇&Shiro反序列化&DNS利用链&CC利用链&AES动态调试
Shiro框架:Apache Shiro是一个强大且易用的Java安全框架,提供认证、授权、加密和会话管理等功能。
#Shiro反序列化链知识点:
1、Shiro用途和验证逻辑
2、Shiro反序列化怎么造成
3、Shiro反序列化漏洞利用
#Shiro反序列化链分析
当获取用户请求时,大致的关键处理过程如下:
· 获取Cookie中rememberMe的值
· 对rememberMe进行Base64解码
· 使用AES进行解密
· 对解密的值进行反序列化
由于AES加密的Key是硬编码的默认Key,因此攻击者可通过使用默认的Key对恶意构造的序列化数据进行加密,当CookieRememberMeManager对恶意的rememberMe进行以上过程处理时,最终会对恶意数据进行反序列化,从而导致反序列化漏洞。
#Shiro 550利用链分析
#原生序列化
#分析Shiro序列化
#利用Shiro序列化
1、获取AES加密属性
成功登录rememberMeSuccessfulLogin断点(动态调试)
AES/CBC/PKCS5Padding
kPH+bIxk5D2deZiIxcaaaA==
DEFAULT_CIPHER_KEY_BYTES = Base64.decode("kPH+bIxk5D2deZiIxcaaaA==");
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]
2、将Payload进行加密(AES+BASE64)
-借助URLDNS链(后续分析这个链的编写)
-借助CC链(后续分析这个链的编写)
问题1:为什么不能用fastjson里面的jdbc那个链?
shiro使用的是原生反序列化操作
readObject, writeObject , ObjectInputStram , ObjectOutputStream
然后fastjason是使用自定义的方法反序列化
要满足有使用com.sun.rowset.JdbcRowSetOmple方法
set , get方法
问题2:对比利用工具中出现的多个链是什么情况导致?
java -jar ysoserial.jar URLDNS "http://" > urldns.txt
3、将rememberMe数据发包