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,用于体育场景中的多目标跟踪,旨…

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

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

深圳 福田区 建筑模型 su rhino

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

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

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

浅学JAVAFX布局

JAVAFX FlowPane布局 Flowpane是一个容器。它在一行上排列连续的子组件,并且如果当前行填充满了以后,则自动将子组件向下推到一行 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:6.0 中科院分区:2区 生物学WOS分区:Q1被引次数: 4 背景:癌细胞具有无限期自我更新和增殖的能力[2]。在一…

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建模——活动图

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

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

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

【centos7安装docker】

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

【大数据】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(Aspect-Oriented Programming,面向方面编程),可以说是OOP(Object-Oriented Programing,面向对象编程)的补充和完善。OOP引入封装、继承和多态性等概念来建立一种对象层次结构,用…

代码随想录算法训练营第14天 | 二叉树的前序、中序、后序遍历(递归+迭代法)

二叉树的理论基础:(二叉树的种类,存储方式,遍历方式 以及二叉树的定义) https://programmercarl.com/%E4%BA%8C%E5%8F%89%E6%A0%91%E7%90%86%E8%AE%BA%E5%9F%BA%E7%A1%80.html 二叉树的递归遍历 Leetcode对应的三道习…

我们应该解决哪些计算机网络中的问题,才能实现进程之间基于网络的通信呢?

ps:本文章的图片内容来源都是来自于湖科大教书匠的视频,声明:仅供自己复习,里面加上了自己的理解 这里附上视频链接地址:1.6 计算机网络体系结构(1)—常见的计算机网络体系结构_哔哩哔哩_bilibi…

what is `ContentCachingRequestWrapper` does?

ContentCachingRequestWrapper 是 Spring Framework 中提供的一种包装类,它扩展了 HttpServletRequestWrapper 类,用于缓存请求体的内容。 通常在处理 HTTP 请求时,原生的 HttpServletRequest 对象中的输入流 (getInputStream()) 只能被读取一…

Java玩转《啊哈算法》排序之桶排序

过去心不可得,现在心不可得,未来心不可得 目录在这里 楔子代码地址桶排序代码核心部分优缺点 完整代码演示 升级版核心代码完整代码演示 楔子 大家好!本人最近看了下《啊哈算法》,写的确实不错,生动形象又有趣&#x…

Optional的使用(代替if判断是否为空)

Optional 前言 我的使用 package yimeng;import com.ruoyi.RuoYiApplication; import com.ruoyi.common.core.domain.entity.SysUser; import org.junit.jupiter.api.Test; import org.springframework.boot.test.context.SpringBootTest; import java.util.*;SpringBootTes…

OpenCV第 2 课 OpenCV 环境搭建

文章目录 第 2 课 OpenCV 环境搭建1.安装 Numpy2.从 Ubuntu 存储库安装 OpenCV3.验证 OpenCV 安装 第 2 课 OpenCV 环境搭建 1.安装 Numpy 每一张图像都有很多个像素点,这也导致了程序中会涉及大量的数组处理。Numpy 是一个 Python 的拓展库,它对多维数…

mysql临时表简述

概述 业务中经常会对一些表进行聚合组装信息,然后筛选,有些表比较数据量大的时候,会对拖慢查询; 常用的mybatis的分页查询,在查询时会先count一下所有数据,然后再limit分页,即使分页也会有深度…