當前位置:
首頁 > 新聞 > Apache shiro 1.2.4版本遠程命令執行漏洞詳解

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 的精彩文章:

洋蔥服務為什麼沒被成功接盤?
中國安全行業的下一波春天在哪兒?| 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遠程代碼執行漏洞安全分析