「漏洞分析」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

相关推荐

  • 市厅级科研项目 市厅级科研项目是什么级别

    市厅级科研项目是什么级别? 科研项目的级别通常由科研项目的资金规模和科研项目的重要性来确定。市厅级科研项目通常是由当地政府或机构提供的资金支持,用于支持当地的发展和进步。 市厅级科…

    科研百科 2024年3月30日
    162
  • 研究所和科研项目之间的关系研究所和科研项目之间的关系

    研究所和科研项目之间的关系是学术界和工业界都非常关注的话题。在科学研究中,研究所和科研项目之间的紧密合作是非常重要的,因为两者都需要互相支持,以确保研究成果的质量和可靠性。本文将探…

    科研百科 2024年6月13日
    145
  • 南宁师范大学博士点审批结果

    南宁师范大学博士点审批结果 近年来,南宁师范大学在高等教育领域取得了显著成绩。为了更好地推动学校的发展和提高学术水平,学校积极开展博士点建设,并经过多方努力,终于取得了博士点审批结…

    科研百科 2024年9月30日
    117
  • 企业党组织条例讲党课

    企业党组织条例讲党课 在企业中,党组织是领导工作的核心,是落实党的路线方针政策的重要力量。党的组织建设是企业发展的重要保障,因此,如何加强企业党组织建设,落实党的路线方针政策,是我…

    科研百科 2024年11月6日
    0
  • 棚上发电、棚下种植!大唐万宁和山光伏电站“农光互补”一地两用

    万宁市和乐镇和山根镇交界处的大唐万宁和山光伏电站 电站供图 新海南客户端、南海网7月22日消息(记者 张野 通讯员 鲁洪伟)一排排4米多高的光伏板整齐划一地排列在田地间,在阳光照射…

    科研百科 2024年4月23日
    129
  • 安防项目管理师

    安防项目管理师: 确保安防项目成功实施的关键角色 安防项目对于企业或组织的重要性不言而喻。保护员工、客户、财产和数据的安全,是任何组织都必须优先考虑的问题。然而,在实施安防项目时,…

    科研百科 2024年7月24日
    44
  • 开源 项目管理 系统

    开源项目管理系统:实现团队协作更高效 随着开源软件的兴起,越来越多的人开始使用开源项目管理系统来管理和协作他们的项目。这些系统可以帮助团队成员更好地组织任务,跟踪进度,共享文件和信…

    科研百科 2024年12月12日
    0
  • 档案管理系统项目评估

    档案管理系统项目评估 随着数字化时代的到来,档案管理系统已经成为许多组织中必不可少的一部分。档案管理系统可以帮助组织管理其文件、记录、数据等,提高组织的信息安全性和效率。本文将对档…

    科研百科 2025年1月7日
    2
  • 干什么就评什么,讲解员也能“高级职称”了(讲解员怎么评职称)

    做了10年讲解员,讲解词都可以放在桌上摞起“高塔”了,自己付出的智慧究竟被认可吗?北京自然博物馆讲解员高源曾经这样怀疑过自己的付出。 望着手中鲜红的副高级职称证书,他知道这是社会给…

    科研百科 2024年4月15日
    76
  • 金融低代码开发平台建设要点与方法论(低代码平台 融资)

    近日,EAWorld汇聚专家智慧重磅推出《重塑》直播栏目,首期即聚焦金融领域数字化转型及建设低代码开发平台的演进历程,介绍了金融低代码开发平台建设要点与方法论。 访谈问题概览: 1…

    科研百科 2024年5月14日
    45