thinkphp 6.x 任意文件写入漏洞

2 分钟

前言

一、复现

二、漏洞分析


前言

ThinkPHP v6.0.0~6.0.1
存在任意文件操作漏洞,主要原因是调用了session的进行了文件的写入,导致的漏洞,补丁对传入的$sessionId进行了检测是否只由字母或数字字符组成。


提示:以下是本篇文章正文内容,下面案例可供参考

一、复现



后端index/vuln页自定义一个漏洞的方法:
public function vuln(Request $request, Session $session)
    {
    $param = $request->get('param');
    $session->set('session_key', $param);
    return "success";
    }

访问index/vuln页面,传入param的值并且修改PHPSESSID为32位要写入的文件名:

传入了一句话木马,尝试蚁剑连接

之后可以尝试反弹shell直接获取靶机的控制

二、漏洞分析

thinkphp框架首先调用了handle方法进行session的初始化,通过getname()将$cookieName的值赋给为PHPSESSID![](https://img-
blog.csdnimg.cn/84271ef584ef4ab081e906c0fe103e28.png)

$cookieName的值为定义好的PHPSESSID,最后进入setId()函数对$SessionId进行赋值即PHPSESSID的值。

未对$id做除了32位长度外的任何限制

最后进入save()函数进行session数据的保存,并添加sess_前缀,最后调用wirteFile()函数中的file_put_contents()方法写入内容

$path即为PHPSESSID的内容,$content为参数param的内容,导致了任意文件的写入。

参考文章:[​​​​​​ThinkPHP v6.0.0~6.0.1 任意文件操作漏洞分析 | J0k3r's
Blog](http://j0k3r.top/2020/03/02/ThinkPHP_v6.0.0_ArbitraryFileWriting/#3-%E5%88%86%E6%9E%90
"​​​​​​ThinkPHP v6.0.0~6.0.1 任意文件操作漏洞分析 | J0k3r's Blog")

~  ~  The   End  ~  ~


 赏 
承蒙厚爱,倍感珍贵,我会继续努力哒!
logo图像
tips
(*) 6 + 8 =
快来做第一个评论的人吧~