4.bWAPP XML&XPath Injection
字数 912 2025-08-24 16:48:07
XML & XPath 注入攻击全面解析
1. XML注入(XXE)基础
XML外部实体注入(XXE):攻击者通过向服务器注入指定的XML实体内容,让服务器按照指定配置执行,导致安全问题。
产生原因:服务端接收和解析来自用户端的XML数据时,未做严格安全控制。
2. XPath注入基础
XPath注入利用XPath解析器的松散输入和容错特性,在URL、表单等位置附带恶意XPath查询代码,以获取权限信息并更改这些信息。
与SQL注入的异同:
- 相似:都是通过构造恶意查询字符串进行攻击
- 不同:XPath注入针对的是XML文档而非数据库
XPath注入特点:
- XML中没有访问控制或用户认证
- 攻击者可访问整个XML文档
- 注入点可能出现在cookie、headers、request parameters/input等位置
3. XML/XPath注入实战案例
案例1:登录表单注入(Low级别)
漏洞原理:
- 应用程序通过XPath查询XML文件验证用户名和密码
- XPath语句:
/heroes/hero[login='$login' and password='$password']
攻击方法:
- 注入单引号触发错误,确认存在漏洞
- 构造万能登录payload:
实际执行的XPath变为:hack' or 1=1 or ''='/heroes/hero[login='hack' or 1=1 or ''='' and password='任意密码']
案例2:搜索功能注入(Low级别)
漏洞原理:
- 应用程序通过XPath查询XML文件搜索电影
- XPath语句:
//hero[contains(genre, '$genre')]/movie
攻击方法:
构造恶意XPath获取敏感信息:
horror')]/password | hack[contains(a,'
实际执行的XPath变为:
//hero[contains(genre, 'horror')]/password | hack[contains(a,'')]/movie
这将返回所有horror类电影的password字段值
4. 防御措施
中高级别防护方法:
- 对XPath语法进行严格过滤
- 使用参数化查询
- 实施输入验证和净化
- 最小权限原则,限制XML文档访问范围
5. 学习资源
基础教程:
- XML教程
- XPath教程
6. 总结
XML/XPath注入是Web应用安全的重要威胁,攻击者可通过精心构造的输入获取敏感数据或绕过认证。开发者必须对所有用户输入进行严格验证和过滤,并采用安全的编程实践来防范此类攻击。