ThinkPHP文件包含,远程执行漏洞分析

漏洞预警| ThinkPHP多版本存在远程代码执行漏洞 棱镜七彩安全漏洞预警 阅读详情

转自公众号 长白山攻防实验室, 原文链接:

ThinkPHP文件包含漏洞分析

该漏洞对于5.1及5.0版本的影响较大,6.0版本默认不会开启多语言检测。

出品|长白山攻防实验室(ID:A_Tree)

0x00

声明

以下内容,来自长白山攻防实验室的A_Tree作者原创,由于传播,利用此文所提供的信息而造成的任何直接或间接的后果和损失,均由使用者本人负责,长白山攻防实验室以及文章作者不承担任何责任。

0x02

漏洞介绍

ThinkPHP是一个开源免费的,快速、简单的面向对象的轻量级PHP开发框架,是为了敏捷WEB应用开发和简化企业应用开发而诞生的。

近日,监测到其出现文件包含,代码执行漏洞,漏洞编号:QVD-2022-46174,当ThinkPHP开启了多语言功能时,攻击者可以通过lang参数和目录穿越实现文件包含,当存在其他扩展模块如 pear 扩展时,攻击者可进一步利用文件包含实现远程代码执行。

0x03

漏洞类型

文件包含,代码执行

0x04

 漏洞影响范围

ThinkPHP   6.0.1—6.0.13,5.0.x,5.1.x

0x05

漏洞复现

漏洞复现环境:

GITHUB开源项目:

基于ThinkPHP5.0搭建的NIUSHOP开源建站系统。

环境链接:https://github.com/znlccy/niushop

此系统默认没有开启ThinkPHP多语言功能,需要做出如下修改。

修改/application/config.php文件中的lang_swit-ch_on参数为Ture

修改后再主页测试全局lang参数是否生效:

?lang=zh-cn

?lang=en-us

上述两个请求,发现语言进行了切换,环境即搭建成功。在网站根目录创建phpinfo文件作为测试包含文件。

访问URL:?lang=..\..\info

执行info文件,漏洞利用成功。

0x06

漏洞分析

先看PHP官方补丁内容:在think5中修改的文件定位在了think\lang.php的detect方法,定位漏洞位置。

观察未修复的漏洞文件:在detect()其结果为定义了一个self::$range,通过源码分析可得,此参数受到下列参数影响:

我们将其中:$_GET[self::$langDetectVar]输出出来,验证参数内容的可控程度,其参数内容完全可控,并且detect的返回值完全由lang参数决定。

我们继续跟进调用Lang::detect()的文件内容:App.php

App.php文件内容:在config中的多语言机制开启时(lang_switch_on = true)执行了detect()将self::range通过URL中发lang参数定义,我们在上面分析过了,接下来分别执行了range()方法和load()方法。

我们首先跟进range()方法:在App.php中调用range为Lang::range() 因此,range()此时直接return了self::$range此参数在detect中被URL的lang参数控制。

Langset(Lang::range()):继续跟进如langset方法,此时$lang为URL中的lang(污点参数)

非空后将类中私有langset进行赋值,并且$this全部返回。

接下来执行Lang::load()方法:在进入方法前,其中传入load()的变量中,$request->langset()为我们URL中的lang(污点参数)。

跟进lang():可见file参数被转换为列表后进行遍历,当遍历的路径存在时便include目标,file中的内容为我们可控内容,即导致文件包含。

将列表file输出,方便观察:可见内容为从application\lang路径和think\lang路径加上我们URL中lang参数的内容,但是需要我们的此时lang参数为..\..\info.php但是在file列表的内容为info.php.php因此我们不能加上php的后缀。

那么此时我们只需要保证is_file($_file)为真即可包含实现文件包含漏洞。

?Lang = ..\..\info

0x07

总结

此漏洞造成原因相对简单,就是输入参数过滤不严格,修复排查方案为查看当前网站源代码中app目录下的config文件中lang_switch_on是否True即可,如果涉及到语言切换的需要,那么就更新thinkPHP或者手动改一下Lang:: detect()中的源码也行。See Bay!

渗透测试之路:ThinkPHP漏洞复现 其实ThinkPH框架漏洞大多用到的都是设置对于控制器名的一个疏忽问题,不理解的小伙伴可以查来url调用文件的机制来学习一下,其实这些框架漏洞都是基于基础漏洞的一些拓展,至于sql漏洞,了解一下pdo预编译原理即可。不管java或是php在进行数据库查询的时候都应该进行pdo预编译,我们都知道,在jdbc工作的时候分成好多步1.建立连接2.写入sql语句3.预编译sql语句4.设置参数5.执行sql获取结果6.遍历结果(处理结果)7.关闭连接。 阅读详情

相关推荐

ThinkPHP漏洞详解(自学)

Thinkphp是一个快速、兼容而且简单的轻量级PHP开发框架。ThinkPHP可以支持windows/Unix/Linux等服务器环境,正式版需要PHP 5.0以上版本,支持MySql、PgSQL、Sqlite多种数据库以及PDO扩展,是一款跨平台,跨版本以及简单易用的PHP框架。Thinkphp发展至今,主要有2.x、3.x、5.x、6.x系列,其中2.x和3.x系列官方已停止维护,5.x系列是目前使用最多的一个系列,而3.x系列比较多的老用户。

m0_64481831的博客 4932

ThinkPHP漏洞合集(专注渗透视角)_thinkphp v6(1),网络安全内存泄漏总结

*漏洞原理:**ThinkPHP是在中国使用极为广泛的PHP开发框架。在其版本5中,由于框架错误地处理了控制器名称,因此如果网站未启用强制路由(默认设置),则该框架可以执行任何方法,从而导致RCE漏洞。docker ps**漏洞原理:**ThinkPHP是在中国使用极为广泛的PHP开发框架。

3404

ThinkPHP RCE漏洞分析合集

更多黑客技能 公众号:暗网黑客 作者:掌控安全-veek 一. ThinkPHP 5.0.10-3.2.3 缓存函数设计缺陷可导致代码执行 0x00 背景 网站为了提高访问效率往往会将用户访问过的页面存入缓存来减少开销。 而Thinkphp 在使用缓存的时候是将数据序列化,然后存进一个 php 文件中,这使得命令执行等行为成为可能。 0x01 实验环境 系统环境 服务器主机:centOS 7 php 5.4版本,apache2,ThinkPHP 5.0.10 0x02 漏洞利用 将 applicati

hackzkaq的博客 4732

ThinkPHP5系列远程代码执行漏洞复现(详细)

ThinkPHP5系列远程代码执行漏洞复现(详细)

weixin_53730939的博客 1万+

ThinkPHP漏洞总结(利用)

ThinkPHP介绍 ThinkPHP是一个快速、兼容而且简单的轻量级国产PHP开发框架,诞生于2006年初,原名FCS,2007年元旦正式更名为ThinkPHP,遵循Apache2开源协议发布,从Struts结构移植过来并做了改进和完善,同时也借鉴了国外很多优秀的框架和模式,使用面向对象的开发结构和MVC模式,融合了Struts的思想和TagLib(标签库)、RoR的ORM映射和ActiveRecord模式。 ...

yangbz123的博客 1万+

ThinkPHP漏洞全集:深度分析与讨论

在ThinkPHP中,如果开发者没有正确配置文件包含的路径或没有对用户输入的文件路径进行验证和过滤,就可能导致此类漏洞的产生。为了防范文件包含漏洞,开发者需要对所有用户提交的文件路径进行严格的验证和过滤,确保只包含合法的文件路径。攻击者通过在用户输入的数据中注入恶意的SQL语句,绕过系统的验证和过滤机制,实现对数据库的非法访问和操作。通过对ThinkPHP漏洞全集的讨论,我们可以看到,这些漏洞的存在不仅对系统的安全性构成威胁,也暴露出开发者在开发过程中的疏忽和不足之处。一、ThinkPHP漏洞概述。

dghsgzhz12的博客 1244

ThinkPHP3.2.x RCE

ThinkPHP3.2.x RCE下载地址漏洞利用代码分析 下载地址 戳此进行下载 漏洞利用 debug模式开启 代码分析 程序执行流程 5

LYJ20010728的博客 1343

Unity Shader Graph 2D - Procedural程序化图形转动的环状六边形

Hexagon又称六边形,在游戏中是十分常见的基础形状,本文将使用程序化的六边形来制作多个环状六边形叠加的转动动画效果,实践Unity Shader Graph中的常用节点功能。

Giver的博客 1928

ThinkPHP 3.2漏洞的探讨

远程代码执行漏洞是由于在模板赋值方法assign的第一个参数可控时,模板文件路径变量被覆盖为携带攻击代码的文件路径,导致攻击者可以执行任意代码。本文将针对ThinkPHP 3.2的漏洞进行详细的探讨,分析其产生的原因、影响以及应对策略。作为开发者或网站运营者,我们应重视这些漏洞的存在,并采取相应的应对策略来保障Web应用的安全性。通过升级版本、严格审查代码、加强安全配置以及监控和日志审计等措施,我们可以有效地防范和应对ThinkPHP 3.2的漏洞带来的安全风险。四、ThinkPHP 3.2漏洞的影响。

Li91314的博客 934

用友U8库龄分析避坑指南:物料出入库日期计算的5个常见错误

本文深入剖析了在用友U8系统中进行库龄分析时,物料出入库日期计算的五个常见陷阱。从数据源选择、业务类型过滤、计价方式逻辑、期初数据处理到查询性能优化,逐一解析错误根源并提供避坑指南,帮助企业获得准确的库龄数据,有效管理库存与资金风险。

weixin_29209801的博客 456

2024广东省职业技能大赛云计算——集群部署GitLab

题目是这样的:在Kubernetes集群中新建命名空间gitlab-ci,将GitLab部署到该命名空间下,Deployment和Service名称均为gitlab,以NodePort方式将80端口对外暴露为30880,设置GitLab服务root用户的密码为admin@123,将项目包demo-2048.tar.gz导入到GitLab中并命名为demo-2048。GitLab是一个功能强大且灵活的 DevOps 平台,为开发团队和企业提供了从代码管理到持续集成、交付和部署的一整套解决方案。

kuuuugua的博客 4396

php 渗透技术,关于ThinkPHP的一些渗透方式

Runtime日志在ThinkPHP3的版本中,入口文件index.php是跟应用目录,框架目录是同一个目录下的,在DEBUG开启的状态下,会在runtime生成日志文件,会泄露一些管理员登录后台的账号密码等。tp3的日志文件命名规则为:根目录(或者应用目录)/Runtime/Logs/Admin/20_08_17.log(年份前2位_月份_日.log)1.png (114.77 KB, 下载次数...

weixin_35952534的博客 4006

告别OLE!Delphi操作Excel的3种轻量级方案横向评测(FlexCel/XLSReadWriteII/LibXL)

本文深入评测了Delphi操作Excel的三种轻量级方案:FlexCel、XLSReadWriteII和LibXL。通过技术架构、API设计、性能测试和实战案例的全面对比,帮助开发者选择最适合的工具,提升Excel文件处理效率,告别传统OLE方案的依赖和性能问题。

onion的博客 930

从ThinkPHP漏洞到Shell获取:一次实战渗透的完整复盘

本文详细记录了从发现ThinkPHP 5.0.24漏洞到成功获取Shell的完整渗透过程。通过分析漏洞利用、绕过限制技巧以及使用蚁剑连接WebShell的实战经验,提供了针对ThinkPHP框架的安全防御建议,包括及时更新、禁用危险函数和权限控制等关键措施。

weixin_30954265的博客 198

游戏玩家和排行数据抓取:使用 Python 爬虫抓取游戏中的玩家排名、角色数据和战绩

对于游戏开发者、分析师和玩家本身来说,抓取游戏中的玩家排名、角色数据和战绩信息是一项至关重要的任务。Python提供了强大的爬虫库和数据处理工具,可以帮助我们高效地抓取和分析游戏数据,为游戏分析师、开发者以及玩家本身提供有价值的数据支持。通过本篇博客,我们学习了如何使用Python爬虫技术抓取游戏中的玩家排名、角色数据和战绩。本篇博客将详细介绍如何使用Python编写爬虫来抓取游戏中的玩家排名、角色数据和战绩,并结合最新的技术来实现高效的数据抓取与处理。为了方便后续的数据处理,我们将抓取的数据保存到。

2201_76125261的博客 946

YOLOv11改进策略【模型轻量化】| 替换骨干网络为 MobileViTv1高效的信息编码与融合模块,获取局部和全局信息

本文记录的是基于MobileNet V4的YOLOv11目标检测轻量化改进方法研究。其中MobileViT块旨在以较少的参数对输入张量中的进行建模,结合卷积与 Transformer 的优势,并实现有效的信息编码与融合本文配置了原论文中和三种模型,以满足不同的需求。

Limiiiing的博客 1074

PHP文件包含漏洞深度解析:从LFI到RFI的攻防实战与CTF案例

文件包含漏洞是Web安全领域的核心议题,其本质源于应用程序对用户输入文件路径的信任失控。在PHP等动态语言中,include、require等函数若未对输入进行严格校验,攻击者便可操控路径参数,引发本地文件包含(LFI)或远程文件包含(RFI)。理解其原理是构建安全防御的基础。该漏洞的技术价值在于其危害的递进性:从读取敏感配置文件的低风险信息泄露,可升级为结合日志注入、Session文件或PHP伪协议实现远程代码执行(RCE)的高危攻击,最终完全控制服务器。在CTF竞赛和实战渗透测试中,文件包含常与文件上传

weixin_30292745的博客 391

【QNX+Android虚拟化方案】125 - 如何创建android-spare镜像

【QNX+Android虚拟化方案】125 - 如何创建android-spare镜像

|~~~热爱生活、努力学习的小伙汁~~~| 1092

ThinkPHP历史漏洞巡礼:从5.0.23 RCE看框架安全演进

本文深入剖析ThinkPHP框架从2.x到6.x版本的安全漏洞演进,重点解析5.0.23远程代码执行(RCE)等经典漏洞的成因与修复方案。通过对比各版本安全机制升级路径,为开发者提供框架安全配置建议和版本迁移策略,助力构建更安全的PHP应用。

kk1234的博客 172

Simulink仿真入门到精通(三) Simulink信号

本系列教程是根据孙忠潇编著的<<Simulink仿真及代码生成技术入门到精通>>学习笔记。 目录 Simulink仿真入门到精通(一) Simulink界面介绍 Simulink仿真入门到精通(二) Simulink模块 Simulink仿真入门到精通(三) Simulink信号 Simulink仿真入门到精通(四) Simulink子系统 Simulink仿真入门到精通(五) Simulink模型的仿真 Simulink仿真入门到精通(六) Simulink模型保存为图片 Sim

king110108的专栏 5396

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

CTF:攻防世界web PART01

写在前面: 此博客仅用于记录个人学习进度,学识浅薄,若有错误观点欢迎评论区指出。欢迎各位前来交流。(部分材料来源网络,若有侵权,立即删除) 攻防世界web PART01baby_webTraining-WWW-Robotsphp_rce baby_web 初始页面 第一反应是index.php 输入发现不对 那就用御剑扫一扫 扫不到任何有用的东西 那就F12一下 可以看到发过来的包里是有index.php的 flag{very_baby_web} get it Training-WWW

Q_U_A_R_T_E_R的博客 346

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

[Vulhub] ThinkPHP漏洞合集

0x01 复现环境 攻击机:kali linux,Windows 10 x64 靶机:XXE(下载链接https://www.vulnhub.com/entry/xxe-lab-1,254/) 网络设置:均为桥接模式 0x02 漏洞复现 主机发现&端口扫描 先确定靶机ip地址,这里用arp-scan -l命令探测内网: 发现靶机地址为192.168.43.228,接下来用nmap -sV -p- 192.168.43.228 扫描一下: -sV:探测端口服务版本;-p:指定端口;-v:显示扫描过

weixin_45605352的博客 3283

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

漏洞深度分析|Thinkphp 多语言 RCE

棱镜七彩漏洞深度分析

LJQClqjc的博客 1177

ThinkPHP5 远程代码执行漏洞分析

前言 消息刚刚曝出来的时候还以为自己能半天把漏洞给找出来,果然是太菜太年轻了,23333 漏洞分析 漏洞点 此次漏洞出现在ThinkPHP用于处理HTTP请求的Request类中,其中的method方法用于获取当前的请求类型。 thinkphp/library/think/Request.php var_method为“表单伪装变量”,可在application/config.ph...

repoman的博客 8378

[框架漏洞]Thinkphp系列漏洞【截至2020-07-20】

一、Thinkphp ThinkPHP是一个快速、兼容而且简单的轻量级国产PHP开发框架,因为受到众多开发人员的喜爱,其在市场的应用规模很大,自然也引起了众多安全人员的注意。因此在这里,对相关漏洞进行归纳和总结。 指纹为:X-Powered-By: ThinkPHP 二、安全漏洞 1.ThinkPHP 5.0.23远程代码执行 参考:http://zone.secevery.com/article/1165 介绍:Thinkphp在实现框架中的核心类Request的method方法实现了表单请求

不忘初心,护天下安全! 9683

ThinkPHP文件包含漏洞分析

可见内容为从application\lang路径和think\lang路径加上我们URL中lang参数的内容,但是需要我们的此时lang参数为..\..\info.php但是在file列表的内容为info.php.php因此我们不能加上php的后缀。我们首先跟进range()方法:在App.php中调用range为Lang::range() 因此,range()此时直接return了self::$range此参数在detect中被URL的lang参数控制。

include_voidmain的博客 2199
上一篇: kali工具学习
下一篇: 学习网络协议
耳语吖
博客等级 码龄9年 215粉丝 158原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值