上周五中午看到xray社区的文章,并没有介绍具体怎么使用这个插件。当我尝试使用xray对靶场进行shiro漏洞检测时,确实被检测出存在550这个漏洞:
./xray_windows_amd64.exe webscan --url "http://ip:port/login" --plugins shiro
漏洞是检测出来了,但说好的回显呢,还是我利用姿势不对?
我又翻出那篇社区文章,文章中显示的回显内容是在burp中,那就是要抓下这个过程的请求包。
打开xray配置文件config.yaml,找到下图中设置http代理的地方,将proxy字段设置为本地burp监听的端口(如:127.0.0.1:8080)
打开burp监听,启动xray:
可以看到xray的请求过程可以分为四步:
1. 访问给定的url,是否可以正常访问 2. xray默认访问index.php 3. 继续访问给定的url,同时带上rememberMe cookie,观察响应包中是否存在deleteMe关键字 4. 从100个key中选择,构造payload通过rememberMe cookie发送过去,并添加请求头Testecho(用于判断),看响应包中是否有预期的值第四步我们可以再深入看下
cookie中的payload和Testecho请求头一起发送出去,在响应包中判断是否存在漏洞(Testecho的值并没有影响)。
命令执行回显
在请求头中添加Testcmd,值为要执行的命令:
很愉快得看到了回显,这样利用起来真的不要太方便!
0x03 对该插件进行复用这个请求包对其他网站是否也适用呢?
我又搭建了一个后端存在shiro-550漏洞,网站功能区别于前一个靶场。xray也检测出存在相关的漏洞,所用的KEY也是一样。
我们经过前面的分析,知道了rememberMe cookie中的数据是经过key进行加密的(于iv无关),两个靶场的shiro key都是一样,那这个payload是不是可以原封不动地利用呢?
于是乎,我把这个请求包中的请求target、Host请求头进行修改,同样得到了命令回显结果,简直不要太舒服好吗。
认真观看上面两张结果截图的师傅可能发现了,这两个靶场都是Windows系统的,那Linux系统也可以复用吗?(狗头)
废话不多说,直接上Linux靶场,shiro的key还是同前面两种情况一样,改请求target、Host请求头一把梭:
太强了!Linux下同样适用。
0x04 提取关键payload前面已经尝试了三种情况的靶场,都没问题。但三个靶场的key都是一样,要是以后碰到的目标key不同,那就不能直接梭了。
我们在前面的利用过程中,是已经知道shiro key的值,默认的加密模式是CBC,iv也可以从rememberMe的前16位提取出来,那这样就可以直接解密出关键payload,留着以后复用。
解密脚本在本文0x02中有贴出来。