Skylei
- 关注
一、漏洞简介
ThinkPHP是一款运营极广的PHP开发框架。其版本5中,由于没有正确处理控制器名,导致在网站没有开启强制路由的情况下(即默认情况下)可以执行任意方法,从而导致远程命令执行漏洞。该漏洞出现的原因在于ThinkPHP5框架底层对控制器名过滤不严,从而让攻击者可以通过url调用到ThinkPHP框架内部的敏感函数,进而导致getshell。
二、漏洞影响范围
- ThinkPHP 5.0.5-5.0.22
- ThinkPHP 5.1.0.5-5.1.30
三、环境介绍
操作系统 | IP地址 | 用途 |
Win10 | 192.168.37.132 | 靶机 |
Win7 | 192.168.37.203 | 攻击机 |
四、漏洞环境搭建
1、在靶机中安装PhpStudy,将ThinkPHP5.1.0下载到本地,下载地址:http://www.thinkphp.cn/donate/download/id/1125.html
2、访问目标主机的ThinkPHP 环境,结果如下图所示:
五、漏洞复现过程
1、在攻击机Windows7操作系统中安装ThinkPHP5.x远程命令执行(getshell)测试工具,通过将靶机下的ThinkPHP的访问路径添加到测试工具的URL下进行测试结果如下图所示:
如上图的测试结果可知,目标靶机下的ThinkPHP存在漏洞。
2、通过执行任意命令进行测试发现可以成功对存在的目标主机进行操作,结果如下图所示:
六、安全防范建议
1、通过ThinkPHP官网修补漏洞
ThinkPHP v5.0.x补丁地址:https://github.com/top-think/framework/commit/b797d72352e6b4eb0e11b6bc2a2ef25907b7756f
ThinkPHP v5.1.x补丁地址:
https://github.com/top-think/framework/commit/802f284bec821a608e7543d91126abc5901b2815
2、更新至最新版本。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)