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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

LLM + RecSys 初体验(上)

最近在逛小红书的时候,发现了一个新的GPU算力租赁平台,与AutoDL和恒源云等平台类似。正巧,官网有活动,注册即送RTX 4090三个小时,CPU 5 小时。正巧最近在测试 LLM推荐系统的 OpenP5 平台,果断入手测试! 用…

【Android】细数Linux和Android系统中的伪文件系统

文章目录 前言Linux伪文件系统cgroupfsLinux的cgroupsAndroid的cgroups debugfsfunctionfs(/dev/usb-ffs/adb)functionfs 的引入sysfs是什么 procfs(/proc)pstore(/sys/fs/pstore)selinuxfs(/sys/fs/selinux)sysfs(/sys)参考 前言 做了好些年Android开发,你了解过L…

【GitHub项目推荐--Awesome-Go/Python/JavaScript/Java】【转载】

Awesome 译为令人惊叹的、极好的,GitHub 上有很多 Awesome 开头的开源项目。比如 Awesome-Go、Awesome-Python。 就像汇总常用的软件一样,GitHub上有大量的开源项目,开发者就会根据需要汇总一些常用的好用的资源,并且根据 Awesom…

oracle 19c rac集群管理 ------ 日志管理

oracle 19C rac 数据库的目录结构及日志路径 在Oracle 19c RAC(Real Application Clusters)集群中,有多个组件和层级生成的日志文件,记录着集群的活动、事件和错误信息,用于故障诊断、性能优化和集群管理。以下是常见…

nvm安装与使用教程

目录 nvm是什么 nvm安装 配置环境变量 更换淘宝镜像 安装node.js版本 nvm list available 显示可下载版本的部分列表 nvm install 版本号 ​编辑 nvm ls 查看已经安装的版本 ​编辑 nvm use 版本号(切换想使用的版本号) nvm是什么 nvm是node.js version management的…

社区公益培训系统功能说明

社区公益培训系统功能说明 本系统将用于社区面向居民开展的公益培训课程展示,在线报名,并按班级排课上课,上课时学员要扫码签到,经常旷课的学员将禁止再报名其他课程。 1. 用户注册与登录 - 提供用户注册和登录功能,…

【LeetCode】每日一题 2024_1_22 最大交换(模拟)

文章目录 LeetCode?启动!!!题目:最大交换题目描述:代码与解题思路 LeetCode?启动!!! 几百年没有见到题目描述这么短的题目了,泪目了 题目&#x…

LeetCode 48 旋转图像

题目描述 旋转图像 给定一个 n n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。 你必须在原地 旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像。 示例 1: 输入:matrix [[1,2,3],[4…

java.lang.IllegalArgumentException: When allowCredentials is true

1.遇到的错误 java.lang.IllegalArgumentException: When allowCredentials is true, allowedOrigins cannot contain the special value "*" since that cannot be set on the "Access-Control-Allow-Origin" response header. To allow credentials to a…

gif动图怎么快速生成?这一招快速生成

很多从事新媒体行业的小伙伴都知道在编写公众号的时候会插入一些gif动图来增加与读者的互动。很多时候我们使用的动图都是网上下载的。其实,我们是可以自己制作动图的,下面就来教大家一招如何制作gif动态图片(https://www.gif.cn/&#xff09…

C++大学教程(第九版)6.38汉诺塔问题

文章目录 题目代码运行截图 题目 (汉诺塔问题)在这一章中大家了解了既可以用递归方法又可以用迭代方法很容易实现的函数。不过,在这道练习题中,我们提出的问题若用递归来解决,则尽显递归之优雅:若用迭代来实现,恐怕没那么容易。 …

Gold-YOLO(NeurIPS 2023)论文与代码解析

paper:Gold-YOLO: Efficient Object Detector via Gather-and-Distribute Mechanism official implementation:https://github.com/huawei-noah/Efficient-Computing/tree/master/Detection/Gold-YOLO 存在的问题 在过去几年里,YOLO系列已经…

9个提高开发效率的 VS Code技巧

本文就来分享 10 个极大提高开发效率的 VS Code 技巧! 标签换行 在VS Code中,可以在设置中搜索"** Editor: Wrap Tabs**"来实现选项卡换行的功能。 这样,在大型项目中工作时,就不需要像在浏览器中一样滚动来查找选项卡…

springcloud Hystrix断路器

文章目录 代码下载简介写服务测试高并发测试写消费者端测试2 服务降级先修改cloud-provider-hystrix-payment8001修改cloud-consumer-feign-hystrix-order80 目前问题方法2:测试 服务熔断实操测试 服务监控hystrixDashboard建mudlue断路器演示(服务监控hystrixDashboard) 代码下…

Vivado开发FPGA使用流程、教程 verilog(建立工程、编译文件到最终烧录的全流程)

目录 一、概述 二、工程创建 三、添加设计文件并编译 四、线上仿真 五、布局布线 六、生成比特流文件 七、烧录 一、概述 vivado开发FPGA流程分为创建工程、添加设计文件、编译、线上仿真、布局布线(添加约束文件)、生成比特流文件、烧录等步骤&a…

亚马逊店铺的照片因侵权被移除的案例申诉分享

新店上上市公司时因图片侵权被禁售 亲爱的卖方绩效团队, 感谢您关于违反政策的通知,我们想为我们所犯的可怕错误真诚地道歉。我们是 一家专注于对外贸易的小公司,在亚马逊美国销售一直是我们的终极梦想之一。 为了在亚马逊推出我们的商店&…

每日一道算法题 15(2023-12-28)TLV解析Ⅰ

package com.tarena.test.B20; import java.util.ArrayList; import java.util.Scanner; import java.util.StringJoiner; /** * TLV解析Ⅰ * author Administrator * 输入: * 第一行 31 * 第二层 32 01 00 AE 90 02 00 21 02 30 03 00 AB 32 31 31 0…

鸿蒙原生开发-仿ChatGPT应用实战

运行环境 DAYU200:4.0.10.16 SDK:4.0.10.15 IDE:4.0.600 前言 在配置好环境之后,可以尝试这编写一个较为简单的应用程序练练手,这里选择使用一个免费的API接口网站 ALAPI来尝试编写一个可进行对话的GPT应用程序。 创建项目 …

CHS_04.2.2.3_2+调度器和闲逛进程

CHS_04.2.2.3_2调度器和闲逛进程 调度器/调度程序(scheduler)闲逛进程 调度器/调度程序(scheduler) 调度器 或者叫调度程序 很简单的一个概念 调度程序是操作系统内核的一个非常非常重要的一个程序模块 我们说一个进程会在就绪运…

Java毕业设计-基于ssm的学生社团活动管理系统-第82期

获取源码资料,请移步从戎源码网:从戎源码网_专业的计算机毕业设计网站 项目介绍 基于ssm的学生社团活动管理系统:前端 jsp、jquery、ajax,后端 springmvc、spring、mybaties,角色分为管理员、学生、社团、用户&#…