无限制的文件上传

描述

上传的文件代表了显著风险的应用程序。在许多攻击的第一步骤是获得一些代码来对系统进行攻击。那么攻击只需要找到一种方式来获得执行的代码。使用文件上载帮助攻击者完成第一步。

不受限制的文件上传的后果可能会有所不同,包括完整的系统接管,超载文件系统或数据库,转发攻击后端系统,以及简单的污损。这取决于应用程序是否与上传的文件是什么,尤其是存储位置。

实际上有两类问题在这里。第一个是与文件的元数据,如路径和文件名。这些通常由传输提供的,如HTTP多部分编码。这些数据可能欺骗应用到覆盖一个关键的文件或存储在一个糟糕的位置的文件。您必须在使用前仔细无比验证的元数据。

另一类问题与文件大小或内容。问题的范围在这里完全取决于什么文件的用途。请参阅以下有关文件如何被滥用的一些想法的例子。为了防止这种类型的攻击,你应该分析与文件的一切你的应用程序确实,仔细想想涉及什么样的处理和解释。

风险因素

  • 此漏洞的影响高,应该代码可以在服务器范围内或在客户端上执行。对于攻击者的检测的可能性很高。患病率是常见的。因此,此类型的漏洞的严重程度为高。
  • Web服务器可以通过上载和执行web的壳可以运行命令,浏览系统文件,浏览本地资源,攻击其他服务器,并利用本地漏洞等受到损害。这也可能导致的污损。
  • 攻击者可能能够把一个钓鱼页面进入网站。
  • 攻击者可能能够把存储XSS到网站。
  • 此漏洞可以使网站易受一些其他类型的诸如攻击XSS
  • 图片上传可能引发客户端上破图片库漏洞(的libtiff,IE在过去的问题)如果图片发布1:1。
  • 脚本代码或其他代码可以嵌入在上传的文件,如果图片发布1其中得到执行:1。
  • 实时监控工具本地漏洞,比如防病毒,可以被利用。
  • 在服务器上或管理员或网站管理员的客户端 - 恶意文件(UNIX shell脚本,窗户病毒,反壳)可以在服务器上,以便由管理员或管理员以后执行代码上传。
  • 的网络服务器可能以包含恶意,非法软件,色情和其他对象的被用来作为一个服务器。


弱保护方法和旁路方法

使用黑名单文件“扩展

一些web应用程序仍然使用扩展的只有黑色列表上载恶意文件来防止。

  • 它是通过使用一些扩展它们是在服务器上执行,但在列表中没有提及绕过这种保护。(实施例:“file.php5”,“file.shtml”,“file.asa”或“file.cer”)
  • 有时也可以通过改变扩展的一些字母资本形式(例如:“file.aSp”或“file.PHp3”)绕过此保护。
  • 使用尾随空格和/或点在文件名末尾有时可引起绕过保护。当文件要被自动保存在硬盘上的文件名的末尾这些空间和/或点将被删除。文件名可以通过使用本地代理或使用一个简单的脚本(例如被发送到服务器:“。file.asp ...... .. ..”,“file.asp”或“file.asp “)。
  • 一个Web服务器可能会在文件名中的第一个点之后,使用第一个扩展名(“。”),或使用特定的优先级算法来检测文件扩展名。因此,保护​​可以通过点字符后上传了两个扩展的文件被绕过。第一个是被禁止的,而第二个被允许(例如:“file.php.jpg”)。
  • 在使用IIS6(或以前的版本)的情况下,有可能被禁止的后延,并允许扩展名之前添加一个分号绕过这个保护(例如:“file.asp; .JPG”)。
  • 在使用IIS6(或以前的版本)的情况下,有可能通过将一个可执行文件,如ASP与文件夹中的另一部分,如“.asp的”(例子与行政扩展名结尾绕过这个保护:“文件夹中.asp的\ file.txt的“)。此外,它有可能只是通过使用文件上传和ADS(备用数据流),以创建一个目录。在这种方法中,文件名应为“:: $ Index_Allocation”或结束“:$ I30:$ Index_Allocation”来创建一个目录,而不是一个文件(例如:“newfolder.asp :: $ Index_Allocation”创建“newfolder.asp”为新目录)。
  • 这种保护可以通过禁止后延和允许的人之前使用类似零(0x00)的如控制字符完全绕过。在这种方法中,在保存过程中,空字符后的所有字符串将被丢弃。在文件名把一个空字符可以使用本地代理,或通过使用脚本(“file.asp%00.jpg”的例子),简单地完成。此外,如果空字符直接插入使用本地代理,如Burpsuite或Webscarab在正确的地方的十六进制查看选项(不使用%),这将是完美的。
  • 另外,也可以通过使用NTFS备用数据流(ADS)创建具有禁止扩展名的文件。在这种情况下,一个“:”符号将被禁止的后延及前允许之一插入。其结果是,与禁止扩展空文件将在服务器上创建(例如:“file.asp名:.jpg”)。攻击者可以尝试编辑这个文件来执行他/她的恶意代码。但是,空文件并不总是很好的攻击者。因此,有通过本文的作者中,攻击者可以通过使用ADS上传非空壳文件中的本发明的方法。在该方法中,禁止的文件可以通过使用这个图案被上传:“file.asp :: $数据”。
  • 在Windows服务器,它可以通过使用他们的短名(8.3)取代的文件。(例如:“web.config中”可以被上传改为“网页〜1.con”)
  • 有时上述的组合可导致绕过保护。

使用白名单文件“扩展

许多Web应用程序白名单以接受文件的扩展名。虽然使用白名单的建议之一,它是不够的自身。无需输入验证,还有对于攻击者有机会绕过保护。

  • 第3,第4,第5和最后一节6日在此方法同样适用。
  • 允许扩展名列表进行审查,因为它可能包含恶意推广为好。例如,在列表中的具有“的.shtml”的情况下,该应用程序可以是易受SSI攻击。

从标题使用“内容类型”

在请求的头“内容类型”实体表示邮件内容的互联网媒体类型。有时,Web应用程序,以识别文件作为一个很好的使用此参数。例如,他们只接受文件以“文本/纯”的“内容类型”。

  • 它可以通过使用本地代理改变请求头这个参数来绕过这种保护。

使用文件类型识别器

有时,Web应用程序有意或无意地使用某些功能(或API),以检查文件的类型,以做进一步的处理。例如,在具有图像大小调整的情况下,很可能有图像类型识别器。

  • 有时识别器只是读取文件的几首字符(或头),以检查它们。在这种情况下,攻击者可以经过一些有效的头插入恶意代码。
  • 总有在这对评论部分,并且对主文件没有影响的文件的结构中的一些的地方。并且,攻击者可以插入在这些点的恶意代码。
  • 此外,它也不是不可能去想文件修改(例如图像大小调整),它产生于特殊接收输入的情况下,恶意代码本身。

而对于开发人员和网站管理员的一些特殊的建议:

  • 决不无需白名单过滤器直接接受文件名及其扩展。
  • 有必要对网络应用程序只允许扩展名的列表。而且,文件扩展名可以从列表中选择。例如,它可以是一个“选择的情况下”的语法(在具有的VBScript的情况下),选择在考虑到实际的文件扩展名的文件扩展名。
  • 所有的控制字符和Unicode的人应该从文件名和扩展名没有任何异常被删除。此外,特殊字符,如“;”,“。”“”,“>”,“<”,“/”,“\”,附加的“*”,“%”,“$”,等等上应该也丢弃。如果它是适用的,也没有必要对具有Unicode字符,强烈建议只接受字母数字字符和仅1个点为文件名和扩展名的输入; 在该文件的名称,也是延伸都应该不会是空的(正则表达式:[A-ZA-Z0-9] {} 1200 \ [A-ZA-Z0-9] {1,10})。
  • 限制文件名长度。例如,文件加上其扩展名的最大长度应在NTFS分区上少于255个字符(无任何目录)。
  • 它建议使用一种算法来确定的文件名。例如,一个文件名可以是文件名加当天的日期的MD5哈希值。
  • 上传的目录不应该有任何“执行”权限。
  • 限制文件大小为最大值,以防止拒绝服务攻击(在文件空间或其他Web应用程序的功能,如图像缩放)。
  • 限制小尺寸文件,因为它们可能会导致拒绝服务攻击。因此,文件的最小尺寸应予以考虑。
  • 使用跨站请求伪造保护方法。
  • 从含有两个相同的散列的情况下覆盖文件阻止。
  • 使用的服务器上的病毒扫描(如果它是适用)。或者,如果文件的内容是不保密的,可以使用一个自由病毒扫描的网站。在这种情况下,文件应存储与随机名称,没有在服务器上的任何扩展第一和病毒检查(上传到自由病毒扫描的网站,并取回结果)后,它可以被重新命名为它的具体名称和延期。
  • 尝试使用POST方法,而不是PUT(或GET!)
  • 登录用户的活动。不过,日志机制应采取措施防止日志伪造和代码注入本身。
  • 在具有压缩文件提取功能的情况下,被压缩的文件的内容应该由一个作为新文件检查之一。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值