1   上传漏洞危害介绍

上传是Web中最常见的功能,如果上传功能存在设计、编码缺陷,就容易形成上传漏洞,从而成为致命的安全问题,攻击者可以通过上传脚本木马,实现查看/篡改/删除源码和任意涂鸦网页,可以连接和操作对应的数据库,还可以通过操作系统漏洞、配置缺陷、信息泄露进行提权,获取操作系统提权,因此上传功能是Web安全测试中重点关注的高风险模块。

2   上传漏洞原因分析

上传漏洞形成的原因,主要由以下几种情况:

2.1   无安全防护措施,可以直接上传脚本

漏洞原因:上传功能未考虑安全问题,可以任意上传*.asp、*.aspx、*.php、*.jsp等可执行的脚本文件,不需要任意的绕过就可以直接获取Web权限。

原因分析:上传功能一定要考虑上传的安全性,需要理解上传漏洞的危害和风险。

2.2   采用黑名单扩展名,导致过滤不严格

漏洞原因:上传文件判断文件扩展名时,采用了黑名单机制,只是禁止*.asp、*.aspx、*.php、*.jsp这种已知的可执行文件扩展名,但没有限制*.cer、*.asa、*.PHP、*.JSP这类扩展名,从而导致过滤不严格,形成上传漏洞。

原因分析:上传文件判断扩展名时,应该采用名单机制,例如业务需要上传用户头像照片,那么我们可以写一个数组,只允许.jpg、.gif、.png、.bmp这些文件,当攻击者上传不在白名单中的文件扩展名时,应禁止上传并提示扩展名不正确。

2.3   仅通过客户端判断,存在绕过限制的漏洞

漏洞原因:上传文件判断文件类型时,通过客户端语言JavsScrip判断文件大小、类型和扩展名,上传白名单仅在JS中实现,而客户端过滤很容易通过工具绕过限制,达到攻击的目的。

原因分析:可以通过JS来判断文件大小、类型和扩展名,这样可以提高效率和应用性,但还需要在服务器端进行判断,服务器端判断是指通过php、jsp脚本代码来判断。

2.4   上传设计未考虑解析器的安全,导致发生解析漏洞

漏洞原因:上传设计时使用了白名单机制,但允许用户控制上传文件的文件名和保存文件时上级文件夹的名称。

原因分析:尽量避免用户可以操控上传到服务器的文件名称、上级文件夹名称,如果用户可以控制上级文件夹名称,那么需要对文件夹名称进行过滤,禁止上传携带特殊符号的文件目录,防止攻击者生成畸形的文件名而导致解析漏洞。例如:在IIS 6.0中,会将/hack.asp/test.jpg当成asp解析,因此必须要对test.jpg上级所有目录进行过滤(如果用户可以新建文件夹等场景,表示用户可以控制hack.asp这个值),避免解析漏洞。

2.5   Web容器配置漏洞,使用不安全HTTP方法实现上传攻击

漏洞原因:Web容器支撑PUT、MOVE、COPY等不安全的HTTP方法,但权限配置存在问题,导致攻击者可以通过PUT、COPY、MOVE上传脚本文件。

原因分析:尽量避免使用不安全的HTTP方法,如果是业务需要(例如REST接口),尽量使用原生态的类和方法,避免二次开发、扩展过程中出现上传漏洞,严格上讲这类不安全的HTTP方法,属于配置漏洞,因此不在本次讨论范围内。

2.6   第三方编辑器漏洞,例如FCK、eWebeditor

漏洞原因:很多产品使用了FCK、eWebeditor编辑器,方便富文件上传和管理,而这些编辑器版本较多,很多低版本本身就存在上传漏洞,因此也是上传漏洞的重灾区。

作者:jz

Web安全-之文件上传漏洞场景的更多相关文章

  1. 基于 java 【Web安全】文件上传漏洞及目录遍历攻击

    前言:web安全之文件上传漏洞,顺带讲一下目录遍历攻击.本文基于 java 写了一个示例. 原理 在上网的过程中,我们经常会将一些如图片.压缩包之类的文件上传到远端服务器进行保存.文件上传攻击指的是恶 ...

  2. WEB安全:文件上传漏洞

    文件上传漏洞过程 用户上传了一个可执行的脚本文件,并通过此脚本文件获得了执行服务器端命令的能力. 一般的情况有: 上传文件WEB脚本语言,服务器的WEB容器解释并执行了用户上传的脚本,导致代码执行: ...

  3. web安全之文件上传漏洞攻击与防范方法

    一. 文件上传漏洞与WebShell的关系 文件上传漏洞是指网络攻击者上传了一个可执行的文件到服务器并执行.这里上传的文件可以是木马,病毒,恶意脚本或者WebShell等.这种攻击方式是最为直接和有效 ...

  4. WEB安全性测试之文件上传漏洞

    1.漏洞描述:文件上传漏洞,是指可以利用WEB上传一些特定的文件包含特定代码如(<?php phpnfo;?> 可以用于读取服务器配置信息.上传成功后可以点击) 上传漏洞是指用户上传了一个 ...

  5. web安全之文件上传漏洞

    成因: 当文件上传时,若服务端脚本语言未对上传的文件进行严格验证和过滤,若恶意用户上传恶意的 脚本文件时,就有可能控制整个网站甚至是服务器,这就是文件上传漏洞. 权限: 1. 后台权限:登陆了后台,可 ...

  6. Web应用安全之文件上传漏洞详解

    什么是文件上传漏洞 文件上传漏洞是在用户上传了一个可执行的脚本文件,本通过此脚本文件获得了执行服务器端命令的功能,这种攻击方式是最为直接,最为有效的,有时候,几乎没有什么门槛,也就是任何人都可以进行这 ...

  7. web服务端安全之文件上传漏洞

    一.文件上传漏洞的原理 由于程序代码未对用户提交的文件进行严格的分析和检查,导致攻击者可以上传可执行的代码文件,从而获取web应用的控制权限. 常见于上传功能,富文本编辑器. 二.文件上传漏洞的防御 ...

  8. WEB服务端安全---文件上传漏洞

    1.简述 文件上传漏洞是指用户上传了一个可执行的脚本文件,并通过此脚本文件获得了执行服务端命令的能力.这种攻击方式是最直接和有效的,而且互联网中我们经常会用到文件上传功能,它本身是没有问题的,正常的业 ...

  9. web文件上传漏洞

    什么是文件上传漏洞? 指利用系统的对文件上传部分的控制不足或处理缺陷,上传可执行的动态脚本文件/webShell进行攻击行为. 原因 对于上传文件的后缀名(扩展名)没有做较为严格的限制 对于上传文件的 ...

随机推荐

  1. CSPS模拟 68

    令人kuku的一场考试, T1 令人kuku的贪心,反工了好几次,耗费了1h之久. T2 令人kuku的数据结构,到死也没调出来,还是细节问题,要积累. T3 令人kuku的二分答案. 先二分第一个答 ...

  2. Java基础语法01

    一.Java入门 Java 是最好的语言吗? 不是,因为在每个领域都有更合适的编程语言. Java技术体系平台 JavaSE//JavaEE//JavaME Java程序的结构 类{ 方法{ 语句; ...

  3. printf的实现原理

    printf的声明    int _cdecl printf(const char* format, …);    _cdecl是C和C++程序的缺省调用方式 _CDEDL调用约定:    1.参数从 ...

  4. nginx目录安全设置

    nginx目录安全设置<pre> location ~ /\. { deny all; }</pre>这样所有隐藏文件都不会以URL方式打开了

  5. jquery判断手指滑动方向

    jquery判断手指滑动方向 <pre> /*判断哪个滑动方向还是自己改下 要么上下 要么左右*/ var startX; var startY; $(".shanghua&qu ...

  6. python——多线程

    多线程特点: • 线程的并发是利用cpu上下文的切换(是并发,不是并行) • 多线程执行的顺序是无序的 • 多线程共享全局变量 • 线程是继承在进程里的,没有进程就没有线程 • GIL全局解释器锁 • ...

  7. 微软的分布式应用框架 Dapr

    微服务架构已成为构建云原生应用程序的标准,微服务架构提供了令人信服的好处,包括可伸缩性,松散的服务耦合和独立部署,但是这种方法的成本很高,需要了解和熟练掌握分布式系统.为了使用所有开发人员能够使用任何 ...

  8. [ASP.NET Core 3框架揭秘] 文件系统[1]:抽象的“文件系统”

    ASP.NET Core应用 具有很多读取文件的场景,比如配置文件.静态Web资源文件(比如CSS.JavaScript和图片文件等)以及MVC应用的View文件,甚至是直接编译到程序集中的内嵌资源文 ...

  9. 解决vue低版本安卓手机兼容性问题

    低版本的安卓手机可能会白屏,是由新特性不支持引起的 解决代码es6新特性兼容问题 1,npm 安装 npm install babel-polyfill npm install es6-promise ...

  10. kafka线上滚动升级方案记录

    kafka升级方案 为什么进行kafka升级 一.修改unclean.leader.election.enabled默认值Kafka社区终于下定决心要把这个参数的默认值改成false,即不再允许出现u ...