「漏洞分析」ThinkPHP5任意代码执行分析全记录(thinkphp5源码分析)

一 、前言

ThinkPHP是为了简化企业级应用开发敏捷WEB应用开发而诞生的轻量级PHP开发框架,具有免费开源、快速、简单且面向对象等特点。
在ThinkPHP的5.*版本中存在安全隐患,由于ThinkPHP5框架对控制器名没有进行足够的安全检测,导致在没有开启强制路由的情况下,可能出现getshell漏洞。受影响的版本包括5.0和5.1。

本期安仔课堂,ISEC实验室的黄老师将为大家介绍ThinkPHP5的相关知识点,欢迎感兴趣的朋友一起交流学习。

二、漏洞分析

该漏洞源于ThinkPHP5框架底层对控制器名过滤不严,允许黑客通过url调用Thinkphp框架内部的敏感函数,出现getshell漏洞。具体代码实现如下:

「漏洞分析」ThinkPHP5任意代码执行分析全记录(thinkphp5源码分析)

图1

2.1

thinkphp/library/think/App.php

首先看到Routecheck代码,由于没有在配置文件上定义任何路由,所以默认按照图一的方式进行解析调度。如果开启强制路由模式,会直接抛出错误,这时通过Route::import命令加载路由,继续跟进路由。

「漏洞分析」ThinkPHP5任意代码执行分析全记录(thinkphp5源码分析)

图2

2.2

thinkphp/library/think/Route.php

可以看到tp5在解析URL的时候只是将URL按分割符分割,并没有进行安全检测。继续分析:

「漏洞分析」ThinkPHP5任意代码执行分析全记录(thinkphp5源码分析)

图3

其中,渗透测试人员最为关心的是Exchange对外提供的访问接口,以及使用的加密验证类型

2.3

thinkphp/library/think/App.php

可以看到:由于程序并未对控制器进行有效的安全过滤和检查,因此测试人员可以通过引用“”来调用任意方法。

「漏洞分析」ThinkPHP5任意代码执行分析全记录(thinkphp5源码分析)

图4

2.4

跟进到module方法

「漏洞分析」ThinkPHP5任意代码执行分析全记录(thinkphp5源码分析)

图5

在测试时注意使用一个已存在的module,否则会抛出异常,无法继续运行。此处直接从之前的解析结果中获取控制器名称以及操作名,无任何安全检查。

「漏洞分析」ThinkPHP5任意代码执行分析全记录(thinkphp5源码分析)

图6

2.5

跟进到实例化Loader 控制器方法

「漏洞分析」ThinkPHP5任意代码执行分析全记录(thinkphp5源码分析)

图7

可以看到如果控制器名中有“”,就直接返回。回到“thinkphp/library/think/App.php”的module方法,正常情况下应该获取到对应控制器类的实例化对象,而我们现在得到了一个“thinkApp”的实例化对象,通过url调用其任意的public方法,同时解析url中的额外参数,当作方法的参数传入。我们可以调用invokeFunction这个方法,构造payload为:

「漏洞分析」ThinkPHP5任意代码执行分析全记录(thinkphp5源码分析)

图8

三、漏洞利用

所有基于tp5.0框架建设的网站都受此漏洞的影响。

3.1

测试该漏洞点是否被修复

「漏洞分析」ThinkPHP5任意代码执行分析全记录(thinkphp5源码分析)

图9

网址后面直接拼接以上代码,执行之后发现出现phpinfo页面,说明漏洞存在。

「漏洞分析」ThinkPHP5任意代码执行分析全记录(thinkphp5源码分析)

图10

3.2

在public目录下创建insfo.php

「漏洞分析」ThinkPHP5任意代码执行分析全记录(thinkphp5源码分析)

图11

修改漏洞利用代码,直接在public目录下创建一个名为insfo.php的一句话木马。

「漏洞分析」ThinkPHP5任意代码执行分析全记录(thinkphp5源码分析)

图12

3.3

删除insfo.php文件

「漏洞分析」ThinkPHP5任意代码执行分析全记录(thinkphp5源码分析)

图13

四、解决方案

直接添加补丁,升级ThinkPHP版本,开启强制路由,在ThinkPHP5.0版本的thinkphp/library/think/App.php , Module类的获取控制名处添加如下代码,正则过滤:

「漏洞分析」ThinkPHP5任意代码执行分析全记录(thinkphp5源码分析)

图14

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

(0)
上一篇 2023年12月28日 上午10:52
下一篇 2023年12月28日 上午11:04

相关推荐

  • 美图秀秀iOS端9.8.60版本发布:新增AI文生图功能(美图秀秀最新版本ai功能在哪里)

    IT之家 4 月 20 日消息,据IT之家网友反馈,美图秀秀今日向 iOS 端用户推送了 9.8.60 版本,新增多种 AI 玩法以及美图配方等功能,具体更新内容如下: 1、AI …

    科研百科 2023年5月12日
    253
  • 设计类项目管理系统

    设计类项目管理系统 随着现代软件开发的不断推进,设计类项目管理系统已经成为了软件开发中不可或缺的一部分。一个好的设计类项目管理系统可以提高开发效率,降低开发成本,同时也能够提升项目…

    科研百科 2024年8月15日
    49
  • 国内前十的HIS厂商(国内前十的his厂商有哪些)

    1、卫宁健康 成立于 1994 年,是国内第一家专注于医疗健康信息化的上市公司,致力于 提供医疗健康卫生信息化解决方案。公司的健康业务覆盖智慧医院、区域卫生、基层 卫生、公共卫生、…

    科研百科 2024年4月26日
    338
  • 软件项目管理项目经理

    软件项目管理项目经理:如何确保项目成功交付 软件项目管理在现代软件开发中扮演着至关重要的角色。作为项目经理,我们需要确保项目按时、按质量、按预算完成,并满足客户需求。本文将介绍一些…

    科研百科 2024年5月31日
    79
  • 上海二十冶项目管理系统

    上海二十冶项目管理系统 随着现代建筑行业的快速发展,项目管理系统已经成为企业发展中不可或缺的一部分。上海二十冶项目管理系统是一套功能强大、安全可靠的项目管理软件,可以帮助企业高效地…

    科研百科 2024年12月30日
    0
  • 医学本科参与过的科研项目

    作为医学本科学生,参与科研项目是我们学习和实践的重要途径。本文将介绍一个我参与过的科研项目,旨在探讨如何通过基因编辑技术治疗遗传性疾病的研究。 在这项研究中,我作为研究人员之一,负…

    科研百科 2024年11月6日
    1
  • 香港科大百万奖金国际创业大赛:历经13载,培育下一个“独角兽”

    南方财经全媒体记者陈梦璇 马嘉璐 广州报道 12月15日,由香港科技大学主办的“香港科大-越秀集团百万奖金国际创业大赛2022&2023年度总决赛”(以下简称:香港科大百万…

    科研百科 2024年4月20日
    61
  • 项目管理 概念

    项目管理是一种组织、规划和控制特定项目的方法,涵盖了一系列的步骤和工具,以确保项目在预算、时间、质量和范围方面按时完成,并达到所需的成果和目标。 项目管理起源于20世纪早期,当时项…

    科研百科 2024年7月28日
    48
  • 项目管理进度软件

    项目管理进度软件 随着信息技术的不断发展,项目管理已经成为企业运营中不可或缺的一部分。在过去,传统的项目管理方法已经无法满足现代企业的需求,因此,项目管理进度软件应运而生。 项目管…

    科研百科 2024年9月4日
    33
  • “三位一体”抓实“两新”组织党建

    黑龙江省黑河市直机关工委深入贯彻落实党的二十大精神,认真谋划部署,围绕搭建平台、共建引领、服务保障,“三位一体”抓实落靠新兴领域党建攻坚。 围绕搭建平台,整合各领域党建资源。结合全…

    科研百科 2024年2月2日
    92