XPATH injection

从零开始学习AWS黑客技术,成为专家 htARTE(HackTricks AWS红队专家)

支持HackTricks的其他方式:

加入HackenProof Discord服务器,与经验丰富的黑客和赏金猎人交流!

黑客见解 参与深入探讨黑客的刺激和挑战的内容

实时黑客新闻 通过实时新闻和见解及时了解快节奏的黑客世界

最新公告 了解最新的赏金计划发布和重要平台更新

加入我们的 Discord,立即与顶尖黑客合作!

基本语法

一种称为XPath注入的攻击技术被用来利用根据用户输入形成XPath(XML路径语言)查询的应用程序来查询或导航XML文档。

描述的节点

表达式用于选择XML文档中的各种节点。以下是这些表达式及其描述的总结:

  • nodename:选择所有名称为“nodename”的节点。

  • /:从根节点进行选择。

  • //:选择与当前节点匹配的节点,无论它们在文档中的位置如何。

  • .:选择当前节点。

  • ..:选择当前节点的父节点。

  • @:选择属性。

XPath示例

路径表达式及其结果的示例包括:

  • bookstore:选择所有名称为“bookstore”的节点。

  • /bookstore:选择根元素bookstore。请注意,表示元素的绝对路径以斜杠(/)开头。

  • bookstore/book:选择bookstore的子元素book。

  • //book:选择文档中的所有book元素,无论它们的位置如何。

  • bookstore//book:选择bookstore元素下的所有后代book元素,无论它们在bookstore元素下的位置如何。

  • //@lang:选择所有名称为lang的属性。

谓词的使用

谓词用于细化选择:

  • /bookstore/book[1]:选择bookstore元素的第一个book元素子节点。对于将第一个节点索引为[0]的IE版本5到9的解决方法是通过JavaScript将SelectionLanguage设置为XPath。

  • /bookstore/book[last()]:选择bookstore元素的最后一个book元素子节点。

  • /bookstore/book[last()-1]:选择bookstore元素的倒数第二个book元素子节点。

  • /bookstore/book[position()<3]:选择bookstore元素的前两个book元素子节点。

  • //title[@lang]:选择具有lang属性的所有title元素。

  • //title[@lang='en']:选择具有值为“en”的“lang”属性的所有title元素。

  • /bookstore/book[price>35.00]:选择价格大于35.00的所有book元素。

  • /bookstore/book[price>35.00]/title:选择价格大于35.00的book元素的bookstore中的所有title元素。

未知节点的处理

通配符用于匹配未知节点:

  • *:匹配任何元素节点。

  • @*:匹配任何属性节点。

  • node():匹配任何类型的任何节点。

进一步的示例包括:

  • /bookstore/*:选择bookstore元素的所有子元素节点。

  • //*:选择文档中的所有元素。

  • //title[@*]:选择具有至少一个任意类型属性的所有title元素。

访问信息

XPath注入是一种利用应用程序中的XPath表达式来访问或修改数据的攻击技术。攻击者可以通过构造恶意的XPath表达式来绕过身份验证、访问敏感数据或执行其他恶意操作。XPath注入通常发生在搜索表单或过滤器等用户可控输入的地方。要防止XPath注入,应该使用参数化查询或编码输入数据。

识别和窃取模式

  • 使用错误的XPath查询来识别数据库架构

  • 通过逐步调整查询来窃取数据

身份验证绕过

查询示例:

用户和密码中的OR绕过(两者的值相同)

滥用空值注入

用户名或密码中的双重OR(仅在一个易受攻击的字段中有效)

重要提示:请注意**“and”是首先执行的操作**。

字符串提取

输出包含字符串,用户可以操纵这些值进行搜索:

盲目利用

获取值的长度并通过比较提取它:

Python 示例

读取文件

  1. Payload:

  2. Request:

  3. Analysis:

    • The payload ' or '1'='1 will make the XPath query always return true, allowing the attacker to read the entire file.

  4. Recommendation:

    • Sanitize user input and use parameterized XPath queries to prevent XPath injection.

OOB利用

自动化工具

参考资料

加入 HackenProof Discord 服务器,与经验丰富的黑客和赏金猎人交流!

黑客见解 参与深入探讨黑客行为的刺激和挑战的内容

实时黑客新闻 通过实时新闻和见解了解快节奏的黑客世界

最新公告 了解最新启动的赏金任务和重要平台更新

加入我们的 Discord,立即与顶尖黑客合作!

从零开始学习AWS黑客技术,成为专家 htARTE(HackTricks AWS Red Team Expert)

支持 HackTricks 的其他方式:

最后更新于