XPath 注入
XPath 注入 是什么?
XPath 注入通过不受信任的输入修改针对 XML 文档的 XPath 查询的注入漏洞,可导致数据外发或认证绕过。
XPath 注入发生在应用通过字符串拼接用户输入来构建针对 XML 文档的 XPath 查询时,原理类似经典 SQL 注入。攻击者可使用引号、形如 ' or '1'='1 的布尔恒真式或注释跳出预期表达式,以提取任意节点、绕过基于 XML 用户库的登录,或通过布尔/时间盲注外发数据。该漏洞常见于遗留 SOAP 服务、配置后端以及把凭据存储在 XML 文件中的应用。防御方法包括使用参数化 XPath API、对输入进行严格白名单校验,以及将敏感查询迁移到更安全的数据存储。
● 示例
- 01
登录查询 //user[name/text()='admin' or '1'='1' and password/text()='x'] 可绕过认证。
- 02
通过布尔条件 substring(//secret,1,1)='a' 实施盲 XPath 注入数据外发。
● 常见问题
XPath 注入 是什么?
通过不受信任的输入修改针对 XML 文档的 XPath 查询的注入漏洞,可导致数据外发或认证绕过。 它属于网络安全的 攻击与威胁 分类。
XPath 注入 是什么意思?
通过不受信任的输入修改针对 XML 文档的 XPath 查询的注入漏洞,可导致数据外发或认证绕过。
XPath 注入 是如何工作的?
XPath 注入发生在应用通过字符串拼接用户输入来构建针对 XML 文档的 XPath 查询时,原理类似经典 SQL 注入。攻击者可使用引号、形如 ' or '1'='1 的布尔恒真式或注释跳出预期表达式,以提取任意节点、绕过基于 XML 用户库的登录,或通过布尔/时间盲注外发数据。该漏洞常见于遗留 SOAP 服务、配置后端以及把凭据存储在 XML 文件中的应用。防御方法包括使用参数化 XPath API、对输入进行严格白名单校验,以及将敏感查询迁移到更安全的数据存储。
如何防御 XPath 注入?
针对 XPath 注入 的防御通常结合技术控制与运营实践,详见上方完整定义。
XPath 注入 还有哪些其他名称?
常见的别称包括: XPath 查询注入。
● 相关术语
- attacks№ 1084
SQL 注入
一种代码注入攻击,将攻击者控制的 SQL 语句植入数据库查询,以读取、篡改或破坏数据。
- attacks№ 612
LDAP 注入
通过未经过滤的输入篡改 LDAP 搜索过滤器或 DN,以绕过认证或读取目录数据的注入攻击。
- attacks№ 1255
XML 注入
向应用的 XML 处理过程注入恶意标签、属性或 XPath 片段,以改变逻辑或窃取数据的攻击。
- attacks№ 1257
XXE 攻击
针对 XML 解析器的攻击,通过滥用外部实体解析读取文件、探测内部网络或造成拒绝服务。
- appsec№ 538
输入校验
在应用处理数据前,服务端检查所有不可信输入是否符合预期的类型、长度、范围、格式和取值集合。
- attacks№ 202
命令注入
用户输入未经过滤就传入操作系统 shell,导致应用程序执行攻击者提供命令的攻击。