【漏洞复现】thinkphp6.0之文件上传getshell

admin 2023年5月16日07:58:04评论107 views字数 1191阅读3分58秒阅读模式




















漏洞描述





















2020113thinkphp团队在V6.0.2版本更新中提到修复了可能的session安全隐患,该漏洞允许攻击者在目标环境启用session的条件下创建任意文件以及删除任意文件,特定情况下还能getshell


【漏洞复现】thinkphp6.0之文件上传getshell





















漏洞描述





















ThinkPHP6.0.0-6.0.1






















环境搭建





















      

Thinkphp6.0下载地址:

https://codeload.github.com/top-think/framework/zip/v6.0.0


【漏洞复现】thinkphp6.0之文件上传getshell


根据官方提示,复现环境使用php 7.3.4


【漏洞复现】thinkphp6.0之文件上传getshell


注:将composer换成国内镜像,不然创建新项目会卡住,执行:

composer config -g repo.packagist composer https://packagist.phpcomposer.com


tp6源码根目录下创建新项目tp6

composer create-project topthink/think tp6


【漏洞复现】thinkphp6.0之文件上传getshell


进入tp6目录,把6.0.2替换成6.0.0的版本,执行:

composer require topthink/framework:6.0.0


【漏洞复现】thinkphp6.0之文件上传getshell


在项目根目录下,执行

php think run:


【漏洞复现】thinkphp6.0之文件上传getshell


访问 localshost:8000  ,确认环境搭建成功:


【漏洞复现】thinkphp6.0之文件上传getshell























环境搭建





















修改/app/controller/Index.php文件,新增:

session(demo,$_GET[a]);


【漏洞复现】thinkphp6.0之文件上传getshell


修改 /app/middleware.php 文件如下,删除SessionInit的注释:


【漏洞复现】thinkphp6.0之文件上传getshell


访问tp6项目,使用burpsuit抓包拦截,修改请求包:


【漏洞复现】thinkphp6.0之文件上传getshell


注:PHPSESSID的值一定满足32位(包括.php),接着再通过变量a传递任意代码;


Send,返回200,即执行成功


【漏洞复现】thinkphp6.0之文件上传getshell


可以看到文件在runtimesession下生成,php脚本也成功写入:


【漏洞复现】thinkphp6.0之文件上传getshell


php脚本内容如下:


【漏洞复现】thinkphp6.0之文件上传getshell


访问:

localhost:8000/runtime/session/sess_1234567890123456789012345678.php


【漏洞复现】thinkphp6.0之文件上传getshell


看到phpinfo的内容,则证明代码执行成功!!!!可上传一句话木马等进行getshell提权等操作。

【漏洞复现】thinkphp6.0之文件上传getshell






















漏洞修复




















【漏洞复现】thinkphp6.0之文件上传getshell

将thinphp版本更新到官网最新版,即thinkphp6.0.2

或者:

对session id 加一个过滤 使用 ctype_alnum():

$this->id = is_string($id) && strlen($id) === 32ctype_alnum($id) && ? $id :md5(microtime(true) . session_create_id());



【漏洞复现】thinkphp6.0之文件上传getshell

【漏洞复现】thinkphp6.0之文件上传getshell


扫码关注


隐刃安全实验室,专注于渗透测试、源码审计、漏洞分析、
内网攻防、脚本工具开发等安全领域,致力于分享精品原
创文章、漏洞复现、工具靶场、CTF等技术干货。



原文始发于微信公众号(SK安全实验室):【漏洞复现】thinkphp6.0之文件上传getshell

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年5月16日07:58:04
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   【漏洞复现】thinkphp6.0之文件上传getshellhttp://cn-sec.com/archives/1038891.html

发表评论

匿名网友 填写信息