编码员征服安全。分享与学习系列 - XQuery注入

2019年2月28日发布
作者:Jaap Karan Singh
案例研究

编码员征服安全。分享与学习系列 - XQuery注入

2019年2月28日发布
作者:Jaap Karan Singh
查看资源
查看资源

XQuery注入攻击有时被认为是更普遍的SQL注入攻击的小兄弟。它们有类似的根源,而攻击者利用的触发它们的命令也非常接近。只是,XQuery注入攻击只能在XML数据的XPath查询过程中发生。正因为如此,它们有时被称为XPath注入或只是XPath攻击,因为那是使用的传递方法。

绝大多数网站使用XML数据库来执行关键功能,如持有用户登录凭证、客户信息、个人身份信息和机密或敏感数据,使XQuery攻击具有相当大的攻击足迹。

在这一集里,我们将学习。

  • 攻击者如何使用XQuery的注入
  • 为什么XQuery的注入是危险的
  • 可以修复这个漏洞的技术。

攻击者如何触发XQuery注入?

像大多数计算机语言一样,XPath的代码被设计得很简单。事实上,XPath是一种标准语言,所有的符号和语法语句都是不变的,无论使用它们的应用程序是什么。这意味着用于操作XPath查询的命令是众所周知的,甚至可以自动化。

在其核心部分,XPath查询是一个简单的语句,它告诉XML数据库要查找哪些信息。在一个最简单的例子中,它被用来检查一个用户记录是否存在,然后检索他们的登录凭证。问题是,由于XPath查询包括用户输入,黑客可以操纵查询来返回应该被保护的信息。

例如,当试图绕过登录安全时,攻击者可以在他们的XPath查询末尾添加变量,从而绕过整个过程。一个例子可能是这样的。

//Employee[UserName/text()=anyone or 1=1 or a=a And Password/text()=doesnotmatter]

在这里,由于1=1或a=a的语句,用户名字段被用来匹配任何用户。密码字段甚至不重要,因为只有查询的第一部分需要为真。

为什么XQuery注入是危险的?

XQuery注入攻击如此危险的一个主要原因是,它们允许攻击者绕过登录和账户安全。而且,它们允许使用一种不因应用程序而异的标准语言,以自动化的方式完成。攻击者可以自动扫描网站和应用程序的这种漏洞,一旦发现就立即行动。如果你的应用程序有漏洞,那么攻击者就会破坏它。除了损害账户安全外,XQuery攻击还可用于数据渗出。例如,攻击者可以将所有记录从XML数据库中转移出来。

消除XQuery注入攻击

与类似的漏洞一样,一个关键的防御措施就是不要相信用户的输入。在用户能够输入信息的任何时候,无论他们是否在进行数据库查询,都应该对这个过程进行审查。这与保护实体建筑的门窗并无不同,因为这些是人们可以进入的主要途径。

对于XQuery的注入保护,这是通过过滤来净化用户输入,或使用白名单输入验证用户输入来实现的。你也可以使用一个参数化的XPath接口,类似于SQL查询的准备语句。

最后,要确保对所有的应用程序应用最低权限。这可能意味着创建一个具有只读权限的用户来执行所有的应用程序查询。

通过使用这些技术,有可能阻止所有针对你的网站或应用程序的XQuery注入尝试。

关于XQuery Injections的更多信息

要进一步阅读,你可以看一下OWASP对XQuery注入的看法。你也可以用Secure Code Warrior 平台的免费演示来测试你新发现的防御知识,该平台可以培训网络安全团队成为终极网络战士。要了解更多关于击败这个漏洞以及其他威胁的流氓画廊,请访问安全代码 战士博客。

查看资源
查看资源

作者

Jaap Karan Singh

想要更多吗?

在博客上深入了解我们最新的安全编码见解。

我们广泛的资源库旨在增强人类对安全编码技术提升的方法。

查看博客
想要更多吗?

获取关于开发者驱动的安全的最新研究

我们广泛的资源库充满了有用的资源,从白皮书到网络研讨会,让你开始使用开发者驱动的安全编码。现在就去探索它。

资源中心

编码员征服安全。分享与学习系列 - XQuery注入

2019年2月28日发布
作者:Jaap Karan Singh

XQuery注入攻击有时被认为是更普遍的SQL注入攻击的小兄弟。它们有类似的根源,而攻击者利用的触发它们的命令也非常接近。只是,XQuery注入攻击只能在XML数据的XPath查询过程中发生。正因为如此,它们有时被称为XPath注入或只是XPath攻击,因为那是使用的传递方法。

绝大多数网站使用XML数据库来执行关键功能,如持有用户登录凭证、客户信息、个人身份信息和机密或敏感数据,使XQuery攻击具有相当大的攻击足迹。

在这一集里,我们将学习。

  • 攻击者如何使用XQuery的注入
  • 为什么XQuery的注入是危险的
  • 可以修复这个漏洞的技术。

攻击者如何触发XQuery注入?

像大多数计算机语言一样,XPath的代码被设计得很简单。事实上,XPath是一种标准语言,所有的符号和语法语句都是不变的,无论使用它们的应用程序是什么。这意味着用于操作XPath查询的命令是众所周知的,甚至可以自动化。

在其核心部分,XPath查询是一个简单的语句,它告诉XML数据库要查找哪些信息。在一个最简单的例子中,它被用来检查一个用户记录是否存在,然后检索他们的登录凭证。问题是,由于XPath查询包括用户输入,黑客可以操纵查询来返回应该被保护的信息。

例如,当试图绕过登录安全时,攻击者可以在他们的XPath查询末尾添加变量,从而绕过整个过程。一个例子可能是这样的。

//Employee[UserName/text()=anyone or 1=1 or a=a And Password/text()=doesnotmatter]

在这里,由于1=1或a=a的语句,用户名字段被用来匹配任何用户。密码字段甚至不重要,因为只有查询的第一部分需要为真。

为什么XQuery注入是危险的?

XQuery注入攻击如此危险的一个主要原因是,它们允许攻击者绕过登录和账户安全。而且,它们允许使用一种不因应用程序而异的标准语言,以自动化的方式完成。攻击者可以自动扫描网站和应用程序的这种漏洞,一旦发现就立即行动。如果你的应用程序有漏洞,那么攻击者就会破坏它。除了损害账户安全外,XQuery攻击还可用于数据渗出。例如,攻击者可以将所有记录从XML数据库中转移出来。

消除XQuery注入攻击

与类似的漏洞一样,一个关键的防御措施就是不要相信用户的输入。在用户能够输入信息的任何时候,无论他们是否在进行数据库查询,都应该对这个过程进行审查。这与保护实体建筑的门窗并无不同,因为这些是人们可以进入的主要途径。

对于XQuery的注入保护,这是通过过滤来净化用户输入,或使用白名单输入验证用户输入来实现的。你也可以使用一个参数化的XPath接口,类似于SQL查询的准备语句。

最后,要确保对所有的应用程序应用最低权限。这可能意味着创建一个具有只读权限的用户来执行所有的应用程序查询。

通过使用这些技术,有可能阻止所有针对你的网站或应用程序的XQuery注入尝试。

关于XQuery Injections的更多信息

要进一步阅读,你可以看一下OWASP对XQuery注入的看法。你也可以用Secure Code Warrior 平台的免费演示来测试你新发现的防御知识,该平台可以培训网络安全团队成为终极网络战士。要了解更多关于击败这个漏洞以及其他威胁的流氓画廊,请访问安全代码 战士博客。

我们希望得到您的许可,向您发送有关我们产品和/或相关安全编码主题的信息。我们将始终以最谨慎的态度对待您的个人资料,绝不会将其出售给其他公司用于营销目的。

提交
要提交表格,请启用 "分析 "cookies。完成后,请随时再次禁用它们。