漏洞原理
Apache Shiro 是 Java 的一個安全框架,可以幫助我們完成:認證、授權、加密、會話管理、與 Web 集成、緩存等功能,應用十分廣泛。
Shiro最有名的漏洞就是反序列化漏洞了,加密的用戶信息序列化后存儲在名為remember-me的Cookie中,攻擊者使用Shiro的默認密鑰偽造用戶Cookie,觸發Java反序列化漏洞,進而在目標機器上執行任意命令。這里最關鍵的切入點就是默認密鑰了,這個漏洞已經出來5年多了,不知道為啥,實際工作中還是經常發現開發木有修改默認密鑰。。。
漏洞復現
靶場:https://github.com/vulhub/vulhub/tree/master/shiro/CVE-2016-4437
靶場環境搭建參考:https://www.cnblogs.com/sallyzhang/p/12307824.html
啟動靶場:
從請求的返回包判斷出使用了shiro:
用工具檢測出存在shiro命令執行漏洞:
執行反彈shell命令:
反彈成功:
試着執行一些簡單的命令,執行成功。這個工具無法直接反彈回來,這樣操作好累>_<
換成exp,繼續。看了下網上的大大們好多最后都沒反彈成功,咱先試試吧。
生成偽造的cookie,為啥能生成偽造的cookie,因為用的是默認密鑰:
用偽造的cookie發請求:
反彈過來了,但是沒辦法執行命令,好吧,試試就逝世了 >_<
再換個工具繼續擼
直接反彈回去(該工具在github上找的,目前已經刪除了):
建個文件試試,成功:
666,成功了,事實證明,沒事兒自己少瞎折騰,巨人的肩膀真的好舒服~
修復建議
升級到最新版本,且不要使用默認的key。
建議使用shiro的同學們自己找個shiro工具掃描一下,看看是否存在該漏洞。
本文僅用於技術學習和交流,嚴禁用於非法用途,否則產生的一切后果自行承擔。
如需轉載,請注明出處,這是對他人勞動成果的尊重。