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 演示
分析到这里,整个漏洞流程基本上已经很清晰了。下面给出本地的演示结果。
php中文网,大量的免费thinkphp入门教程,欢迎在线学习!
以上是thinkphp6 任意文件创建漏洞复现的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

本文讨论了在无服务器体系结构中使用ThinkPHP的关键注意事项,专注于性能优化,无状态设计和安全性。它突出了诸如成本效率和可扩展性之类的收益,但也应对挑战

ThinkPHP的IOC容器提供了高级功能,例如懒惰加载,上下文绑定和方法注入PHP App中有效依赖性管理的方法。Character计数:159

本文讨论了ThinkPHP的内置测试框架,突出了其关键功能(例如单元和集成测试),以及它如何通过早期的错误检测和改进的代码质量来增强应用程序可靠性。

本文讨论了通过参数化查询来防止ThinkPhp中的SQL注入漏洞,避免使用原始SQL,使用ORM,常规更新和正确的错误处理。它还涵盖了确保数据库查询和验证的最佳实践

本文概述了使用ThinkPhp和RabbitMQ构建分布式任务队列系统,重点是安装,配置,任务管理和可扩展性。关键问题包括确保高可用性,避免常见的陷阱,例如不当

本文讨论了ThinkPHP 5和6之间的关键差异,重点是建筑,功能,性能和对遗产升级的适用性。对于传统项目和旧系统,建议使用ThinkPHP 5,而ThinkPHP 6适合新的PR

本文讨论了在ThinkPHP微服务中实施服务发现和负载平衡,重点是设置,最佳实践,集成方法和推荐工具。[159个字符]

本文讨论了处理文件上传和集成在ThinkPhp中的云存储的最佳实践,重点是安全性,效率和可扩展性。
