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. 推荐一款Diffy:Twitter的开源自动化测试工具

    1. Diffy是什么 Diffy是一个开源的自动化测试工具,是一种Diff测试技术.它能够自动检测基于Apache Thrift或者基于HTTP的服务.通过同时运行新/老代码,对比运行结果,发现潜在 ...

  2. 使用Typescript重构axios(二十九)——添加baseURL

    0. 系列文章 1.使用Typescript重构axios(一)--写在最前面 2.使用Typescript重构axios(二)--项目起手,跑通流程 3.使用Typescript重构axios(三) ...

  3. P3976 [TJOI2015]旅游(未完成)

    #include<iostream> #include<cstdlib> #include<cstring> #include<cstdio> #inc ...

  4. 底半部之工作队列和tasklet,内核定时器。

    1.软中断机制  不能以模块形式出现   使用起来不够灵活2.tasklet  核心数据结构       struct tasklet_struct      {          function  ...

  5. Unity 简记(2)--2D移动

    目录 1.输入 1.1直接检测按下哪个按键 1.2.检测水平输入和垂直输入 2.移动 2.1.Transform组件 2.2.RigidBody组件 2.3.NavMeshAgent组件 2.4.Ch ...

  6. java中线程同步的几种方法

    1.使用synchronized关键字 由于java的每个对象都有一个内置锁,当用此关键字修饰方法时, 内置锁会保护整个方法.在调用该方法前,需要获得内置锁,否则就处于阻塞状态. 注: synchro ...

  7. 获取jar包内部的资源文件

    通常获取一个资源文件很简单,问题是对于jar包内的资源文件,可能会发生意外.假如这里有一个文件操作的类: public class FileLoader { public boolean exists ...

  8. nyoj 100-1的个数 (因为只统计1的个数,连栈都不需要了)

    100-1的个数 内存限制:64MB 时间限制:3000ms 特判: No 通过数:33 提交数:42 难度:1 题目描述: 小南刚学了二进制,他想知道一个数的二进制表示中有多少个1,你能帮他写一个程 ...

  9. [UWP]用Win2D实现镂空文字

    1. 前言 之前用PointLight做了一个番茄钟,效果还不错,具体可见这篇文章: [UWP]使用PointLight并实现动画效果 后来试玩了Win2D,这次就用Win2D实现文字的镂空效果,配合 ...

  10. BIM到底是啥?

           近年来随着BIM的大火以及一些政策的支持,BIM逐渐走入建筑行业的视野,但其实大部分人都不知道或者说不了解BIM到底是啥.去百度上进行搜索,你会知道BIM就是Building Infor ...