zoukankan      html  css  js  c++  java
  • OWASP要素增强Web应用程序安全(5) java程序员

     

    恶意文件的执行是另外一种应用输入失控制导致的弱点。在这个系列文章中的第四篇,Tom Olzak将解释恶意代码执行的本质以及对防止Web应用免遭相关袭击的一些建议。

    恶意文件执行,在OWASP Top Ten中也叫远程文件包含不安全,是一种由于直接使用或将未经确认的输入串联成文件或流函数造成的漏洞。许多Web应用程序中都存在这种漏洞,但我们可以通过着重于保证合理软件担保水平的编码步骤和技巧来预防这种脆弱性。

    工作原理

    利用这种脆弱性的攻击者主要寻找无法禁止或控制上传文件执行的Web应用程序。PHP 4.0.4——5.x在默认情况下易于受到这种攻击。其它应用环境,如.NET和J2EE,如果允许文件上传并执行Web目录中的功能,也容易受到这种攻击。

    图A是取自OWASP Top 10 RC1的一个潜在危险性结构的简单例子。

    OWASP要素增强Web应用程序安全(5)

    图A 一个危险的结构

    受到感染的输入可能从某台服务器上下载一个文件,并在调用应用程序时执行。它还可在易于受到当地目录游走攻击的系统上运行当地程序。

    当地目录游走是指修改地址字符串以访问执行Web应用程序系统上其它目录的行为。即使攻击者不上传文件,如果他知道常用的可执行文件位于某种操作系统的哪个目录,仍然可以帮助他访问脚本和其它可执行文件。图B是当地目录游走攻击的一个实例。

    OWASP要素增强Web应用程序安全(5)

    图B 目录游走攻击

    这个摘自Web应用程序安全联盟的例子,描述了一个使用特殊字符序列的进行的游走攻击。它用“../”在目录中游走来输入脚本目录。“%00”允许攻击者避开任何文件扩展名检查。攻击的结果使得攻击者能够查看foo.cgi文件。

    如果目录许可配置不正确,攻击者不仅能够查看文件,还能够修改和执行文件。另外,攻击者上传的恶意脚本能够轻松地插入访问控制存在缺陷或没有访问控制的目录中。因此,很容易利用这种漏洞来发动一个恶意文件执行攻击。

    利用这个缺陷还可以进行另外两种攻击:

    ◆在会话文件、日志数据中上传恶意数据,以及通过镜像上传

    ◆允许没有经过合格检查的恶意压缩或声频流上传

    恶意文件执行的防御

    针对文件包含漏洞的攻击造成的商业影响和实施的沙箱和其它应用程序隔离平台的强度成直接比例关系。虽然.NET和J2EE应用程序通常被排除在它们的执行环境之外,但PHP也没有沙箱/隔离功能。

    在防御使用文件包含攻击向量的威胁时,输入确认是另一个重要的因素。我们在这个系列的第3部分和Web应用程序安全:未经确认的输入中详细说明了确认问题。其它防御措施还包括:

    ◆隐藏服务器文件名。
    ◆禁用PHP.INI文件中的allow_url_fopen和allow_url_include。
    ◆配置防火墙,使得服务器无法与外部网站或内部系统建立连接;考虑应用网络分割保护重要或高敏感性的系统和数据。
    ◆考虑使用常量或用户无法使用的脚本输入类型。
    ◆使用文档类型定义来定义允许的文档结构。

    总结

    恶意文件的执行是一种可以预防的缺陷。实施输入确认和拒绝执行包含文件的编码实践是一个好的开端,但正确配置基本的基础架构也能有效地防止恶意代码的执行。考虑在开发过程中进行全面的访问控制和防火墙配置,以保护信息资产,阻止攻击者执行恶意文件或达到预计的攻击目的。

  • 相关阅读:
    Python 编码错误解决方案
    Slf4j 打日志的问题 Exception 没有堆栈信息
    朋友遇到过的t厂面试题
    php 加密解密算法
    mysql replace into用法详细说明
    python3 return print 之间的差异
    mac多版本python安装 pymysql
    thinkphp 在做搜索时的注意点
    get_object_vars()
    php中var关键字的作用和意义
  • 原文地址:https://www.cnblogs.com/java20130725/p/3216025.html
Copyright © 2011-2022 走看看