Apache shiro 1.2.4版本遠程命令執行漏洞詳解
*本文原創作者:zhujunboabc,本文屬FreeBuf原創獎勵計劃,未經許可禁止轉載
搜了一下,發現網上關於apache shiro 1.2.4版本的漏洞整理報告寫的過於的簡單,或許是大佬們講的比較專業,我這個小白看不懂的緣故,特地在本地做一次完整的展現。
先從shiro官方獲取shiro 1.2.4的源碼包,地址:https://github.com/apache/shiro/releases/tag/shiro-root-1.2.4,在裡面選擇1.2.4版本的shiro源碼進行下載。
下載完成之後,解壓文件:
由於是開源項目,需要先配置maven環境,具體環境配置可以百度查看。
解壓完成之後,進入目錄shiro-shiro-root-1.2.4samplesweb ,由於是maven構建的開源工程,我們需要先將工程轉換成war包來部署。
這裡我們需要安裝maven,去maven官方網站下載maven,配置maven環境變數,執行mvn -v,如下顯示,表明你裝好了maven並配置好了環境。
接下來,對shiro的例子進行轉換成一個eclipse項目,cmd進入到shiro-shiro-root-1.2.4samplesweb目錄下,執行:mvn eclipse:eclipse
接下來是漫長的等待(網速較慢),等待到所有的jar包都完成了下載之後,成功的編譯成一個eclipse項目。
工程路徑下已經生成了eclipse的工程,如圖:
導入工程到eclipse中,報錯提示:
這種情況,通過百度查到解決方法:
1,Right-click on your project, select Maven -> Disable Maven Nature.
2,Open you terminal, go to your project folder and do 「mvn eclipse:clean」
3,Right click on your Project and select 「Configure -> Convert into Maven Project」
經過如上步驟之後,工程正常編譯,無報錯
接下來,我們需要導出一個war包來放到我們tomcat目錄下,來啟動這個demo。
1,確定pom.xml中配置為war。
2,右鍵pom.xml,run as maven install
運行之後,成功編譯
在工程目錄下,可以發現war包已經成功編譯:
修改war包的名稱為shiro.war,為了方便工程訪問,部署到tomcat(放置到tomcat的webapps目錄下,啟動tomcat即可)
啟動成功,並訪問http://localhost:8080/shiro/
web訪問:
到這裡,我們的demo才成功的部署完成。
接下來需要生成payload,通過查看apache官方的說明:
(1)rememberMe cookie
(2)CookieRememberMeManager.java
(3)Base64
(4)AES
(5)加密密鑰硬編碼
(6)Java serialization
生成payload的方式,就是需要這幾個部分,
點擊閱讀原文
,查看我的代碼供大家參考。運行之後,可以生成payload,如下是跳出計算器的paylaod
截圖:
說說自己碰到幾個問題:
(1)AES加密
/**
* 使用AES 演算法 加密,默認模式 AES/CBC/PKCS5Padding
*/
public static byte[] aesEncrypt(byte[] str) throws Exception {
Key keySpec = new SecretKeySpec(keyBytes, "AES");
IvParameterSpec ivSpec = new IvParameterSpec(getIV());
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
cipher.init(Cipher.ENCRYPT_MODE, keySpec, ivSpec);
/**
* 初始化,此方法可以採用三種方式,按伺服器要求來添加。
* (1)無第三個參數
* (2)第三個參數為SecureRandom random = new SecureRandom();中random對象,隨機數。(AES不可採用這種方法)
* (3)採用此代碼中的IVParameterSpec
*/ byte[] b = cipher.doFinal(str);
return b;
}
java加密AES方式,默認使用AES/CBC/PKCS5Padding,但是初始化有三種方式,之前一直使用了前兩種方式,導致加密成功之後,tomcat一直報解密失敗,通過查看shiro源碼,發現採用了第三種方式,如下圖:
(2)tomcat需要添加相應的common-collection包
文章主要目的是為了說明如何復現漏洞,包括環境搭建和利用java寫poc,如果不合大家胃口,歡迎拍磚。
參考文章:
https://www.seebug.org/vuldb/ssvid-92180
https://issues.apache.org/jira/browse/SHIRO-550
*本文原創作者:zhujunboabc,本文屬FreeBuf原創獎勵計劃,未經許可禁止轉載
※洋蔥服務為什麼沒被成功接盤?
※中國安全行業的下一波春天在哪兒?| FreeBuf對話金湘宇
※會說話的PPT | 思科安全如何防禦加密勒索軟體?
TAG:FreeBuf |
※Apache Archiva 2.2.3 發布,遠程存儲管理
※42款思科產品或受Apache Struts2遠程代碼執行漏洞(S2-053)影響
※Apache Tomcat再曝遠程代碼執行(CVE-2016-8735)
※rubygems.org遠程命令執行漏洞分析
※Tomcat 遠程代碼執行漏洞分析(CVE-2017-12615)及補丁 Bypass
※【漏洞預警】Linux內核ipv4/udp.c 遠程任意代碼執行(CVE-2016-10229)
※Spring WebFlow 遠程代碼執行漏洞分析
※【FB TV】一周「BUF大事件」:「鑫胖」家的紅星3.0系統曝漏洞;Apache Tomcat再曝遠程代碼執行漏洞...
※Win10 Mobile/PC版應用商店更新:遠程Xbox One安裝等
※挖洞經驗 | 看我如何綜合利用4個漏洞實現GitHub Enterprise 遠程代碼執行
※PHPMailer曝遠程代碼執行高危漏洞(CVE-2016-10033)
※Akka(8): 分布式運算:Remoting-遠程查找式
※Google研究人員發現了一個Windows遠程執行漏洞
※Office CVE-2017-8570遠程代碼執行漏洞復現
※CVE-2017-12617-Tomcat遠程代碼執行漏洞復現測試
※基於Python的遠程管理工具(RAT) – Stitch
※漏洞預警 | Windows系統惡意軟體防護引擎曝嚴重遠程代碼執行漏洞(CVE-2017-0290)
※Netgear R7000/R6400等路由器曝遠程任意命令注入漏洞,CERT建議全面暫停使用
※Struts2遠程代碼執行漏洞安全分析