XXE基础知识整理(附加xml基础整理)

  • 全称:XML External Entity

    • 外部实体注入攻击
    • 原理
      • 利用xml进行读取数据时过滤不严导致嵌入了恶意的xml代码;和xss一样

        XXE基础知识整理(附加xml基础整理)_第1张图片

    • 危害
      • 外界攻击者可读取商户服务器上的任意文件;
      • 执行系统命令;
      • 探测内网端口;
      • 攻击内网网站。
      • 商户可能出现资金损失的情况
    • 防御
      • 禁用外部实体
      • 过滤用户的提交文本中的关键词
      • 不允许xml中有自己声明的DTD
      • 设置xml解析使用静态的DTD文件;不允许引用外部的DTD
    • 查找方法
      • 通过抓包随便输入闭合标签和内容看回显;有回显说明有漏洞
  • XML语言:可扩展的标记语言

    • 用于程序之间的数据通信;常用于配置文件中
    • 文档结构
      • xml声明
      • DTD:文档类型定义(文档框架)
        • 内部文档声明
          • ]>
        • 外部文档声明
        • 实体:
          • 普通实体
            • ]> &xxe 内部引用
            • ]> &xxe 外部引用
          • 参数实体(只能用于DTD中)
            • ">%A;]> &xxe
            • %A;]> &xxe
      • 元素
        • 实体:用于定义普通文本的变量

        • PCDATA:需要被解析的字符数据

        • CDATA:不被解析的字符数据
        • 元素类型(声明时用)
          • EMPTY :不能包含子元素和文本;但可以有属性
          • ANY :可以包含DTD中的任意元素
          • #PCDATA :可以使用任意字符数据;但不能有子元素
        • 属性
          • 属性声明语法
          • 属性类型
            • CDATA
            • (en1|en2|..)
            • ID
          • 默认值
            • #REQUIRED :必须有
            • #IMPLIED :不是必须的
            • #FIXED value :固定值
    • 规则和限制
      • 基础规则
        • xml文档中有且只能有一个根元素
        • 区分大小写
        • 标签格式必须闭合而且一一对应;只有双标签;否则出错
        • 特殊字符必须用文本实体编码代替;& " ' < >等
        • 实体编码必须以&开头;结束;格式要规范
        • 允许多余空格保留
      • 元素命名规则
        • 不能有xml(大小写)开头的名字
        • 不能数字和标点符号开头
        • 不能包含空格
        • 名字中可以有字符、数字、特殊符号
      • 属性规则
        • 不能包含多个值
        • 不能包含子节点
        • 值必须用引号包裹;引号都会用双引号进行解析

你可能感兴趣的:(xml,web安全,笔记)