thinkphp6任意文件创建漏洞复现怎么办

介绍

这篇文章主要介绍了thinkphp6任意文件创建漏洞复现怎么办,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获、下面让小编带着大家一起了解一下。

<强> 01背景

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

漏洞影响范围:<代码> top-think/框架6。x & lt;6.0.2

<强> 02定位问题

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

 thinkphp6任意文件创建漏洞复现怎么办

<强> 03原理分析

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

系统定义了接口thinkcontractSessionHandlerInterface

 thinkphp6任意文件创建漏洞复现怎么办

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

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

 thinkphp6任意文件创建漏洞复现怎么办

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

跟进getFileName,直接将传入的美元sessID拼接后作为文件名。由于美元sessID可控,所以文件名可控。

 thinkphp6任意文件创建漏洞复现怎么办

<强> 04演示

分析到这里,整个漏洞流程基本上已经很清晰了。下面给出本地的演示结果。

 thinkphp6任意文件创建漏洞复现怎么办

感谢你能够认真阅读完这篇文章,希望小编分享的“thinkphp6任意文件创建漏洞复现怎么办”这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!

thinkphp6任意文件创建漏洞复现怎么办