Shiro反序列化漏洞檢測及修復(工具分享)

2020-10-13 11:01:13

寫在前面

這篇博文主要解決於一些朋友為了修復反序列化漏洞,根據某些貼文的內容升級了shiro版本,或者採用了隨機生成key的方式後,不知道是否管用。特地寫下一篇記錄,分享一個檢測工具。
我在之前專案中碰到了這個問題,由於shiro使用的版本是1.2.4,存在反序列化漏洞,我們採取的辦法是手動升級到了1.2.6版本,但苦於無法驗證是否解決了問題,後來發現了一款測試工具,ShiroExploit
在此特別感謝其作者 feihong飛鴻

反序列化漏洞是如何產生的

shiro版本<=1.2.4時,其引數remeberMe存在寫死,它對於cookie的處理流程是,首先獲取rememberMe的cookie值,然後進行Base64解碼,再進行AES解密,最後反序列化。但在這個過程中,其AES的Key寫死,導致反序列化漏洞的產生。(參考http://www.secwk.com/2019/09/18/2818/)

反序列化漏洞解決思路

從上面我們瞭解到,反序列化漏洞主要是由於寫死引起的,那麼只要解決寫死,就解決了該漏洞。解決寫死主要有兩種方式:

  1. 自行實現key值
  2. 升級到1.2.5版本或以上

那麼在我的專案中,選擇的是升級版本到1.2.6

測試工具下載地址

https://github.com/feihong-cs/ShiroExploit_GUI/releases

測試過程

1. 首先開啟下載到的ShiroExploit,可以看到這樣的介面。選擇shiro550,在中間的白框,填入專案存取路徑,點選下一步
在這裡插入圖片描述

2. 來到當前頁面,選擇使用回顯進行漏洞檢測,點選下一步
在這裡插入圖片描述
3. shiro1.2.4版本
可以看到,Trying Key,然後Find Valid key。相信從字面意思也看出來了,找到了這個寫死的key,此時代表反序列化漏洞存在
在這裡插入圖片描述
4. 接下來我們看一下升級後的shiro1.2.6
很清晰看到與1.2.4的對比,Can not find a valid key,然後一直在Trying,此時漏洞已經不存在了
在這裡插入圖片描述
最後希望本篇文章能夠幫助到大家,
再次鄭重感謝工具作者飛鴻!!!