diff --git a/mobile-pentesting/android-app-pentesting/apk-decompilers.md b/mobile-pentesting/android-app-pentesting/apk-decompilers.md index 3029bdc5b..f3d10792b 100644 --- a/mobile-pentesting/android-app-pentesting/apk-decompilers.md +++ b/mobile-pentesting/android-app-pentesting/apk-decompilers.md @@ -1,8 +1,8 @@ # APK decompilers {% hint style="success" %} -Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
@@ -14,26 +14,24 @@ Aprenda e pratique Hacking GCP: {% endhint %} -{% endhint %} - -**Para mais detalhes sobre cada ferramenta, confira o post original em [https://eiken.dev/blog/2021/02/how-to-break-your-jar-in-2021-decompilation-guide-for-jars-and-apks/#cfr](https://eiken.dev/blog/2021/02/how-to-break-your-jar-in-2021-decompilation-guide-for-jars-and-apks/#cfr)** +**Para mais detalhes sobre cada ferramenta, confira o post original em** [**https://eiken.dev/blog/2021/02/how-to-break-your-jar-in-2021-decompilation-guide-for-jars-and-apks/#cfr**](https://eiken.dev/blog/2021/02/how-to-break-your-jar-in-2021-decompilation-guide-for-jars-and-apks/#cfr) ### [JD-Gui](https://github.com/java-decompiler/jd-gui) -Como o pioneiro descompilador GUI Java, **JD-Gui** permite que você investigue o código Java dentro de arquivos APK. É simples de usar; após obter o APK, basta abri-lo com JD-Gui para inspecionar o código. +Como o pioneiro descompilador GUI Java, **JD-Gui** permite que você investigue código Java dentro de arquivos APK. É simples de usar; após obter o APK, basta abri-lo com JD-Gui para inspecionar o código. ### [Jadx](https://github.com/skylot/jadx) **Jadx** oferece uma interface amigável para descompilar código Java de aplicativos Android. É recomendado por sua facilidade de uso em diferentes plataformas. -- Para iniciar a GUI, navegue até o diretório bin e execute: `jadx-gui` -- Para uso na linha de comando, descompile um APK com: `jadx app.apk` -- Para especificar um diretório de saída ou ajustar opções de descompilação: `jadx app.apk -d --no-res --no-src --no-imports` +* Para iniciar a GUI, navegue até o diretório bin e execute: `jadx-gui` +* Para uso em linha de comando, descompile um APK com: `jadx app.apk` +* Para especificar um diretório de saída ou ajustar opções de descompilação: `jadx app.apk -d --no-res --no-src --no-imports` ### [GDA-android-reversing-Tool](https://github.com/charles2gan/GDA-android-reversing-Tool) -**GDA**, uma ferramenta exclusiva para Windows, oferece recursos extensivos para engenharia reversa de aplicativos Android. Instale e execute o GDA em seu sistema Windows, em seguida, carregue o arquivo APK para análise. +**GDA**, uma ferramenta apenas para Windows, oferece recursos extensivos para engenharia reversa de aplicativos Android. Instale e execute o GDA em seu sistema Windows, depois carregue o arquivo APK para análise. ### [Bytecode-Viewer](https://github.com/Konloch/bytecode-viewer/releases) @@ -43,31 +41,48 @@ Com **Bytecode-Viewer**, você pode analisar arquivos APK usando múltiplos desc **Enjarify** traduz bytecode Dalvik para bytecode Java, permitindo que ferramentas de análise Java analisem aplicativos Android de forma mais eficaz. -- Para usar o Enjarify, execute: `enjarify app.apk` -Isso gera o bytecode Java equivalente ao APK fornecido. +* Para usar o Enjarify, execute: `enjarify app.apk` Isso gera o bytecode Java equivalente do APK fornecido. ### [CFR](https://github.com/leibnitz27/cfr) **CFR** é capaz de descompilar recursos modernos do Java. Use-o da seguinte forma: -- Para descompilação padrão: `java -jar ./cfr.jar "app.jar" --outputdir "output_directory"` -- Para arquivos JAR grandes, ajuste a alocação de memória da JVM: `java -Xmx4G -jar ./cfr.jar "app.jar" --outputdir "output_directory"` +* Para descompilação padrão: `java -jar ./cfr.jar "app.jar" --outputdir "output_directory"` +* Para arquivos JAR grandes, ajuste a alocação de memória da JVM: `java -Xmx4G -jar ./cfr.jar "app.jar" --outputdir "output_directory"` ### [Fernflower](https://github.com/JetBrains/intellij-community/tree/master/plugins/java-decompiler/engine) **Fernflower**, um descompilador analítico, requer construção a partir do código-fonte. Após a construção: -- Descompile um arquivo JAR: `java -jar ./fernflower.jar "app.jar" "output_directory"` -Em seguida, extraia os arquivos `.java` do JAR gerado usando `unzip`. +* Descompile um arquivo JAR: `java -jar ./fernflower.jar "app.jar" "output_directory"` Em seguida, extraia os arquivos `.java` do JAR gerado usando `unzip`. ### [Krakatau](https://github.com/Storyyeller/Krakatau) **Krakatau** oferece controle detalhado sobre a descompilação, especialmente para lidar com bibliotecas externas. -- Use Krakatau especificando o caminho da biblioteca padrão e o arquivo JAR a ser descompilado: `./Krakatau/decompile.py -out "output_directory" -skip -nauto -path "./jrt-extractor/rt.jar" "app.jar"` +* Use Krakatau especificando o caminho da biblioteca padrão e o arquivo JAR a ser descompilado: `./Krakatau/decompile.py -out "output_directory" -skip -nauto -path "./jrt-extractor/rt.jar" "app.jar"` ### [procyon](https://github.com/mstrobel/procyon) Para descompilação simples com **procyon**: -- Descompile um arquivo JAR para um diretório especificado: `procyon -jar "app.jar" -o "output_directory"` +* Descompile um arquivo JAR para um diretório especificado: `procyon -jar "app.jar" -o "output_directory"` + +### [frida-DEXdump](https://github.com/hluwa/frida-dexdump) + +Esta ferramenta pode ser usada para despejar o DEX de um APK em execução na memória. Isso ajuda a superar a ofuscação estática que é removida enquanto a aplicação é executada na memória. + +{% hint style="success" %} +Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) + +
+ +Support HackTricks + +* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para os repositórios do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). + +
+{% endhint %} diff --git a/mobile-pentesting/ios-pentesting/ios-testing-environment.md b/mobile-pentesting/ios-pentesting/ios-testing-environment.md index 552fed330..1f609c60b 100644 --- a/mobile-pentesting/ios-pentesting/ios-testing-environment.md +++ b/mobile-pentesting/ios-pentesting/ios-testing-environment.md @@ -1,8 +1,8 @@ # iOS Testing Environment {% hint style="success" %} -Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
@@ -14,23 +14,22 @@ Learn & practice GCP Hacking: {% endhint %} -{% endhint %} ## Apple Developer Program -Uma **identidade de provisionamento** é uma coleção de chaves públicas e privadas associadas a uma conta de desenvolvedor Apple. Para **assinar aplicativos**, você precisa pagar **99$/ano** para se registrar no **Apple Developer Program** e obter sua identidade de provisionamento. Sem isso, você não poderá executar aplicativos a partir do código-fonte em um dispositivo físico. Outra opção para fazer isso é usar um **dispositivo com jailbreak**. +Uma **identidade de provisionamento** é uma coleção de chaves públicas e privadas que estão associadas a uma conta de desenvolvedor da Apple. Para **assinar aplicativos**, você precisa pagar **99$/ano** para se registrar no **Apple Developer Program** e obter sua identidade de provisionamento. Sem isso, você não poderá executar aplicativos a partir do código-fonte em um dispositivo físico. Outra opção para fazer isso é usar um **dispositivo com jailbreak**. A partir do Xcode 7.2, a Apple forneceu uma opção para criar um **perfil de provisionamento de desenvolvimento iOS gratuito** que permite escrever e testar seu aplicativo em um iPhone real. Vá para _Xcode_ --> _Preferences_ --> _Accounts_ --> _+_ (Adicionar novo Apple ID com suas credenciais) --> _Clique no Apple ID criado_ --> _Manage Certificates_ --> _+_ (Apple Development) --> _Done_\ \_\_Então, para executar seu aplicativo no seu iPhone, você precisa primeiro **indicar ao iPhone para confiar no computador.** Depois, você pode tentar **executar o aplicativo no celular a partir do Xcode,** mas um erro aparecerá. Então vá para _Settings_ --> _General_ --> _Profiles and Device Management_ --> Selecione o perfil não confiável e clique em "**Trust**". -Note que **aplicativos assinados pelo mesmo certificado de assinatura podem compartilhar recursos de maneira segura, como itens do keychain**. +Observe que **aplicativos assinados pelo mesmo certificado de assinatura podem compartilhar recursos de maneira segura, como itens do keychain**. Os perfis de provisionamento são armazenados dentro do telefone em **`/Library/MobileDevice/ProvisioningProfiles`** ## **Simulator** {% hint style="info" %} -Note que um **simulador não é o mesmo que um emulador**. O simulador apenas simula o comportamento e as funções do dispositivo, mas não os utiliza realmente. +Observe que um **simulador não é o mesmo que um emulador**. O simulador apenas simula o comportamento do dispositivo e suas funções, mas não os utiliza realmente. {% endhint %} ### **Simulator** @@ -52,7 +51,7 @@ Para abrir o simulador, execute o Xcode, depois pressione na _aba Xcode_ --> _Op ### Applications in the Simulator -Dentro de `/Users//Library/Developer/CoreSimulator/Devices`, você pode encontrar todos os **simuladores instalados**. Se você quiser acessar os arquivos de um aplicativo criado dentro de um dos emuladores, pode ser difícil saber **em qual o aplicativo está instalado**. Uma maneira rápida de **encontrar o UID correto** é executar o aplicativo no simulador e executar: +Dentro de `/Users//Library/Developer/CoreSimulator/Devices`, você pode encontrar todos os **simuladores instalados**. Se você quiser acessar os arquivos de um aplicativo criado dentro de um dos emuladores, pode ser difícil saber **em qual deles o aplicativo está instalado**. Uma maneira rápida de **encontrar o UID correto** é executar o aplicativo no simulador e executar: ```bash xcrun simctl list | grep Booted iPhone 8 (BF5DA4F8-6BBE-4EA0-BA16-7E3AFD16C06C) (Booted) @@ -67,9 +66,13 @@ E nesta pasta você pode **encontrar o pacote do aplicativo.** Corellium é o único emulador iOS disponível publicamente. É uma solução SaaS empresarial com um modelo de licença por usuário e não oferece nenhuma licença de teste. -## Jailbeaking +## Sem Jailbreak necessário -A Apple exige estritamente que o código executado no iPhone deve ser **assinado por um certificado emitido pela Apple**. **Jailbreaking** é o processo de **contornar ativamente tais restrições** e outros controles de segurança impostos pelo sistema operacional. Portanto, uma vez que o dispositivo é jailbroken, a **verificação de integridade** responsável por verificar a instalação de aplicativos é corrigida, de modo que é **contornada**. +Confira este post no blog sobre como fazer pentesting em um aplicativo iOS em um **dispositivo não jailbreak**: [https://dvuln.com/blog/modern-ios-pentesting-no-jailbreak-needed](https://dvuln.com/blog/modern-ios-pentesting-no-jailbreak-needed) + +## Jailbreaking + +A Apple exige estritamente que o código executado no iPhone deve ser **assinado por um certificado emitido pela Apple**. **Jailbreaking** é o processo de **contornar ativamente tais restrições** e outros controles de segurança impostos pelo sistema operacional. Portanto, uma vez que o dispositivo é jailbreak, a **verificação de integridade** que é responsável por verificar os aplicativos instalados é corrigida, então é **contornada**. {% hint style="info" %} Ao contrário do Android, **você não pode mudar para "Modo Desenvolvedor"** no iOS para executar código não assinado/não confiável no dispositivo. @@ -77,7 +80,7 @@ Ao contrário do Android, **você não pode mudar para "Modo Desenvolvedor"** no ### Rooting Android vs. Jailbreaking iOS -Embora frequentemente comparados, **rooting** no Android e **jailbreaking** no iOS são processos fundamentalmente diferentes. O rooting de dispositivos Android pode envolver **instalar o binário `su`** ou **substituir o sistema por um ROM personalizado com root**, o que não requer necessariamente exploits se o bootloader estiver desbloqueado. **Flashing de ROMs personalizadas** substitui o sistema operacional do dispositivo após desbloquear o bootloader, às vezes exigindo um exploit. +Embora frequentemente comparados, **rooting** no Android e **jailbreaking** no iOS são processos fundamentalmente diferentes. O rooting de dispositivos Android pode envolver **instalar o binário `su`** ou **substituir o sistema por um ROM personalizado com root**, o que não necessariamente requer exploits se o bootloader estiver desbloqueado. **Flashing de ROMs personalizadas** substitui o sistema operacional do dispositivo após desbloquear o bootloader, às vezes exigindo um exploit. Em contraste, dispositivos iOS não podem flashar ROMs personalizadas devido à restrição do bootloader de apenas inicializar imagens assinadas pela Apple. **Jailbreaking iOS** visa contornar as proteções de assinatura de código da Apple para executar código não assinado, um processo complicado pelas contínuas melhorias de segurança da Apple. @@ -90,13 +93,13 @@ As atualizações do iOS são controladas por um **mecanismo de desafio-resposta ### Variedades de Jailbreak * **Jailbreaks tethered** requerem uma conexão com o computador para cada reinicialização. -* **Jailbreaks semi-tethered** permitem inicializar em modo não jailbroken sem um computador. +* **Jailbreaks semi-tethered** permitem inicializar em modo não jailbreak sem um computador. * **Jailbreaks semi-untethered** requerem re-jailbreaking manual sem precisar de um computador. * **Jailbreaks untethered** oferecem uma solução de jailbreak permanente sem a necessidade de reaplicação. ### Ferramentas e Recursos de Jailbreaking -As ferramentas de jailbreaking variam de acordo com a versão do iOS e o dispositivo. Recursos como [Can I Jailbreak?](https://canijailbreak.com), [The iPhone Wiki](https://www.theiphonewiki.com) e [Reddit Jailbreak](https://www.reddit.com/r/jailbreak/) fornecem informações atualizadas. Exemplos incluem: +As ferramentas de jailbreaking variam por versão do iOS e dispositivo. Recursos como [Can I Jailbreak?](https://canijailbreak.com), [The iPhone Wiki](https://www.theiphonewiki.com) e [Reddit Jailbreak](https://www.reddit.com/r/jailbreak/) fornecem informações atualizadas. Exemplos incluem: * [Checkra1n](https://checkra.in/) para dispositivos com chip A7-A11. * [Palera1n](https://palera.in/) para dispositivos Checkm8 (A8-A11) no iOS 15.0-16.5. @@ -106,7 +109,7 @@ Modificar seu dispositivo traz riscos, e o jailbreaking deve ser abordado com ca ### Benefícios e Riscos do Jailbreaking -O jailbreaking **remove o sandboxing imposto pelo OS**, permitindo que os aplicativos acessem todo o sistema de arquivos. Essa liberdade possibilita a instalação de aplicativos não aprovados e o acesso a mais APIs. No entanto, para usuários regulares, o jailbreaking **não é recomendado** devido a potenciais riscos de segurança e instabilidade do dispositivo. +O jailbreaking **remove o sandboxing imposto pelo OS**, permitindo que os aplicativos acessem todo o sistema de arquivos. Essa liberdade permite a instalação de aplicativos não aprovados e acesso a mais APIs. No entanto, para usuários regulares, o jailbreaking **não é recomendado** devido a potenciais riscos de segurança e instabilidade do dispositivo. ### **Após o Jailbreaking** @@ -116,15 +119,15 @@ O jailbreaking **remove o sandboxing imposto pelo OS**, permitindo que os aplica ### **Detecção de Jailbreak** -**Vários aplicativos tentarão detectar se o celular está jailbroken e, nesse caso, o aplicativo não será executado** +**Vários aplicativos tentarão detectar se o celular está jailbreak e, nesse caso, o aplicativo não será executado** -* Após o jailbreaking, arquivos e pastas do iOS **são geralmente instalados**, estes podem ser pesquisados para determinar se o dispositivo está jailbroken. -* Em um dispositivo jailbroken, os aplicativos obtêm **acesso de leitura/gravação a novos arquivos** fora do sandbox. +* Após o jailbreak, **arquivos e pastas geralmente são instalados**, estes podem ser pesquisados para determinar se o dispositivo está jailbreak. +* Em um dispositivo jailbreak, os aplicativos obtêm **acesso de leitura/gravação a novos arquivos** fora do sandbox. * Algumas **chamadas de API** **comportar-se-ão de maneira diferente**. * A presença do serviço **OpenSSH**. * Chamar `/bin/sh` retornará **1** em vez de 0. -**Mais informações sobre como detectar jailbreaking** [**aqui**](https://www.trustwave.com/en-us/resources/blogs/spiderlabs-blog/jailbreak-detection-methods/)**.** +**Mais informações sobre como detectar jailbreak** [**aqui**](https://www.trustwave.com/en-us/resources/blogs/spiderlabs-blog/jailbreak-detection-methods/)**.** Você pode tentar evitar essas detecções usando **o comando `ios jailbreak disable` do objection** @@ -136,19 +139,18 @@ Você pode tentar evitar essas detecções usando **o comando `ios jailbreak dis ## Referências * [https://mas.owasp.org/MASTG/iOS/0x06b-iOS-Security-Testing/](https://mas.owasp.org/MASTG/iOS/0x06b-iOS-Security-Testing/) + {% hint style="success" %} -Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
Support HackTricks * Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-nos no** **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** * **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
{% endhint %} -
-{% endhint %} diff --git a/network-services-pentesting/pentesting-web/web-api-pentesting.md b/network-services-pentesting/pentesting-web/web-api-pentesting.md index 119341ab8..1dfd2dab9 100644 --- a/network-services-pentesting/pentesting-web/web-api-pentesting.md +++ b/network-services-pentesting/pentesting-web/web-api-pentesting.md @@ -1,8 +1,8 @@ # Web API Pentesting {% hint style="success" %} -Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
@@ -18,7 +18,7 @@ Aprenda e pratique Hacking GCP:
Use [**Trickest**](https://trickest.com/?utm\_source=hacktricks\&utm\_medium=text\&utm\_campaign=ppc\&utm\_term=trickest\&utm\_content=web-api-pentesting) para construir e **automatizar fluxos de trabalho** facilmente, impulsionados pelas **ferramentas** comunitárias **mais avançadas** do mundo.\ -Acesse hoje: +Obtenha Acesso Hoje: {% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=web-api-pentesting" %} @@ -28,8 +28,8 @@ Pentesting de APIs envolve uma abordagem estruturada para descobrir vulnerabilid ### **Entendendo os Tipos de API** -* **SOAP/XML Web Services**: Utilizam o formato WSDL para documentação, geralmente encontrado em caminhos `?wsdl`. Ferramentas como **SOAPUI** e **WSDLer** (Extensão do Burp Suite) são instrumentais para analisar e gerar requisições. A documentação de exemplo está acessível em [DNE Online](http://www.dneonline.com/calculator.asmx). -* **REST APIs (JSON)**: A documentação geralmente vem em arquivos WADL, mas ferramentas como [Swagger UI](https://swagger.io/tools/swagger-ui/) fornecem uma interface mais amigável para interação. **Postman** é uma ferramenta valiosa para criar e gerenciar requisições de exemplo. +* **Serviços Web SOAP/XML**: Utilizam o formato WSDL para documentação, geralmente encontrado em caminhos `?wsdl`. Ferramentas como **SOAPUI** e **WSDLer** (Extensão do Burp Suite) são instrumentais para analisar e gerar requisições. A documentação de exemplo está acessível em [DNE Online](http://www.dneonline.com/calculator.asmx). +* **APIs REST (JSON)**: A documentação geralmente vem em arquivos WADL, mas ferramentas como [Swagger UI](https://swagger.io/tools/swagger-ui/) fornecem uma interface mais amigável para interação. **Postman** é uma ferramenta valiosa para criar e gerenciar requisições de exemplo. * **GraphQL**: Uma linguagem de consulta para APIs que oferece uma descrição completa e compreensível dos dados na sua API. ### **Laboratórios de Prática** @@ -57,6 +57,7 @@ kr scan https://domain.com/api/ -A=apiroutes-220828 -x 20 kr brute https://domain.com/api/ -A=raft-large-words -x 20 -d=0 kr brute https://domain.com/api/ -w /tmp/lang-english.txt -x 20 -d=0 ``` +* [**https://github.com/BishopFox/sj**](https://github.com/BishopFox/sj): sj é uma ferramenta de linha de comando projetada para ajudar na auditoria de **arquivos de definição Swagger/OpenAPI expostos** verificando os endpoints da API associados para autenticação fraca. Também fornece modelos de comando para testes manuais de vulnerabilidade. * Ferramentas adicionais como **automatic-api-attack-tool**, **Astra** e **restler-fuzzer** oferecem funcionalidades personalizadas para testes de segurança de API, variando de simulação de ataque a fuzzing e varredura de vulnerabilidades. * [**Cherrybomb**](https://github.com/blst-security/cherrybomb): É uma ferramenta de segurança de API que audita sua API com base em um arquivo OAS (a ferramenta é escrita em rust). @@ -73,14 +74,14 @@ kr brute https://domain.com/api/ -w /tmp/lang-english.txt -x 20 -d=0
-Use [**Trickest**](https://trickest.com/?utm\_source=hacktricks\&utm\_medium=text\&utm\_campaign=ppc\&utm\_term=trickest\&utm\_content=web-api-pentesting) para construir e **automatizar fluxos de trabalho** facilmente, impulsionados pelas **ferramentas** **mais avançadas** da comunidade.\ +Use [**Trickest**](https://trickest.com/?utm\_source=hacktricks\&utm\_medium=text\&utm\_campaign=ppc\&utm\_term=trickest\&utm\_content=web-api-pentesting) para construir e **automatizar fluxos de trabalho** facilmente com as **ferramentas** da comunidade **mais avançadas** do mundo.\ Acesse hoje: {% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=web-api-pentesting" %} {% hint style="success" %} -Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
diff --git a/pentesting-web/cors-bypass.md b/pentesting-web/cors-bypass.md index caa8d98c6..be1d1ac79 100644 --- a/pentesting-web/cors-bypass.md +++ b/pentesting-web/cors-bypass.md @@ -1,8 +1,8 @@ # CORS - Misconfigurações & Bypass {% hint style="success" %} -Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
@@ -21,7 +21,7 @@ Aprenda e pratique Hacking GCP: Arun'); Ao iniciar uma solicitação entre domínios sob condições específicas, como usar um **método HTTP não padrão** (qualquer coisa além de HEAD, GET, POST), introduzir novos **cabeçalhos** ou empregar um valor especial para o **cabeçalho Content-Type**, uma solicitação pre-flight pode ser necessária. Esta solicitação preliminar, utilizando o método **`OPTIONS`**, serve para informar o servidor sobre as intenções da próxima solicitação de origem cruzada, incluindo os métodos HTTP e cabeçalhos que pretende usar. -O protocolo **Cross-Origin Resource Sharing (CORS)** exige essa verificação pre-flight para determinar a viabilidade da operação de origem cruzada solicitada, verificando os métodos, cabeçalhos permitidos e a confiabilidade da origem. Para uma compreensão detalhada das condições que contornam a necessidade de uma solicitação pre-flight, consulte o guia abrangente fornecido pela [**Mozilla Developer Network (MDN)**](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS#simple\_requests). +O protocolo **Cross-Origin Resource Sharing (CORS)** exige essa verificação pre-flight para determinar a viabilidade da operação de origem cruzada solicitada, verificando os métodos e cabeçalhos permitidos, além da confiabilidade da origem. Para uma compreensão detalhada das condições que contornam a necessidade de uma solicitação pre-flight, consulte o guia abrangente fornecido pela [**Mozilla Developer Network (MDN)**](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS#simple\_requests). É crucial notar que a **ausência de uma solicitação pre-flight não anula a exigência de que a resposta contenha cabeçalhos de autorização**. Sem esses cabeçalhos, o navegador fica incapacitado de processar a resposta da solicitação de origem cruzada. @@ -131,22 +131,31 @@ Content-Length: 0 ... ``` {% hint style="warning" %} -Note que o IP linux **0.0.0.0** funciona para **bypassar** esses requisitos para acessar localhost, pois esse endereço IP não é considerado "local". +Observe que o IP linux **0.0.0.0** funciona para **burlar** esses requisitos para acessar localhost, pois esse endereço IP não é considerado "local". -Também é possível **bypassar os requisitos da Rede Local** se você usar o **endereço IP público de um endpoint local** (como o IP público do roteador). Porque em várias ocasiões, mesmo que o **IP público** esteja sendo acessado, se for **da rede local**, o acesso será concedido. +Também é possível **burlar os requisitos da Rede Local** se você usar o **endereço IP público de um endpoint local** (como o IP público do roteador). Porque em várias ocasiões, mesmo que o **IP público** esteja sendo acessado, se for **da rede local**, o acesso será concedido. {% endhint %} +### Wildcards + +Observe que mesmo que a seguinte configuração possa parecer super permissiva: +```bash +Access-Control-Allow-Origin: * +Access-Control-Allow-Credentials: true +``` +Isto não é permitido pelos navegadores e, portanto, as credenciais não serão enviadas com a solicitação permitida por isso. + ## Configurações incorretas exploráveis -Foi observado que a configuração de `Access-Control-Allow-Credentials` para **`true`** é um pré-requisito para a maioria dos **ataques reais**. Essa configuração permite que o navegador envie credenciais e leia a resposta, aumentando a eficácia do ataque. Sem isso, o benefício de fazer um navegador emitir uma solicitação em vez de fazê-lo pessoalmente diminui, já que aproveitar os cookies de um usuário se torna inviável. +Foi observado que a configuração de `Access-Control-Allow-Credentials` para **`true`** é um pré-requisito para a maioria dos **ataques reais**. Esta configuração permite que o navegador envie credenciais e leia a resposta, aumentando a eficácia do ataque. Sem isso, o benefício de fazer um navegador emitir uma solicitação em vez de fazê-lo pessoalmente diminui, já que aproveitar os cookies de um usuário se torna inviável. ### Exceção: Explorando a Localização da Rede como Autenticação -Existe uma exceção onde a localização da rede da vítima atua como uma forma de autenticação. Isso permite que o navegador da vítima seja usado como um proxy, contornando a autenticação baseada em IP para acessar aplicações intranet. Esse método compartilha semelhanças em impacto com o DNS rebinding, mas é mais simples de explorar. +Existe uma exceção onde a localização da rede da vítima atua como uma forma de autenticação. Isso permite que o navegador da vítima seja usado como um proxy, contornando a autenticação baseada em IP para acessar aplicações intranet. Este método compartilha semelhanças em impacto com o DNS rebinding, mas é mais simples de explorar. ### Reflexão de `Origin` em `Access-Control-Allow-Origin` -O cenário do mundo real onde o valor do cabeçalho `Origin` é refletido em `Access-Control-Allow-Origin` é teoricamente improvável devido a restrições na combinação desses cabeçalhos. No entanto, desenvolvedores que buscam habilitar CORS para várias URLs podem gerar dinamicamente o cabeçalho `Access-Control-Allow-Origin` copiando o valor do cabeçalho `Origin`. Essa abordagem pode introduzir vulnerabilidades, particularmente quando um atacante emprega um domínio com um nome projetado para parecer legítimo, enganando assim a lógica de validação. +O cenário do mundo real onde o valor do cabeçalho `Origin` é refletido em `Access-Control-Allow-Origin` é teoricamente improvável devido a restrições na combinação desses cabeçalhos. No entanto, desenvolvedores que buscam habilitar CORS para várias URLs podem gerar dinamicamente o cabeçalho `Access-Control-Allow-Origin` copiando o valor do cabeçalho `Origin`. Esta abordagem pode introduzir vulnerabilidades, particularmente quando um atacante emprega um domínio com um nome projetado para parecer legítimo, enganando assim a lógica de validação. ```html

test

``` @@ -91,7 +91,7 @@ https://app.victim.com/login?redirectUrl=https://app.victim.com/dashboard -1. **Sem Verificação de Email na Criação da Conta**: Os atacantes podem criar proativamente uma conta usando o email da vítima. Se a vítima usar posteriormente um serviço de terceiros para login, a aplicação pode inadvertidamente vincular essa conta de terceiros à conta pré-criada do atacante, levando ao acesso não autorizado. +1. **Sem Verificação de Email na Criação da Conta**: Os atacantes podem criar proativamente uma conta usando o email da vítima. Se a vítima usar um serviço de terceiros para login, a aplicação pode inadvertidamente vincular essa conta de terceiros à conta pré-criada do atacante, levando ao acesso não autorizado. 2. **Explorando a Verificação de Email Lax do OAuth**: Os atacantes podem explorar serviços de OAuth que não verificam emails registrando-se com seu serviço e, em seguida, alterando o email da conta para o da vítima. Esse método também arrisca o acesso não autorizado à conta, semelhante ao primeiro cenário, mas através de um vetor de ataque diferente. ### Divulgação de Segredos Identificar e proteger parâmetros secretos do OAuth é crucial. Enquanto o **`client_id`** pode ser divulgado com segurança, revelar o **`client_secret`** apresenta riscos significativos. Se o `client_secret` for comprometido, os atacantes podem explorar a identidade e a confiança da aplicação para **roubar `access_tokens` de usuários** e informações privadas. -Uma vulnerabilidade comum surge quando as aplicações manipulam erroneamente a troca do `code` de autorização por um `access_token` no lado do cliente em vez do lado do servidor. Esse erro leva à exposição do `client_secret`, permitindo que os atacantes gerem `access_tokens` sob a aparência da aplicação. Além disso, por meio de engenharia social, os atacantes poderiam escalar privilégios adicionando escopos adicionais à autorização do OAuth, explorando ainda mais o status de confiança da aplicação. +Uma vulnerabilidade comum surge quando as aplicações lidam erroneamente com a troca do `code` de autorização por um `access_token` no lado do cliente em vez do lado do servidor. Esse erro leva à exposição do `client_secret`, permitindo que os atacantes gerem `access_tokens` sob a aparência da aplicação. Além disso, através de engenharia social, os atacantes poderiam escalar privilégios adicionando escopos adicionais à autorização do OAuth, explorando ainda mais o status de confiança da aplicação. ### Client Secret Bruteforce @@ -171,14 +171,14 @@ Como [**mencionado neste artigo**](https://salt.security/blog/oh-auth-abusing-oa Isso ocorre porque um **atacante** poderia criar um **aplicativo que suporta OAuth e login com Facebook** (por exemplo) em seu próprio aplicativo. Então, uma vez que uma vítima faça login com Facebook no **aplicativo do atacante**, o atacante poderia obter o **token OAuth do usuário dado ao seu aplicativo e usá-lo para fazer login no aplicativo OAuth da vítima usando o token do usuário da vítima**. {% hint style="danger" %} -Portanto, se o atacante conseguir fazer com que o usuário acesse seu próprio aplicativo OAuth, ele poderá assumir a conta da vítima em aplicativos que esperam um token e não estão verificando se o token foi concedido ao ID do seu aplicativo. +Portanto, se o atacante conseguir fazer com que o usuário acesse seu próprio aplicativo OAuth, ele poderá assumir a conta da vítima em aplicativos que esperam um token e não verificam se o token foi concedido ao ID do seu aplicativo. {% endhint %} ### Dois links & cookie -De acordo com [**este artigo**](https://medium.com/@metnew/why-electron-apps-cant-store-your-secrets-confidentially-inspect-option-a49950d6d51f), era possível fazer com que uma vítima abrisse uma página com um **returnUrl** apontando para o host do atacante. Essa informação seria **armazenada em um cookie (RU)** e em um **passo posterior** o **prompt** **perguntaria** ao **usuário** se ele deseja conceder acesso a esse host do atacante. +De acordo com [**este artigo**](https://medium.com/@metnew/why-electron-apps-cant-store-your-secrets-confidentially-inspect-option-a49950d6d51f), era possível fazer uma vítima abrir uma página com um **returnUrl** apontando para o host do atacante. Essa informação seria **armazenada em um cookie (RU)** e em um **passo posterior** o **prompt** irá **perguntar** ao **usuário** se ele deseja conceder acesso ao host do atacante. -Para contornar esse prompt, era possível abrir uma aba para iniciar o **fluxo OAuth** que configuraria esse cookie RU usando o **returnUrl**, fechar a aba antes que o prompt fosse exibido e abrir uma nova aba sem esse valor. Assim, o **prompt não informará sobre o host do atacante**, mas o cookie seria configurado para ele, então o **token será enviado para o host do atacante** na redireção. +Para contornar esse prompt, era possível abrir uma aba para iniciar o **fluxo Oauth** que configuraria esse cookie RU usando o **returnUrl**, fechar a aba antes que o prompt fosse exibido e abrir uma nova aba sem esse valor. Assim, o **prompt não informará sobre o host do atacante**, mas o cookie seria configurado para ele, então o **token será enviado para o host do atacante** na redireção. ### Bypass de Interação do Prompt @@ -193,19 +193,23 @@ Como [**explicado neste vídeo**](https://www.youtube.com/watch?v=n9x7\_J\_a\_7Q * `response_mode=form_post` -> O código é fornecido dentro de um formulário POST com um input chamado `code` e o valor * `response_mode=web_message` -> O código é enviado em uma mensagem post: `window.opener.postMessage({"code": "asdasdasd...` +### Fluxo OAuth ROPC - bypass de 2 FA + +De acordo com [**este post de blog**](https://cybxis.medium.com/a-bypass-on-gitlabs-login-email-verification-via-oauth-ropc-flow-e194242cad96), este é um fluxo OAuth que permite fazer login no OAuth via **nome de usuário** e **senha**. Se durante esse fluxo simples um **token** com acesso a todas as ações que o usuário pode realizar for retornado, então é possível contornar a 2FA usando esse token. + ### Parâmetros SSRFs [**Verifique esta pesquisa**](https://portswigger.net/research/hidden-oauth-attack-vectors) **Para mais detalhes sobre esta técnica.** -O Registro Dinâmico de Clientes em OAuth serve como um vetor menos óbvio, mas crítico, para vulnerabilidades de segurança, especificamente para ataques de **Server-Side Request Forgery (SSRF)**. Este endpoint permite que servidores OAuth recebam detalhes sobre aplicativos clientes, incluindo URLs sensíveis que podem ser exploradas. +O Registro Dinâmico de Clientes no OAuth serve como um vetor menos óbvio, mas crítico, para vulnerabilidades de segurança, especificamente para ataques de **Server-Side Request Forgery (SSRF)**. Este endpoint permite que servidores OAuth recebam detalhes sobre aplicativos clientes, incluindo URLs sensíveis que podem ser exploradas. -**Pontos Chave:** +**Pontos-chave:** -* **Registro Dinâmico de Clientes** é frequentemente mapeado para `/register` e aceita detalhes como `client_name`, `client_secret`, `redirect_uris` e URLs para logotipos ou Conjuntos de Chaves Web JSON (JWKs) via requisições POST. +* **Registro Dinâmico de Clientes** é frequentemente mapeado para `/register` e aceita detalhes como `client_name`, `client_secret`, `redirect_uris` e URLs para logotipos ou Conjuntos de Chaves Web JSON (JWKs) via solicitações POST. * Este recurso adere às especificações estabelecidas em **RFC7591** e **OpenID Connect Registration 1.0**, que incluem parâmetros potencialmente vulneráveis a SSRF. * O processo de registro pode inadvertidamente expor servidores a SSRF de várias maneiras: * **`logo_uri`**: Uma URL para o logotipo do aplicativo cliente que pode ser buscada pelo servidor, acionando SSRF ou levando a XSS se a URL for mal manipulada. -* **`jwks_uri`**: Uma URL para o documento JWK do cliente, que se for maliciosamente elaborado, pode fazer com que o servidor faça requisições externas para um servidor controlado pelo atacante. +* **`jwks_uri`**: Uma URL para o documento JWK do cliente, que se for maliciosamente elaborado, pode fazer com que o servidor faça solicitações externas para um servidor controlado pelo atacante. * **`sector_identifier_uri`**: Referencia um array JSON de `redirect_uris`, que o servidor pode buscar, criando uma oportunidade de SSRF. * **`request_uris`**: Lista as URIs de solicitação permitidas para o cliente, que podem ser exploradas se o servidor buscar essas URIs no início do processo de autorização. @@ -228,14 +232,14 @@ Se a plataforma que você está testando é um provedor OAuth [**leia isso para {% embed url="https://websec.nl/" %} {% hint style="success" %} -Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Suporte ao HackTricks +Support HackTricks -* Verifique os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! +* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! * **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** * **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.