• 上传文件漏洞(上传绕过)


    0x00 漏洞概述

    任意文件上传漏洞主要是由于程序员在开发文件上传功能时,没有考虑对文件格式后缀的合法性进行校验或只考虑在应用前端(Web 浏览器端)通过 javascript 进行后缀校验,攻击者可上传一个包含恶意代码的动态脚本(如 jsp、asp、php、aspx 文件后缀)到服务器上,攻击者访问该脚本时服务器将对包含恶意代码的动态脚本解析,最终执行相应的恶意代码。该漏洞最终将可能直接影响应用系统的服务器安全,攻击者可通过所上传的脚本完全控制服务器。

    0x01测试方法

    对文件上传页面进行测试,有多种上传测试方式判断是否存在任意文件上传漏洞。

      

    方式一:直接上传

     在上传过程中,直接选择动态脚本后缀的文件,如 asp、php、jsp、aspx 等文件格式,观察是否上传成功。

    方式二:绕过JS上传

     当上传页面在前端采用 javascript 进行文件后缀限制时,可通过 HTTP 抓包工具进行改包上传,如上传  jpg  后缀,通过HTTP 抓包工具捕捉到以下请求数据包,将数据包的  filename  参数值从  oneword_pass.jpg  修改为  oneword_pass.php  并重新进行上传提交即可绕过javascript 验证。

     

    方式三:截断后缀上传

     部分上传功能在对后缀名进行验证时存在缺陷,导致在文件写入过程中产生错误,导致可通过十六进制截断符(%00)对后缀进行截断。如下图,上传处理时将对检测到%00 并对.jpg 字符串进行截断删除,最终文件名为 oneword_pass.php 导致可成功上传动态脚本到服务器上。

     方式四:绕过 Content-Type 检查上传

    部分上传页面只对文件类型进行验证,导致可通过改包的方式上传动态脚本到服务器上。如下图,通过修改 Content-Type 的参数值为 image/jpg,程序将认为本次提交的为图片格式类型,并不进行后缀验证,最终成功绕过 Content-Type 检查上传动态脚本到服务器上。

     

    0x02防护思路

    1、前端,加强文件检查过滤,相关强度可以参考DVWA等级源码。

    2、过程中,针对上传文件进一步做处理,如图片的价水印、缩略图,无异常后才保存到后台;针对文件命名做限制,须由系统生成,不允许用户自定义。

    3、后台,限制上传文件目录无法直接访问,设置该目录不解析jsp等脚本语言。

  • 相关阅读:
    IT职场中外企面试最爱提的问题
    数据库的最简单实现
    两则故事
    如何提升程序员的“性能”
    那些年看过的电影
    VIM技巧
    独立之精神,自由之思想
    「我只是认真」——聊聊工匠情怀
    在这里,你终究会真正地失败
    公共场所英文译写规范
  • 原文地址:https://www.cnblogs.com/ScriptKid-Lu/p/9684274.html
Copyright © 2020-2023  润新知