ThinkPHP6中哪些文件操作存在安全风险?
- 内容介绍
- 文章标签
- 相关推荐
本文共计588个文字,预计阅读时间需要3分钟。
以下为图片内容简要图示为一张电子设备屏幕截图,显示了一些文字信息,但具体内容无法解读。请注意,本回答未使用图片,也未涉及数字和超字数限制。
漏洞分析
根据官方github的commit:
https://github.com/topthink/framework/commit/1bbe75019ce6c8e0101a6ef73706217e406439f2
因而推测,可能是在存储session时导致的文件写入。然后,跟踪:vendor/topthink/framework/src/think/session/Store.php:254。
这里调用了一个write函数,跟进一下:vendor/topthink/framework/src/think/session/driver/File.php:210。
调用writeFile函数,跟入:
果然是写入文件的操作。
继续反向看一下文件名是否可控,该文件名来自于最开始的getId()得到的$sessionId的值。既然有getId,就会有setId,看一下函数内容:
当传入的参数$id满足32位的长度时,就将该值设为$this->id。
本文共计588个文字,预计阅读时间需要3分钟。
以下为图片内容简要图示为一张电子设备屏幕截图,显示了一些文字信息,但具体内容无法解读。请注意,本回答未使用图片,也未涉及数字和超字数限制。
漏洞分析
根据官方github的commit:
https://github.com/topthink/framework/commit/1bbe75019ce6c8e0101a6ef73706217e406439f2
因而推测,可能是在存储session时导致的文件写入。然后,跟踪:vendor/topthink/framework/src/think/session/Store.php:254。
这里调用了一个write函数,跟进一下:vendor/topthink/framework/src/think/session/driver/File.php:210。
调用writeFile函数,跟入:
果然是写入文件的操作。
继续反向看一下文件名是否可控,该文件名来自于最开始的getId()得到的$sessionId的值。既然有getId,就会有setId,看一下函数内容:
当传入的参数$id满足32位的长度时,就将该值设为$this->id。

