ThinkPHP5.0.0~5.0.23RCE 漏洞分析及挖掘思路

这篇具有很好参考价值的文章主要介绍了ThinkPHP5.0.0~5.0.23RCE 漏洞分析及挖掘思路。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

本节我将分析thinkphp5.0.x 版本的RCE漏洞,根据漏洞的研究模拟挖掘此漏洞的思路

本次分析框架下载,由于官方已经下架了相关的下载接口,这里我们用三方下载 一份v5.0.22版本的升级中...https://www.codejie.net/5828.html

附赠 thinkphp5.0官方开发手册

架构总览 · ThinkPHP5.0完全开发手册 · 看云ThinkPHP V5.0是一个为API开发而设计的高性能框架——是一个颠覆和重构版本,采用全新的架构思想,引入了很多的PHP新特性,优化了核心,减少了依赖,实现了真正的惰性加载,支持composer,并针对API开发做了大量的优化。ThinkPHP5是一个全新的里程碑版本,包括路由、日志、异常、模型、数据库、模板引擎和验证等模块都已经重构,不适合原有3.2项目的升级,请慎重考虑商业项目升级,但绝对是新项目的首选(无论是WEB还是API开发),而且最好是忘记3.2版本的思维习惯,重新理解TP5。https://www.kancloud.cn/manual/thinkphp5/122950

漏洞复现

这里先上payload 大家可以验证环境是否可行

ThinkPHP5.0.0~5.0.23RCE 漏洞分析及挖掘思路,PHP代码审计,安全,web安全,php

 接下来我们就略过漏洞分析,模拟一下这个漏洞发现的思路

Request类中危险函数

在request类filterValue方法下有一个call_user_func()函数

ThinkPHP5.0.0~5.0.23RCE 漏洞分析及挖掘思路,PHP代码审计,安全,web安全,php

如果传进去的两个参数$filter与$value都是可控的话,则会产生漏洞

函数调用链倒逆分析

接下来分析谁可以调用filtervalue方法

在requestl类中1026行,调用了此方法filtervalue,传入了相关值

ThinkPHP5.0.0~5.0.23RCE 漏洞分析及挖掘思路,PHP代码审计,安全,web安全,php

 这段代码是位于994行input函数内,其中data 没有更改的,filter在1023行有本类的成员filter赋予

ThinkPHP5.0.0~5.0.23RCE 漏洞分析及挖掘思路,PHP代码审计,安全,web安全,php

 那么我们继续分析谁可以调用input函数

仍然在requesr类中661行调用了此函数input,且传入input的data数组参数是本类的param赋予的

ThinkPHP5.0.0~5.0.23RCE 漏洞分析及挖掘思路,PHP代码审计,安全,web安全,php

这段代码位于request类中的param方法中

ThinkPHP5.0.0~5.0.23RCE 漏洞分析及挖掘思路,PHP代码审计,安全,web安全,php 继续分析谁可以调用param函数,现在就不用这考虑传参的问题了,我只需request类的中param成员与filter成员为可控参数即可,且filter为数组包含一个system,param为这个数组包含命令语句为最佳。

让参数变得可控

在app类中exec方法中有调用调用request类的param

ThinkPHP5.0.0~5.0.23RCE 漏洞分析及挖掘思路,PHP代码审计,安全,web安全,php

 需要注意的是这个框架的对象的创建模式是单例模式,也就是说469行instance得到的对象在前提request对象存在的情况下,得到的还是之前的request而非新的对象。

那么我们到底可不可以控制request对象的成员呢?看看名字-request!用户请求!似乎是可控的,不能说全不吧总有一两个属性是为用户准备的, 

现在继续分析函数调用链。要确保dispatch的type为merhod,我们才能正常调用param函数

谁调用了exec 函数,

ThinkPHP5.0.0~5.0.23RCE 漏洞分析及挖掘思路,PHP代码审计,安全,web安全,php

在app类中77行run函数调用了exec函数

ThinkPHP5.0.0~5.0.23RCE 漏洞分析及挖掘思路,PHP代码审计,安全,web安全,php

ThinkPHP5.0.0~5.0.23RCE 漏洞分析及挖掘思路,PHP代码审计,安全,web安全,php

此外还有了两个意外的收获,1是我们找到了request对象2是我们发现了dispatch的赋值

函数调用链正向分析 

由此我们追入routecheck函数,一是寻找让dispatch对象的成员type值为method,二则是继续寻找让request对象的filter成员与param成员成为可控变量的契机。(不要乱 不要乱)

ThinkPHP5.0.0~5.0.23RCE 漏洞分析及挖掘思路,PHP代码审计,安全,web安全,php

看到result不妨大胆的猜测,它最终就是这个函数执行的返回值

在643行,就有了result结果,而且联系了request对象

ThinkPHP5.0.0~5.0.23RCE 漏洞分析及挖掘思路,PHP代码审计,安全,web安全,php

 追进route的check方法

ThinkPHP5.0.0~5.0.23RCE 漏洞分析及挖掘思路,PHP代码审计,安全,web安全,php

在857看到了敏感参数method ,保证type为method跟它有没有关呢!再分析返回值

ThinkPHP5.0.0~5.0.23RCE 漏洞分析及挖掘思路,PHP代码审计,安全,web安全,php

method会与rules有关,rules在87行会与返回值有关。

也没有找到type赋值的地方,我们大胆进入strtolower($request->method());,且这还还是调用request对象的方法,那更要分析了

(在下图 由注释信息当前的请求类型,猜测与type有关)

ThinkPHP5.0.0~5.0.23RCE 漏洞分析及挖掘思路,PHP代码审计,安全,web安全,php

根据逻辑语句(我们都没有传参),它会进入524行

$_POST是什么参数!它一般都是用户输入的post数据,这是我们可控的。代码之后就把取出的值放在了method,看看它做了什么。它居然被调用了,而且传入的参数就是$_post,这是我们控制的,也就是说现在,我们可以任意调用request类的方法,且是参数还是我们可控的,

那这样的话,我用对象的方法去改对象的值岂不是轻轻松松!到request类中好好看看!

非常顺利 __construct就有成员属性赋值的机制。

ThinkPHP5.0.0~5.0.23RCE 漏洞分析及挖掘思路,PHP代码审计,安全,web安全,php

我们可以将request对象的filter成员与param成员赋值了 ,(理论就是这样不过实际上你要调试的更多,因为要考虑到很多细节嘛)

至于type类型,这个我还真没分析出来,不过我们可以尝试调用接口方法,参看type类型这也不失为一种分析方法,像我调用/public/index.php的时候type就为module 调用/public/index.php?s=captcha就为method 这正是我们想要的

如果上述都可行,那我们构造好的参数,就可以RCE了, 谁调用app.run 完全不用管,一定会调用的

ThinkPHP5.0.0~5.0.23RCE 漏洞分析及挖掘思路,PHP代码审计,安全,web安全,php

————————————————————————-----------——————————

总结

现在那么的RCE漏洞,那些大佬是怎么探索出来的,思路是什么,有没有0day大佬交个朋友!...我只能尽力追赶吧....文章来源地址https://www.toymoban.com/news/detail-799825.html

到了这里,关于ThinkPHP5.0.0~5.0.23RCE 漏洞分析及挖掘思路的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • ThinkPHP5.0.23 远程代码执行漏洞

    ThinkPHP 是一款运用极广的 PHP 开发框架。其 5.0.23 以前的版本中,获取 method 的方法中没有正确处理方法名,导致攻击者可以调用 Request 类任意方法并构造利用链,从而导致远程代码执行漏洞。 百度漏洞 获得exp 路径: POST传参 我用的是hackbar,用burpsuite也行。 burp操作方法 抓包

    2024年02月11日
    浏览(46)
  • ThinkPHP5 5.0.23远程代码执行漏洞+webshell工具连接(复现详细过程)

    目录 漏洞介绍 漏洞复现 1.环境搭建 2.漏洞利用 5.0.23以前的版本中,获取method的方法中没有正确处理方法名,导致攻击者可以调用Request类任意方法并构造利用链,从而导致远程代码执行漏洞。 1.环境搭建 使用docker容器搭建漏洞环境,进入漏洞文件所在。 cd vulhub/thinkphp/5.0.2

    2024年02月06日
    浏览(97)
  • RCE 远程代码执行漏洞分析

    Remote Command/Code Execute 远程命令执行/远程代码执行漏洞 这种漏洞通常出现在应用程序或操作系统中,攻击者可以通过利用漏洞注入恶意代码,并在受攻击的系统上执行任意命令。 PHP 代码执行 PHP 代码注入 OS 命令执行 OS 命令注入 Java、Python…… Web 应用程序 远程服务 操作系统

    2024年02月08日
    浏览(40)
  • Spring Rce 漏洞分析CVE-2022-22965

    Spring Framework 是一个开源的轻量级J2EE应用程序开发框架。 3月31日,VMware发布安全公告,修复了Spring Framework中的远程代码执行漏洞(CVE-2022-22965)。在 JDK 9 及以上版本环境下,可以利用此漏洞在未授权的情况下在目标系统上写入恶意程序从而远程执行任意代码。 影响组件:

    2024年02月05日
    浏览(60)
  • CVE-2022-42889 Apache Commons Text RCE漏洞分析

    最近一直在对刚研发出来的自动化Web/API漏洞Fuzz的命令行扫描工具进行维护更新(工具地址:https://github.com/StarCrossPortal/scalpel),目前扫描工具已更新至第三个版本,新增了5条2022年CVE漏洞POC,修复了例如Content- Type和body类型不一致等问题。最新版本测试稳定,满足Web/API的漏洞

    2024年02月13日
    浏览(54)
  • 二进制漏洞分析与挖掘

    本公众号分享的所有技术仅用于学习交流,请勿用于其他非法活动,如果错漏,欢迎留言指正 《0day安全:软件漏洞分析技术第2版》王清电子工业出版社 入门用,但不全,过时了,linux部分没有包含进去 漏洞分析、挖掘和利用,安全领域重要和最具挑战性和对抗性的分支 应

    2024年02月06日
    浏览(45)
  • CVE-2021-22204 GitLab RCE之exiftool代码执行漏洞深入分析(二)

    文章写于2022-01-19,首发在天融信阿尔法实验室 1 前言 2 前置知识 2.1 JPEG文件格式 2.2 Perl模式匹配 3 exiftool源码调试到漏洞分析 3.1 环境搭建 3.2 漏洞简介 3.3 exiftool是如何解析嵌入的0xc51b标签 3.4 exiftool是如何调用parseAnt函数 3.5 parseAnt函数分析 3.6 parseAnt漏洞分析 4 漏洞利用 4.1

    2024年02月14日
    浏览(41)
  • 逻辑漏洞挖掘之XSS漏洞原理分析及实战演练

    2月份的1.2亿条用户地址信息泄露再次给各大公司敲响了警钟,数据安全的重要性愈加凸显,这也更加坚定了我们推行安全测试常态化的决心。随着测试组安全测试常态化的推进,有更多的同事对逻辑漏洞产生了兴趣,本系列文章旨在揭秘逻辑漏洞的范围、原理及预防措施,逐

    2024年02月08日
    浏览(40)
  • 逻辑漏洞挖掘之CSRF漏洞原理分析及实战演练

    2月份的1.2亿条用户地址信息泄露再次给各大公司敲响了警钟,数据安全的重要性愈加凸显,这也更加坚定了我们推行安全测试常态化的决心。随着测试组安全测试常态化的推进,有更多的同事对逻辑漏洞产生了兴趣,本系列文章旨在揭秘逻辑漏洞的范围、原理及预防措施,逐

    2024年02月07日
    浏览(36)
  • ThinkPHP5远程命令执行漏洞

    ThinkPHP是一个快速、兼容而且简单的轻量级国产 PHP开发框架 ,诞生于2006年初,原名FCS,2007年元旦正式更名为ThinkPHP,遵循Apache2开源协议发布,使用面向对象的开发结构和 MVC模式 ,从Struts结构移植过来并做了改进和完善,同时也借鉴了国外很多优秀的框架和模式。 由于th

    2024年02月11日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包