thinkphp6 任意文件创建漏洞复现
01
背景
近日奇安信发布了 ThinkPHP 6.0 “任意”文件创建漏洞安全风险通告,对此,DYSRC第一时间对该漏洞进行了分析,并成功复现该漏洞。
漏洞影响范围:top-think/framework 6.x < 6.0.2
02
定位问题
根据任意文件创建以及结合近期的commit历史,可以推测出 1bbe75019 为此次问题的补丁。可以看到在补丁中限制了sessionid只能由字母和数字组成,由此看来问题更加明显。

03
原理分析
先抛开上面的问题,我们看一下thinkphp是如何存储session的。
系统定义了接口thinkcontractSessionHandlerInterface

SessionHandlerInterface::write方法在本地化会话数据的时候执行,系统会在每次请求结束的时候自动执行。
再看看thinksessiondriverFile类是怎么实现的。

先通过getFileName根据$sessID生成文件名,再writeFile写入文件。
跟进getFileName,直接将传入的$sessID拼接后作为文件名。由于$sessID可控,所以文件名可控。

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


微信号 : DYSRC_
● 扫码关注我们

关注公众号:拾黑(shiheibook)了解更多
[广告]赞助链接:
四季很好,只要有你,文娱排行榜:https://www.yaopaiming.com/
让资讯触达的更精准有趣:https://www.0xu.cn/
关注网络尖刀微信公众号随时掌握互联网精彩
赞助链接
排名
热点
搜索指数
- 1 习近平同马克龙交流互动的经典瞬间 7904456
- 2 公考枪手替考89次敛财千万 7809799
- 3 15岁高中生捐赠南京大屠杀日军罪证 7713031
- 4 2025你的消费习惯“更新”了吗 7617364
- 5 流拍4次的百达翡丽再挂拍 估值4千万 7522597
- 6 一身塑料过冬?聚酯纤维真是塑料瓶吗 7426022
- 7 女子裤子内藏2斤多活虫入境被查 7329949
- 8 李幼斌20年后重现《亮剑》名场面 7236519
- 9 微信表情包戒烟再度翻红 7140515
- 10 中疾控流感防治七问七答 7042488







斗鱼安全应急响应中心
