如何复现ThinkPHP6中任意文件创建的漏洞?

2026-04-28 23:372阅读0评论SEO资源
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计394个文字,预计阅读时间需要2分钟。

如何复现ThinkPHP6中任意文件创建的漏洞?

ThinkPHP 6.0 新版发布,任意文件创建漏洞安全风险通告,DYSRC 首次对该漏洞进行分析,并成功复现。

01 背景

近日奇安信发布了 ThinkPHP 6.0 “任意”文件创建漏洞安全风险通告,对此,DYSRC第一时间对该漏洞进行了分析,并成功复现该漏洞。

漏洞影响范围:top-think/framework 6.x < 6.0.2

02 定位问题

根据任意文件创建以及结合近期的commit历史,可以推测出 1bbe75019 为此次问题的补丁。可以看到在补丁中限制了sessionid只能由字母和数字组成,由此看来问题更加明显。

如何复现ThinkPHP6中任意文件创建的漏洞?

03 原理分析

先抛开上面的问题,我们看一下thinkphp是如何存储session的。

系统定义了接口thinkcontractSessionHandlerInterface

SessionHandlerInterface::write方法在本地化会话数据的时候执行,系统会在每次请求结束的时候自动执行。

再看看thinksessiondriverFile类是怎么实现的。

先通过getFileName根据$sessID生成文件名,再writeFile写入文件。

阅读全文

本文共计394个文字,预计阅读时间需要2分钟。

如何复现ThinkPHP6中任意文件创建的漏洞?

ThinkPHP 6.0 新版发布,任意文件创建漏洞安全风险通告,DYSRC 首次对该漏洞进行分析,并成功复现。

01 背景

近日奇安信发布了 ThinkPHP 6.0 “任意”文件创建漏洞安全风险通告,对此,DYSRC第一时间对该漏洞进行了分析,并成功复现该漏洞。

漏洞影响范围:top-think/framework 6.x < 6.0.2

02 定位问题

根据任意文件创建以及结合近期的commit历史,可以推测出 1bbe75019 为此次问题的补丁。可以看到在补丁中限制了sessionid只能由字母和数字组成,由此看来问题更加明显。

如何复现ThinkPHP6中任意文件创建的漏洞?

03 原理分析

先抛开上面的问题,我们看一下thinkphp是如何存储session的。

系统定义了接口thinkcontractSessionHandlerInterface

SessionHandlerInterface::write方法在本地化会话数据的时候执行,系统会在每次请求结束的时候自动执行。

再看看thinksessiondriverFile类是怎么实现的。

先通过getFileName根据$sessID生成文件名,再writeFile写入文件。

阅读全文