
上QQ阅读APP看书,第一时间看更新
1.1.4 XPath注入攻击
XP ath注入攻击主要是通过构建特殊的输入(这些输入往往是XP ath语法中的一些组合),这些输入将作为参数传入Web应用程序,通过执行XP ath查询而执行入侵者想要的操作。XP ath注入跟SQL注入差不多,只不过这里的数据库可以用XML格式,攻击方式自然也得按XML的语法进行。
下面以登录验证中的模块为例,说明XPath注入攻击的产生原因。
在Web应用程序的登录验证程序中,一般有用户名和密码两个参数,程序会通过用户所提交输入的用户名和密码来执行授权操作。若验证数据存放在XML文件中,其原理是通过查找user表中的用户名和密码的结果来进行授权访问。
例如存在user.xml文件如下:


则在XP ath中其典型的查询语句如下:

但是,可以采用如下的方法实施注入攻击,绕过身份验证。如果用户传入一个login和password,例如loginID='xyz'和password='123test',则该查询语句将返回true。但如果用户传入类似'or 1=1or''='的值,那么该查询语句也会得到返回值true,因为XP ath查询语句最终会变成如下代码:

这个字符串会在逻辑上使查询一直返回true,并将一直允许攻击者访问系统。攻击者可以利用XPath在应用程序中动态地操作XML文档。攻击完成登录可以再通过XP ath盲入技术获取最高权限账号和其他重要文档信息。