Shiro漏洞復現


Shiro漏洞復現

簡介

Apache Shiro™是一個功能強大且易於使用的 Java 安全框架,它執行身份驗證、授權、加密和會話管理。借助 Shiro 易於理解的 API,您可以快速輕松地保護任何應用程序——從最小的移動應用程序到最大的 Web 和企業應用程序。

CVE-2016-4437

Apache Shiro 反序列化漏洞

漏洞原理

Apache Shiro 1.2.4及以前版本中,加密的用戶信息序列化后存儲在名為remember-me的Cookie中。攻擊者可以使用Shiro的默認密鑰偽造用戶Cookie,觸發Java反序列化漏洞,進而在目標機器上執行任意命令。其默認密鑰的base64編碼后的值為kPH+bIxk5D2deZiIxcaaaA==,這里就可以通過構造惡意的序列化對象進行編碼,加密,然后作為cookie加密發送,服務端接收后會解密並觸發反序列化漏洞。

處理流程:得到rememberMe的cookie值-->Base64解碼-->AES解密-->反序列化

漏洞分析

AbstractRememberMeManager.java中實現rememberMe的解密代碼

getRememberedSerializedIdentity返回cookie中rememberMe的base64解碼后的bytes

繼續調用convertBytesToPrincipals方法對解碼后的bytes處理,跟進convertBytesToPrincipals方法,調用decrypt方法對bytes進行解密。

protected PrincipalCollection convertBytesToPrincipals(byte[] bytes, SubjectContext subjectContext) {
        if (getCipherService() != null) {
            bytes = decrypt(bytes);
        }
        return deserialize(bytes);
    }


解密后得到的結果為序列化字符串的bytes。

然后進入到deserialize方法進行反序列化,即用戶可控的rememberMe值經過解密后進行反序列化從而引發反序列化漏洞。

漏洞復現

直接使用vulhub,vulhub/shiro/CVE-2016-4437/

執行如下命令啟動一個使用了Apache Shiro 1.2.4的Web服務:

docker-compose up -d

服務啟動后,訪問http://your-ip:8080

我們直接使用工具進行測試,工具地址

同時此工具可以直接上傳內存馬,非常便捷

CVE-2020-1957

Apache Shiro權限繞過

漏洞原理

在Apache Shiro 1.5.2以前的版本中,在使用Spring動態控制器時,攻擊者通過構造..;這樣的跳轉,可以繞過Shiro中對目錄的權限限制。

漏洞復現

/vulhub-master/shiro/CVE-2020-1957

運行docker-compose up -d

訪問頁面

直接訪問/admin目錄,會跳轉到登陸頁面

此時我們增加..;繞過目錄限制

成功訪問到admin目錄下

總結

最近以學習紅隊知識為主,內網還有主流框架漏洞這一塊都在跟進,shiro實戰中利用還是比較多的,通過復現,看能不能在實戰中打下幾個shiro。

要記住在hw紅隊時,拿不下靶標的感覺,好好努力

最近因為某人非常開心,心態很好,學習動力也是滿滿,繼續加油吧!凡是過往,皆為序章。希望最后的幾個月大學時光能好好把握


免責聲明!

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



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