XPATH injection

chevron-right从零开始学习AWS黑客技术,成为专家 htARTE(HackTricks AWS红队专家)arrow-up-righthashtag

支持HackTricks的其他方式:

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

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

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

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

加入我们的 Discordarrow-up-right,立即与顶尖黑客合作!

基本语法

一种称为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 Discordarrow-up-right 服务器,与经验丰富的黑客和赏金猎人交流!

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

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

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

加入我们的 Discordarrow-up-right,立即与顶尖黑客合作!

chevron-right从零开始学习AWS黑客技术,成为专家 htARTE(HackTricks AWS Red Team Expert)arrow-up-righthashtag

支持 HackTricks 的其他方式:

最后更新于