環境搭建
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
注入成功
哥斯拉啟動
執行下命令