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.