前提:要了解xml外部实体注入和xpath注入攻击。实例文章:[从XML相关一步一步到XXE漏洞 - 先知社区 (aliyun.com)](https://xz.aliyun.com/t/6887?time__1311=n4%2BxnD0DRDyB5AKDsYoh1DBnD9773Du0oD&alichlgref=https%3A%2F%2Fxz.aliyun.com%2Ft%2F6887#toc-0)
构造xpath注入语句,可以通过一直返回true来实现盲注获取xml文档的内容,逐级猜测服务端的信息
Xpath注入攻击防御
-
1. 数据提交到服务器上端,在服务端正式处理这批数据之前,对提交数据的合法性进行验证。 2. 检查提交的数据是否包含特殊字符,对特殊字符进行编码转换或替换、删除敏感字符或字符串。 3. 对于系统出现的错误信息,以IE错误编码信息替换,屏蔽系统本身的出错信息。 4. 参数化XPath查询,将需要构建的XPath查询表达式,以变量的形式表示,变量不是可以执行的脚本。 5. 通过MD5、SSL等加密算法,对于数据敏感信息和在数据传输过程中加密,即使某些非法用户通过非法手法获取数据包,看到的也是加密后的信息。 总结下就是:限制提交非法字符,对输入内容严格检查过滤,参数化XPath查询的变量。
构造外部实体:
<?xml version="1.0" encoding="utf-8"?>
]> &admin;admin
查看flag文件。