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

  • 全称:XML External Entity

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

    • 危害
      • 外界攻击者可读取商户服务器上的任意文件;
      • 执行系统命令;
      • 探测内网端口;
      • 攻击内网网站。
      • 商户可能出现资金损失的情况
    • 防御
      • 升级libxml的版本>2.9.1
        • 该版本之后默认不解析外部实体
      • 禁用外部实体解析
      • 过滤用户的提交文本中的关键词<!DOCTYPE等
      • 不允许xml中有自己声明的DTD
      • 设置xml解析使用静态的DTD文件;不允许引用外部的DTD
    • 查找方法
      • 抓包,查看MIME类型是否为xml
      • 抓包,post请求+以下一种格式则可能存在xxe
        • content-type:application/xml text/xml application/json
      • 页面文件为.ashx格式
        • 可以修改文本类型为application/xml进行注入尝试
      • 这对前端无回显的情况
        • 将网站生成的连接作为实体引入
        • 通过该网站进行查看是否有回显:DNSLOG Platform (dig.pm)
  • XML语言:可扩展的标记语言

    • 用于程序之间的数据通信;常用于配置文件中
    • 文档结构
      • xml声明
        • <?xml version=“1.0” encoding=“UTF-8”?>
      • DTD:文档类型定义(文档框架)
        • 内部文档声明
          • <!DOCTYPE 根元素名称 [声明元素的位置] >
          • <!DOCTYPE note[<!ELEMENT note(to,from,heading,body)> <!ELEMENT to(#PCDATA)> <!ELEMENT form(#PCDATA)><!ELEMENT heading(#PCDATA)><!ELEMENT body(#PCDATA)>]>
        • 外部文档声明
          • <!DOCTYPE 根元素名称 SYSTEM "文件名"
          • <!DOCTYPE note SYSTEM "http:127.0.0.1/1.txt">
        • 实体:<!ENTITY >
          • 普通实体
            • <!DOCTYPE ANY[<!ENTITY xxe "123">]> <value>&xxe</value> 内部引用
            • <!DOCTYPE ANY[<!ENTITY xxe "http://127.0.0.1/1.txt">]> <value>&xxe</value> 外部引用
          • 参数实体(只能用于DTD中)
            • <!DOCTYPE root[<!ENTITY %A "<!ENTITY xxe "123">">%A;]> <value>&xxe</value>
            • <!DOCTYPE root[<!ENTITY %A SYSTEM "http://127.0.0.1/1.txt">%A;]> <value>&xxe</value>
      • 元素
        • 实体:用于定义普通文本的变量

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/450489.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【日常聊聊】开源软件影响力

&#x1f34e;个人博客&#xff1a;个人主页 &#x1f3c6;个人专栏&#xff1a;JAVA ⛳️ 功不唐捐&#xff0c;玉汝于成 目录 前言 正文 方向一&#xff1a;开源软件如何推动技术创新 方向二&#xff1a;开源软件的商业模式 方向三&#xff1a;开源软件的安全风险 方…

力扣刷题之旅:启程篇(一)

力扣&#xff08;LeetCode&#xff09;是一个在线编程平台&#xff0c;主要用于帮助程序员提升算法和数据结构方面的能力。以下是一些力扣上的入门题目&#xff0c;以及它们的解题代码。 --点击进入刷题地址 1. 两数之和 题目描述&#xff1a; 给定一个整数数组 nums…

2024美赛E题数学建模思路代码数据分享

2024 ICM Problem E: Sustainability of Property Insurance 本题要求选取不同大陆上经历极端天气的两个地区来为保险公司开发模型&#xff0c;本题的重点是找到尽可能多而全的数据&#xff0c;包括天气数据&#xff0c;经济数据&#xff0c;人口数据等。 模型选择&#xff1a…

洛谷-P4124题-手机号码-Java

题目 题目链接&#xff1a; https://www.luogu.com.cn/problem/P4124 分析 给定两个长度为11位的数字&#xff0c;代表两个区间 [L,R] 需要编写程序来计算出&#xff0c;这两个区间内满足要求的数字个数。这样的题一般来说就是数位dp题。首先我们可以根据容斥原理 [0,R]中满…

STM32--USART串口(1)串口协议

一、通信接口 全双工&#xff1a;通信双方能够同时进行双向通信&#xff1b; 半双工&#xff1a;通信双方能够进行双向通信&#xff0c;但不能同时通信&#xff1b; 单工&#xff1a;只能从一个设备到另一个设备&#xff1b; 同步&#xff1a;接收方可以在时钟信号的指引下进…

回溯法:回溯法通用模版汇总以及模版应用

从一个问题开始 给定两个整数 n 和 k&#xff0c;返回 1 ... n 中所有可能的 k 个数的组合。 示例: 输入: n 4, k 2 输出: [ [2,4], [3,4], [2,3], [1,2], [1,3], [1,4] ] 很容易想到 用两个for循环就可以解决。 如果n为100&#xff0c;k为50呢&#xff0c;那就50层for循…

LabVIEW直流电机转速检测与控制

研究了使用LabVIEW软件和ELVIS实验平台来检测和控制直流电机的转速。通过集成光电传感器和霍尔传感器&#xff0c;实现了对电机转速的精确测量和调节。 系统组成&#xff1a;系统由NI ELVIS实验平台、光电传感器、霍尔传感器和直流电机组成。通过这些硬件元件&#xff0c;系统…

day25打卡

day25打卡 216. 组合总和 III 画出决策树 递归出口&#xff1a;path.size() k子问题&#xff1a;从pos开始枚举每个数字剪枝&#xff1a;count 提前大于 n&#xff0c;返回即可时间复杂度&#xff1a;O(N * 2^N)&#xff0c;空间复杂度&#xff1a;O(N) class Solution { p…

前端JavaScript篇之JavaScript有哪些内置对象

目录 JavaScript有哪些内置对象常见的内置对象的简单描述和参考代码总结 JavaScript有哪些内置对象 JavaScript中常见的内置对象包括&#xff1a; Object&#xff1a;用于创建对象的构造函数&#xff0c;对象是键值对的集合&#xff0c;用于存储和传递数据。 Array&#xff1…

基于自适应支持向量机的matlab建模与仿真,不使用matlab的SVM工具箱函数

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 matlab2022a 3.部分核心程序 ............................................................ figure; subplot(131); for …

MySQL默认的连接数151如何修改

在MySQL中修改 max_connections 的值可以通过以下几种方法进行&#xff1a; 1. 临时修改 可以通过MySQL命令行临时修改 max_connections 的值。这种修改直到下次MySQL服务重启时才会失效。要进行临时修改&#xff0c;可以使用以下命令&#xff1a; SET GLOBAL max_connectio…

24.Android中的列表--ListView

ListView 1.简单列表--ArrayAdapter <?xml version"1.0" encoding"utf-8"?> <ScrollView xmlns:android"http://schemas.android.com/apk/res/android"xmlns:app"http://schemas.android.com/apk/res-auto"xmlns:tools&qu…