文件上传骚姿势合集

2023-11-03

目录

黑名单规则绕过

绕过前端 js 检测方法

判断是否为前端检测还是后端服务器检测方法

绕过 contnet-type 检测上传

常见MIME类型

绕过黑名单上传

同解析后缀名

. htaccess 重写解析绕过上传

大小写绕过上传

空格绕过

利用 windows 系统特征绕过上传

::$DATA (NTFS 交换数据流)绕过上传

利用 windows 环境的叠加特征绕过上传

也可以使用phpinfo.php:$DATA 命令上传并创建空白文件

双写后缀名绕过

白名单规则绕过

目录可控%00 截断绕过上传

目录可控 POST 绕过上传

文件头检测绕过上传

文件头检测绕过上传方法二

图片检测函数绕过上传

绕过图片二次渲染上传

文件名可控绕过上传

%00截断

分号;截断

/、绕过

与中间件漏洞配合绕过

数组绕过上传

 总结

防御手段


黑名单规则绕过

绕过前端 js 检测方法

判断是否为前端检测还是后端服务器检测方法

前端绕过,我们可以通过浏览器中F12进入开发者模式修改前端代码
或者
上传一个jpeg等image格式的后缀,里面内容是恶意代码,通过BP抓包修改jpeg为.php后缀;达到绕过前端规则的目的

绕过 contnet-type 检测上传

对于一些上传模块,会对http类型头进行检测,如果是图片类型,允许上传文件到服务器,否则返回上传失败
因为服务器端是通过content-type判断类型,content-type在客户端可被修改。所以此文件上传也有可能被绕过风险

抓包修改content-type类型为后台允许的类型image/jpeg

 在repeater中,方便查看响应包及其上传后的大马路径

 通过在浏览器中输入大马所在路径,发现后台成功解析

常见MIME类型

超文本标记语言 .html text/html
普通文本 .txt text/plain
RTF 文本 .rtf application/rtf
GIF 图形 .gif image/gif
PNG图形 .png image/png
JPEG 图形 .jpeg、.jpg image/jpeg
au 声音文件 .au audio/basic
MIDI 音乐文件 mid、.midi audio/midi、audio/x-midi
RealAudio 音乐文件 .ra、.ram audio/x-pn-realaudio
MPEG 文件 .mpg、.mpeg video/mpeg
AVI 文件 .avi video/x-msvideo
GZIP 文件 .gz application/x-gzip
TAR 文件 .tar application/x-tar

绕过黑名单上传

上传模块时,有时会写成黑名单过滤机制,后台服务器会将上传的文件后缀名与程序中黑名单(代码中会提示不允许php、asp等提示则判断为黑名单限制)进行检测,如果后缀名在黑名单列表内,则禁止上传改文件

上传黑名单以外的后缀名即可。
在 iis 里 asp 禁止上传了,可以上传 asa cer cdx 这些后缀,如在网站里允许.net执行,可以上传 ashx 代替 aspx。如果网站可以执行这些脚本,通过上传后门即可获取 webshell。
在不同的中间件中有特殊的情况,如果在 apache 可以开启 application/x-httpd-php
在 AddType application/x-httpd-php .php .phtml .php3
后缀名为 phtml 、php3 均被解析成 php 有的 apache 版本默认就会开启。
上传目标中间件可支持的环境的语言脚本即可,如.phtml、php3。

此时我们上传一个后缀为php3的shell文件,发现后台成功上传且解析(另外在windows下搭建环境的话需要php为5.2.x的版本)

同解析后缀名

. htaccess 重写解析绕过上传

在文件上传处,黑名单过滤了所有的能执行的后缀名,如果允许上传.htaccess
.htaccess文件的作用是 可以帮我们实现包括:文件夹密码保护、用户自动重定向、自定义错误页面、改变你的文件扩展名、封禁特定 IP 地址的用户、只允许特定 IP 地址的用户、禁止目录列表,以及使用其他文件作为 index 文件等一些功能。
在 htaccess 里写入 SetHandler application/x-httpd-php 则可以文件重写成 php 文件。
要 htaccess 的规则生效 则需要在 apache 开启 rewrite 重写模块,因为 apache是多数都开启这个模块,所以规则一般都生效

 本地创建.htaccess文件并将如下内容加入其中(意为上传的png图片,并且通过处于相同目录下的htaccess文件会将png文件当做php执行脚本去解析)

<FilesMatch 'png'>
 SetHandler application/x-httpd-php
</FilesMatch>

之后将编辑好的.htaccess文件上传到后台

 接下来上传内置好PHPinfo函数的图片,看是否后台能解析

大小写绕过上传

后台若是没有对上传的后缀名的大小写进行严格判断,导致可以更改后缀大小写可以被绕过。如 PHP、 Php、 phP、pHp
通过查看黑名单,发现phP没有禁止,我们尝试上传

空格绕过

如果文件名后缀没有过滤空格的话,我们可以抓包通过空格进行绕过

利用 windows 系统特征绕过上传

在win系统中,系统对文件名后缀有点的,比如.php.会把最后的点忽略系统最终解析为.php;因此针对于windows系统可以尝试后缀加点进行绕过

::$DATA (NTFS 交换数据流)绕过上传

如果后缀名没有对::$DATA 进行判断,利用 windows 系统 NTFS 特征可以绕过上传。
::$DATA   # 其中一个冒号表示创建文件,两个冒号表示写入文件内容

利用 windows 环境的叠加特征绕过上传

在 windwos 中如果上传文件名 shell.php:.jpg 的时候,会在目录下生产空白的
文件名 shell.php
再利用 php 和 windows 环境的叠加属性,
以下符号在正则匹配时相等
双引号" 等于 点号.
大于符号> 等于 问号?
小于符号< 等于 星号*
文件名.<或文件名.<<<或文件名.>>>或文件名.>><空文件名

先上传一个jpg文件,内置phpinfo函数

 抓包修改后缀为ggbond.php:.jpg后发包,此时服务器已经创建了ggbond.php空白文件

接下来继续在repeater模块中操作
请求包中修改文件名为ggbond.>>>其中三个大于号表示匹配后面三个后缀并将内容写入到匹配的文件中

也可以使用phpinfo.php:$DATA 命令上传并创建空白文件

 之后如何写入内容,同上

双写后缀名绕过

有的代码会把黑名单后缀名替换成空 $file_name = str_ireplace($deny_ext,"", $file_name);(str_ireplace则为此作用)
比如a.php会被后台将php替换为空,此时我们可以使用双写绕过
例如pphphp等绕过限制

白名单规则绕过

上面都是黑名单绕过姿势,如果黑名单上传检测后,没有限定后缀名,绕过的方法很多;
接下来就开始针对于白名单规则的一个绕过姿态,相对于黑名单而言,白名单较为安全,但是有可控的参数目录,也存在被绕过的风险

目录可控%00 截断绕过上传

PHP版本<5.3.4
关闭magic_quotes _gpc(magic_quotes _gpc=OFF)

代码中使用白名单限制上传的文件后缀名,只允许指定的图片格式。但是$_GET['save_path']服务器接受客户端的值,这个值可被客户端修改。所以会留下
安全问题。

 在URL请求行中构造payload
../upload/ggbond.php%00
当ggbond.php%00和maggbond.jpg拼接之后在后端会被最终识别为ggbond.php(%00后面内容会被截断不会读取)

目录可控 POST 绕过上传

上面是 GET 请求的,可以直接在 url 输入%00 即可截断,但是在 post 下直接注入%00 是不行的,需要把%00 解码变成空白符,截断才有效。才能把目录截断成文件名。
第十二关代码同样是白名单限制后缀名,$_POST['save_path']是接收客户端提交的值,客户端可任意修改。所以会产生安全漏洞。

 在请求体中对1构造的payload的%00进行编码绕过

 成功上传

文件头检测绕过上传

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

  • JPEG (jpg),文件头:FFD8FF
  •  PNG (png),文件头:89504E47
  •  GIF (gif),文件头:47494638
  •  TIFF (tif),文件头:49492A00
  •  Windows Bitmap (bmp),文件头:424D

 将内置函数放入动图gif中(下面copy命令在windows的DOS命令行中执行生成)

copy 3.gif/b+phpinfo.php dt.gif

查看恶意gif文件是否成功创建

 上传恶意gif文件并且复制上传后的gif文件路径

 在文件包含漏洞处对其上传恶意文件进一步读取

成功解析

文件头检测绕过上传方法二

直接上传phpinfo文件,在抓取的数据包中手工写入符合需求的文件头

 接着通过文件包含漏洞成功解析phpinfo动态脚本

图片检测函数绕过上传

getimagesize 函数是获取图片的大小,如果头文件不是图片会报错直 接可以用图片马绕过检测

方法可直接用上面上传gif恶意文件方法绕过,下面我再通过jpg文件型图片马进行演示

接着通过文件包含漏洞解析成功

 uploadlabs第十五关时候phpstudy需要开启exif服务,如下图;之后绕过方法同上

绕过图片二次渲染上传

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

 首先判断图片是否允许上传git文件;gif 图片在二次渲染后,与原图片差别不会太大。一般针对于二次渲染攻击最好用gif图片马


将原图片上传,下载渲染后的图片进行对比(原图会动,渲染后的新图片不会动了),找相同处,覆盖字符串,填写一句话后门,或者恶意指令

 成功解析上传的二次渲染gif文件

文件名可控绕过上传

文件上传时,文件名的可被客户端修改控制,会导致漏洞产生。

%00截断

%00截断需要gpc关闭
php 版本小于 5.3.4
Nginx0.83

 成功上传

分号;截断

;截断需要1在IIS6.0环境中才能绕过

/、绕过

杠点绕过,无版本限制条件

与中间件漏洞配合绕过

apache 1.x/2.x 遇到不认识的后缀名会先从后向前解析,具体分析如下
phpinfo.php.a  与apache中间件漏洞配合可以上传,但是是否能解析需要看相应中间件版本
phpinfo.php.a 会被中间件从右向左解析为a.php

数组绕过上传

有的文件上传,如果支持数组上传或者数组命名。如果逻辑写的有问题会造成安全隐患,导致不可预期的上传。这种上传攻击,它是属于攻击者白盒审计后发现的漏洞居多。

 总结

判断是否为黑白名单,如果是白名单 寻找可控参数。如果是黑名单禁止上传,可以用有危害的后缀名批量提交测试,查找未加入黑名单的执行脚本。

防御手段

  1. 通过服务器后端对上传的⽂件进⾏过滤,防⽌本地⽂件上传限制被绕过

  2. 及时查看最新公布漏洞通告,如果服务器中涉及相关组件,要及时更新补丁包

  3. 对⽂件上传的⽬录进⾏控制,设置为不可执⾏ 。只要保证web容器⽆法解析该⽬录下⾯的⽂件,即使攻击者上传了脚本⽂件,服务器不对其进⾏解析,⽊⻢ 等也不会⽣效。

  4. 对上传⽂件类型进⾏判断。可以结合使⽤MIME Type、后缀检查等⽅式。在⽂件类型检查中,尽量使⽤⽩名单⽅式,⿊名单和前端都属于不可靠的。

  5. 使⽤随机数改写⽂件名和⽂件路径 。⽂件上传如果要执⾏代码,则需要⽤户能够访问到这个⽂件。在某些环境中,⽤户可以进⾏病毒⽊⻢等有害⽂件上传,但如果应⽤随机数改写了⽂件名和路径,攻击者在不知道程序源码情况下不了解随机数等规则,即不知道⽂件名称就不能访问。还有像shell.php.rar.rar 和crossdomain.xml 这种⽂件,都将因为重命名⽽⽆法攻击。

  6. 单独设置⽂件服务器的域名,⼀般信息搜集过程中都会进⾏的⼀项就是旁站和C端的收集,如果⽂件服务器和主站等在同⼀域名下,浏览器同源策略的关系,有可能攻击者通过⼀个点进⾏整体环境服务器的渗透。在单独设置⽂件服务器之后,⼀系列客户端攻击将失效,⽐如上传 crossdomain.xml、上传包含Javascript 的 XSS 利⽤等问题将得到解决。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

文件上传骚姿势合集 的相关文章

  • ❤ Vue3 使用

    Vue3 使用 Vue3之toRefs的使用 作用 toRefs 可以将一个响应式的对象 转换成普通对象 但是转换后的普通对象的每一个属性值都是响应式的 这样我们可以使用es6的对象解构或者三点运算符等操作 代码
  • 接口测试之Fiddler弱网测试

    前言 目前市面上的APP功能越来越丰富 移动端测试也越显为重要 因为用户在网速慢的情况下 你的网站 软件 总能出现各种各样的问题 请不要忽略这一点 针对在不同的网络情况下 接下来 本篇要讲述的就是在通过fiddler对APP进行模拟弱网测试
  • 线程安全(中)--彻底搞懂synchronized(从偏向锁到重量级锁)

    接触过线程安全的同学想必都使用过synchronized这个关键字 在java同步代码快中 synchronized的使用方式无非有两个 通过对一个对象进行加锁来实现同步 如下面代码 synchronized lockObject 代码 对
  • 前端必备的 web 安全知识手记

    前言 安全这种东西就是不发生则已 一发生则惊人 作为前端 平时对这方面的知识没啥研究 最近了解了下 特此沉淀 文章内容包括以下几个典型的 web 安全知识点 XSS CSRF 点击劫持 SQL 注入和上传问题等 下文以小王代指攻击者 话不多
  • 每天10个前端小知识 <Day 7>

    前端面试基础知识题 1 什么是尾调用优化和尾递归 尾调用的概念非常简单 一句话就能说清楚 就是指某个函数的最后一步是调用另一个函数 function f x return g x 上面代码中 函数f的最后一步是调用函数g 这就叫尾调用 尾调
  • 每天10个前端小知识 <Day 6>

    前端面试基础知识题 1 使用js实现二分查找 二分查找 也称为折半查找 是指在有序的数组里找出指定的值 返回该值在数组中的索引 查找步骤如下 从有序数组的最中间元素开始查找 如果该元素正好是指定查找的值 则查找过程结束 否则进行下一步 如果
  • Android开发中常见安全问题和解决方案

    前言 开发APP时经常有问到 APP的安全怎么保障 应用程序被PJ了怎么办 手机被人捡去了怎么办 特别在号称 安全第一 风控牛逼 的银行系统内 移动产品安全性仍被持有怀疑态度 那我们来总结下APP安全的方向和具体知识 1 应用程序安全 2
  • Android SDK开发艺术探索(五)安全与校验

    一 前言 本篇是Android SDK开发艺术探索系列的第五篇文章 介绍了一些SDK开发中安全方面的知识 包括资源完整性 存储安全 权限校验 传输安全 代码混淆等知识 通过基础的安全配置为SDK保驾护航 探索SDK开发在安全方面的最佳实践
  • 「网络安全渗透」如果你还不懂CSRF?这一篇让你彻底掌握

    1 什么是 CSRF 面试的时候的著名问题 谈一谈你对 CSRF 与 SSRF 区别的看法 这个问题 如果我们用非常通俗的语言讲的话 CSRF 更像是钓鱼的举动 是用户攻击用户的 而对于 SSRF 来说 是由服务器发出请求 用户 日 服务器
  • 点击存储到固定时间清除存储

    这段代码 无意间想到的 随便写了下来 运行 根据点击之后传递一个参数 将他存入本地存储 方便测试为10秒 10秒后触发下一个事件 清除本地存储 结束
  • 低代码配置-列表页组件设计

    保存 表单属性存放 bill 筛选项配置存放 filterLayout 列表按钮存放 buttonLayout 列表布局存放 listLayout api存放 api 数据结构 layout 存放表单基础配置 bill 存放按钮基础配置 b
  • 渗透测试常用工具汇总_渗透测试实战

    1 Wireshark Wireshark 前称Ethereal 是一个网络分包分析软件 是世界上使用最多的网络协议分析器 Wireshark 兼容所有主要的操作系统 如 Windows Linux macOS 和 Solaris kali
  • 网络安全基础知识面试题库

    1 基于路由器的攻击手段 1 1 源IP地址欺骗式攻击 入侵者从外部传输一个伪装成来自内部主机的数据包 数据包的IP是 内网的合法IP 对策 丢弃所有来自路由器外端口 却使用内部源地址的数据包 1 2 源路由攻击 入侵者让数据包循着一个不可
  • 课设:NFA确定化和最小化程序的设计与实现(html+css+js实现)

    文章目录 问题描述 待解决问题 1 如何存储NFA或者是DFA 2 NFA多初态问题 3 子集化过程思路 4 分割法过程思路 使用方法 下载链接 问题描述
  • 新手也能看懂的【前端自动化测试入门】!

    前言 最近在网上搜索前端自动化测试相关的文档 但是发现网上的文章都是偏使用 没有把一些基础概念说清楚 导致后续一口气遇到一些 karma Jasmine jest Mocha Chai BDD 等词汇的时候很容易一头雾水 这次一方面整理一下
  • Vue 如何使用WebSocket与服务器建立链接 持续保持通信

    WebSocket 浏览器通过JavaScript向服务器发出建立WebSocket链接的请求 链接建立后 客户端和服务器端就可以通过TCP链接直接交互数据 WebSocket链接后可以通过 send 方法来向服务器发送数据 并通过 onn
  • 你的服务器还安全吗?用户数据是否面临泄露风险?

    一系列严重的网络安全事件引起了广泛关注 多家知名公司的服务器遭到黑客挟持 用户的个人数据和敏感信息面临泄露的风险 这些事件揭示了网络安全的脆弱性和黑客攻击的威胁性 提醒着企业和个人加强对网络安全的重视 一 入侵案例 1 1 蔚来数据泄露 1
  • 【网络安全】——区块链安全和共识机制

    区块链安全和共识机制 摘要 区块链技术作为一种分布式去中心化的技术 在无需第三方的情况下 使得未建立信任的交易双方可以达成交易 因此 区块链技术近年来也在金融 医疗 能源等多个行业得到了快速发展 然而 区块链为无信任的网络提供保障的同时 也
  • 网络安全(黑客)自学启蒙

    一 什么是网络安全 网络安全是一种综合性的概念 涵盖了保护计算机系统 网络基础设施和数据免受未经授权的访问 攻击 损害或盗窃的一系列措施和技术 经常听到的 红队 渗透测试 等就是研究攻击技术 而 蓝队 安全运营 安全运维 则研究防御技术 作
  • 考虑光伏出力利用率的电动汽车充电站能量调度策略研究(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Matlab代码 数据

随机推荐

  • 为自己的 SSM项目设计评论功能

    为自己的 SSM项目设计评论功能 设计思路 增加评论 显示评论 评论总数 设计思路 首先需要设计评论信息的实体类 对应评论表 主要分为以下2个功能 显示所有评论 当我们进入文章详情页的时候 页面就会通过 ajax 发送请求给服务器 这个请求
  • 8,tcl注释与续行

    注 学习 交流就在博主的个人weixin公众号 FPGA动力联盟 留言或直接 博主weixin fpga start 私信 关于xilinx vivado FPGA XDC约束的所有讲解文档汇总 关于xilinxvivadoFPGAXDC约
  • 期货基础知识

    期货基础知识 1期货交易概述 1 1概念 一 期货合约 是指由期货交易所统一制订的 规定在将来某一特定的时间和地点交割一定数量和质量实物商品或金融商品的标准化合约 所谓标准化合约是指合约的数量 质量 交货时间和地点等都是既定的 唯一的变量是
  • golang学习demo5-redis和redis连接池的使用

    知识点 redis 的安装与了解 golang中对redis的操作 golang中的redis 连接池 安装并启动redis server之后的界面 我们就可以使用了 默认端口是6379 在client客户端里可以进行命令操作 一个基本的g
  • Python +selenium+unittest+ddt数据化实现自动化运行和脚本并生成报告

    一 unittest 框架解析 unittest 是 python 的单元测试框架 unittest 单元测试提供了创建测试用例 测试套件以及批量执行的方案 unittest 在安装 pyhton 以后就直接自带了 直接 import un
  • Linux Kernel:syscall之fork与exec

    目录 环境 一 前言 二 进程复制 1 写时复制 2 系统调用 3 kernel c
  • Web Socket rfc6455 握手 (C++)

    std string data const char buf gt data bytes transferred recycle buffer buf std string key Sec WebSocket Key auto pos da
  • 嵌入式系统调试方式

    word文档免费下载地址 https download csdn net download weixin 55953651 87962202 1 嵌入式系统调试方法概述 通用计算机一般采用桌面操作系统 调试器与被调试的程序常位于同一台计算机
  • 字符贪吃蛇创新玩法

    C语言贪吃蛇 include include include include include include include pragma comment lib Winmm lib 宏定义区 define X 500 保存蛇节点坐标的个数
  • brpc源码解析(十六)—— 作为client的连接建立和处理详解

    文章目录 一 连接方式的定义 二 连接方式的选择 三 获取用于连接的socket 3 1 获取指代具体下游服务的tmp socket 3 2 根据tmp socket获取用于发送数据的socket 3 3 连接以准备发送 四 数据发送完毕后
  • python setup.py install 常用命令参数详解

    setup py 命令 参数 setup py 文件有很多内置命令可供使用 查看所有支持的命令 python setup py help commands 注意要在有 setup py文件 的目录下用 cmd 运行此命令 常用命令 buil
  • 8、自定义映射resultMap

    8 自定义映射resultMap 搭建MyBatis框架 新建modules gt resultMap t emp表 SET NAMES utf8mb4 SET FOREIGN KEY CHECKS 0 Table structure fo
  • 5G小站中的数字预失真(DPD)技术

    5G小站中的数字预失真 DPD 技术 标题 一 基站中为什么要用数字预失真 DPD 技术 为了获得更大的输出信号功率 功率放大器一般会工作在接近饱和点的工作范围 这样功放的非线性失真会使其产生新的频率分量 如对于二阶失真会产生二次谐波和双音
  • Vijava 学习笔记之(Template 克隆虚拟机并修改Template 指定虚拟磁盘大小)

    源代码 package com vmware template import com vmware util Session import com vmware vim25 import com vmware vim25 mo import
  • 通过百度地图API和高德地图API进行反坐标逆向地理位置

    本文分别通过百度地图API和高德地图API 通过WGS84的坐标返回详细的地理位置 一 通过百度地图API进行反坐标逆向地理位置 import java io BufferedReader import java io IOExceptio
  • 英语CET6救命作文通用模板

    这是根据刘晓燕的6级救命班所写的笔记 建议结合 英语四六级万能作文模板 进行独一无二的英语作文模板创造 一 常见土单词排行榜 think 可替换为 have been convinced that be of the opinion tha
  • hive三种元数据存储方式

    hive本身不存储数据 借助hdfs存储数据 hive和关系型数据库一样是有表结构的 这些信息hive也存储在第三方软件中 如derby mysql 根据元数据的存储方式 hive的部署可以分为三种 一 local模式 采用内置的derby
  • Eladmin框架前端后台学习笔记

    文章目录 Eladmin框架前端后台学习 项目简介 用户账号密码 运行 技术栈 项目结构 常见问题 1 如何开发一个新模块 2 如何做权限管理 3 头部增删改查等按钮 不显示某个按钮 或从左侧或右侧新增按钮 4 页面初始化时不请求查询数据接
  • Golang 单元测试框架的使用

    一 使用gomonkey stub 打桩 在测试包中创建一个模拟方法 用于替换生成代码中的方法 1 stub函数 gomonkey ApplyFunc target double 其中target是被mock的目标函数 double是用户重
  • 文件上传骚姿势合集

    目录 黑名单规则绕过 绕过前端 js 检测方法 判断是否为前端检测还是后端服务器检测方法 绕过 contnet type 检测上传 常见MIME类型 绕过黑名单上传 同解析后缀名 htaccess 重写解析绕过上传 大小写绕过上传 空格绕过