thinkphp 6.x 任意文件写入漏洞
2022-11-24 11:10:29
223
{{single.collect_count}}

目录

前言

一、复现

二、漏洞分析


前言

提示:这里可以添加本文要记录的大概内容:

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

$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

回帖
全部回帖({{commentCount}})
{{item.user.nickname}} {{item.user.group_title}} {{item.friend_time}}
{{item.content}}
{{item.comment_content_show ? '取消' : '回复'}} 删除
回帖
{{reply.user.nickname}} {{reply.user.group_title}} {{reply.friend_time}}
{{reply.content}}
{{reply.comment_content_show ? '取消' : '回复'}} 删除
回帖
收起
没有更多啦~
{{commentLoading ? '加载中...' : '查看更多评论'}}