38-WEB漏洞-反序列化之PHPJAVA全解(下)

WEB漏洞-反序列化之PHP&JAVA全解(下)

  • 一、Java中API实现
  • 二、序列化理解
  • 三、案例演示
    • 3.1、本地
    • 3.2、Java 反序列化及命令执行代码测试
    • 3.3、WebGoat_Javaweb 靶场反序列化测试
    • 3.4、2020-网鼎杯-朱雀组-Web-think_java 真题复现
  • 四、涉及资源

在这里插入图片描述

一、Java中API实现

在这里插入图片描述

二、序列化理解

  • 序列化(Serialization):将对象的状态信息转换为可以存储或传输的形式的过程。在序列化期间,对象将其当前状态写入到临时或持久性存储区。
  • 反序列化:从存储区中读取该数据,并将其还原为对象的过程,成为反序列化。

三、案例演示

3.1、本地

1、主函数:

  • 调用序列化方法
  • 将反序列化的的结果返回给person变量
  • 输出person变量

在这里插入图片描述

2、序列化方法:

  • 创建一个person的对象
  • 创建一个文件输出流(指向person.txt的文件),命名为oos
  • 将person对象的写入到文件输出流中

在这里插入图片描述

3、反序列化方法:

  • 创建一个文件输入流(指向person.txt的文件),命名为ois
  • 从到文件输入流中读取person对象的信息
  • 返回person对象(直接显示会乱码,一般用base64加密输出)

在这里插入图片描述
4、运行结果:
在这里插入图片描述

3.2、Java 反序列化及命令执行代码测试

1、源代码分析:

  • 使用exec方法执行字符串命令并返回一个process对象
  • 获取命令(process)的输入流给reader对象
  • 读取输入流的内容,打印输出(反序列化)

在这里插入图片描述

2、运行结果:
在这里插入图片描述

3.3、WebGoat_Javaweb 靶场反序列化测试

1、启动靶场:
在这里插入图片描述

2、进入靶场:
在这里插入图片描述

3、理论分析:

  • 输入框内接受序列化的对象,并且将它反序列化(更改序列化的对象,将页面延迟5秒)
    在这里插入图片描述

4、源代码分析:

  • 使用IDEA打开jar文件(https://www.cnblogs.com/liaowenhui/p/17353156.html)
  • 可以使用解压软件打开,再找到对应的jar文件解压出来后再使用IDEA打开。
    在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

  • 接受参数,base64解密,反序列化读取,返回读取的对象

  • 获取输出流,赋值给一个对象,然后写入输出流(序列化),返回base64编码
    在这里插入图片描述

  • 这里存在命令执行(在调用读取输入流的时候,也就是读取反序列化的数据,并且把它当做命令执行)
    在这里插入图片描述

5、漏洞分析:这里会将反序列化的数据进行读取,再进行命令执行。

  • rO0ABXQAVklmIHlvdSBkZXNlcmlhbGl6ZSBtZSBkb3duLCBJIHNoYWxsIGJlY29tZSBtb3JlIHBvd2VyZnVsIHRoYW4geW91IGNhbiBwb3NzaWJseSBpbWFnaW5l是序列化后加密形成
  • 序列化标志参考(可以确定是base64加密),因此要攻击,要如何构造payload?考虑对方的回显?==》反弹shell(解决回显)
  • 思路:要执行ipconfig =》序列化 =》base64加密 =》rO0AB格式字符串 =》payload
#补充知识点
下方的特征可以作为序列化的标志参考:
一段数据以rO0AB开头,你基本可以确定这串就是JAVA序列化base64加密的数据。
或者如果以aced开头,那么他就是这一段java序列化的16进制。|

6、 使用工具将命令构造成序列化语句

  • 命令分析
    • 生成组件,打开本地的计算器,保存到payload.bin文件中
    • 为什么要保存?还要进行base64加密
java  -Dhibernate5  -cp  hibernate-core-5.4.9.Final.jar;
ysoserial-master-30099844c6-1.jar
ysoserial.GeneratePayload Hibernate1 calc.exe > payload.bin
  • 如何判断组件
    • 看工具的组建在源代码内是否出现过
    • 这里源代码出现了组件
java -jar ysoserial-all.jar

在这里插入图片描述
在这里插入图片描述

  • 生成payload:
java  -Dhibernate5  -cp  hibernate-core-5.4.9.Final.jar;ysoserial-master-8eb5cbfbf6-1.jar ysoserial.GeneratePayload Hibernate1 calc.exe > payload.bin
  • 生成了payload,利用Python程序base64加密
    在这里插入图片描述

  • 将加密后文本的代码复制到反序列化窗口,发现本地的计算器被打开。

3.4、2020-网鼎杯-朱雀组-Web-think_java 真题复现

https://blog.csdn.net/qq_36585338/article/details/128121566

四、涉及资源

  • https://github.com/frohoff/ysoserial/releases
  • https://github.com/WebGoat/WebGoat/releases
  • https://github.com/NickstaDB/SerializationDumper/releases/tag/1.12

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

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

相关文章

springboot118共享汽车管理系统

简介 【毕设源码推荐 javaweb 项目】基于springbootvue 的共享汽车管理系统 适用于计算机类毕业设计,课程设计参考与学习用途。仅供学习参考, 不得用于商业或者非法用途,否则,一切后果请用户自负。 看运行截图看 第五章 第四章 获…

『论文阅读|2024 WACV 多目标跟踪Deep-EloU|纯中文版』

论文题目: Iterative Scale-Up ExpansionIoU and Deep Features Association for Multi-Object Tracking in Sports 论文特点: 作者提出了一种迭代扩展的 ExpansionIoU 和深度特征关联方法Deep-EIoU,用于体育场景中的多目标跟踪,旨…

pc端vue封装高德地图实现定位 PlaceSearch搜索

首先安装 amap/amap-jsapi-loader 官网教程 mapContainer.vue <template><div class"container-map" :style"styleObj"><!-- change"changeInput" type"text" --><a-input idtipinput v-model:value"input…

C++从零开始的打怪升级之路(day20)

这是关于一个普通双非本科大一学生的C的学习记录贴 在此前&#xff0c;我学了一点点C语言还有简单的数据结构&#xff0c;如果有小伙伴想和我一起学习的&#xff0c;可以私信我交流分享学习资料 那么开启正题 今天分享的是关于vector的题目 1.只出现一次的数字3 260. 只出…

基于springboot家政服务管理平台源码和论文

随着家政服务行业的不断发展&#xff0c;家政服务在现实生活中的使用和普及&#xff0c;家政服务行业成为近年内出现的一个新行业&#xff0c;并且能够成为大众广为认可和接受的行为和选择。设计家政服务管理平台的目的就是借助计算机让复杂的销售操作变简单&#xff0c;变高效…

深圳 福田区 建筑模型 su rhino

深圳 福田区 建筑模型 su rhino 只有福田区的&#xff0c;其他区的没有&#xff0c;其他市的没有 模型有skp&#xff0c;obj格式 模型如图 部分数据&#xff1a;

部署网站时遇到请求出现状态码206,可能是nginx配置问题

在部署网站系统的时候&#xff0c;部分接口出现状态码206&#xff0c;导致功能不能正常使用&#xff0c;经过排查&#xff0c;猜测可能是nginx配置中出现的问题。 目录 一、问题原因 二、解决办法 一、问题原因 当使用Nginx作为代理服务器时&#xff0c;确实存在一个代理缓存…

常用电子器件学习——三极管

三极管介绍 三极管&#xff0c;全称应为半导体三极管&#xff0c;也称双极型晶体管、晶体三极管&#xff0c;是一种电流控制电流的半导体器件其作用是把微弱信号放大成幅度值较大的电信号&#xff0c; 也用作无触点开关。晶体三极管&#xff0c;是半导体基本元器件之一&#xf…

浅学JAVAFX布局

JAVAFX FlowPane布局 Flowpane是一个容器。它在一行上排列连续的子组件&#xff0c;并且如果当前行填充满了以后&#xff0c;则自动将子组件向下推到一行 public class FlowPanedemo extends Application {Overridepublic void start(Stage stage) throws Exception {stage.s…

肺癌相关文献6

第十四篇 Classification of lung adenocarcinoma based on stemness scores in bulk and single cell transcriptomes IF&#xff1a;6.0 中科院分区:2区 生物学WOS分区&#xff1a;Q1被引次数&#xff1a; 4 背景&#xff1a;癌细胞具有无限期自我更新和增殖的能力[2]。在一…

Spring Security 6.x 系列【72】授权篇之角色分层

有道无术,术尚可求,有术无道,止于术。 本系列Spring Boot 版本 3.1.0 本系列Spring Security 版本 6.1.0 源码地址:https://gitee.com/pearl-organization/study-spring-security-demo 文章目录 1. 前言2. RoleHierarchy3. 案例演示3.1 期望3.2 集成3.2 测试4. 源码分析4…

python基础学习-03 安装

python3 可应用于多平台包括 Windows、Linux 和 Mac OS X。 Unix (Solaris, Linux, FreeBSD, AIX, HP/UX, SunOS, IRIX, 等等。)Win 9x/NT/2000Macintosh (Intel, PPC, 68K)OS/2DOS (多个DOS版本)PalmOSNokia 移动手机Windows CEAcorn/RISC OSBeOSAmigaVMS/OpenVMSQNXVxWorksP…

高校寝室卫生检查系统UML建模——活动图

学生查看历史的通知公告学生投诉寝室卫生检查 学生查看其他寝室的卫生情况 发起报修请求

取消默认进入conda的base环境

文章目录 输入命令&#xff1a; conda config --set auto_activate_base false即可

【强化学习】QAC、A2C、A3C学习笔记

强化学习算法&#xff1a;QAC vs A2C vs A3C 引言 经典的REINFORCE算法为我们提供了一种直接优化策略的方式&#xff0c;它通过梯度上升方法来寻找最优策略。然而&#xff0c;REINFORCE算法也有其局限性&#xff0c;采样效率低、高方差、收敛性差、难以处理高维离散空间。 为…

Vue3全局组件和自定义指令

目录 全局组件 全局指令 局部指令 全局组件 全局组件是在main.js中注册的&#xff0c;通过app实例.component创建 main.js import { createApp } from vue import App from ./App.vue //导入组件 import CustormComp from ./components/CustormComp.vue // 创建App实例挂载…

【centos7安装docker】

背景&#xff1a; 学习docker&#xff0c;我是想做一个隔离环境&#xff0c;并且部署的话&#xff0c;希望实现自动化&#xff0c;不为安装软件而烦恼&#xff0c;保证每个人的环境一致。 2C4G内存 50G磁盘的虚拟机事先已经准备完毕。 1.查看下centos版本&#xff0c;docker要…

CorLoc(Correct Localization)是什么?

“Correct Localization”&#xff08;CorLoc&#xff09;是一种用于评估目标检测模型性能的指标&#xff0c;强调模型是否能够准确地定位目标对象。该指标通常在训练数据上使用&#xff0c;用于检测模型对目标位置的精确性。 以下是对CorLoc的详细说明&#xff1a; 1.目标检测…

【大数据】Flink 系统架构

Flink 系统架构 1.Flink 组件1.1 JobManager1.2 ResourceManager1.3 TaskManager1.4 Dispatcher 2.应用部署2.1 框架模式2.2 库模式 3.任务执行4.高可用设置4.1 TaskManager 故障4.2 JobManager 故障 Flink 是一个用于状态化并行流处理的分布式系统。它的搭建涉及多个进程&…

aop介绍

AOP&#xff08;Aspect-Oriented Programming&#xff0c;面向方面编程&#xff09;&#xff0c;可以说是OOP&#xff08;Object-Oriented Programing&#xff0c;面向对象编程&#xff09;的补充和完善。OOP引入封装、继承和多态性等概念来建立一种对象层次结构&#xff0c;用…