XML 注入

本文介绍了XML注入的概念,展示了如何通过特殊字符测试XML注入,并详细讲解了外部实体攻击。通过实例演示了在BWAPP上的XXE测试过程,分析了代码中的漏洞点。同时,提供了防御XML注入的建议,包括禁用外部实体和过滤XML数据内容。
摘要由CSDN通过智能技术生成

0x00:简介

首先先简单的说一下 xml,看一下它的全名称,叫 Xtensible Markup Language,即可扩展的标记语言,可直接理解为内容可自定义扩展,标签可自定义扩展。其实就是一个文本格式的文件,以 xml 结尾,里面的标签内容可以自定义。它具有很清晰的层次结构,便于阅读,经常被用来做配置文件和存储数据。web 中用 xml 格式来传输数据和处理的功能也有很多。而后端没有对 xml 传来的数据做严格的检查时即会造成 xml 注入。

以下是一个基本的 xml 格式:

<?xml version="1.0" encoding="ISO-8859-1"?>
<bookstore>
    <book>
      <title>aaa</title> 
      <price>111</price> 
    </book>
    <book>
      <title>bbb</title> 
      <price>222</price> 
    </book>
    <book>
      <title>ccc</title> 
      <price>333</price> 
    </book>
</bookstore>

第一行是 xml 文件的声明,然后是 xml 的内容,例子中的 bookstore 书店是根元素,其他元素都在 bookstore 标签中,book 标签有两个子元素,分别是书名 title,价格 price,和 html 的结构很像。

0x01:测试方法

例如一个 web 应用,使用进行用户注册时,会以 xml 来存储数据到 xmldb 数据库中,当用户填写用户名,密码和邮箱时,后台存储的文件格式及内容如下:

<?xml version="1.0" encoding="ISO-8859-1"?>
<users>
    <username>lurenjia</username>
    <password>lurenjia</password>
    <userid>0</userid>
    <mail>lurenjia@lurenjia.com</mail>
</users>

xml 注入时可以先试一下 xml 中的一些有特殊作用的字符,好比测试 sql 注入我们可能先会输入一些单引号双引号等,测试 xss 时可能先输入尖括号等符号来大概看一下效果。

单引号(‘):如果被注入的标签是属性值的一部分,那么输入单引号会引起 xml 解析异常。

<node attrib='$inputValue'/>

当用户输入的值为 test'时,以上代码就变成了

  • 2
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值