Shiro反序列化漏洞檢測及修復(工具分享)
- 寫在前面
- 反序列化漏洞是如何產生的
- 反序列化漏洞解決思路
- 測驗工具下載地址
- 測驗程序
寫在前面
這篇博文主要解決于一些朋友為了修復反序列化漏洞,根據某些帖子的內容升級了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/)
反序列化漏洞解決思路
從上面我們了解到,反序列化漏洞主要是由于硬編碼引起的,那么只要解決硬編碼,就解決了該漏洞,解決硬編碼主要有兩種方式:
- 自行實作key值
- 升級到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,此時漏洞已經不存在了

最后希望本篇文章能夠幫助到大家,
再次鄭重感謝工具作者飛鴻!!!
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/171741.html
標籤:其他
