• Shiro RememberMe 1.2.4 反序列化漏洞复现


    原理解释

      Apache Shiro是一个Java安全框架,执行身份验证、授权、密码和会话管理。
      shiro默认使用了CookieRememberMeManager,其处理cookie的流程是:得到rememberMe的cookie值–>Base64解码–>AES解密–>反序列化。然而AES的密钥是硬编码的,就导致了攻击者可以构造恶意数据造成反序列化的RCE漏洞。该漏洞对shiro<=1.2.4的版本有影响。
      硬编码是将数据直接嵌入到程序或其他可执行对象的源代码中的软件开发实践。
      硬编码密码是指在程序中采用硬编码方式处理密码。这种处理方式一方面不易于程序维护,在代码投入使用后,除非对软件进行修补,否则无法修改密码。另一方面会削弱系统安全性,硬编码密码意味着拥有代码权限的人都可以查看到密码,可以使用密码访问一些不具有权限的系统,更严重的是如果攻击者能够访问应用程序的字节码,利用一些反编译工具就能阅读到代码,可以轻易获得密码。

    环境搭建

    1.下载镜像

    docker pull medicean/vulapps:s_shiro_1
    

    2.运行在8091端口

    docker run -d -p 8091:8080 medicean/vulapps:s_shiro_1
    

    3.安装模块

    pip3 install pycrypto
    

    4.上传生成payload的脚本
    命令行输入rz并回车,可打开上传页面,选择shiro_poc.py进行上传,注意需要进入/tmp/目录后再进行下载

    5.安装ysoserial的jar文件
    git clone https://github.com/frohoff/ysoserial.git
    cd ysoserial/
    mvn package -DskipTests
    此处提示命令找不到,因此需要对 mvn进行安装

    apt update
    apt upgrade
    apt install maven
    mvn -version
    

    注:安装mvn需要在jdk已经安装的前提下,kali默认有安装。
    如下图所示则安装成功。

    重新执行

    mvn package -DskipTests
    

    发现报错

    上网查了之后发现原因如下,但是我也不是很懂他在说什么

    所以重新开始安装java
    安装java时因为kali有自带openjdk,所以安装时安装成功了,但是运行java -version的结果还是openjdk,运行javac -version显示无该命令,下载了新的kali虚拟机后安装Java还是不行,
    于是就直接下载了ysoserial.jar然后上传到同一目录

    复现过程

    复现过程参考该篇文章
    https://www.cnblogs.com/paperpen/p/11312671.html
    最终复现成功。

    作者:RitaWWang
    本文版权归作者和博客园共有,欢迎转载,但必须给出原文链接,并保留此段声明,否则保留追究法律责任的权利。
  • 相关阅读:
    测试项目框架搭建
    项目实战(一)
    接口和HTTP协议(二)
    接口和http协议(一)
    什么是DFX测试
    完美解决安装在虚拟机中的CentOS7无法联网的问题
    RIP动态路由协议
    ensp实验--------RIP动态路由实验
    ensp实验--------telnet登录认证
    CSMA/CD协议
  • 原文地址:https://www.cnblogs.com/RitaWWang/p/11857598.html
Copyright © 2020-2023  润新知