首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

XML接口下POST型反射XSS的攻防探究

一方面,后端错误的将XML节点传入的HTML实体字符解码成HTML特殊字符,且值攻击者可控;另一方面,尽管是一处XML接口,但响应头中的Content-Type被配置成了text/html,也就意味着浏览器会解析响应中的...这说起来容易,但本案例却有两个“利用门槛”: 普通HTML表单会将POST请求体编码,导致XML结构被破坏,服务器抛出错误。 HTML表单默认键值形式提交,但本例中的整个请求体都是XML结构。...HTML实体在浏览器发请求时被转回特殊符号,也就是说,浏览器实际发出的请求是这样的: 浏览器会解一次HTML实体,可以尝试两次实体编码。试了一下,果然是这样。...如果将Content-Type设置为text/xml,即便能注入HTML特殊字符,XSS也无法利用。

2.1K40
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    XML语法规则

    一、XML文件的组成 文档声明 元素 属性 注释 CDATA区 、特殊字符 处理指令(PI:Processing Instruction) 二、文档声明 1、在编写XML文档时,需要先使用文档声明来声明...且必须出现在文档的第一行。 2、最简单的语法: xml version="1.0”?> 3、用encoding属性说明文档所使用的字符编码。保存在磁盘上的文件编码要与声明的编码一致。 如: 常见错误: 编码错误 三、元素(标签) 注意:xml中的标签是可以随意写的跟html不一样,html中的标签是已经固化好了的 1、XML元素指XML文件中出现的标签。...5、由于在XML中,空格和换行都作为原始内容被处理,所以,在编写XML文件时,使用换行和缩进等方式来让原文件中的内容清晰可读的“良好”书写习惯可能要被迫改变。...的属性值须加引号 特殊字符必须转义 — CDATA XML 中的空格、回车换行解析时会被保留

    1.2K10

    XML基本语法

    导入一个XML文件可分为如下几部分内容:文档声明 、元素、属性、注释 、CDATA区 ,特殊字符 、处理指令 (processing instruction)等。        ...在XML中,标签与标签是不同的。       必须使用相同的大小写来编写打开标签和关闭标签: 这是错误的。...(6)实体引用       在XML中,一些字符拥有特殊的意义。...为了避免把字符数据和标签中需要用到的一些特殊符号相混淆,XML还提 供了实体引用       如果你把字符"XML元素中,会发生错误,这是因为解析器会把它当作新元素的开始。      ...< 1000 then   在XML中,有 5 个预定义的实体引用:       注释:在XML中,只有字符"<"和"&"确实是非法的。

    1.3K100

    XXE实体注入漏洞详解

    原理 既然XML可以从外部读取DTD文件,那我们就自然地想到了如果将路径换成另一个文件的路径,那么服务器在解析这个XML的时候就会把那个文件的内容赋值给SYSTEM前面的根元素中,只要我们在XML中让前面的根元素的内容显示出来...另外,一般来说,服务器解析XML有两种方式,一种是一次性将整个XML加载进内存中,进行解析;另一种是一部分一部分的、“流式”地加载、解析。...可以嵌入在XML文档中(内部声明),也可以独立的放在一个文件中(外部引用),由于其支持的数据类型有限,无法对元素或属性的内容进行详细规范,在可读性和可扩展性方面也比不上XML Schema。...寻找XXE 检测xml是否被解析 尝试注入特殊字符,使XML失效,引发解析异常,明确后端使用XML传输数据。 单双引号 ' " :XML的属性值必须用引号包裹,而数据可能进入标签的属性值。...CDATA 分隔符]]> :CDATA[foo]]>中的内容不被解析器解析,提前闭合引发异常。 检测是否支持外部实体解析 尝试利用实体和DTD。 引用外部DTD文件访问内网主机/端口 :<!

    1.2K20

    XML介绍

    通俗的讲,XML文件一般用来保存有关系的数据。除此之外,在程序开发中,我们通常用来做各种框架的配置文件。...2、XML 文件由以下几个部分组成:   ①、文档声明   ②、元素   ③、属性   ④、注释   ⑤、CDATA区、特殊字符   ⑥、处理指令(processing intruction) 一、文档声明...xml version="1.0" ?>   ②、用 encoding 属性说明文档的字符编码:     xml version="1.0" encoding="utf-8" ?...>     常见的字符编码:gbk,gb2312,utf-8,基本上我们使用utf-8,全世界通用,不会出现乱码的现象。   ③、用 standalone 属性说明文档是否独立:     --> 五、CDATA区和特殊字符 ①、在编写 XML 文档时,有些内容可能不想让解析引擎解析执行,而是当做原始内容处理,那么我们就可以把这些内容放到 CDATA区里面,对于 CDATA

    1.2K100

    JavaWeb学习——4.XML

    文档声明必须写在xml文件的第一行第一列!  xml中文乱码问题,保存时候的编发和设置打开时候的编码一致即可  ?...  (4)属性的命名规范和标签相同 4.注释,特殊字符  注释:  写法:  注意:注释是不能嵌套的,也就是注释之中时不能再写注释的  助事业不能放在第一行第一列,因为这个地方必须放文档声明 特殊字符:...5.CDATA区  可以解决多个字符都需要转义的操作  把这些内容都放到CDATA区之中,就不需要再额外转义了  CDATA写法: 1 ?...  简单元素:没有子元素  复杂元素:有子元素  (3)在xml文件中引入dtd文件 ?...注意:打开xml文件使用浏览器打开的,浏览器只负责校验xml的语法,不负责校验约束  如果想要校验xml的约束,需要使用工具(可以使用myeclipse的工具)  打开myeclipse开发工具  创建一个项目

    73420

    XML(一)XML大揭秘

    PCDATA(Parsed Character Data):指可以被xml解析器解析的内容,有些特殊字符需要借助实体来被解析器解析,XML中的正常内容都是属于PCDATA。   ...[CDATA["你好啊 &"'abc"]]>     输出结果:"你好啊 &"'abc" 2.8、实体引用   在XML中,一些字符拥有特殊的意义...如果您把字符"XML元素中,会发生错误,这是因为解析器会把它当作新元素的开始。...2.9、XML中的注释   在XML中编写注释的语法与HTML的语法很相似。   注释可以出现在任意位置。   注释不可嵌套使用。...>”结尾,xml头部声明就是最常见的一种处理指令,告诉解析器采用什么字符编码解析内容。   xml文档中可以有多个处理指令。

    2.3K90

    android学习笔记----xml语法、约束、解析

    ---- xml作用: 一:可以在客户端/服务器之间传递数据 二:用来保存有关系的数据 三:用来做配置文件 在android中的界面的布局文件、清单文件都是用xml文件来描述的。...所有的浏览器都可以解析xml xml语法: xml文件的encoding默认是:"utf-8",但是如果用记事本编辑xml,保存的时候默认ANSI,代表使用平台的编码表gbk保存,不指定编码的话,在解析的时候可能会出现问题...那么操作如下: 浏览器打开效果: 特殊字符: 要想直接显示大于号小于号,则需要转义字符 XML约束: 有效的xml一定是格式良好的xml,而格式良好的xml不一定是有效的xml DTD约束:...COMMENT的属性CDATA表示这个属性只能是普通文本字符串,#IMPLIED表示这个属性可有可无,假如属性加上(a|b)就表示只能从“a”或“b”任选其一,上面的在xml文档中的DTD,那么编码没有要求,如果是独立的DTD文档,扩展名是dtd,则编码必须是utf-8 Schema约束: xmlns表示命名空间 targetNamespace表示目标空间

    53720

    BeautifulSoup4用法详解

    --> # Beautiful Soup中定义的其它类型都可能会出现在XML的文档中: CData , ProcessingInstruction , Declaration , Doctype...u'Tillie' 这是因为在原始文档中,字符串“Tillie” 在分号前出现,解析器先进入标签,然后是字符串“Tillie”,然后关闭标签,然后是分号和剩余部分.分号与标签在同一层级...),想获得正确的Unicode编码就不得不将文档中少数特殊编码字符替换成特殊Unicode编码,“REPLACEMENT CHARACTER” (U+FFFD, �) [9] ....属性标记为 True .这样就可以知道当前文档进行Unicode编码后丢失了一部分特殊内容字符.如果文档中包含�而 .contains_replacement_characters 属性是 False...' 如果文档中包含当前编码不支持的字符,那么这些字符将呗转换成一系列XML特殊字符引用,下面例子中包含了Unicode编码字符SNOWMAN: markup = u"\N{SNOWMAN}

    10.1K21

    XML 语法速查笔记

    XML 中有五个预定义的实体引用,在使用的时候需要 “转义”: 字符名 字符 “转义” 后的字符串 小于号 < < 大于号 > > ”and“ 符号...& & 单引号 ' ' 双引号 " " 其中只有 特殊处理的,但是作为规范,上述所有符号实际操作中均应处理...--- XML CDATA XML CDATA 是一个关键字,其包含的内容不会被 XML 解析器解析。CDATA 采用 CDATA 开头,用 ]]> 结尾。比如范例中的: CDATA 也有限制,就是正文中不能包含 ]]>,否则会导致解析错误。 --- XML 命名空间 这个功能目前笔者觉得比较少用,不过还是记录一下。命名空间约定使用冒号进行分分隔。...编码 - W3school 在线教程 RapidXML解析CDATA类型节点的问题 XML 宣告 XML 標準 XML 在线格式化 - 1 XML 在线格式化 - 2 --- 本文章采用 知识共享署名

    1.2K60

    XML快速入门学习笔记

    -- This is a comment --> //注释 XML编码:XML 文档可以包含非 ASCII 字符,比如挪威语 æ ø å,或者法语 ê è é;为了避免错误,需要规定 XML 编码,或者将...实体引用 在 XML 中,一些字符拥有特殊的意义;如果您把字符 “XML 元素中,会发生错误,这是因为解析器会把它当作新元素的开始。...[CDATA[测试文本]]> 注释:在 XML 中,只有字符 “编码来代替它是一个好习惯...有一个实用的经验,即使用数据库的命名规则来命名 XML 文档中的元素。 在 XML 中,éòá 等非英语字母是完全合法的,不过需要留意,您的软件供应商不支持这些字符时可能出现的问题。...像 "字符在 XML 元素中都是非法的。 "错误,因为解析器会把该字符解释为新元素的开始。 "&" 会产生错误,因为解析器会把该字符解释为字符实体的开始。

    8.9K20

    XML快速入门学习笔记

    -- This is a comment --> //注释 XML编码:XML 文档可以包含非 ASCII 字符,比如挪威语 æ ø å,或者法语 ê è é;为了避免错误,需要规定 XML 编码,或者将...实体引用 在 XML 中,一些字符拥有特殊的意义;如果您把字符 “XML 元素中,会发生错误,这是因为解析器会把它当作新元素的开始。...[CDATA[测试文本]]> 注释:在 XML 中,只有字符 “编码来代替它是一个好习惯...有一个实用的经验,即使用数据库的命名规则来命名 XML 文档中的元素。 在 XML 中,éòá 等非英语字母是完全合法的,不过需要留意,您的软件供应商不支持这些字符时可能出现的问题。...像 "字符在 XML 元素中都是非法的。 "错误,因为解析器会把该字符解释为新元素的开始。 "&" 会产生错误,因为解析器会把该字符解释为字符实体的开始。

    6.8K30

    通用代码高亮插件(SyntaxHighlighter)

    2) 如果包裹的代码块中包含一个结束标签(eg,),甚至内置在 CDATA 块中,大多数浏览器也无法正确解析 在 XML 元素中,”错误,因为解析器会把该字符解释为新元素的开始。”&” 也会产生错误,因为解析器会把该字符解释为字符实体的开始。...某些文本,比如 JavaScript 代码,包含大量 “字符。为了避免错误,可以将脚本代码定义为 CDATA。 2) CDATA 部分中的所有内容都会被解析器忽略。...3) CDATA 部分由 “CDATA[” 开始,由 “]]>” 结束。 4) CDATA 部分不能包含字符串 “]]>”。也不允许嵌套的 CDATA 部分。...更多关于CDATA的资料可以查看:javascript CDATA的意义 和 XML CDATA (w3school) 。

    2.7K20

    XML学习笔记

    在XML中,是严格的树状结构,绝对不能省略掉结束标记。 3. 在XML中,拥有单个标记而没有匹配的结束标记的元素必须用一个/ 字符作为结尾。这样分析器就知道不用查找结束标记了。 4....在XML中,属性值必须分装在引号中。在HTML中,引号是可用可不用的。  5. 在HTML中,可以拥有不带值的属性名。在XML中,所有的属性都必须带有相应的值。  6....> 属性列表: version:版本号,必须属性 encoding:编码方式,告诉浏览器用什么编码解析,文本编辑器的编码格式应与encoding的解码格式相同,其中,高级的开发工具如eclipse或者idea...等等)开始 名称不能包含空格 4.属性 如果XML文档中的内容出现了一些特殊字符,需要转义 如 if(a c){do something} 会直接报错...CDATA CDATA 的意思是字符数据(character data)。 CDATA 是不会被解析器解析的文本。在这些文本中的标签不会被当作标记来对待,其中的实体也不会被展开。

    65200

    探索 DTD 在 XML 中的作用及解析:深入理解文档类型定义

    以下是具有有关源文件的附加信息的 "img" 元素的示例实体一些字符在 XML 中具有特殊含义,例如小于号(XML 标记的开始。...以下实体在 XML 中是预定义的:< 代表 & 代表 &" 代表 "' 代表 'PCDATAPCDATA 表示解析的字符数据。...ELEMENT note (message*)>上面示例中的*号表示子元素 "message" 可以在 "note" 元素内出现零次或更多次。声明元素出现零次或一次XML 元素与属性在 XML 中,没有规定何时使用属性,何时使用子元素。元素与属性的使用数据可以存储在子元素中,也可以存储在属性中。...这些示例中的 ID 只是一个计数器或唯一标识符,用于识别 XML 文件中不同的 note,并不是 note 数据的一部分。

    46710

    XXE从入门到放弃

    实体引用(在标签属性,以及对应的位置值可能会出现符号,但是这些符号在对应的XML中都是有特殊含义的,这时候我们必须使用对应html的实体对应的表示,比如符号对应的实体就是...DTD数据类型 PCDATA的意思是被解析的字符数据/ PCDATA的意思是被解析的字符数据,PCDATA是会被解析器解析的文本 CDATA的意思是字符数据 CDATA是不会被解析器解析的文本,在这些文本中的标签不会被当作标记来对待...DTD实体介绍 (实体定义) 实体是用于定义引用普通文本或者特殊字符的快捷方式的变量 在DTD中的实体类型,一般分为:内部实体和外部实体,细分又分为一般实体和参数实体。...我们注意到,第一个参数实体的声明中使用到了php的base64编码,这样是为了尽量避免由于文件内容的特殊性,产生xml解析器错误。 Payload如下: ?...然后查看我们的端口监听情况,会发现我们收到了一个连接请求,问号后面的内容就是我们读取到的文件内容经过编码后的字符串: Ps: 有时候也会出现报错的情况(这是我们在漏洞的代码中没有屏蔽错误和警告

    1.6K41
    领券