码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 【shiro】Apache Shiro 1.2.4 反序列化漏洞(CVE-2016-4437 )


    目录

    • 1 是什么?
      • 1.1 shiro框架
      • 1.2 Shiro-550反序列化漏洞
    • 2 为什么?
      • 2.1 工作步骤
      • 2.1 漏洞原理
    • 3 怎么做?
      • 3.1 环境搭建
      • 3.2 如何发现
      • 3.3 如何利用
      • 3.4 如何防御
    • 4 总结
    • 参考文献

    1 是什么?

    1.1 shiro框架

    Apache Shiro是一款开源安全框架,提供身份验证、授权、密码学和会话管理。Shiro框架直观、易用,同时也能提供健壮的安全性。

    1.2 Shiro-550反序列化漏洞

    1. 简介:加密的用户信息序列化后存储在名为remember-me的Cookie中。攻击者可以使用Shiro的默认密钥伪造用户Cookie,触发Java反序列化漏洞,进而在目标机器上执行任意命令。
    2. 影响版本:Apache Shiro 1.2.4及以前版本。

    2 为什么?

    2.1 工作步骤

    1. rememberMe生成过程:序列化→AES加密→Base64编码→生成rememberMe内容。
    2. 服务端接收Cookie值时:检索Cookie中的rememberMe内容→Base64解密→AES解密(加密密钥硬编码)→反序列化(未做处理)。

    2.1 漏洞原理

    1. Apache Shiro默认使用了CookieRememberMeManager,其处理Cookie的流程:得到rememberMe的Cookie值→Base64解码→AES解密→反序列化。然而AES的密钥是硬编码的,就导致了攻击者可以构造恶意数据造成反序列化的RCE漏洞。
    2. 关键因素:AES的加密密钥在Shiro的1.2.4之前版本中使用的是硬编码:kPH+bIxk5D2deZiIxcaaaA==,只要找到密钥后就可以通过构造恶意的序列化对象进行编码,加密,然后作为Cookie加密发送,服务端接收后会解密并触发反序列化漏洞。在1.2.4之后,ASE秘钥就不为默认了,需要获取到Key才可以进行渗透。

    3 怎么做?

    3.1 环境搭建

    1. 本教程利用vulhub搭建漏洞环境,vulhub的安装过程请参考《CentOS上部署Vulhub靶场》.
    2. 打开终端,使用命令sudo -i切换至root身份。
    3. 找到到vulhub路径后,使用命令
      shiro/CVE-2016-4437进入到本实验漏洞路径。
    4. 使用命令docker-compose up -d启动一个使用了Apache Shiro 1.2.4的Web服务。
      在这里插入图片描述
    5. 在centerOS上代开浏览器,访问127.0.0.1:8080,显示如下则说明环境开启成功。
      在这里插入图片描述
    6. 输入默认的账号密码尝试登录,账号为admin,密码为vulhub,登录成功显示如下。
      在这里插入图片描述

    3.2 如何发现

    1. 漏洞特征:Shiro反序列化漏洞存在特征,在返回包的Set-Cookie中存在rememberMe=deleteMe 字段。
    2. 注意:以下每一步操作后记得清除浏览器缓存,保证浏览器状态为初始空白状态。
    3. 在登录页面,存在一个选择框,提供给用户选择是否勾选RememberMe,当我们不勾选时输入默认账号密码,设置代理为BurpSuite并点击登录。
      在这里插入图片描述
    4. 用BurpSuite拦截该请求,发送到repeater模块并点击send,可以看到响应如下,rememberMe的值为deleteMe。
      在这里插入图片描述
    5. 当我们勾选rememberMe时输入默认账号密码,设置代理为BurpSuite并点击登录。
      在这里插入图片描述
    6. 用BurpSuite拦截该请求,发送到repeater模块并点击send,可以看到请求中多了rememberMe字段,同时响应中rememberMe的值也变成一大段。
      在这里插入图片描述
    7. 以上都是使用正确的账号密码登录的情况,再试试使用错误账号密码同时勾选rememberMe的情况,在上述请求中修改账号密码并点击send,响应中rememberMe的值为deleteMe。
      在这里插入图片描述

    3.3 如何利用

    1. 按《shiro反序列化漏洞综合利用工具v2.2(下载、安装、使用)》下载并启动工具。
    2. 输入目标地址,注意填写协议http,然后点击爆破秘钥。
      在这里插入图片描述
    3. 爆破后,可以看到检查日志中成功爆出秘钥,并填写到指定秘钥中。
      在这里插入图片描述
    4. 点击爆破利用链及回显,可以看到当前利用链和回显位置适用。
      在这里插入图片描述
    5. 切换功能区至命令执行,输入whoami,可以看到获取的权限为root,由此证明可以实现远程命令执行。
      在这里插入图片描述
    6. 输入cat /etc/passwd,可以查看到文件内容。
      在这里插入图片描述

    3.4 如何防御

    1. 升级shiro版本。
    2. 修改秘钥。

    4 总结

    1. 本节内容主要介绍shiro反序列化漏洞的原理和工具的利用。
    2. 要加深对漏洞的理解还是需要多研究一下自己编写需要的程序。

    参考文献

    1. 《Apache Shiro 1.2.4 反序列化漏洞(CVE-2016-4437 )》CSDN文章
    2. 《Apache Shiro 1.2.4反序列化漏洞(CVE-2016-4437)》Vulhub教程
    3. 《Shiro反序列化漏洞利用笔记》
  • 相关阅读:
    (1)(1.17) Maxbotix 模拟声纳
    DBCO-PEG-sulfadimethoxine 二苯并环辛炔-聚乙二醇-磺胺地索辛 DBCO-PEG-磺胺地索辛
    一文带你彻底拿下a,b两点间等效电阻
    单链表算法经典OJ题
    Redis分布式缓存
    C语言源代码系列-管理系统之学生选修课程系统
    壳聚糖-聚乙二醇-CY7,Cy7-PEG-Chitosan,CY7-壳聚糖
    迅为RK3568开发板学习之Linux驱动篇第十三期输入子系统
    [COLING 2018] Modeling Semantics with Gated Graph Neural Networks for KBQA 阅读笔记
    vue3源码分析——实现slots
  • 原文地址:https://blog.csdn.net/Fighting_hawk/article/details/125541416
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号