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 ~ ~
分类标签:Web安全,Web安全
文章标题:thinkphp 6.x 任意文件写入漏洞
文章链接:https://aiwin.fun/index.php/archives/1136/
最后编辑:2024 年 1 月 4 日 17:07 By Aiwin
许可协议: 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)
文章标题:thinkphp 6.x 任意文件写入漏洞
文章链接:https://aiwin.fun/index.php/archives/1136/
最后编辑:2024 年 1 月 4 日 17:07 By Aiwin
许可协议: 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)