资讯详情

浅析文件上传漏洞

文章目录

    • 文件上传
      • 成因
      • 客户端校验
      • 服务器校验
      • 原理
      • 危害
      • 防御
      • 解析漏洞

文件上传

成因

  • 对上传文件的后缀名(扩展名)没有严格限制
  • 上传文件MIMETYPE 没有做检查
  • 上传文件的文件权限在权限上没有控制(特别是对于shebang类型文件)
  • 对于web server对上传文件或指定目录的行为没有限制

客户端校验

  • 前段js验证

    • 可通过审计修改js代码或burp改包绕过

服务器校验

  • content-type字段校验

    • 将Content-Type修改为image/gif,或其他允许类型
    • 删除整行
    • 删除掉ontent-Type: image/jpeg只留下c,将.php加c后面就可以了,但是要注意引号要跟着c.php
    • 将Content-Type修改为content-Type
    • 将 Content-Type: application/octet-stream 冒号后面 增加空间
  • 文件头校验

    • 将文件头修改为允许上传文件类型的文件头
  • 检查扩展名

    • 黑名单策略

      • 列表名绕过

        • 找到黑名单中漏网的鱼,比如asa,cer,cer,ashx,asa,cer,cdx,htr,
      • 大小写绕过

        • 比如aSp,pHp等
      • 可分析的后缀名:jsp,jspx,jspf,asp,asa,cer,aspx,ashx,php,php ,php3,php4,exe,exee

      • 上传.htaccess文件

        • 通过.htaccess 文件调用 php 只要包含一个文件名,分析器就可以分析。cimer字符串的任何文件。.htaccess 文件可以绕过许多上传验证机制。(配合黑名单检测)

          • 1.建立.htaccess 内容如下:<FilesMatch “cimer”> SetHandler application/x-httpd-php

          • 上传 php 包括木马文件名 cimer

            • 设置句子密码cimer
        • 利用 php 解析器来解析 jpg 文件创建.htaccess 文件内容如下:AddType application/x-httpd-php .jpg

      • 空格绕过

        • 在后缀名后加空格
      • 文件名绕过

        • php1,php2,php3,php4,php5,Php,aSp
      • 绕过特殊字符

        • 1.asp_
    • 白名单策略

      • 通过分析漏洞上传
    • 0x00截断绕过

      假设文件的上传路径是【http://xx.xx.xx.xx/upfiles/lubr.php.jpg】,抓包切断将【lubr.php】后面的【.】换成【0x00】。上传时,文件系统读取0x00会认为文件已经结束,从而结束【lubr.php.jpg】内容写入【lubr.php】从而达到攻击的目的。 上传抓包后(如果上传)jpg文件名字为1.jpg)在hex中找到1.jpg对应的十六进制,将.相应的十六进制(.十六进制是2e)改为00,go,上刀连接就行了

      • 00截断是指程序员在编写程序时不严格过滤文件的上传路径,产生0x00上传截断漏洞。PS:0x00是字符串的结束标志

      • 例:1.php.jpg

      • 限制条件

        • PHP<5.3.29,且GPC关闭
      • 原理

        • 0x00是字符串的结尾标识符。如果系统在阅读文件名时遇到0x00,你会认为取已经结束。
        • 注:00是指文件16进制内容中的00,而不是文件名中的00 !!!也就是说,系统按16进制读取文件(或二进制)ascii代码为零的位置停止,这个位置ascii在16进制中,代码为零的位置为00,用0x开头说16进制,也就是说0x00截断。
    • 绕过双扩展名

      • apache的conf配置有AddHandler php5-script.php没有注释,文件名1.php.jpg就能当作php执行
  • 验证文件类型

    • 通过抓包将content-type将允许上传的上传的类型

原理

文件上传漏洞是指网络攻击者将可执行的文件上传到服务器上,没有任何检查或过滤,导致文件执行。这里上传的文件可以是木马、病毒、恶意脚本或WebShell等。

危害

  • 上传文件是Web脚本语言,服务器的Web用户上传的脚本由容器解释和执行,导致代码执行。
  • 上传文件是Flash的策略文件crossdomain.xml,控制黑客Flash该领域下的其他行为(类似于以类似方式控制策略文件);
  • 上传的文件是病毒和木马文件,黑客用来引诱用户或管理员下载和执行。
  • 上传的文件是钓鱼图片或包含脚本的图片,在某些版本的浏览器中被用作钓鱼和欺诈的脚本。

防御

  • 白名单策略用于验证文件扩展名服务端。
  • 服务端验证文件内容
  • 随机重新命名上传文件
  • 隐藏上传文件的路径
  • 文件上传的目录设置为不可执行
  • 单独设置文件服务器的域名

解析漏洞

IIS 6.0 在处理含有特殊符号的文件路径时,会出现逻辑错误,导致文件分析漏洞。

  • IIS解析漏洞

    • IIS6.0

      • /目录分析:/xx.asp/xx.jpg ,若目录为"xxx.asp"如果以形式命名,目录中的所有类型文件都将被视为asp分析和执行文件

      • 文件解析:test.asp;.jpg ,在IIS6.0下,分号后面不分析,也就是说test.asp;.jpg它将被服务器视为是test.asp

      • 还有IIS6.0 默认可执行文件除外asp还包括这三种.asa、.cer、.cdx

      • PUT漏洞

        • 成因:IIS Server 在 Web 服务扩展开始了 WebDAV ,可以写入的配置限,造成任意文件上传。

        • 修复

          • 关闭 WebDAV 和写权限
      • 短文件名猜解 PS:IIS6.0~10.0都受影响

        • 成因:IIS 的短文件名机制,可以暴力猜解短文件名,访问构造的某个存在的短文件名,会返回404,访问构造的某个不存在的短文件名,返回400。

        • 修复

          • 升级 .net framework

          • 修改注册表禁用短文件名功能

            • 快捷键 Win+R 打开命令窗口,输入 regedit 打开注册表窗口,找到路径:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem,将其中的 NtfsDisable8dot3NameCreation这一项的值设为 1,“1”代表不创建短文件名格式,修改完成后,需要重启系统生效

			- CMD 关闭 NTFS 8.3 文件格式的支持
			- 将 web 文件夹的内容拷贝到另一个位置,如 c:\www 到 d:\w ,然后删除原文件夹,再重命名 d:\w 到 c:\www。
			- 修复成功后显示:Server is not vulnerable

		- 局限性

			- 此漏洞只能确定前6个字符,如果后面的字符太长、包含特殊字符,很难猜解
			-  如果文件名本身太短(无短文件名)也是无法猜解的
			- 如果文件名前6位带空格,8.3格式的短文件名会补进,和真实文件名不匹配

	- 远程代码执行

		- 成因:在 IIS6.0 处理 PROPFIND 指令的时候,由于对 url 的长度没有进行有效的长度控制和检查,导致执行 memcpy 对虚拟路径进行构造的时候,引发栈溢出,从而导致远程代码执行。
		- 修复

			- 关闭WebDAV服务
			- 使用相关防护设备

- IIS7.0/7.5

	- test.jpg/.php  

	  URL 中文件后缀是 .php ,便无论该文件是否存在,都直接交给 php 处理,而 php 又默认开启 “cgi.fix_pathinfo” ,会对文件进行“修理”,可谓“修理”?举个例子,当 php 遇到路径 “/aaa.xxx/bbb.yyy” 时,若 “/aaa.xxx/bbb.yyy” 不存在,则会去掉最后的 “bbb.yyy” ,然后判断 “/aaa.xxx” 是否存在,若存在,则把 “/aaa.xxx” 当作文件。
	  
	  若有文件 test.jpg ,访问时在其后加 /.php ,便可以把 “test.jpg/.php” 交给 php ,php 修理文件路径 “test.jpg/.php” 得到 ”test.jpg” ,该文件存在,便把该文件作为 php 程序执行了。

修复

  • 对新建目录文件名进行过滤,不允许新建包含‘.’的文件
  • 取消网站后台新建目录的功能,不允许新建目录;
  • 限制上传的脚本执行权限,不允许执行脚本;
  • 过滤 .asp/xm.jpg,通过 ISApi 组件过滤。

标签: lubr射频电容液位计

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台