淺談shiro反序列化漏洞


環境搭建
kali下利用docker搭建shiro環境

1、kali部署docker環境
獲取docker鏡像

docker pull medicean/vulapps:s_shiro_1

2、重啟docker

systemctl restart docker

3、啟動docker鏡像

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

4、訪問http://localhost:8081/

將localhost換成實際IP地址訪問

Shiro反序列化漏洞利用
Apache Shiro是一個強大易用的Java安全框架,提供了認證、授權、加密和會話管理等功能。Shiro框架直觀、易用,同時也能提供健壯的安全性。

Shiro remrmberMe反序列化漏洞(Shiro-550)
1、漏洞原理
Apache Shiro框架提供了記住密碼的功能(RememberMe),用戶登錄成功后會生成經過加密並編碼的cookie。在服務端對rememberMe的cookie值,先base64編碼再進行AES解密再反序列化,而用戶傳入的值可以被用戶控制,就導致了反序列化RCE漏洞。
漏洞利用的過程如下:
命令>序列化>AES加密>base64編碼>RememberMe Cookie值>base64解碼>AES解密>反序列化>命令
在整個漏洞利用的過程中,重點在於AES加密的密鑰,構造Payload的重點在於猜測AES加密使用的密鑰。

2、影響的版本
Apache Shiro<1.2.4

3、特征判斷
返回包中set-cookie中包含RememberMe=deleteMe字段
如果返回包里不存在RememberMe=deleteMe字段,可嘗試在請求包中cookie字段添加RememberMe=1

4、漏洞利用
工具下載

https://github.com/j1anFen/shiro_attack/releases/tag/2.2

可能出現java版本過高導致報錯無法運行,可使用下列命令調整java版本

update-alternatives --config java 

(1)漏洞利用
工具啟動

java -jar shiro_attack-2.2.jar

輸入目標地址
點擊爆破密鑰,檢查是否存在默認的key
發現存在shiro框架,key值為 kPH+bIxk5D2deZiIxcaaaA==

點擊爆破利用鏈及回顯
獲取到可以進行攻擊的利用鏈和回顯方式
發現構造鏈:CommonsCollections2 回顯方式: TomcatEcho

執行命令

嘗試打一個內存馬
抓取一個靜態文件的路徑(該路徑需要可以訪問的到),就是你了,/favicon.ico

注入成功

哥斯拉啟動

執行下命令


免責聲明!

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



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