一些反序列化总结

1 反序列化漏洞原理

  	如果反序列化的内容就是那串字符串,是用户可以控制的(即变量的值),且后台不正当的使用了PHP中的魔法函数,就会导致反序列化漏洞,可以执行任意命令。Java 序列化指 Java 对象转换为字节序列的过程Java 反序列化指字节序列恢复为 Java 对象的过程Commons-collections 爆出第一个漏洞开始,Java 反序列化漏洞的事件就层出不穷在 Java 中,利用 ObjectInputStream 的 readObject 方法进行对象读取

2 jndi可以调用哪些协议

反序列化漏洞中一般调用 ldap 和 rmi

3 不安全的反序列化

  	攻击程序会尝试在不进行任何验证的情况下,对数据进行反序列化,不安全的反序列化会导致远程代码执行、重放攻击、注入攻击等。

4 反序列化漏洞有哪些

  	Weblogic反序列化漏洞/Jboss反序列化漏洞/nginx反序列化/Tomcat反序列化/shiro反序列化

5 java反序列化原理

  	把 AESkey 给硬编码到代码里,所以说可以通过爆破的方式找到 AESkey 然后自己构造一个恶意对象,base64 加密然后加载一个恶意对象。1. Java 序列化指 Java 对象转换为字节序列的过程2. Java 反序列化指字节序列恢复为 Java 对象的过程3. Commons-collections 爆出第一个漏洞开始,Java 反序列化漏洞的事件就层出不穷4. 在 Java 中,利用 ObjectInputStream 的 readObject 方法进行对象读取5. 可以深入了解 ysoserial 有哪些 gadgets

6 反序列化漏洞的魔法函数(魔术方法)

  	construct() /destruct() /sleep() /wakeup /toString /get(),set()/invoke()/call 和 callStatic

7 框架漏洞 - 反序列化

1、Shiro 反序列化原理
在Shiro框架下,用户登陆成功后会生成一个经过加密的Cookie。其Cookie的Key的值为RememberMe,Value的值是经过序列化、AES加密和Base64编码后得到的结果。
服务端在接收到一个Cookie时,会按照如下步骤进行解析处理:○ 检索RememberMe Cookie的值○ 进行Base64解码○ 进行AES解码○ 进行反序列化操作
在第4步中的调用反序列化时未进行任何过滤,进而可以导致出发远程代码执行漏洞。
由于使用了AES加密,成功利用该漏洞需要获取AES的加密密钥,在Shiro1.2.4版本之前AES的加密密钥为硬编码,其默认密钥的Base64编码后的值为kPH+bIxk5D2deZiIxcaaaA==,于是就可得到Payload的构造流程:
恶意命令-->序列化-->AES加密-->base64编码-->发送Cookie
目前官方通过去掉硬编码的密钥是的每次生成一个密钥来解决其漏洞,但可以通过搜索引擎等方式收集到不同的密钥,提高对该漏洞的利用成功率。

Shiro漏洞指纹:响应包中存在字段set-Cookie: rememberMe=deleteMe

2、你都复现过strust2哪些漏洞

S2-016 , S2-045 , S2-046 , S2-057
3、thinkphp 远程命令执行
thinkphp版本识别
ThinkPHP是一款基于PHP的开源框架,常用于Web应用程序的快速开发。版本识别是指根据程序的特征和版本信息来判断程序的版本。对于ThinkPHP,可以通过以下几种方式进行版本识别: 
1. 查看程序中的版本信息:在ThinkPHP的源代码中,可以找到版本号的定义,一般在ThinkPHP.php文件中。可以通过查看该文件来获取版本号。  
2. 检查文件名和目录结构:不同版本的ThinkPHP会有不同的文件名和目录结构,通过检查这些文件名和目录结构可以判断程序的版本。  
3. 分析程序的功能和特性:不同版本的ThinkPHP会有不同的功能和特性,通过分析程序的功能和特性可以判断程序的版本。  
4. 使用工具进行识别:一些工具可以自动识别程序的版本,例如WhatWeb、Wappalyzer等。这些工具可以通过检查页面源码、HTTP响应头等信息来判断程序的版本。 
在 cookie 字段有 remember me 等于 delete me 这么一个特征1、ThinkPHP3.2.x_assign方法第一个变量可控=>变量覆盖=>任意文件包含=>RCE2、thinkphp5 一种是因为Request类的method和__construct方法造成的,另一种是因为Request类在兼容模式下获取的控制器没有进行合法校验,我们下面分两种来讲,然后会将thinkphp5的每个小版本都测试下找下可用的payload。判断:看icon看报错
4、spring 远程代码执行
spring4shell
条件:
JDK 9+
直接或者间接地使⽤了Spring-beans包(Spring boot等框架都使用了)
Controller通过参数绑定传参,参数类型为非常规类型的对象(比如非String等类型的自定义对象)
Web应用部署方式必须为Tomcat war包部署
5、fastjson 原理
fastjson实现json对象与JavaBean对象的转换CVE-2017-18349即Fastjson1.2.24 反序列化漏洞RCE
漏洞出现在Fastjson autoType处理json对象时,没有对@type字段进行完整的安全性验证,我们可以传入危险的类并调用危险类连接远程RMI服务器,通过恶意类执行恶意代码,进而实现远程代码执行漏洞。判断:
判断fastjson框架
① burp插件自动扫描
② 在web页面抓包,GET改为POST,添加Content-Type:application/json,在发送一个{"test":",即可得到回显有fastjson字样
6、log4j2
一些组件
Spring-Boot-strater-log4j2
Apache struts2
Apache Solr
Apache Flink
Apache Druid
Elasticsearch
Flume
Dubbo
Redis
Logstash
Kafka
vmvare
是一个开源的日志记录组件
原理:该漏洞的主要原因是log4j在日志输出中,未对字符合法性进行严格的限制,执行了JNDI协议加载的远程恶意脚本,从而造成RCE
利用:Log4j2会做什么呢?首先会对该字符串进行解析,发现字符串包含:${},这个会被单独处理,然后再发现这是JNDI的扩展和LDAP协议,并且LDAP协议的地址在本地,要查找的name是exploit,最后调用具体的LDAP模块去请求响应的数据。最多是把该name的数据打印到日志中。但危险的在于:JNDI还支持一个叫命名引用(Naming References)的方式,可以通过远程下载一个class文件,然后下载后加载起来构建对象。
所以JNDI可以远程下载class文件来构建对象就是核心问题,有些时候Java对象比较大,直接通过LDAP存储不方便,就可以通过类似forward的方式不直接返回对象内容,而是告诉你对象属于那个Class以及这个Class的远程地址。
那么危险就来了,如果Class的远程下载URL指定的是一个黑客的服务器,并且下载的Class文件包含攻击代码,你的服务器就完犊子了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/649716.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Flink问题解决及性能调优-【Flink根据不同场景状态后端使用调优】

Flink 实时groupby聚合场景操作时,由于使用的是rocksdb状态后端,发现CPU的高负载卡在rocksdb的读写上,导致上游算子背压特别大。通过调优使用hashmap状态后端代替rocksdb状态后端,使吞吐量有了质的飞跃(20倍的性能提升…

2024年,你是否还在迷茫?

2024年,你是否还在迷茫? 别担心!鸿蒙来了,这个未来技术的制高点,为你提供了答案! 诸多大厂疯抢、24年预计鸿蒙相关的岗位需求将达到百万级、就业均薪达到19K,全国高校开课…… 种种现象都在表…

VirtualBox安装Ubuntu22.04

目录 1、新建虚拟机 1.1、设置内存大小 1.2、创建虚拟硬盘 2、虚拟机设置 2.1、设置启动顺序​编辑 2.2、选择iso镜像文件 2.3、设置网络(桥接网卡) 3、启动 3.1、设置语言环境 3.2、系统更新安装(不更新) 3.3、选择键盘布局(默认即可) 3.4、选择安装类型 3.5、网…

硬件知识(1) 手机的长焦镜头

#灵感# 手机总是配备好几个镜头,研究一下 目录 手机常配备的摄像头,及效果举例 长焦的焦距 焦距的定义和示图: IPC的焦距和适用场景: 手机常配备的摄像头,及效果举例 以下是小米某个手机的摄像头介绍&#xff1a…

EXCEL VBA抓取网页JSON数据并解析

EXCEL VBA抓取网页JSON数据并解析 链接地址: https://api.api68.com/CQShiCai/getBaseCQShiCaiList.do?lotCode10036&date2024-01-26 Sub test() On Error Resume Next Sheet.Select Sheet1.Cells.ClearContents [a1:g1] Split("preDrawIssue|preDrawTi…

用Visual Studio Code创建JavaScript运行环境【2024版】

用Visual Studio Code创建JavaScript运行环境 JavaScript 的历史 JavaScript 最初被称为 LiveScript,由 Netscape(Netscape Communications Corporation,网景通信公司)公司的布兰登艾奇(Brendan Eich)在 …

mysql 存储过程学习

存储过程介绍 1.1 SQL指令执行过程 从SQL执行的流程中我们分析存在的问题: 1.如果我们需要重复多次执行相同的SQL,SQL执行都需要通过连接传递到MySQL,并且需要经过编译和执行的步骤; 2.如果我们需要执行多个SQL指令,并且第二个SQL指令需要…

Topaz Video AI:无损放大,让你的视频更清晰!

在当今的数字时代,视频内容的重要性越来越受到人们的关注。无论是在社交媒体上分享生活片段,还是在商业领域中制作宣传视频,人们都希望能够展现出更高质量的视频内容。 然而,由于各种原因,我们经常会面临一个问题&…

C++版QT:分割窗口

目录 mainwindow.h mainwindow.cpp main.cpp Qt的分割窗口功能允许用户将一个窗口分割成多个区域,每个区域可以独立地显示不同的内容。这种功能在许多应用程序中非常有用,例如编辑器、浏览器和IDE等。 理解Qt的分割窗口,需要从以下几个方面…

音频格式之AAC:(2)AAC封装格式ADIF,ADTS,LATM,extradata及AAC ES存储格式

系列文章目录 音频格式的介绍文章系列: 音频编解码格式介绍(1) ADPCM:adpcm编解码原理及其代码实现 音频编解码格式介绍(2) MP3 :音频格式之MP3:(1)MP3封装格式简介 音频编解码格式介绍(2) MP3 :音频格式之MP3&#x…

IDEA jdk版本切换问题

打开 IntelliJ IDEA 的 Project Structure(快捷键通常是 Ctrl Alt Shift S)。 转到 Project Settings > Modules。 选择相应的模块,然后在 Sources 标签页下,查看 Language level 是否设置为 自己需要的jdk版本语言。 接…

20240125-边界外路径

题目要求 有一个m*n的网格,网格中有一个小球。小球初始位置位[startRow,startColumn]。您可以将小球移动到网格中相邻的四个单元格之一(可能会越过网格边界移出网格)。最多可以对小球进行maxMove移动。 给定 m、n、maxMove、sta…

uniapp导入uView组件库

目录 准备工作 1. 新建一个项目 2. 导入uview组件库 3. 关于SCSS 配置步骤 1. 引入uView主JS库 2. 在引入uView的全局SCSS 3. 引入uView基础样式 4. 配置easycom组件模式 添加效果实验运行即可成功 准备工作 1. 新建一个项目 2. 导入uview组件库 在进行配置之前&#x…

TensorFlow2实战-系列教程2:神经网络分类任务

🧡💛💚TensorFlow2实战-系列教程 总目录 有任何问题欢迎在下面留言 本篇文章的代码运行界面均在Jupyter Notebook中进行 本篇文章配套的代码资源已经上传 1、Mnist数据集 下载mnist数据集: %matplotlib inline from pathlib imp…

使用代码取大量2*2像素图片各通道均值,存于Excel文件中。

任务是取下图RGB各个通道的均值及标签(R, G,B,Label),其中标签由图片存放的文件夹标识。由于2*2像素图片较多,所以将结果放置于Excel表格中,之后使用SVM对他们进行分类。 from PIL import Image import os …

【Linux】查看硬件信息和操作系统信息、安装的应用信息

【Linux】查看硬件信息和操作系统信息、安装的应用信息 一、硬件信息 1.1 CPU信息 cat /proc/cpuinfo #查看 processor : 0 // 逻辑处理器的唯一标识符 physical id : 0 // 硬件上真实存在的CPU siblings : 1 // 一个物理CPU有几个逻辑CPU cpu…

定向减免!函数计算让轻量 ETL 数据加工更简单,更省钱

作者:澈尔、墨飏 业内较为常见的高频短时 ETL 数据加工场景,即频率高时延短,一般均可归类为调用密集型场景。此场景有着高并发、海量调用的特性,往往会产生高额的计算费用,而业内推荐方案一般为攒批处理,业…

ChatGPT+Midjourney+闲鱼赚钱方法实战探索

最近天天在朋友群内看到朋友接单(出售提示词,图片),轻轻松松半小时就赚200-300,特意探索了一下相关玩法,总结出一套ChatGPTMidjourney闲鱼赚钱方法,主打的是易上手,有可操作性! 具体…

项目性能优化之用compression-webpack-plugin插件开启gzip压缩

背景:vue项目打包发布后,部分js、css文件体积较大导致页面卡顿,于是使用webpack插件compression-webpack-plugin开启gzip压缩 前端配置vue.config.js 先通过npm下载compression-webpack-plugin包,npm i compression-webpack-plug…

C#使用RabbitMQ-2_详解工作队列模式

简介 🍀RabbitMQ中的工作队列模式是指将任务分配给多个消费者并行处理。在工作队列模式中,生产者将任务发送到RabbitMQ交换器,然后交换器将任务路由到一个或多个队列。消费者从队列中获取任务并进行处理。处理完成后,消费者可以向…