XXE(XML外部实体注入)
XXE即XML外部实体注入,属于注入漏洞中的一种。
注入攻击又是众多攻击方式之一,在注入攻击中,攻击者提供恶意的输入,解析引擎把恶意的输入解析成命令或查询的一部分,顺便改变了程序的执行流程。大部分都利用网页漏洞发起攻击,常见的就是SQL(Structured Query Language)注入。
- XXE的攻击方式:当应用程序解析 XML文件时包含了对外部实体的引用,攻击者传递恶意包含 XML 代码的文件,读取指定的服务器资源。
- XXE的漏洞原因:XML 协议文档本身的设计特性,可以引入外部的资源;定义 XML 文件时使用的外部实体引入功能。
- XXE的漏洞影响:读取服务器敏感资料,如、
/etc/password;
读取应用程序源码。 - XXE的漏洞防护:关闭 DTD (Data Type Definition);禁止外部实体引入。
在OWASP(开放式Web应用程序安全项目) TOP前10的风险中注入攻击就是风险最高的。
其他的具体原因和影响可以参看链接。
扩展
工作中注入攻击主要是如下几种:
- SQL注入攻击:Web应用程序对用户输入数据的合法性没有判断或过滤不严,攻击者可以在web应用程序中事先定义好的查询语句的结尾上添加额外的SQL语句,在管理员不知情的情况下实现非法操作。
- OS命令注入攻击:通过Web应用,执行非法的操作系统命令达到攻击的目的。只要在能调用Shell函数的地方就有存在被攻击的风险。
- XML注入攻击:通过XMLHttpRequest请求注入非法的脚本,XML解析器无法识别。
比如SQL注入的防护:
- 使用参数化查询(PreparedStatement)
- 对不可信数据进行白名单校验
- 对不可信数据进行转码
参考链接: