文件上传漏洞

是什么:

用户上传了一个可执行的脚本文件,并通过此文件获得了执行服务器端命令的能力。

原理:

程序员开发文件上传功能时,没有考虑文件格式后缀的合法性校验或者只是在前段通过js进行后缀检验,利用网站或者是应用系统的上传功能上传一个与之脚本语言对应的恶意代码到服务器中,

防范手段:

  1. 文件类型/大小/后缀检测,前端通过JavaScript验证,文件扩展,文件大小,后端检测MIME类型等,白名单过滤,文件重命名,文件大小
  2. 最小权限运行web服务
  3. 上传文件目录修改权限,不给上传文件执行权限,即使上传了木马也无法执行,读写权限分离
  4. 安装WAF进入深度检测,安全狗,阿里云盾等

过程:

文件上传漏洞_第1张图片

类型:
1.无限制:

(1)直接用1.php放一句话木马上传

2.绕过前端:

(1)Javascript绕过:

    浏览器设置中选择禁用javascript即可

(2)抓包修改:

    burpsuite抓包后修改filename

3.绕过服务端:

(1)黑名单绕过:

    例如:不允许php,jsp文件上传,则使用1.php3,1.php5等上传

(2)白名单绕过:

    例如:允许图片只允许jpg,则抓包改后缀改php为jpg

(3)MIME绕过:

    MIME通过通过检查http包的Content-Type字段来判断上传文件是否合法,所以把类型改成允许上传的格式即可
    文件上传漏洞_第2张图片

(4)文件头欺骗:

    例如:只允许jpg上传,且文件头必须符合jpg格式。则使用含有jpg文件头的一句话马上传即可

(5)解析漏洞:

    apache解析漏洞:
        apache文件解析规则:文件从右向左判断,后缀名不认识则继续识别,直到寻找到可以识别的文件名,如果都不能识别则暴露源码。
        则可以这样定义:1.php.qwe.asd绕过文件识别
    IIS解析漏洞:
        原理: IIS中建立.asa,.asp文件时,其目录下的所有文件都会被当成asp文件解析
        方法:在1.asp文件夹中放个1.txt文件,内容为<%=now()%>,则1.txt文件就会被当成脚本解析
    Nginx解析漏洞:
        方法:在下面这个链接中,此时1.jpg会被当成1.php解析,但是3.php不存在,则可以在1.jpg中放php木马获得webshell

 http://....../1.jpg/3.php

4.其他

1-大小写绕过

    如果禁止php文件上传,把文件名改成pHp,PhP等绕过

2-00截断绕过

    利用解析漏洞,利用00字符截止判断,例如1.php%00.jpg,或者1.php0x00.jpg

3-.htaccess绕过

    .htaccess是apache配置文件,提供自定法则让服务器运行,例如如下1.htaccess文件,上传后再上传1.png即可获得webshell


 SetHandler application/x-httpd-php

#进行文件名的正则匹配,服务器会对文件名为1.png当做php解析

4-双写绕过

    如果禁止php文件上传,把文件名改成1.phphpp即可,其中中间的php过滤掉后仍可成功上传

5-点绕过

    如果服务器开启了黑名单过滤,则可采用1.php.的方式(仔细看有两个点)绕过并解析

6-二次渲染绕过

    有些网站会使用二次渲染清除恶意代码,使上传的一句话木马失效
    方法:做图片马,上传后发现被清除,下载源码和上传的进行比较,发现未被渲染的字段之后把一句话马放到未被渲染的字段即可获得webshell
 

 

你可能感兴趣的:(常见漏洞总结,web安全,安全)