Apache Shiro是一個Java安全框架,執行身份驗證、受權、密碼和會話管理。
shiro默認使用了CookieRememberMeManager,其處理cookie的流程是:獲得rememberMe的cookie值–>Base64解碼–>AES解密–>反序列化。然而AES的密鑰是硬編碼的,就致使了攻擊者能夠構造惡意數據形成反序列化的RCE漏洞。該漏洞對shiro<=1.2.4的版本有影響。
硬編碼是將數據直接嵌入到程序或其餘可執行對象的源代碼中的軟件開發實踐。
硬編碼密碼是指在程序中採用硬編碼方式處理密碼。這種處理方式一方面不易於程序維護,在代碼投入使用後,除非對軟件進行修補,不然沒法修改密碼。另外一方面會削弱系統安全性,硬編碼密碼意味着擁有代碼權限的人均可以查看到密碼,可使用密碼訪問一些不具備權限的系統,更嚴重的是若是攻擊者可以訪問應用程序的字節碼,利用一些反編譯工具就能閱讀到代碼,能夠輕易得到密碼。java
1.下載鏡像git
docker pull medicean/vulapps:s_shiro_1
2.運行在8091端口github
docker run -d -p 8091:8080 medicean/vulapps:s_shiro_1
3.安裝模塊docker
pip3 install pycrypto
4.上傳生成payload的腳本
命令行輸入rz並回車,可打開上傳頁面,選擇shiro_poc.py進行上傳,注意須要進入/tmp/目錄後再進行下載安全
5.安裝ysoserial的jar文件
git clone https://github.com/frohoff/ysoserial.git
cd ysoserial/
mvn package -DskipTests
此處提示命令找不到,所以須要對 mvn進行安裝cookie
apt update apt upgrade apt install maven mvn -version
注:安裝mvn須要在jdk已經安裝的前提下,kali默認有安裝。
以下圖所示則安裝成功。
從新執行app
mvn package -DskipTests
發現報錯
上網查了以後發現緣由以下,可是我也不是很懂他在說什麼
因此從新開始安裝java
安裝java時由於kali有自帶openjdk,因此安裝時安裝成功了,可是運行java -version的結果仍是openjdk,運行javac -version顯示無該命令,下載了新的kali虛擬機後安裝Java仍是不行,
因而就直接下載了ysoserial.jar而後上傳到同一目錄框架
復現過程參考該篇文章
http://www.javashuo.com/article/p-bpsgoiwn-ck.html
最終復現成功。maven