mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-24 05:33:33 +00:00
Translated ['pentesting-web/xss-cross-site-scripting/dom-xss.md'] to pt
This commit is contained in:
parent
b59b2ed5a8
commit
b9913e48c4
1 changed files with 27 additions and 26 deletions
|
@ -1,4 +1,4 @@
|
|||
# XSS DOM
|
||||
# XSS no DOM
|
||||
|
||||
<details>
|
||||
|
||||
|
@ -7,19 +7,19 @@
|
|||
* Você trabalha em uma **empresa de cibersegurança**? Quer ver sua **empresa anunciada no HackTricks**? ou quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* 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)
|
||||
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Compartilhe seus truques de hacking enviando PRs para o** [**repositório hacktricks**](https://github.com/carlospolop/hacktricks) **e** [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
||||
|
||||
## Vulnerabilidades DOM
|
||||
## Vulnerabilidades no DOM
|
||||
|
||||
Vulnerabilidades DOM ocorrem quando dados de **fontes** controladas pelo atacante (como `location.search`, `document.referrer` ou `document.cookie`) são transferidos de forma insegura para **sinks**. Sinks são funções ou objetos (por exemplo, `eval()`, `document.body.innerHTML`) que podem executar ou renderizar conteúdo prejudicial se receberem dados maliciosos.
|
||||
Vulnerabilidades no DOM ocorrem quando dados de **fontes** controladas pelo atacante (como `location.search`, `document.referrer` ou `document.cookie`) são transferidos de forma insegura para **sinks**. Sinks são funções ou objetos (por exemplo, `eval()`, `document.body.innerHTML`) que podem executar ou renderizar conteúdo prejudicial se receberem dados maliciosos.
|
||||
|
||||
- **Fontes** são entradas que podem ser manipuladas por atacantes, incluindo URLs, cookies e mensagens da web.
|
||||
- **Sinks** são pontos finais potencialmente perigosos onde dados maliciosos podem levar a efeitos adversos, como a execução de scripts.
|
||||
* **Fontes** são entradas que podem ser manipuladas por atacantes, incluindo URLs, cookies e mensagens da web.
|
||||
* **Sinks** são pontos finais potencialmente perigosos onde dados maliciosos podem levar a efeitos adversos, como a execução de scripts.
|
||||
|
||||
O risco surge quando os dados fluem de uma fonte para um sink sem validação ou saneamento adequados, permitindo ataques como XSS.
|
||||
O risco surge quando os dados fluem de uma fonte para um sink sem validação ou saneamento adequado, permitindo ataques como XSS.
|
||||
|
||||
{% hint style="info" %}
|
||||
**Você pode encontrar uma lista mais atualizada de fontes e sinks em** [**https://github.com/wisec/domxsswiki/wiki**](https://github.com/wisec/domxsswiki/wiki)
|
||||
|
@ -83,6 +83,7 @@ Esse tipo de XSS é provavelmente o **mais difícil de encontrar**, pois você p
|
|||
## Ferramentas para encontrá-los
|
||||
|
||||
* [https://github.com/mozilla/eslint-plugin-no-unsanitized](https://github.com/mozilla/eslint-plugin-no-unsanitized)
|
||||
* Extensão do navegador para verificar todos os dados que alcançam um possível sink: [https://github.com/kevin-mizu/domloggerpp](https://github.com/kevin-mizu/domloggerpp)
|
||||
|
||||
## Exemplos
|
||||
|
||||
|
@ -92,7 +93,7 @@ De: [https://portswigger.net/web-security/dom-based/open-redirection](https://po
|
|||
|
||||
As **vulnerabilidades de redirecionamento aberto no DOM** ocorrem quando um script escreve dados, que um atacante pode controlar, em um sink capaz de iniciar navegação entre domínios.
|
||||
|
||||
É crucial entender que a execução de código arbitrário, como **`javascript:alert(1)`**, é possível se você tiver controle sobre o início da URL onde ocorre o redirecionamento.
|
||||
É crucial entender que a execução de código arbitrário, como **`javascript:alert(1)`**, é possível se você tiver controle sobre o início do URL onde ocorre o redirecionamento.
|
||||
|
||||
Sinks:
|
||||
```javascript
|
||||
|
@ -116,7 +117,7 @@ $.ajax()
|
|||
|
||||
De: [https://portswigger.net/web-security/dom-based/cookie-manipulation](https://portswigger.net/web-security/dom-based/cookie-manipulation)
|
||||
|
||||
Vulnerabilidades de manipulação de cookies baseadas em DOM ocorrem quando um script incorpora dados, que podem ser controlados por um atacante, no valor de um cookie. Essa vulnerabilidade pode levar a comportamentos inesperados na página da web se o cookie for utilizado dentro do site. Além disso, pode ser explorada para realizar um ataque de fixação de sessão se o cookie estiver envolvido no rastreamento das sessões do usuário. O principal sink associado a essa vulnerabilidade é:
|
||||
Vulnerabilidades de manipulação de cookies baseadas em DOM ocorrem quando um script incorpora dados, que podem ser controlados por um atacante, no valor de um cookie. Essa vulnerabilidade pode levar a comportamentos inesperados na página da web se o cookie for utilizado dentro do site. Além disso, pode ser explorada para realizar um ataque de fixação de sessão se o cookie estiver envolvido no rastreamento de sessões de usuário. O principal sink associado a essa vulnerabilidade é:
|
||||
|
||||
Sinks:
|
||||
```javascript
|
||||
|
@ -141,13 +142,13 @@ msSetImmediate()
|
|||
range.createContextualFragment()
|
||||
crypto.generateCRMFRequest()
|
||||
```
|
||||
### Manipulação de domínio de documento
|
||||
### Manipulação de document-domain
|
||||
|
||||
De: [https://portswigger.net/web-security/dom-based/document-domain-manipulation](https://portswigger.net/web-security/dom-based/document-domain-manipulation)
|
||||
|
||||
As vulnerabilidades de **manipulação de domínio de documento** ocorrem quando um script define a propriedade `document.domain` usando dados que um atacante pode controlar.
|
||||
As vulnerabilidades de **manipulação de document-domain** ocorrem quando um script define a propriedade `document.domain` usando dados que um atacante pode controlar.
|
||||
|
||||
A propriedade `document.domain` desempenha um **papel fundamental** na **aplicação** da **política de mesma origem** pelos navegadores. Quando duas páginas de origens diferentes definem seus `document.domain` com o **mesmo valor**, elas podem interagir sem restrições. Embora os navegadores imponham certos **limites** aos valores atribuíveis a `document.domain`, impedindo a atribuição de valores completamente não relacionados à origem da página real, existem exceções. Normalmente, os navegadores permitem o uso de **domínios filhos** ou **pai**.
|
||||
A propriedade `document.domain` desempenha um **papel fundamental** na **aplicação** da **política de mesma origem** pelos navegadores. Quando duas páginas de origens diferentes definem seus `document.domain` com o **mesmo valor**, elas podem interagir sem restrições. Embora os navegadores imponham certos **limites** aos valores atribuíveis a `document.domain`, impedindo a atribuição de valores completamente não relacionados à origem da página real, existem exceções. Normalmente, os navegadores permitem o uso de **domínios filhos** ou **pais**.
|
||||
|
||||
Sinks:
|
||||
```javascript
|
||||
|
@ -157,7 +158,7 @@ document.domain
|
|||
|
||||
De: [https://portswigger.net/web-security/dom-based/websocket-url-poisoning](https://portswigger.net/web-security/dom-based/websocket-url-poisoning)
|
||||
|
||||
O **envenenamento de URL de WebSocket** ocorre quando um script utiliza **dados controláveis como URL de destino** para uma conexão WebSocket.
|
||||
O **envenenamento de URL de WebSocket** ocorre quando um script utiliza **dados controláveis como o URL de destino** para uma conexão WebSocket.
|
||||
|
||||
Sinks:
|
||||
|
||||
|
@ -167,7 +168,7 @@ O construtor `WebSocket` pode levar a vulnerabilidades de envenenamento de URL d
|
|||
|
||||
De: [https://portswigger.net/web-security/dom-based/link-manipulation](https://portswigger.net/web-security/dom-based/link-manipulation)
|
||||
|
||||
As **vulnerabilidades de manipulação de link baseadas em DOM** surgem quando um script escreve **dados controlados pelo atacante em um alvo de navegação** dentro da página atual, como um link clicável ou a URL de submissão de um formulário.
|
||||
As **vulnerabilidades de manipulação de link baseadas em DOM** surgem quando um script escreve **dados controláveis pelo atacante em um destino de navegação** dentro da página atual, como um link clicável ou o URL de submissão de um formulário.
|
||||
|
||||
Sinks:
|
||||
```javascript
|
||||
|
@ -179,7 +180,7 @@ someDOMElement.action
|
|||
|
||||
De: [https://portswigger.net/web-security/dom-based/ajax-request-header-manipulation](https://portswigger.net/web-security/dom-based/ajax-request-header-manipulation)
|
||||
|
||||
As vulnerabilidades de manipulação de solicitação Ajax surgem quando um script escreve dados controláveis pelo atacante em uma solicitação Ajax emitida usando um objeto `XmlHttpRequest`.
|
||||
As **vulnerabilidades de manipulação de solicitação Ajax** surgem quando um script escreve **dados controláveis pelo atacante em uma solicitação Ajax** que é emitida usando um objeto `XmlHttpRequest`.
|
||||
|
||||
Sinks:
|
||||
```javascript
|
||||
|
@ -193,7 +194,7 @@ $.globalEval()
|
|||
|
||||
De: [https://portswigger.net/web-security/dom-based/local-file-path-manipulation](https://portswigger.net/web-security/dom-based/local-file-path-manipulation)
|
||||
|
||||
As **vulnerabilidades de manipulação de caminho de arquivo local** surgem quando um script passa **dados controláveis pelo atacante para uma API de manipulação de arquivos** como o parâmetro `filename`. Essa vulnerabilidade pode ser explorada por um atacante para construir uma URL que, se visitada por outro usuário, poderia levar o **navegador do usuário a abrir ou gravar um arquivo local arbitrário**.
|
||||
As **vulnerabilidades de manipulação de caminho de arquivo local** surgem quando um script passa **dados controláveis pelo atacante para uma API de manipulação de arquivo** como o parâmetro `filename`. Essa vulnerabilidade pode ser explorada por um atacante para construir uma URL que, se visitada por outro usuário, poderia levar o **navegador do usuário a abrir ou escrever um arquivo local arbitrário**.
|
||||
|
||||
Sinks:
|
||||
```javascript
|
||||
|
@ -209,7 +210,7 @@ FileReader.root.getFile()
|
|||
|
||||
De: [https://portswigger.net/web-security/dom-based/client-side-sql-injection](https://portswigger.net/web-security/dom-based/client-side-sql-injection)
|
||||
|
||||
As **vulnerabilidades de injeção de SQL do lado do cliente** ocorrem quando um script incorpora **dados controláveis pelo atacante em uma consulta de SQL do lado do cliente de forma insegura**.
|
||||
As **vulnerabilidades de injeção de SQL do lado do cliente** ocorrem quando um script incorpora **dados controlados pelo atacante em uma consulta de SQL do lado do cliente de forma insegura**.
|
||||
|
||||
Sinks:
|
||||
```javascript
|
||||
|
@ -219,7 +220,7 @@ executeSql()
|
|||
|
||||
De: [https://portswigger.net/web-security/dom-based/html5-storage-manipulation](https://portswigger.net/web-security/dom-based/html5-storage-manipulation)
|
||||
|
||||
As vulnerabilidades de **manipulação de armazenamento HTML5** surgem quando um script **armazena dados controláveis pelo atacante no armazenamento HTML5 do navegador web** (`localStorage` ou `sessionStorage`). Embora essa ação não seja inerentemente uma vulnerabilidade de segurança, torna-se problemática se a aplicação posteriormente **ler os dados armazenados e processá-los de forma insegura**. Isso poderia permitir que um atacante aproveitasse o mecanismo de armazenamento para realizar outros ataques baseados em DOM, como scripts entre sites e injeção de JavaScript.
|
||||
As vulnerabilidades de **manipulação de armazenamento HTML5** surgem quando um script **armazena dados controlados pelo atacante no armazenamento HTML5 do navegador web** (`localStorage` ou `sessionStorage`). Embora essa ação não seja inerentemente uma vulnerabilidade de segurança, torna-se problemática se a aplicação posteriormente **ler os dados armazenados e processá-los de forma insegura**. Isso poderia permitir que um atacante aproveitasse o mecanismo de armazenamento para realizar outros ataques baseados em DOM, como scripts entre sites e injeção de JavaScript.
|
||||
|
||||
Sinks:
|
||||
```javascript
|
||||
|
@ -230,7 +231,7 @@ localStorage.setItem()
|
|||
|
||||
De: [https://portswigger.net/web-security/dom-based/client-side-xpath-injection](https://portswigger.net/web-security/dom-based/client-side-xpath-injection)
|
||||
|
||||
As **vulnerabilidades de injeção de XPath baseadas em DOM** ocorrem quando um script incorpora **dados controláveis pelo atacante em uma consulta XPath**.
|
||||
As **vulnerabilidades de injeção de XPath baseadas em DOM** ocorrem quando um script incorpora **dados controlados pelo atacante em uma consulta XPath**.
|
||||
|
||||
Sinks:
|
||||
```javascript
|
||||
|
@ -253,17 +254,17 @@ $.parseJSON()
|
|||
|
||||
De: [https://portswigger.net/web-security/dom-based/web-message-manipulation](https://portswigger.net/web-security/dom-based/web-message-manipulation)
|
||||
|
||||
As vulnerabilidades de **mensagens da web** surgem quando um script envia **dados controláveis pelo atacante como uma mensagem da web para outro documento** dentro do navegador. Um **exemplo** de manipulação de mensagens da web vulnerável pode ser encontrado na [Academia de Segurança na Web da PortSwigger](https://portswigger.net/web-security/dom-based/controlling-the-web-message-source).
|
||||
As **vulnerabilidades de mensagens da web** surgem quando um script envia **dados controláveis pelo atacante como uma mensagem da web para outro documento** dentro do navegador. Um **exemplo** de manipulação de mensagens da web vulnerável pode ser encontrado na [Academia de Segurança na Web da PortSwigger](https://portswigger.net/web-security/dom-based/controlling-the-web-message-source).
|
||||
|
||||
Sinks:
|
||||
|
||||
O método `postMessage()` para enviar mensagens da web pode levar a vulnerabilidades se o ouvinte de eventos para receber mensagens manipula os dados recebidos de forma insegura.
|
||||
O método `postMessage()` para enviar mensagens da web pode levar a vulnerabilidades se o ouvinte de eventos para receber mensagens manipular os dados recebidos de forma insegura.
|
||||
|
||||
### Manipulação de dados do DOM
|
||||
|
||||
De: [https://portswigger.net/web-security/dom-based/dom-data-manipulation](https://portswigger.net/web-security/dom-based/dom-data-manipulation)
|
||||
|
||||
As vulnerabilidades de **manipulação de dados do DOM** surgem quando um script escreve **dados controláveis pelo atacante em um campo dentro do DOM** que é utilizado na interface do usuário visível ou na lógica do lado do cliente. Essa vulnerabilidade pode ser explorada por um atacante para construir um URL que, se visitado por outro usuário, pode alterar a aparência ou comportamento da interface do usuário do lado do cliente.
|
||||
As **vulnerabilidades de manipulação de dados do DOM** surgem quando um script escreve **dados controláveis pelo atacante em um campo dentro do DOM** que é utilizado na interface do usuário visível ou na lógica do lado do cliente. Essa vulnerabilidade pode ser explorada por um atacante para construir um URL que, se visitado por outro usuário, pode alterar a aparência ou comportamento da interface do cliente.
|
||||
|
||||
Sinks:
|
||||
```javascript
|
||||
|
@ -294,7 +295,7 @@ history.replaceState()
|
|||
|
||||
De: [https://portswigger.net/web-security/dom-based/denial-of-service](https://portswigger.net/web-security/dom-based/denial-of-service)
|
||||
|
||||
As **vulnerabilidades de negação de serviço baseadas em DOM** ocorrem quando um script passa **dados controláveis pelo atacante de forma insegura para uma API de plataforma problemática**. Isso inclui APIs que, quando invocadas, podem fazer com que o computador do usuário consuma **quantidades excessivas de CPU ou espaço em disco**. Tais vulnerabilidades podem ter efeitos colaterais significativos, como o navegador restringindo a funcionalidade do site ao rejeitar tentativas de armazenar dados no `localStorage` ou encerrar scripts ocupados.
|
||||
As **vulnerabilidades de negação de serviço baseadas em DOM** ocorrem quando um script passa **dados controláveis pelo atacante de forma insegura para uma API de plataforma problemática**. Isso inclui APIs que, quando invocadas, podem fazer com que o computador do usuário consuma **quantidades excessivas de CPU ou espaço em disco**. Tais vulnerabilidades podem ter efeitos colaterais significativos, como o navegador restringindo a funcionalidade do site ao rejeitar tentativas de armazenar dados no `localStorage` ou ao encerrar scripts ocupados.
|
||||
|
||||
Sinks:
|
||||
```javascript
|
||||
|
@ -311,10 +312,10 @@ RegExp()
|
|||
|
||||
<summary><strong>Aprenda hacking AWS do zero ao herói com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
* Você trabalha em uma **empresa de cibersegurança**? Gostaria de ver sua **empresa anunciada no HackTricks**? ou gostaria de ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Você trabalha em uma **empresa de cibersegurança**? Quer ver sua **empresa anunciada no HackTricks**? ou quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* 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)
|
||||
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Compartilhe seus truques de hacking enviando PRs para o** [**repositório hacktricks**](https://github.com/carlospolop/hacktricks) **e** [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
||||
|
|
Loading…
Reference in a new issue