實戰shiro反序列化漏洞獲取目標權限(550和721)

shiro反序列化漏洞

Apache Shiro是一個強大且易用的Java安全框架,執行身份驗證、授權、密碼和會話管理功能。某些版本存在反序列化漏洞,並在去年鬧得很火,每每實戰攻防演習中必會出現,基本一打一個準兒。目前網上有很多shiro反序列化漏洞的復現過程,但基本都是基於shiro550,即Apache Shiro

<= 1.2.4,鮮有針對shiro721的復現過程,當然也可能是因為其相對550而言較為雞肋,但是基於對漏洞研究利用而言還是有必要驗證一下。

shiro550反序列化漏洞利用:

<code>Apache Shiro <= 1.2.4,需要獲取AES秘鑰/<code>

shiro721反序列化漏洞利用:

<code>Apache Shiro <= 1.4.1,需要一個合法的登錄賬號,基於Padding Oracle attack來實現的攻擊/<code>

shiro-550實戰

Apache Shiro <= 1.2.4時存在該問題,這種有比較成熟的利用工具,可以遍歷洩漏的AES秘鑰以及使用的組件,然後直接打即可,也有人寫了完全自動化的利用工具,網上很多,怎麼方便怎麼來。

1、遍歷AES key

實戰shiro反序列化漏洞獲取目標權限(550和721)

2、遍歷組件

實戰shiro反序列化漏洞獲取目標權限(550和721)

3、利用第1步中的AES秘鑰和第2步中的組件生成反彈shell cookie

實戰shiro反序列化漏洞獲取目標權限(550和721)

4、nc監聽上述第3步中寫的反彈shell端口,burpsuite中提交上述生成具備反彈shell的remenberMe cookie

實戰shiro反序列化漏洞獲取目標權限(550和721)

5、提交成功,nc中即收到反彈的shell

實戰shiro反序列化漏洞獲取目標權限(550和721)

shiro-721實戰

Apache Shiro <= 1.4.1時存在該問題,實戰中暫未遇到利用這種獲取權限的,這裡以docker環境測試。

<code>測試環境:Tomcat7 + shiro-1.4.1.war/<code>

1、由於漏洞利用需要一個合法的登錄賬號,這裡利用賬號正常登陸獲取一個有效的rememberMe cookie,並記錄下這個rememberMe的值。

實戰shiro反序列化漏洞獲取目標權限(550和721)

2、利用ysoserial生成payload,這裡測試在目標系統創建111.txt文件,其中CommonsBeanutils1是利用的組件,不同環境可能不一樣,這個跟上面550是一樣的

<code>java -jar ysoserial-0.0.6-SNAPSHOT-all.jar CommonsBeanutils1 "touch /tmp/111.txt" > payload.bin/<code>
實戰shiro反序列化漏洞獲取目標權限(550和721)

可以查看生產的payload.bin

實戰shiro反序列化漏洞獲取目標權限(550和721)

3、執行exp,利用padding Oracle attack生成執行命令cookie,需要用到第1步中生成的rememberMe的值和第2步中生成的payload,該步驟會執行很長時間,過程類似盲注,測試時跑了近2個小時。

<code>python shiro_exp.py http://192.168.28.128:8082/samples-web-1.4.1/login.jsp "第2步合法rememberMe" payload.bin/<code>
實戰shiro反序列化漏洞獲取目標權限(550和721)

在成功後會生成帶上述payload的rememberMe cookie。

實戰shiro反序列化漏洞獲取目標權限(550和721)

4、將第3步跑出來的rememberMe cookie在burp中提交

實戰shiro反序列化漏洞獲取目標權限(550和721)

5、接著查看服務器tmp目錄查看,命令執行成功,即創建了111.txt文件。

實戰shiro反序列化漏洞獲取目標權限(550和721)


分享到:


相關文章: