• 文件上传漏洞小结


    1.原理

    利用web容器特性和上传过滤不严谨上传含恶意代码的文件。

    2. 解析漏洞

    学习文件上传漏洞是离不开web容器解析漏洞的,下面介绍一些常见web容器IIS、APACHE、NGINX的解析漏洞

    2.1 IIS解析漏洞

    2.1.1 IIS 6.0
    (1)目录解析
    建立*.asp/asa文件夹时,包含一个1.txt文件,则访问1.txt时,因为在 *.asp/asa文件夹中1.txt文件会被当做asp脚本执行。
    (2)截断
    当文件为*.asp;1.jpg时,也会被当做asp脚本执行。
    2.1.2 IIS7/7.5
    在Fast-CGI运行模式下,在一个文件路径(/1.jpg)后面加上/2.php会将/1.jpg/2.php 解析为 php 文件。
    条件:php.ini里默认cgi.fix_pathinfo=1;
    2.2 Apache解析漏洞
    Apache在解析文件时,从右往左解析,遇到不认识的扩展名就向前继续解析,直到遇到认识的扩展名,如果都不认识,则暴露其源代码
    当一个文件为1.php.rar.ss.aa,不认识aa,会一直向前解析,直到遍历到认识的扩展名。
    2.3 NGINX解析漏洞
    也叫PHPCGI漏洞,实质上是因为php.ini中的cgi.fix_pathinfo默认是开启的。
    在访问1.jpg这个文件时以这种去访问/1.jpg/1.php(1.php实际上不存在),会被当做PHP代码去执行。

    3. 上传检测类型

    3.1 客户端检测

    3.1.1 原理
    利用javascript对选择的文件后缀进行检测,在没有点击上传前就已做判断。
    3.1.2 绕过方法
    (1)在firebug更改jsp代码,删除相应代码的函数
    (2)关掉浏览器js执行
    (3)将脚本文件扩展名改成允许上传的扩展名,上传时抓包,更改为原扩展名即可。

    3.2 服务器端类型检测

    3.2.1 黑/白名单过滤

    • 黑名单:设置过滤器,过滤掉不允许上传的文件类型
    • 白名单:列出允许上传的文件类型,不满足则不允许上传

    3.2.2 MIME类型检测
    MIME类型用来设定某种扩展名文件的打开方式,当文件被访问时,浏览器自动使用指定的应用程序来打开。如GIF图片MIME为image/gif。

    • 利用方法:
      抓包更改MIME类型。
      3.2.3 目录验证
      上传文件时,如果指定的目录存在就将文件写入该目录,要是不存在则新建该目录。
    • 利用方法:
      结合IIS 6.0解析漏洞,自定义文件夹为1.asp,当服务器不存在该目录时创建,上传的1.jpg则会被当做asp脚本执行。
      3.2.4 截断上传
      %00截断漏洞,在asp程序中最常见

    4. 修复方法

    • 对文件进行重命名、
    • 接收文件时用临时路径存放、
    • 获取扩展名与白名单对比,没有则退出
    你是这白开水一样淡的日子里偷偷加的一颗糖~~
  • 相关阅读:
    第五周:函数
    第四周:循环控制
    第三周:循环
    第二周:判断
    第一周:简单的计算程序
    cocos2dx-lua采用pbc解析proto问题修正
    cocos2dx 3.9.1 mac模拟器log输出bug修正
    基于dragonbones的cocos2dx lua封装
    EF 3.0 要开启 数据库连接复用 MultipleActiveResultSets=true
    找不到资产文件“xxxxobjproject.assets.json
  • 原文地址:https://www.cnblogs.com/0nc3/p/12063473.html
Copyright © 2020-2023  润新知