「漏洞分析」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年7月29日
    61
  • 项目思路和选题依据怎么写

    项目思路和选题依据怎么写 在开始项目之前,我们需要确定项目的目标,并制定相应的项目思路和选题依据。这些步骤对于成功完成项目至关重要。在本文中,我们将讨论如何制定项目思路和选题依据,…

    科研百科 2024年11月12日
    1
  • 科研项目署名(科研项目名称用书名号还是引号)

    科研项目名称: 探究宇宙膨胀与星系形成机制的研究 引号: 宇宙的膨胀是当前天文学界最为关注的问题之一。据科学家观测,宇宙正在不断膨胀,并且正在加速膨胀。这一结论与爱因斯坦的相对论理…

    科研百科 2024年4月6日
    67
  • 课题通过验收和结题区别

    课题通过验收和结题的区别 在课题验收和结题之间,有着明显的区别。课题验收是课题完成的一个重要阶段,而结题则是课题完成的最终目标。在这两个阶段之间,我们需要明确一些关键信息。 课题验…

    科研百科 2024年10月30日
    7
  • 科研项目结项申请书怎么填科研项目结项申请书怎么填

    科研项目结项申请书是反映一个科研项目完成情况的重要文档,是申请专利、获得经费支持、申请验收等的重要资料。以下是一份科研项目结项申请书的样例,供您参考。 项目名称:XXX 项目描述:…

    科研百科 2024年9月9日
    31
  • 乡村干部报 – 福建永定:书记领办“小项目” 基层党建“大提升 ”

    2023年7月19日“乡村干部报网”刊登《福建永定:书记领办“小项目” 基层党建“大提升 ”》 文章,聚焦永定区坚持问题导向,部署推行“书记党建项目”机制,将基层党建工作中的重难点…

    科研百科 2023年9月23日
    182
  • 5款安卓好用的时间效率管理APP(安卓好用的时间管理软件)

    你是否还在沉迷手机、无法自拔?是否属于拖延症重度患者和“懒癌”晚期,计划总是无法按时完成,生活无规律一团糟?今天和大家分享5款好用的时间效率管理App,一起来看看吧! 一、最美时光…

    2022年9月1日
    360
  • .net 项目管理系统

    .NET 项目管理系统: 让开发更加高效 随着现代软件开发的日益复杂和规模增大,开发团队需要更高效的工具来管理和维护项目。而.NET 项目管理系统则是一个高效的解决方案,它可以帮助…

    科研百科 2024年12月12日
    0
  • 常州市某小学照明改造项目招标公告(常州市教室照明改造)

    项目概况 项目名称:常州市新北区新桥实验小学照明改造项目采购公告 预算金额: 41.6万元 常州最新发布的部分项目如下 竹林北路与庙湾村西路交叉口周边地块配套道路等工程质量检测 常…

    科研百科 2024年2月16日
    72
  • 内蒙古持续降雪 对畜牧业及交通运输影响大

    DQv   内蒙古锡林郭勒盟寒潮降雪天气过程持续多天,目前已形成座冬雪,草原大部地区被积雪覆盖,道路出现积雪或结冰,对畜牧业及交通运输影响较大。DQv   气象部门提示,相关部门做…

    2022年6月1日
    472