指定账户恶意攻击—Web安全深度剖析(6)

发表于:2015-5-14 10:31

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:张炳帅    来源:51Testing软件测试网采编

分享:
  (51Testing软件测试网获电子工业出版社和作者授权连载本书部分章节。任何个人或单位未获得明确的书面许可,不得对本文内容复制、转载或进行镜像,否则将追究法律责任。)
  10.3.1  XML注入
  XML是The Extensible Markup Language(可扩展标识语言)的简写。XML最初设计的目的是弥补HTML的不足,后来逐渐用于网络数据的转换和描述。XML的设计宗旨是传输数据,而非显示数据。
  目前,XML在Web中的应用已非常广泛。XML是各种应用程序之间数据传输中最常用的工具。
  下面是一个最简单的XML例子,描述了管理员的信息(admin.xml)。
  <?xml version="1.0" encoding="UTF-8"?>
  <manager>
  <admin id="1">
  <name>admin</name>
  <password>admin</password>
  </admin>
  <admin id="2">
  <name>root</name>
  <password>root</password>
  </admin>
  </manager>
  XML注入是通过改写XML实现的,与XSS跨站漏洞相似,此漏洞利用成功的关键点就是闭合XML标签。
  对上面所述的admin.xml,管理员可以更改自己的密码,如果攻击者恰好能掌控PassWord字段,那么就会产生XML注入,如攻击者输入:
  admin</password><admin id="5"><name>hack</name><password>hacker</password></admin>
  最终修改后的XML为:
<?xml version="1.0" encoding="UTF-8"?>
<manager>
<admin id="1">
<name>admin</name>
<password>admin</password>
</admin>
<admin id="5">
<name>hack</name>
<password>hacker</password>
</admin>
<admin id="2">
<name>root</name>
<password>root</password>
</admin>
</manager>
  这样,通过XML注入将增加一个新的管理员。
  XML注入时的两大要素为:标签闭合和获取XML表结构。
  至今,XML注入还是比较少见的,而且XML注入修复也是比较简单的事情,只需要将预定义字符进行转义即可,预定义字符如表10-1所示。
  表10-1  预定义字符
  XPath即为XML路径语言(XML Path Language),XPath基于XML的树状结构,提供在数据结构树中找寻节点的能力。简单地说,XPath就是选取XML节点的一门语言。
  XPath使用路径表达式在XML文档中选取节点,表10-2列出了XPath的基础语法。
  表10-2  Xpath的基础语法
  而XPath最强大的功能在于逻辑运算,使用XPath将会使程序变得有逻辑性,但如果这一点使用不当,可能将会造成注入漏洞,逻辑运算符如表10-3所示。
  表10-3  逻辑运算符及说明
  通过XPath注入攻击,攻击者可以攻击XML,XPath与SQL注入的方式类似,比如有AdminUser表,其中包括ID、UserName、PassWord,查询用户时SQL语句可能如下:
  Select * from AdminUser where ID =1
  当攻击者输入1 or 1=1,则会列出当前表中的所有数据,也就是SQL注射攻击,与XPath注入的原理类似,但此时的AdminUser不是一张表,而是一个XML文件,代码如下:
<?xml version="1.0" encoding="UTF-8"?>
<users>
<user id="1">
<username>admin</username>
<password>admin888</password>
</user>
<user id="2">
<username>root</username>
<password>root123</password>
</user>
</users>
本文选自《Web安全深度剖析》第十章,本站经电子工业出版社和作者的授权。
版权声明:51Testing软件测试网获电子工业出版社和作者授权连载本书部分章节。
任何个人或单位未获得明确的书面许可,不得对本文内容复制、转载或进行镜像,否则将追究法律责任。
32/3<123>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号