zoukankan      html  css  js  c++  java
  • Fortify漏洞之XML External Entity Injection(XML实体注入)

      继续对Fortify的漏洞进行总结,本篇主要针对  XML External Entity Injection(XML实体注入) 的漏洞进行总结,如下:

    1.1、产生原因:

      XML External Entities 攻击可利用能够在处理时动态构建文档的 XML 功能。XML 实体可动态包含来自给定资源的数据。外部实体允许 XML 文档包含来自外部 URI 的数据。除非另行配置,否则外部实体会迫使 XML 解析器访问由 URI 指定的资源,例如位于本地计算机或远程系统上的某个文件。这一行为会将应用程序暴露给 XML External Entity (XXE) 攻击,从而用于拒绝本地系统的服务,获取对本地计算机上文件未经授权的访问权限,扫描远程计算机,并拒绝远程系统的服务。

    下面的 XML 文档介绍了 XXE 攻击的示例: 

    <?xml version="1.0" encoding="ISO-8859-1"?>
    <!DOCTYPE foo [
    <!ELEMENT foo ANY >
    <!ENTITY  xxe  SYSTEM "file:///dev/random" >]><foo>&xxe;</foo>


    如果 XML 解析器尝试使用 /dev/random 文件中的内容来替代实体,则此示例会使服务器(使用 UNIX 系统)崩溃。

    例:

     

    图1.1.1:未对XML实体解析方法做安全配置的实例

     

    1.2、修复方案:

    应对 XML unmarshaller 进行安全配置,使它不允许将外部实体包含在传入的 XML 文档中。为了避免 XXE injection,请勿将直接处理 XML 源的 unmarshal 方法用作 java.io.File、java.io.Reader 或 java.io.InputStream。使用安全配置的解析器解析文档并使用将安全解析器作为 XML 源的 unmarshal 方法,如下面的示例所示:

    例:

     

    图1.2.1:对XML实体解析方法做安全配置的实例

  • 相关阅读:
    django基础知识之模型查询:
    django基础知识之定义模型:
    django基础知识之ORM简介:
    django基础知识之认识MVT MVC:
    解决ImportError: libmysqlclient_r.so.16: cannot open shared object file-乾颐堂
    python 多继承详解-乾颐堂
    一步步来用C语言来写python扩展-乾颐堂
    nltk 之 snowball 提取词干-乾颐堂
    Python 执行js的2种解决方案-乾颐堂
    常用的 Python 调试工具,Python开发必读-乾颐堂
  • 原文地址:https://www.cnblogs.com/meInfo/p/9017086.html
Copyright © 2011-2022 走看看