freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

Web漏洞那些事儿:XML注入
2023-01-29 20:45:02
所属地 广东省

一、XML简介

XML是 The Extensible Markup Language (可扩展标识语言)的简写。XML最初设计的目的是弥补 HTML的不足,后来逐渐用于网络数据的转换和描述。XML 的设计宗旨是传输和存储数据,而非显示数据

目前,各种应用程序之间数据传输最常用的工具是XML和JSON。

xml例子:

<sites>
    <site>
        <name>RUNOOB</name>
        <url>www.runoob.com</url>
    </site>
    <site>
        <name>Google</name>
        <url>www.google.com</url>
    </site>
    <site>
        <name>Facebook</name>
        <url>www.facebook.com</url>
    </site>
</sites>

二、实验环境(手动狗头)

假设现在某网站后台存在如下ChangeUserPwd.xml文件:

<?xml version="1.0” encoding="UTF-8"?>
<user>
    <xmler id="1">
        <userType>administrator</userType>
        <name>admin</name>
        <password>admin</password>
    </xmler>
    <xmler id="2">
        <userType>administrator</userType>
        <name>root</name>
        <password>root</password>
    </xmler>
    <xmler id="3">
        <userType>advance</userType>
        <name>xmler</name>
        <password>123456</password>
    </xmler>
</user>

ChangeUserPwd.xml文件的作用是存储用户的用户名、密码和用户类型。当用户的密码被修改后,ChangeUserPwd.xml文件会同步更新。

三、XML注入

1、何为XML注入?

如果没有对用户的输入进行严格的过滤和转义,那么攻击者就可以把精心构造好的恶意xml语句提交给后台,使得后台XML文件的数据和结构被改写,从而导致XML注入。

注意:XML注入和XXE(XML外部实体注入)是两个不同的概念,也是两种不同类型的漏洞!

2、XML注入演示

现在用户xmler修改密码,并且password字段是用户可控的,那么用户xmler可以构造如下恶意xml语句(要闭合标签):

123</password></xmler><xmler id=”4”><userType>administrator</userType><name>attacker</name><password>666666

把该xml语句当做密码提交后,后台ChangeUserPwd.xml文件变为:

<?xml version="1.0” encoding="UTF-8"?>
<user>
    <xmler id="1">
        <userType>administrator</userType>
        <name>admin</name>
        <password>admin</password>
    </xmler>
    <xmler id="2">
        <userType>administrator</userType>
        <name>root</name>
        <password>root</password>
    </xmler>
    <xmler id="3">
        <userType>advance</userType>
        <name>xmler</name>
        <password>1123</password>
    </xmler>
    <xmler id=”4”>
        <userType>administrator</userType>
        <name>attacker</name>
        <password>666666</password>
    </xmler>
</user>

成功添加一个名为attacker、密码为666666、用户类型为administrator的用户。

3、XML注入条件

由上述演示可知,要完成一次XML注入,需要满足如下两个条件:

(1)闭合标签

(2)获取XML表结构

利用条件还是比较苛刻的,因为获取XML表的结构并非易事。

四、XML注入的危害

攻击者通过随意更改/破坏后台xml文件的结构,可以导致普通用户提权为管理员(上述例子)、破坏业务逻辑(攻击者可以通过破坏xml表结构,使得某些重要功能无法正常使用,从而导致业务无法继续进行下去)、浪费服务器资源(攻击者可以创建大量合法的但又毫无意义的标签,从而导致服务器大量资源被白白浪费)等严重后果。

五、XML注入防护

XML注入的防护还是比较简单的,就是禁止用户输入“<”、“>”、“\”、“’”、“””、“&”等特殊符号,或者对这些特殊符号进行转义。




# 漏洞 # 渗透测试 # web安全 # XML注入 # 漏洞分析
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录