zoukankan      html  css  js  c++  java
  • web漏洞之文件上传

    一、概述

    1.1描述

      文件上传漏洞是指程序员在进行开发时没有对用户上传的文件进行严格过滤和审查,从而导致用户可以上传服务器可以执行的脚本程序,通过脚本程序getshell达到控制服务器的目的。注:文件上传本质是让用户上传符合开发人员设计的文件内容,但是由于过滤审查不严,导致出现了文件上传这个漏洞。

    1.2常见上传位置

           1.网站上传文件/附件的位置都可能产生

           2.头像上传点

           3.图片插入点

           4.扫描目录文件,看是否存在类似upload.php等文件

    二、攻击方法

           文件上传的攻击方法比较简单粗暴,遇到文件上传点直接上传脚本文件即可,如果出现问题,可以通过下面的绕过方法进行绕过。

      这里我们以DVWA的文件上传(高难度)做实例:

    2.1分析源码的过滤规则

      通过分析我们发现High级别的代码要求上传文件名形式必须是“.jpg”、“.jpeg” 、“.png”之一,同时,getimagesize()函数更是限制了上传文件的文件头必须为图像类型。

     

    2.2准备工作

      首先准备一张图片,和一个脚本代码

     

    2.3制作脚本

      接下来我们通过windows的copy命令来制作图片马

     

    2.4上传文件

     

     

    三、绕过方法

    3.1客户端校验绕过

           3.1.1对于前端校验可以通过抓包修改文件后缀的方式来进行绕过。

           3.1.2使用浏览器的一些插件来删除或者修改前端校验的代码。

    3.2文件扩展名绕过

           3.2.1文件后缀名大小写绕过,例如:**.Asp、**.jSP

           3.2.2针对黑名单,我们可以找黑名单的漏网之鱼,比如asa和cer这些文件后缀是否可以上传

           3.2.3 0x00截断绕过,由于00代表结束符,所以会把00后面的所有字符都截断,条件:PHP版本小于5.3.4,PHP的magic_quotes_gpc为OFF状态.比如**.php%00.jpg或**.php(0x00).jpg服务器会解析为**.php

           3.2.4windows中对于文件名后缀不能有点(.)或空格,否则会去掉,所以可以通过添加空格和点(.)来绕过,例如:**.jsp+或**.php.

           3.2.5可以利用文件包含漏洞来进行远程文件的包含执行。

           3.2.6利用服务器的中间件解析漏洞来上传文件(这个后续后专门讨论中间件解析漏洞)

    3.3文件内容检测绕过

           通过对文件头进行修改,比如对上传文件的要求为jpg文件,我们可以在上传的文件首行加入jpg文件的标记头。也可以利用利用一些命令生成符合要求的恶意脚本,比如图片马。

    3.4文件类型限制绕过

           可以通过抓包来修改文件上传类型,比如我们上传jpg文件,Content-Type的值是:image/jpeg,若服务端通过Content-Type来判断上传文件的类型,那么当我们上传PHP文件就可以通过修改符合的Content-Type值来绕过。

    3.5CMS、编辑器漏洞绕过

      3.5.1CMS漏洞:比如说JCMS等存在的漏洞,可以针对不同CMS存在的上传漏洞进行

      3.5.2绕过。编辑器漏洞:比如FCK,ewebeditor等,可以针对编辑器的漏洞进行绕过。

    3.6 .htaccess文件攻击

           上传当前目录.htaccess 文件然后修改为以下内容:AddType application/x-http-php .jpg,这样我们再上传一句话或者其他脚本以jpg结尾的,服务器会自动当做PHP解析

    3.7WAF绕过

           针对waf主要是通过去探测waf的一些过滤规则,针对它的过滤规则进行绕过,自己可以在本地搭环境使用同版本waf进行查看规则库。

    四、防御方法

           4.1文件扩展名服务端设置白名单校验。

      4.2对于某些文件可以进行文件大小的限制。

      4.3对于文件内容进行服务端校验。

      4.4对于上传文件进行重命名。

      4.5隐藏用户上传的文件路径。

      4.6限制文件存储目录的执行权限,避免用户上传的文件可以getshell。

    五、危害

           针对上传功能的Dos攻击

      使上传文件在服务器上作为脚本执行,进一步可能获取shell

      越权下载文件,例如被源码被盗、脱库等等

  • 相关阅读:
    【Mysql】可视化工具
    【Mysql】Mysql 各个版本区别
    【Linux】rpm常用命令及rpm参数介绍
    【Mysql】mysql和mariadb的区别
    【CentOS】设置服务开机自动启动
    【Linux】查看所使用的Linux系统是32位还是64 位的方法
    【Linux】安装openssh-server依赖openssh-client版本错误的解决办法
    【Linux】apt-get 源地址汇总
    【Linux】编辑文件时,箭头按键还有BACKSPACE按键不能正常使用的解决办法
    VMware设置桥接上网
  • 原文地址:https://www.cnblogs.com/bin1121/p/12564808.html
Copyright © 2011-2022 走看看