【Pikachu】任意文件上传实战

将过去和羁绊全部丢弃,不要吝惜那为了梦想流下的泪水。

1.不安全的文件上传漏洞概述

不安全的文件上传漏洞概述

文件上传功能在web应用系统很常见,比如很多网站注册的时候需要上传头像、上传附件等等。当用户点击上传按钮后,后台会对上传的文件进行判断 比如是否是指定的类型、后缀名、大小等等,然后将其按照设计的格式进行重命名后存储在指定的目录。 如果说后台对上传的文件没有进行任何的安全判断或者判断条件不够严谨,则攻击着可能会上传一些恶意的文件,比如一句话木马,从而导致后台服务器被webshell。

所以,在设计文件上传功能时,一定要对传进来的文件进行严格的安全考虑。比如:

–验证文件类型、后缀名、大小;

–验证文件的上传方式;

–对文件进行一定复杂的重命名;

–不要暴露文件上传后的路径;

–等等…

2.client check

查看源码

function checkFileExt(filename){var flag = false; //状态var arr = ["jpg","png","gif"];//取出上传文件的扩展名var index = filename.lastIndexOf(".");var ext = filename.substr(index+1);//比较for(var i=0;i<arr.length;i++){if(ext == arr[i]){flag = true; //一旦找到合适的,立即退出循环break;}}//条件判断if(!flag){alert("上传的文件不符合要求,请重新选择!");location.reload(true);}}

分析,前端限制,可以通过禁用javascript绕过

上传php文件,显示不允许

在这里插入图片描述

使用火狐浏览器,直接禁用javascript,到这个界面,点击取消

在这里插入图片描述

使用谷歌浏览器,同样禁用javascript,

在这里插入图片描述

点击上传,找到路径并访问

在这里插入图片描述

http://x.x.x.x/vul/unsafeupload/uploads/phpinfo.php

在这里插入图片描述

3.MIME type

选择非图片的文件时, 不会拦截; 点击上传时, 服务器端检测到非图片格式, 就被拦截

在这里插入图片描述

MIME (Multipurpose Internet Mail Extensions)多用途互联网邮件扩展类型

MIME 是设定某种扩展名的文件用一种应用程序来打开的方式类型,当该扩展名文件被访问时,浏览器会自动使用指定应用程序来打开。多用于指定一些客户端自定义的文件名,以及一些媒体文件打开方式。

每个MIME类型由两部分组成,前面是数据的大类别,例如声音audio、图象image等,后面定义具体的种类。常见的 MIME 类型,比如:

超文本标记语言:.html,.html text.html

普通文件:.txt text/plain

RTF文件:.rtf application/rtf

GIF图形:.gif image/gif

JPEG图形:.jpeg,.jpg image/jpeg

查看源码, 定义了一个数组 并且调用了uploadfile函数

在这里插入图片描述

上传1.jpg ,抓包查看type类型

在这里插入图片描述

上传1.php ,抓包查看type类型

在这里插入图片描述

修改phpinfo.php的type类型为image/jpeg

在这里插入图片描述

上传成功

在这里插入图片描述

在这里插入图片描述

4.getimagesize

getimagesize函数更是限制了上传文件的文件头必须为图像类型

修改文件的type类型不可用

第一种方法,可以通过添加jpg图片的格式头到脚本文件里进行绕过

首先在文本文档里写入<?php phpinfo();?>文件后缀修改为.jpg

在这里插入图片描述

上传文件,抓包,在脚本文件前加上GIF89,放包

在这里插入图片描述

成功上传

在这里插入图片描述

第二种方法,在图片文件内容后添加<?php phpinfo();?>

命令行输入copy 1.png/b + phpinfo.php/a 2.png

在这里插入图片描述

点击上传

在这里插入图片描述

文件上传成功

在这里插入图片描述

服务器会将木马文件解析成图片文件,因此向其发送执行该文件的请求时,服务器只会返回这个“图片”文件,并不会执行相应命令。

可以利用之前的文件包含漏洞,将图片格式的文件当做php文件来解析执行:

http://x.x.x.x/vul/fileinclude/fi_local.php?filename=../../unsafeupload/uploads/2020/10/20/5936185f8e5245666f2586884965.jpg&submit=%E6%8F%90%E4%BA%A4%E6%9F%A5%E8%AF%A2

在这里插入图片描述

http://x.x.x.x/vul/fileinclude/fi_local.php?filename=../../unsafeupload/uploads/2020/10/20/6950415f8e7cda64b46247514668.jpg&submit=提交查询

在这里插入图片描述

文笔生疏,措辞浅薄,望各位大佬不吝赐教,万分感谢。

免责声明:由于传播或利用此文所提供的信息、技术或方法而造成的任何直接或间接的后果及损失,均由使用者本人负责, 文章作者不为此承担任何责任。

转载声明:儒道易行 拥有对此文章的修改和解释权,如欲转载或传播此文章,必须保证此文章的完整性,包括版权声明等全部内容。未经作者允许,不得任意修改或者增减此文章的内容,不得以任何方式将其用于商业目的。

CSDN: 
https://rdyx0.blog.csdn.net/公众号:儒道易行
https://mp.weixin.qq.com/mp/appmsgalbum?__biz=Mzg5NTU2NjA1Mw==&action=getalbum&album_id=1696286248027357190&scene=173&from_msgid=2247485408&from_itemidx=1&count=3&nolastread=1#wechat_redirect博客:
https://rdyx0.github.io/先知社区:
https://xz.aliyun.com/u/37846SecIN:
https://www.sec-in.com/author/3097FreeBuf:
https://www.freebuf.com/author/%E5%9B%BD%E6%9C%8D%E6%9C%80%E5%BC%BA%E6%B8%97%E9%80%8F%E6%8E%8C%E6%8E%A7%E8%80%85

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

C++【STL容器系列(二)】vector的模拟实现

文章目录 1. vector的结构2. vector的默认成员函数2.1构造函数2.1.1 默认构造2.1.2 迭代器构造2.1.3 用n个val初始化构造 2.2 拷贝构造2.3 析构函数2.4 operator 3. vector iterator函数3.1 begin 和 cbegin函数3.2 end() 和 cend()函数 4. vector的小函数4.1 size函数4.2 capa…

边缘检测的100种方法

文章目录 什么是边缘检测 ?一、边缘检测算子&#xff1a;Sobel算子、Scharr算子、Laplacian算子、Canny算子二、梯度计算 顶帽 黑帽 拉普拉斯金字塔三、相位一致性&#xff08;Phase Congruency&#xff0c;PC&#xff09;3.1、底层代码&#xff08;2D&#xff09;3.2、ski…

【Linux探索学习】第十二弹——初识进程:进程的定义、描述和一些简单的相关操作

Linux学习笔记&#xff1a; https://blog.csdn.net/2301_80220607/category_12805278.html?spm1001.2014.3001.5482 前言&#xff1a; 在前面经过那么多篇的铺垫后&#xff0c;今天我们正式进入Linux学习的第一个重难点——进程&#xff0c;理解进程对于我们学习操作系统的其…

Java项目实战II基于微信小程序的订餐系统(开发文档+数据库+源码)

目录 一、前言 二、技术介绍 三、系统实现 四、文档参考 五、核心代码 六、源码获取 全栈码农以及毕业设计实战开发&#xff0c;CSDN平台Java领域新星创作者&#xff0c;专注于大学生项目实战开发、讲解和毕业答疑辅导 一、前言 随着移动互联网技术的飞速发展&#xff0…

触想染织厂MES产线终端工位机,打造数字化高效车间

一、行业发展背景 在纺织细分领域中&#xff0c;印染行业一直是整个产业链的效率短板&#xff0c;因其涉及染色、定型及后整理加工等多个复杂工艺、上百个参数变量&#xff0c;质量波动较大&#xff0c;依赖个人经验和手工操作&#xff0c;常常陷入高成本、低效率发展困境。 △…

CSS查缺补漏 two

11.6~11.11查缺补漏 一、熟记1.结构伪类选择器2.伪元素选择器3.盒子模型4.居中对齐&#xff08;重中之重&#xff01;&#xff01;&#xff01;&#xff09;5.清除默认样式6.元素溢出&#xff08;滚动条&#xff09;7.行内元素 – 内外边距问题8.圆角9 .盒子阴影&#xff08;拓…

Taro React-Native IOS 打包发布

http网络请求不到 配置 fix react-native facebook::flipper::SocketCertificateProvider‘ (aka ‘int‘) is not a function or func_rn运行debug提示flipper-CSDN博客 Xcode 15&#xff08;iOS17&#xff09;编译适配报错_no template named function in namespace std-CS…

本地搭建你的私有网盘:在Ubuntu上使用Portainer CE安装NextCloud

文章目录 前言1. 在PortainerCE中创建NextCloud容器2. 公网远程访问本地NextCloud容器2.1 内网穿透工具安装3.2 创建远程连接公网地址 3. 固定NextCloud私有云盘公网地址 前言 本篇文章介绍如何在本地使用Portainer CE可视化图形界面创建NextCloud私有网盘容器&#xff0c;并结…

超好用shell脚本NuShell mac安装

利用管道控制任意系统 Nu 可以在 Linux、macOS 和 Windows 上运行。一次学习&#xff0c;处处可用。 一切皆数据 Nu 管道使用结构化数据&#xff0c;你可以用同样的方式安全地选择&#xff0c;过滤和排序。停止解析字符串&#xff0c;开始解决问题。 强大的插件系统 具备强…

游戏引擎中LOD渲染技术

一.LOD(Level Of Detail) 为了降低GPU渲染压力,根据摄像机距离模型距离将面数较高的模型替换为面数较低的模型. LOD LOD0(distance<10) LOD1(distance<20) LOD2(distance<30) 故通常引擎中MetaMesh是由一个或多个LOD模型构成. MetaMesh mesh mesh.lod1 mesh.lod…

web前端动画按钮(附源代码)

效果图 源代码 HTML部分 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title> …

昇思大模型平台打卡体验活动:项目5基于MindSpore实现Transformer机器翻译

首先仍然是先登录大模型体验平台 https://xihe.mindspore.cn/my/clouddev 启动&#xff01;&#xff01; 进入环境之后&#xff0c;即可开始运行notebook&#xff0c; Transformer 模型与实现 Transformer 是一种由 Vaswani 等人在 2017 年提出的神经网络结构&#xff08;论文…

‌关于人工智能(AI)的发展现状和未来趋势的详细分析!

成长路上不孤单&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a; 【14后&#x1f60a;///C爱好者&#x1f60a;///持续分享所学&#x1f60a;///如有需要欢迎收藏转发///&#x1f60a;】 今日将继续分享关于‌人工智能&#xff08;AI&#x…

提高排名的有效策略与实践指南

内容概要 在现代数字化时代&#xff0c;提高排名不仅是企业营销的关键&#xff0c;更是提升品牌知名度和客户粘性的有效途径。为了更好地理解这一主题&#xff0c;我们从多个方面进行详细分析。首先&#xff0c;明确"排名"的基本概念是非常重要的&#xff0c;它通常…

【Linux】动静态库

目录 1、制作静态库 2、站在使用者角度使用库 3、制作动态库 4、动态库是怎么被加载的 1、制作静态库 之前对动静态库的认识&#xff1a; libXXX.a-----静态库 静态链接&#xff1a;将库当中的代码拷贝到最终的可执行程序里&#xff0c;也就是&#xff0c;自己的源代码会变成…

AI绘画到底怎么画,才能出好图!一文详解

前言 在当今数字化的时代&#xff0c;AI 绘画以其强大的创造力和便捷性&#xff0c;成为了众多艺术爱好者和创作者的新宠。无论是专业画家想要拓展创作思路&#xff0c;还是业余爱好者渴望展现自己的创意&#xff0c;AI 绘画都提供了无限的可能。那么&#xff0c;究竟如何才能…

【React】深入理解 JSX语法

&#x1f308;个人主页: 鑫宝Code &#x1f525;热门专栏: 闲话杂谈&#xff5c; 炫酷HTML | JavaScript基础 ​&#x1f4ab;个人格言: "如无必要&#xff0c;勿增实体" 文章目录 深入理解 JSX语法1. JSX 简介2. JSX 的基本语法2.1 基本结构2.2 与普通 JavaScr…

Kafka-Eagle 监控 搭建

Kafka-Eagle 框架可以监控 Kafka 集群的整体运行情况&#xff0c;在生产环境中经常使用。 在生产过程中&#xff0c;想创建topic、查看所有topic、想查看某个topic 想查看分区等&#xff0c;都需要写命令&#xff0c;能不能有一个图形化的界面&#xff0c;让我们操作呢&#x…

5位机械工程师如何共享一台工作站的算力?

在现代化的工程领域中&#xff0c;算力已成为推动创新与技术进步的关键因素之一。对于机械工程师而言&#xff0c;强大的计算资源意味着能够更快地进行复杂设计、模拟分析以及优化工作&#xff0c;从而明显提升工作效率与项目质量。然而&#xff0c;资源总是有限的&#xff0c;…

显示器接口种类 | 附图片

显示器接口类型主要包括VGA、DVI、HDMI、DP和USB Type-C等。 VGA、DVI、HDMI、DP和USB Type-C 1. 观察 VGA接口:15针 DP接口&#xff1a;在DP接口旁&#xff0c;都有一个“D”型的标志。 电脑主机&#xff1a;DP(D) 显示器&#xff1a;VGA(15针) Ref https://cloud.tenc…