文件上传详细版

文件上传造成因素:

文件路径过滤不严格,可能通过遍历目录来获得文件,也可能通过文件上传对重要文件案进行覆盖,还可能对文件拓展名和文件类型过滤不严格,可以上传任意文件到web公开目录上,进而远程控制服务器

绕过

这篇文章判断漏洞类型的图片很言简意赅一文解读文件上传漏洞 - 2xixi3 - 博客园

前端-js绕过

原理:

我理解的前端一般就是过滤文件拓展名,如果不符合过滤条件就会拦截在前端(上传后F12网络就看不到数据流),所以目的是先过去再解析

这是上传png之类的有文件流

这是其他类型文件根本上传不到后端

参考【文件上传绕过】——前端检测_前端js验证漏洞_实验四:文件上传漏洞【实验名称】文件上传漏洞【实验目的】绕过javascript验证检-CSDN博客

方法:

(1)直接网页禁用js

(2)bp抓包放包,把jpg图片码上传抓包改为.php

常见的也就这两种方法

后端

检查后缀

黑名单

可能会限制.php/.asp,随便上传文后缀件名例如.stp,可以就是黑名单

(1)上传可解析特殊后缀

(2)上传.htaccess文件,其实就是改变目录配置,在目标目录上上传一个命令文件作用于该目录及其所有子目录,【前提看web站点架构为:php+apache , 保证文件上传到本地 , apache开对.htaccess支持;(bp抓包看请求头来判断)】

<FilesMatch "evil.gif">
SetHandler application/x-httpd-php   #在当前目录下,如果匹配到evil.gif文件,则被解析成PHP代码执行
AddHandler php5-script .gif          #在当前目录下,如果匹配到evil.gif文件,则被解析成PHP代码执行
</FilesMatch>

(3) 后缀大小写绕过

(4)点绕过:随便输后缀名不行就是白名单1.php.(Windows 系统下,文件后缀名最后一个点会被自动去除,Linux 系统下不会)

(5)空格绕过(Windows系统下,对于文件名中空格【demo.php(空格)】会被作为空处理,程序中的检测代码却不能自动删除空格,从而绕过黑名单。)

(6)::$DATA:   a.php::$DATA(在windows下,无法直接测试::$DATA,因为windows不允许后缀名中存在特殊字符;因为windows会将 a.php::$DATA认为NTFS文件的一个数据流而不是文件,因此会被当成非法文件名)

(7)配合解析漏洞

Apache:

一般解析:后缀名无法识别就像上解析(从右到左)eg:a.php.a.s会解析成a.php

换行解析:在2.4.0~2.4.29版本里有一个解析漏洞,如果在文件名后面加一个换行符x0A服务器依旧会把文件当成php解析,但是可以绕过黑名单(注意:不能是\x0D\x0A,只能是一个\x0A)

IIS:

上传文件抓包在server Microsoft里的版本是IIS/6.0,三个方法,一个创建.asp目录,在目录上上传1.php木马文件,会当作asp解析;一个图片第三个,直接改名;另一个是.asp;.jpg会被当作.asp解析(省略分号后面的部分)  至于怎末创建.asp目录,bp抓包上传请求

    POST /upload.php HTTP/1.1...Content-Disposition: form-data; name="file"; filename="shell.jpg"Content-Disposition: form-data; name="path"; filename="image.asp"  // 尝试创建目录

至于怎末上传文件到指定目录

Content-Disposition: form-data; name="path"; filename="image.asp"  // 指定目录

也可以用穿越目录(没过滤../的情况下)

Content-Disposition: form-data; name="file"; filename="../image.asp/shell.jpg"

IIS/7.0

制作图片码,打开图片,访问图片路径并且在后加上 /.php

Nginx:

解析漏洞:Server是nginx/1.17.8上传 图片码,在访问路径下加上.php

换行解析:nginx因为00截断错误地解析了请求的 URI ,将获取到用户请求的文件名解析为对应的脚本程序,导致出现权限绕过、代码执行等连带影响(版本Nginx 0.8.41 ~ 1.4.3 / 1.5.0 ~ 1.5.7)上传图片码抓包,服务器通常有以下配置

location ~ \.php$ {fastcgi_pass 127.0.0.1:9000;include fastcgi_params;
}

参考资料:“文件上传”配合中间件“解析漏洞”_中间件解析漏洞配合文件上传-CSDN博客

 白名单

反之白名单

(1)MIME绕过(HTTP请求头中的Content-Type属性绕过,eg:Content-Type: text/html

(1)(2)(3)补充知识看:文件上传漏洞总结(含原因+防御措施)+白名单+黑名单+内容、头+解析漏洞/修补方案_00截断修复方案-CSDN博客

(2)%00截断:%00被服务器解码为0x00发挥了截断作用

(3)0x00截断:利用ASCII码为0这个特殊字符,让系统认为字符串已经结束

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

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

相关文章

华为网路设备学习-19 IGP路由专题-路由策略

一、 二、 注意&#xff1a; 当该节点匹配模式为permit下时&#xff0c;参考if else 当该节点匹配模式为deny下时&#xff1a; 1、该节点中的apply子语句不会执行。 2、如果满足所有判断&#xff08;if-match&#xff09;条件时&#xff0c;拒绝该节点并跳出&#xff08;即不…

智能指针之设计模式4

前面的文章介绍了使用工厂模式来封装智能指针对象的创建过程&#xff0c;下面介绍一下工厂类 enable_shared_from_this的实现方案。 4、模板方法模式 在前面的文章分析过&#xff0c;enable_shared_from_this<T>类是一个工厂基类&#xff0c;提供的工厂方法是shared_f…

【Nova UI】十、打造组件库第一个组件-图标组件(下):从.svg 到 SVG Vue 组件的高效蜕变✨

序言 在组件库开发的精彩旅程中&#x1f680;&#xff0c;我们已经成功打造并完善了图标组件体系&#xff0c;赋予其强大的功能和丰富的表现力&#x1f389;。然而&#xff0c;随着业务版图的不断扩张&#x1f310;&#xff0c;手动逐个编写 SVG Vue 组件的传统方式&#xff0…

Golang | 倒排索引

文章目录 倒排索引的设计倒排索引v0版实现 倒排索引的设计 通用搜索引擎 v.s. 垂直搜索引擎&#xff1a; 通用搜索引擎&#xff1a;什么都可以搜索&#xff0c;更加智能化垂直搜索引擎&#xff1a;只能搜自家数据库里面的内容&#xff0c;一般都带着搜索条件&#xff0c;搜索一…

Windows 10 上运行 Ollama 时遇到 llama runner process has terminated: exit status 2

在 Windows 10 上运行 Ollama 时遇到 llama runner process has terminated: exit status 2 错误&#xff0c;可能是由多种原因引起的。以下是逐步解决方案&#xff1a; 1. 检查 Ollama 服务状态 按 Win R 输入 services.msc&#xff0c;找到 Ollama 服务&#xff0c;确保其状…

PCI 总线学习笔记(五)

PCI 总线学习系列&#xff0c;参考自 技术大牛博客&#xff1a; PCIe 扫盲系列博文连载目录篇 书籍&#xff1a;王齐老师的《PCI Express 体系结构导读》 下面的文章中加入了自己的一些理解和实际使用中遇到的一些场景&#xff0c;供日后查询和回忆使用 PCI 总线定义了两类配置…

Spring Cloud Alibaba VS Spring Cloud

​​Spring Cloud Alibaba 与 Spring Cloud 组件对比​ ​​服务发现与注册中心​ 功能​​​Spring Cloud​​​Spring Cloud Alibaba​对比说明​​核心组件​EurekaNacosNacos 支持动态配置管理、健康检查更灵活&#xff0c;且提供 DNS 服务发现能力。​​​​健康检查​​…

Java—— 常见API介绍 第五期

JDK8以后新增的时间相关类 Date类ZoneId&#xff1a;时区Instant&#xff1a;时间戳ZoneDateTime&#xff1a;带时区的时间 日期格式化类 SimpleDateFormat DateTimeFormatter&#xff1a;用于时间的格式化和解析 日历类 Calendar LocalDate&#xff1a;年、月、日LocalTime…

Java与Kotlin在Android开发中的全面对比分析

趋势很重要 语言发展背景与现状 Android操作系统自2008年正式发布以来&#xff0c;Java长期作为其主要的开发语言。这种选择源于Java语言的跨平台特性、成熟的生态系统以及广泛开发者基础。然而&#xff0c;随着移动开发需求的快速演变&#xff0c;Java在Android开发中逐渐暴…

第一部分:git基本操作

目录 1、git初识 1.1、存在的问题 1.2、版本控制器 1.3、git安装 1.3.1、CentOS平台 1.3.2、ubuntu平台 2、git基本操作 2.1、创建仓库 2.2、配置git 3、工作区、暂存区、版本库 4、基本操作 4.1、场景一 4.2、场景二 4.3、修改文件 5、版本回退 6、撤销修改 …

正则表达式与python使用

一、Python正则表达式基础 1. 导入模块 Python通过 re 模块实现正则表达式功能&#xff0c;需先导入模块&#xff1a; import re2. 核心语法 普通字符&#xff1a;直接匹配字面值&#xff08;如 a 匹配字符 a&#xff09;。元字符&#xff1a; \d&#xff1a;匹配数字&…

从FP32到BF16,再到混合精度的全景解析

笔者做过目标检测模型、超分模型以及扩散生成模型。其中最常使用的是单精度FP32、半精度FP16、BF16。 双精度"FP64"就不说了&#xff0c;不太会用到。 #1. 单精度、半精度和混合精度 单精度&#xff08;FP32&#xff09;、半精度&#xff08;FP16&#xff09;和混合…

Hot100方法及易错点总结2

本文旨在记录做hot100时遇到的问题及易错点 五、234.回文链表141.环形链表 六、142. 环形链表II21.合并两个有序链表2.两数相加19.删除链表的倒数第n个节点 七、24.两两交换链表中的节点25.K个一组翻转链表(坑点很多&#xff0c;必须多做几遍)138.随机链表的复制148.排序链表 N…

不在同一个局域网的远程桌面连接怎么设置?本地内网计算机让其他网络远程访问6种常用方法

远程桌面是一种重要的技术&#xff0c;它允许用户通过网络远程访问和控制另一台计算机的桌面界面。但是&#xff0c;当被控制端和控制端不在同一个局域网内时&#xff0c;就需要进行一些额外的配置。本文将详细介绍在不同局域网下设置远程桌面的步骤&#xff0c;以帮助读者顺利…

天机学堂day10作业,完善兑换优惠券功能

UserCouponServiceImpl /*** 兑换码兑换优惠券* param code*/TransactionalOverridepublic void exchangeCoupon(String code) {//1、校验code是否为空if (StringUtils.isBlank(code)) {throw new BadRequestException("非法参数&#xff01;");}//2、解析兑换码&…

JAVA工程师面试题(七)

1、递归实现1,1,2,3,5,8,….第30个数是多少&#xff1f; public static int Foo(int i) { if (i < 0) return 0; else if(i > 0 && i < 2) return 1; else return Foo(i -1) Foo(i - 2); }…

Qt基础009(HTTP编程和QJSON)

文章目录 软件开发网络架构BS架构/CS架构 HTTP基本概念QT的HTTP编程JSON数据概述QT生成JSON数据QT解析JSON数据 软件开发网络架构 BS架构/CS架构 ​ 在计算机网络和软件开发中&#xff0c;CS架构&#xff08;Client-Server Architecture&#xff0c;客户端-服务器架构&#x…

高精度电流检测革命:同轴分流器的创新应用与技术演进

一、精密测量原理与结构创新 基于电磁场分布重构技术的新型同轴分流器&#xff0c;突破了传统电流测量的物理限制。该器件采用三维环形电阻矩阵结构&#xff0c;通过多层级导电环的精密排列&#xff0c;实现了电流路径的涡流自补偿。区别于常规分流器的平板式设计&#xff0c;其…

【使用层次序列构建二叉树(数据结构C)】

使用层次序列构建二叉树&#xff08;C语言实现&#xff09; 在数据结构学习过程中&#xff0c;二叉树的构建方式通常有递归建树&#xff08;前序/中序&#xff09;和层次建树&#xff08;广度优先&#xff09;两种。本文将介绍一种基于辅助队列实现的层次建树方法&#xff0c;并…

设置Rocky Linux盒盖不休眠的3个简单步骤

在 Rocky linux&#xff08;和其他基于 RHEL 的发行版&#xff09;中&#xff0c;当你关闭笔记本电脑的盖子时&#xff0c;默认行为通常是使系统休眠。如果你想更改这一行为&#xff0c;例如&#xff0c;使系统在关闭盖子时只是锁定&#xff0c;你可以按照以下步骤操作&#xf…