Translated ['src/banners/hacktricks-training.md', 'src/pentesting-ci-cd/

This commit is contained in:
Translator
2025-01-02 01:17:32 +00:00
parent 6b8f1f076b
commit 17d930d963
221 changed files with 1540 additions and 1546 deletions

View File

@@ -4,7 +4,7 @@
## Vazamentos de Credenciais AWS
Uma maneira comum de obter acesso ou informações sobre uma conta AWS é **procurando por vazamentos**. Você pode procurar por vazamentos usando **google dorks**, verificando os **repositórios públicos** da **organização** e dos **trabalhadores** da organização no **Github** ou em outras plataformas, pesquisando em **bancos de dados de vazamentos de credenciais**... ou em qualquer outra parte que você acha que pode encontrar alguma informação sobre a empresa e sua infraestrutura em nuvem.\
Uma maneira comum de obter acesso ou informações sobre uma conta AWS é **procurando por vazamentos**. Você pode procurar por vazamentos usando **google dorks**, verificando os **repositórios públicos** da **organização** e dos **trabalhadores** da organização no **Github** ou em outras plataformas, pesquisando em **bancos de dados de vazamentos de credenciais**... ou em qualquer outra parte que você acha que pode encontrar informações sobre a empresa e sua infraestrutura em nuvem.\
Algumas **ferramentas** úteis:
- [https://github.com/carlospolop/leakos](https://github.com/carlospolop/leakos)
@@ -15,24 +15,24 @@ Algumas **ferramentas** úteis:
Existem vários serviços na AWS que podem ser configurados dando algum tipo de acesso a toda a Internet ou a mais pessoas do que o esperado. Confira aqui como:
- [**Enumeração Não Autenticada de Contas**](aws-accounts-unauthenticated-enum.md)
- [**Enumeração Não Autenticada do Cloud9**](https://github.com/carlospolop/hacktricks-cloud/blob/master/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/broken-reference/README.md)
- [**Enumeração Não Autenticada do Cloudfront**](aws-cloudfront-unauthenticated-enum.md)
- [**Enumeração Não Autenticada do Cloudsearch**](https://github.com/carlospolop/hacktricks-cloud/blob/master/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/broken-reference/README.md)
- [**Enumeração Não Autenticada do Cognito**](aws-cognito-unauthenticated-enum.md)
- [**Enumeração Não Autenticada do DocumentDB**](aws-documentdb-enum.md)
- [**Enumeração Não Autenticada do EC2**](aws-ec2-unauthenticated-enum.md)
- [**Enumeração Não Autenticada do Elasticsearch**](aws-elasticsearch-unauthenticated-enum.md)
- [**Enumeração Não Autenticada do IAM**](aws-iam-and-sts-unauthenticated-enum.md)
- [**Acesso Não Autenticado do IoT**](aws-iot-unauthenticated-enum.md)
- [**Acesso Não Autenticado do Kinesis Video**](aws-kinesis-video-unauthenticated-enum.md)
- [**Acesso Não Autenticado de Mídia**](aws-media-unauthenticated-enum.md)
- [**Acesso Não Autenticado do MQ**](aws-mq-unauthenticated-enum.md)
- [**Acesso Não Autenticado do MSK**](aws-msk-unauthenticated-enum.md)
- [**Acesso Não Autenticado do RDS**](aws-rds-unauthenticated-enum.md)
- [**Acesso Não Autenticado do Redshift**](aws-redshift-unauthenticated-enum.md)
- [**Acesso Não Autenticado do SQS**](aws-sqs-unauthenticated-enum.md)
- [**Acesso Não Autenticado do S3**](aws-s3-unauthenticated-enum.md)
- [**Enumeração de Contas Não Autenticadas**](aws-accounts-unauthenticated-enum.md)
- [**Enumeração Cloud9 Não Autenticada**](https://github.com/carlospolop/hacktricks-cloud/blob/master/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/broken-reference/README.md)
- [**Enumeração Cloudfront Não Autenticada**](aws-cloudfront-unauthenticated-enum.md)
- [**Enumeração Cloudsearch Não Autenticada**](https://github.com/carlospolop/hacktricks-cloud/blob/master/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/broken-reference/README.md)
- [**Enumeração Cognito Não Autenticada**](aws-cognito-unauthenticated-enum.md)
- [**Enumeração DocumentDB Não Autenticada**](aws-documentdb-enum.md)
- [**Enumeração EC2 Não Autenticada**](aws-ec2-unauthenticated-enum.md)
- [**Enumeração Elasticsearch Não Autenticada**](aws-elasticsearch-unauthenticated-enum.md)
- [**Enumeração IAM Não Autenticada**](aws-iam-and-sts-unauthenticated-enum.md)
- [**Acesso IoT Não Autenticado**](aws-iot-unauthenticated-enum.md)
- [**Acesso Kinesis Video Não Autenticado**](aws-kinesis-video-unauthenticated-enum.md)
- [**Acesso de Mídia Não Autenticado**](aws-media-unauthenticated-enum.md)
- [**Acesso MQ Não Autenticado**](aws-mq-unauthenticated-enum.md)
- [**Acesso MSK Não Autenticado**](aws-msk-unauthenticated-enum.md)
- [**Acesso RDS Não Autenticado**](aws-rds-unauthenticated-enum.md)
- [**Acesso Redshift Não Autenticado**](aws-redshift-unauthenticated-enum.md)
- [**Acesso SQS Não Autenticado**](aws-sqs-unauthenticated-enum.md)
- [**Acesso S3 Não Autenticado**](aws-s3-unauthenticated-enum.md)
## Ataques entre Contas

View File

@@ -1,10 +1,10 @@
# AWS - Accounts Unauthenticated Enum
# AWS - Enumeração de Contas Não Autenticadas
{{#include ../../../banners/hacktricks-training.md}}
## IDs de Conta
Se você tiver um alvo, existem maneiras de tentar identificar os IDs de conta de contas relacionadas ao alvo.
Se você tem um alvo, existem maneiras de tentar identificar os IDs de conta relacionados ao alvo.
### Força Bruta
@@ -24,17 +24,17 @@ Procure por URLs que contenham `<alias>.signin.aws.amazon.com` com um **alias re
### Marketplace
Se um vendedor tiver **instâncias no marketplace,** você pode obter o id do proprietário (id da conta) da conta AWS que ele usou.
Se um fornecedor tiver **instâncias no marketplace,** você pode obter o id do proprietário (id da conta) da conta AWS que ele usou.
### Snapshots
- Snapshots públicos do EBS (EC2 -> Snapshots -> Public Snapshots)
- Snapshots EBS públicos (EC2 -> Snapshots -> Public Snapshots)
- Snapshots públicos do RDS (RDS -> Snapshots -> All Public Snapshots)
- AMIs públicas (EC2 -> AMIs -> Public images)
### Erros
Muitas mensagens de erro da AWS (mesmo acesso negado) fornecerão essa informação.
Muitas mensagens de erro da AWS (mesmo acesso negado) fornecerão essas informações.
## Referências

View File

@@ -4,7 +4,7 @@
### Bypass de Invocação da API
De acordo com a palestra [Vetores de Ataque para APIs Usando AWS API Gateway Lambda Authorizers - Alexandre & Leonardo](https://www.youtube.com/watch?v=bsPKk7WDOnE), os Lambda Authorizers podem ser configurados **usando a sintaxe IAM** para conceder permissões para invocar endpoints da API. Isso é retirado [**da documentação**](https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-control-access-using-iam-policies-to-invoke-api.html):
De acordo com a palestra [Attack Vectors for APIs Using AWS API Gateway Lambda Authorizers - Alexandre & Leonardo](https://www.youtube.com/watch?v=bsPKk7WDOnE), os Lambda Authorizers podem ser configurados **usando a sintaxe IAM** para conceder permissões para invocar endpoints da API. Isso é retirado [**da documentação**](https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-control-access-using-iam-policies-to-invoke-api.html):
```json
{
"Version": "2012-10-17",
@@ -28,15 +28,15 @@ Alguns exemplos:
> [!WARNING]
> Note que **"\*" não para de se expandir com barras**, portanto, se você usar "\*" em api-id, por exemplo, isso também pode indicar "qualquer estágio" ou "qualquer método", desde que a regex final ainda seja válida.\
> Assim, `arn:aws:execute-apis:sa-east-1:accid:*/prod/GET/dashboard/*`\
> Pode validar uma solicitação POST para o estágio de teste no caminho `/prod/GET/dashboard/admin`, por exemplo.
> Pode validar uma solicitação POST para o estágio de teste para o caminho `/prod/GET/dashboard/admin`, por exemplo.
Você deve sempre ter claro o que deseja permitir o acesso e, em seguida, verificar se outros cenários são possíveis com as permissões concedidas.
Para mais informações, além da [**docs**](https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-control-access-using-iam-policies-to-invoke-api.html), você pode encontrar código para implementar autorizadores na [**este github oficial da aws**](https://github.com/awslabs/aws-apigateway-lambda-authorizer-blueprints/tree/master/blueprints).
Para mais informações, além da [**docs**](https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-control-access-using-iam-policies-to-invoke-api.html), você pode encontrar código para implementar autorizadores [**neste github oficial da aws**](https://github.com/awslabs/aws-apigateway-lambda-authorizer-blueprints/tree/master/blueprints).
### Injeção de Política IAM
Na mesma [**palestra**](https://www.youtube.com/watch?v=bsPKk7WDOnE), é exposto o fato de que, se o código estiver usando **entrada do usuário** para **gerar as políticas IAM**, curingas (e outros, como "." ou strings específicas) podem ser incluídos com o objetivo de **contornar restrições**.
Na mesma [**palestra**](https://www.youtube.com/watch?v=bsPKk7WDOnE), é exposto o fato de que, se o código estiver usando **entrada do usuário** para **gerar as políticas IAM**, curingas (e outros como "." ou strings específicas) podem ser incluídos com o objetivo de **contornar restrições**.
### Modelo de URL Pública
```

View File

@@ -12,7 +12,7 @@ Para mais informações, consulte esta página:
### buildspec.yml
Se você comprometer o acesso de escrita a um repositório contendo um arquivo chamado **`buildspec.yml`**, você poderia **backdoor** este arquivo, que especifica os **comandos que serão executados** dentro de um projeto CodeBuild e exfiltrar os segredos, comprometer o que é feito e também comprometer as **credenciais do papel IAM do CodeBuild**.
Se você comprometer o acesso de escrita a um repositório contendo um arquivo chamado **`buildspec.yml`**, você poderia **injetar um backdoor** neste arquivo, que especifica os **comandos que serão executados** dentro de um projeto CodeBuild e exfiltrar os segredos, comprometer o que é feito e também comprometer as **credenciais do papel IAM do CodeBuild**.
Observe que mesmo que não haja nenhum arquivo **`buildspec.yml`**, mas você saiba que o Codebuild está sendo usado (ou um CI/CD diferente), **modificar algum código legítimo** que será executado também pode te dar um shell reverso, por exemplo.
@@ -24,10 +24,10 @@ Para algumas informações relacionadas, você pode consultar a página sobre co
## Runners do GitHub Actions auto-hospedados no AWS CodeBuild <a href="#action-runner" id="action-runner"></a>
Como [**indicado na documentação**](https://docs.aws.amazon.com/codebuild/latest/userguide/action-runner.html), é possível configurar o **CodeBuild** para executar **ações do Github auto-hospedadas** quando um fluxo de trabalho é acionado dentro de um repositório Github configurado. Isso pode ser detectado verificando a configuração do projeto CodeBuild, pois o **`Tipo de evento`** precisa conter: **`WORKFLOW_JOB_QUEUED`** e em um Fluxo de Trabalho do Github, porque ele selecionará um runner **auto-hospedado** assim:
Como [**indicado na documentação**](https://docs.aws.amazon.com/codebuild/latest/userguide/action-runner.html), é possível configurar o **CodeBuild** para executar **ações do Github auto-hospedadas** quando um fluxo de trabalho é acionado dentro de um repositório Github configurado. Isso pode ser detectado verificando a configuração do projeto CodeBuild, pois o **`Tipo de evento`** precisa conter: **`WORKFLOW_JOB_QUEUED`** e em um Fluxo de Trabalho do Github porque ele selecionará um runner **auto-hospedado** assim:
```bash
runs-on: codebuild-<project-name>-${{ github.run_id }}-${{ github.run_attempt }}
```
Esta nova relação entre Github Actions e AWS cria outra maneira de comprometer a AWS a partir do Github, já que o código no Github será executado em um projeto CodeBuild com um papel IAM anexado.
Esse novo relacionamento entre Github Actions e AWS cria outra maneira de comprometer a AWS a partir do Github, já que o código no Github estará sendo executado em um projeto CodeBuild com um papel IAM anexado.
{{#include ../../../banners/hacktricks-training.md}}

View File

@@ -1,10 +1,10 @@
# AWS - Cognito Unauthenticated Enum
# AWS - Enumeração Não Autenticada do Cognito
{{#include ../../../banners/hacktricks-training.md}}
## Cognito Não Autenticado
Cognito é um serviço da AWS que permite que desenvolvedores **concedam acesso aos serviços da AWS** para os usuários de seus aplicativos. Os desenvolvedores concederão **funções IAM a usuários autenticados** em seu aplicativo (potencialmente pessoas poderão apenas se inscrever) e também podem conceder uma **função IAM a usuários não autenticados**.
Cognito é um serviço da AWS que permite que desenvolvedores **concedam acesso aos serviços da AWS para os usuários de seus aplicativos**. Os desenvolvedores concederão **funções IAM a usuários autenticados** em seu aplicativo (potencialmente pessoas poderão apenas se inscrever) e também podem conceder uma **função IAM a usuários não autenticados**.
Para informações básicas sobre o Cognito, consulte:
@@ -21,7 +21,7 @@ Além disso, funções IAM também podem ser atribuídas a **usuários autentica
### ID do Pool de Usuários
Por padrão, o Cognito permite **registrar novos usuários**. Ser capaz de registrar um usuário pode lhe dar **acesso** ao **aplicativo subjacente** ou à **função IAM de acesso autenticado de um Pool de Identidade** que está aceitando como provedor de identidade o Pool de Usuários do Cognito. [**Verifique como fazer isso aqui**](../aws-services/aws-cognito-enum/cognito-user-pools.md#registration).
Por padrão, o Cognito permite **registrar novos usuários**. Ser capaz de registrar um usuário pode lhe dar **acesso** ao **aplicativo subjacente** ou à **função de acesso IAM autenticada de um Pool de Identidade** que está aceitando como provedor de identidade o Pool de Usuários do Cognito. [**Verifique como fazer isso aqui**](../aws-services/aws-cognito-enum/cognito-user-pools.md#registration).
### Módulos Pacu para pentesting e enumeração

View File

@@ -1,8 +1,8 @@
# AWS - DocumentDB Unauthenticated Enum
# AWS - DocumentDB Enum Não Autenticado
{{#include ../../../banners/hacktricks-training.md}}
### Modelo de URL pública
### Modelo de URL Pública
```
<name>.cluster-<random>.<region>.docdb.amazonaws.com
```

View File

@@ -12,7 +12,7 @@ Para mais informações, consulte:
### Repositórios de registro público (imagens)
Como mencionado na seção Enum do ECS, um registro público é **acessível por qualquer pessoa** e usa o formato **`public.ecr.aws/<random>/<name>`**. Se um URL de repositório público for localizado por um atacante, ele poderia **baixar a imagem e procurar por informações sensíveis** nos metadados e no conteúdo da imagem.
Como mencionado na seção ECS Enum, um registro público é **acessível por qualquer pessoa** e usa o formato **`public.ecr.aws/<random>/<name>`**. Se um URL de repositório público for localizado por um atacante, ele poderia **baixar a imagem e procurar por informações sensíveis** nos metadados e no conteúdo da imagem.
```bash
aws ecr describe-repositories --query 'repositories[?repositoryUriPublic == `true`].repositoryName' --output text
```

View File

@@ -10,9 +10,9 @@ Para mais informações, consulte:
../aws-services/aws-elastic-beanstalk-enum.md
{{#endref}}
### Vulnerabilidade na Web
### Vulnerabilidade Web
Observe que, por padrão, os ambientes do Beanstalk têm o **Metadatav1 desativado**.
Note que, por padrão, os ambientes Beanstalk têm o **Metadatav1 desativado**.
O formato das páginas da web do Beanstalk é **`https://<webapp-name>-env.<region>.elasticbeanstalk.com/`**
@@ -26,7 +26,7 @@ Se um ambiente do Elastic Beanstalk usar um balanceador de carga e o balanceador
### Buckets S3 Acessíveis Publicamente
Aplicações do Elastic Beanstalk são frequentemente armazenadas em buckets S3 antes da implantação. Se o bucket S3 contendo a aplicação for acessível publicamente, um atacante pode **baixar o código da aplicação e procurar vulnerabilidades ou informações sensíveis**.
Aplicações do Elastic Beanstalk são frequentemente armazenadas em buckets S3 antes da implantação. Se o bucket S3 contendo a aplicação for acessível publicamente, um atacante pode **baixar o código da aplicação e procurar por vulnerabilidades ou informações sensíveis**.
### Enumerar Ambientes Públicos
```bash

View File

@@ -1,4 +1,4 @@
# AWS - IAM & STS Enumeração Não Autenticada
# AWS - IAM & STS Enum Não Autenticado
{{#include ../../../banners/hacktricks-training.md}}
@@ -7,7 +7,7 @@
### ~~Força Bruta para Assumir Função~~
> [!CAUTION]
> **Esta técnica não funciona** mais, pois se a função existir ou não, você sempre recebe este erro:
> **Esta técnica não funciona** mais, pois se a função existe ou não, você sempre recebe este erro:
>
> `An error occurred (AccessDenied) when calling the AssumeRole operation: User: arn:aws:iam::947247140022:user/testenv is not authorized to perform: sts:AssumeRole on resource: arn:aws:iam::429217632764:role/account-balanceasdas`
>
@@ -19,20 +19,20 @@ Tentar **assumir uma função sem as permissões necessárias** aciona uma mensa
```ruby
An error occurred (AccessDenied) when calling the AssumeRole operation: User: arn:aws:iam::012345678901:user/MyUser is not authorized to perform: sts:AssumeRole on resource: arn:aws:iam::111111111111:role/aws-service-role/rds.amazonaws.com/AWSServiceRoleForRDS
```
Esta mensagem confirma a existência da função, mas indica que sua política de assunção de função não permite sua assunção. Em contraste, tentar **assumir uma função inexistente leva a um erro diferente**:
Esta mensagem confirma a existência do papel, mas indica que sua política de assunção de papel não permite sua assunção. Em contraste, tentar **assumir um papel inexistente leva a um erro diferente**:
```less
An error occurred (AccessDenied) when calling the AssumeRole operation: Not authorized to perform sts:AssumeRole
```
Interessantemente, este método de **distinguir entre funções existentes e não existentes** é aplicável mesmo entre diferentes contas AWS. Com um ID de conta AWS válido e uma lista de palavras direcionada, é possível enumerar as funções presentes na conta sem enfrentar limitações inerentes.
Interessantemente, este método de **distinguir entre funções existentes e não existentes** é aplicável mesmo entre diferentes contas AWS. Com um ID de conta AWS válido e uma lista de palavras-alvo, é possível enumerar as funções presentes na conta sem enfrentar limitações inerentes.
Você pode usar este [script para enumerar potenciais principais](https://github.com/RhinoSecurityLabs/Security-Research/tree/master/tools/aws-pentest-tools/assume_role_enum) abusando deste problema.
Você pode usar este [script para enumerar potenciais principais](https://github.com/RhinoSecurityLabs/Security-Research/tree/master/tools/aws-pentest-tools/assume_role_enum) abusando desse problema.
### Políticas de Confiança: Força Bruta em funções e usuários de Conta Cruzada
### Políticas de Confiança: Força Bruta de funções e usuários entre contas
Configurar ou atualizar a **política de confiança de uma função IAM envolve definir quais recursos ou serviços AWS estão autorizados a assumir essa função** e obter credenciais temporárias. Se o recurso especificado na política **existe**, a política de confiança é salva **com sucesso**. No entanto, se o recurso **não existe**, um **erro é gerado**, indicando que um principal inválido foi fornecido.
> [!WARNING]
> Note que nesse recurso você poderia especificar uma função ou usuário de conta cruzada:
> Note que nesse recurso você poderia especificar uma função ou usuário entre contas:
>
> - `arn:aws:iam::acc_id:role/role_name`
> - `arn:aws:iam::acc_id:user/user_name`
@@ -99,7 +99,7 @@ Usando [Pacu](https://github.com/RhinoSecurityLabs/pacu):
- `run iam__enum_users --role-name admin --account-id 229736458923 --word-list /tmp/names.txt`
- `run iam__enum_roles --role-name admin --account-id 229736458923 --word-list /tmp/names.txt`
- O papel `admin` usado no exemplo é um **papel na sua conta a ser assumido** pelo pacu para criar as políticas que ele precisa criar para a enumeração
- O papel `admin` usado no exemplo é um **papel na sua conta que pode ser impersonado** pelo pacu para criar as políticas que ele precisa para a enumeração
### Privesc
@@ -122,7 +122,7 @@ O atacante poderia simplesmente assumir isso.
## Federação OIDC de Terceiros
Imagine que você consegue ler um **fluxo de trabalho do Github Actions** que está acessando um **papel** dentro da **AWS**.\
Imagine que você consiga ler um **fluxo de trabalho do Github Actions** que está acessando um **papel** dentro da **AWS**.\
Essa confiança pode dar acesso a um papel com a seguinte **política de confiança**:
```json
{
@@ -144,7 +144,7 @@ Essa confiança pode dar acesso a um papel com a seguinte **política de confian
}
```
Esta política de confiança pode estar correta, mas a **falta de mais condições** deve fazer você desconfiar dela.\
Isso ocorre porque o papel anterior pode ser assumido por **QUALQUER UM do Github Actions**! Você deve especificar nas condições também outras coisas, como nome da organização, nome do repositório, ambiente, branch...
Isso ocorre porque o papel anterior pode ser assumido por **QUALQUER UM do Github Actions**! Você deve especificar nas condições também outras coisas, como nome da org, nome do repositório, env, brach...
Outra possível má configuração é **adicionar uma condição** como a seguinte:
```json
@@ -152,7 +152,7 @@ Outra possível má configuração é **adicionar uma condição** como a seguin
"token.actions.githubusercontent.com:sub": "repo:org_name*:*"
}
```
Note que **wildcard** (\*) antes do **dois pontos** (:). Você pode criar uma org como **org_name1** e **assumir o papel** a partir de uma Ação do Github.
Note que **wildcard** (\*) antes do **dois-pontos** (:). Você pode criar uma org como **org_name1** e **assumir o papel** a partir de uma Ação do Github.
## Referências

View File

@@ -1,10 +1,10 @@
# AWS - Identity Center & SSO Unauthenticated Enum
# AWS - Identity Center & SSO Enum Não Autenticado
{{#include ../../../banners/hacktricks-training.md}}
## Phishing de Código de Dispositivo AWS
Inicialmente proposto em [**este post de blog**](https://blog.christophetd.fr/phishing-for-aws-credentials-via-aws-sso-device-code-authentication/), é possível enviar um **link** para um usuário usando AWS SSO que, se o **usuário aceitar**, o atacante poderá obter um **token para se passar pelo usuário** e acessar todos os papéis que o usuário pode acessar no **Identity Center**.
Inicialmente proposto em [**este post do blog**](https://blog.christophetd.fr/phishing-for-aws-credentials-via-aws-sso-device-code-authentication/), é possível enviar um **link** para um usuário usando AWS SSO que, se o **usuário aceitar**, o atacante poderá obter um **token para se passar pelo usuário** e acessar todos os papéis que o usuário pode acessar no **Identity Center**.
Para realizar esse ataque, os requisitos são:
@@ -26,7 +26,7 @@ curl https://victim.awsapps.com/start/ -s | grep -Eo '"region":"[a-z0-9\-]+"'
```
2. **Gere o link para a vítima & Envie-o**
Execute o seguinte código para gerar um link de login do AWS SSO para que a vítima possa autenticar-se.\
Execute o seguinte código para gerar um link de login do AWS SSO para que a vítima possa se autenticar.\
Para a demonstração, execute este código em um console Python e não saia dele, pois mais tarde você precisará de alguns objetos para obter o token:
```python
import boto3

View File

@@ -1,8 +1,8 @@
# AWS - IoT Unauthenticated Enum
# AWS - IoT Enum Não Autenticado
{{#include ../../../banners/hacktricks-training.md}}
### Modelo de URL pública
### Modelo de URL Pública
```
mqtt://{random_id}.iot.{region}.amazonaws.com:8883
https://{random_id}.iot.{region}.amazonaws.com:8443

View File

@@ -4,7 +4,7 @@
## URL de Função Pública
É possível relacionar um **Lambda** com uma **URL de função pública** que qualquer um pode acessar. Isso pode conter vulnerabilidades na web.
É possível relacionar um **Lambda** com uma **URL de função pública** que qualquer um pode acessar. Ela pode conter vulnerabilidades na web.
### Modelo de URL Pública
```

View File

@@ -1,8 +1,8 @@
# AWS - Media Unauthenticated Enum
# AWS - Enumeração de Mídia Não Autenticada
{{#include ../../../banners/hacktricks-training.md}}
### Modelo de URL pública
### Modelo de URL Pública
```
https://{random_id}.mediaconvert.{region}.amazonaws.com
https://{random_id}.mediapackage.{region}.amazonaws.com/in/v1/{random_id}/channel

View File

@@ -1,4 +1,4 @@
# AWS - MQ Unauthenticated Enum
# AWS - MQ Enum Não Autenticado
{{#include ../../../banners/hacktricks-training.md}}
@@ -6,7 +6,7 @@
### **RabbitMQ**
No caso do **RabbitMQ**, por **padrão, o acesso público** e ssl estão habilitados. Mas você precisa de **credenciais** para acessar (`amqps://.mq.us-east-1.amazonaws.com:5671`). Além disso, é possível **acessar o console de gerenciamento da web** se você souber as credenciais em `https://b-<uuid>.mq.us-east-1.amazonaws.com/`
No caso do **RabbitMQ**, por **padrão, o acesso público** e ssl estão habilitados. Mas você precisa de **credenciais** para acessar (`amqps://.mq.us-east-1.amazonaws.com:5671`). Além disso, é possível **acessar o console de gerenciamento web** se você souber as credenciais em `https://b-<uuid>.mq.us-east-1.amazonaws.com/`
### ActiveMQ

View File

@@ -1,4 +1,4 @@
# AWS - MSK Unauthenticated Enum
# AWS - MSK Enum Não Autenticado
{{#include ../../../banners/hacktricks-training.md}}

View File

@@ -1,4 +1,4 @@
# AWS - RDS Unauthenticated Enum
# AWS - RDS Enum Não Autenticado
{{#include ../../../banners/hacktricks-training.md}}
@@ -12,7 +12,7 @@ Para mais informações, consulte:
## Porta Pública
É possível dar acesso público ao **banco de dados da internet**. O atacante ainda precisará **saber o nome de usuário e a senha,** acesso IAM ou um **exploit** para entrar no banco de dados.
É possível dar acesso público ao **banco de dados pela internet**. O atacante ainda precisará **saber o nome de usuário e a senha,** acesso IAM ou um **exploit** para entrar no banco de dados.
## Snapshots Públicos do RDS

View File

@@ -1,8 +1,8 @@
# AWS - Redshift Unauthenticated Enum
# AWS - Redshift Enum Não Autenticado
{{#include ../../../banners/hacktricks-training.md}}
### Modelo de URL pública
### Modelo de URL Pública
```
{user_provided}.<random>.<region>.redshift.amazonaws.com
```

View File

@@ -12,7 +12,7 @@ As empresas podem ter **permissões de buckets mal configuradas**, dando acesso
### Encontrando Buckets AWS
Métodos diferentes para descobrir quando uma página da web está usando AWS para armazenar alguns recursos:
Diferentes métodos para encontrar quando uma página da web está usando AWS para armazenar alguns recursos:
#### Enumeração & OSINT:
@@ -28,7 +28,7 @@ http://[bucket_name].s3.amazonaws.com/
- Verifique por **CNAMES** como `resources.domain.com` que pode ter o CNAME `bucket.s3.amazonaws.com`
- Verifique [https://buckets.grayhatwarfare.com](https://buckets.grayhatwarfare.com/), um site com **buckets abertos já descobertos**.
- O **nome do bucket** e o **nome do domínio do bucket** precisam ser **os mesmos.**
- **flaws.cloud** está no **IP** 52.92.181.107 e se você for lá, ele redireciona você para [https://aws.amazon.com/s3/](https://aws.amazon.com/s3/). Além disso, `dig -x 52.92.181.107` retorna `s3-website-us-west-2.amazonaws.com`.
- **flaws.cloud** está em **IP** 52.92.181.107 e se você for lá, ele redireciona você para [https://aws.amazon.com/s3/](https://aws.amazon.com/s3/). Além disso, `dig -x 52.92.181.107` retorna `s3-website-us-west-2.amazonaws.com`.
- Para verificar se é um bucket, você também pode **visitar** [https://flaws.cloud.s3.amazonaws.com/](https://flaws.cloud.s3.amazonaws.com/).
#### Força Bruta
@@ -85,7 +85,7 @@ Você pode encontrar todas as regiões suportadas pela AWS em [**https://docs.aw
#### Por DNS
Você pode obter a região de um bucket com um **`dig`** e **`nslookup`** fazendo uma **solicitação DNS do IP descoberto**:
Você pode obter a região de um bucket com um **`dig`** e **`nslookup`** fazendo uma **requisição DNS do IP descoberto**:
```bash
dig flaws.cloud
;; ANSWER SECTION:
@@ -101,7 +101,7 @@ ou você pode acessar o bucket visitando: `flaws.cloud.s3-us-west-2.amazonaws.co
#### Tentando
Se você tentar acessar um bucket, mas no **nome do domínio você especificar outra região** (por exemplo, o bucket está em `bucket.s3.amazonaws.com`, mas você tenta acessar `bucket.s3-website-us-west-2.amazonaws.com`, então você será **indicado para o local correto**:
Se você tentar acessar um bucket, mas no **nome do domínio você especificar outra região** (por exemplo, o bucket está em `bucket.s3.amazonaws.com`, mas você tenta acessar `bucket.s3-website-us-west-2.amazonaws.com`), então você será **indicado para o local correto**:
![](<../../../images/image (106).png>)
@@ -131,7 +131,7 @@ Se o bucket não tiver um nome de domínio, ao tentar enumerá-lo, **coloque ape
```
https://{user_provided}.s3.amazonaws.com
```
### Obter ID da Conta a partir de um Bucket público
### Obter ID da Conta de um Bucket público
É possível determinar uma conta AWS aproveitando a nova **`S3:ResourceAccount`** **Chave de Condição de Política**. Esta condição **restrige o acesso com base no bucket S3** em que uma conta está (outras políticas baseadas em conta restringem com base na conta em que o principal solicitante está).\
E como a política pode conter **coringas**, é possível encontrar o número da conta **apenas um número por vez**.
@@ -146,7 +146,7 @@ s3-account-search arn:aws:iam::123456789012:role/s3_read s3://my-bucket
# With an object
s3-account-search arn:aws:iam::123456789012:role/s3_read s3://my-bucket/path/to/object.ext
```
Esta técnica também funciona com URLs do API Gateway, URLs do Lambda, conjuntos de dados do Data Exchange e até mesmo para obter o valor de tags (se você souber a chave da tag). Você pode encontrar mais informações na [**pesquisa original**](https://blog.plerion.com/conditional-love-for-aws-metadata-enumeration/) e na ferramenta [**conditional-love**](https://github.com/plerionhq/conditional-love/) para automatizar essa exploração.
Essa técnica também funciona com URLs do API Gateway, URLs do Lambda, conjuntos de dados do Data Exchange e até mesmo para obter o valor de tags (se você souber a chave da tag). Você pode encontrar mais informações na [**pesquisa original**](https://blog.plerion.com/conditional-love-for-aws-metadata-enumeration/) e na ferramenta [**conditional-love**](https://github.com/plerionhq/conditional-love/) para automatizar essa exploração.
### Confirmando que um bucket pertence a uma conta AWS
@@ -160,7 +160,7 @@ curl -X GET "[bucketname].amazonaws.com/" \
```
Se o erro for "Acesso Negado", isso significa que o ID da conta estava errado.
### Usando Emails como enumeração de conta root
### Emails usados como enumeração de conta root
Como explicado em [**este post do blog**](https://blog.plerion.com/things-you-wish-you-didnt-need-to-know-about-s3/), é possível verificar se um endereço de email está relacionado a alguma conta AWS **tentando conceder permissões a um email** sobre um bucket S3 via ACLs. Se isso não gerar um erro, significa que o email é um usuário root de alguma conta AWS:
```python

View File

@@ -10,12 +10,12 @@ Para mais informações sobre SNS, consulte:
../aws-services/aws-sns-enum.md
{{#endref}}
### Aberto a Todos
### Aberto para Todos
Quando você configura um tópico SNS a partir do console da web, é possível indicar que **Todos podem publicar e se inscrever** no tópico:
<figure><img src="../../../images/image (212).png" alt=""><figcaption></figcaption></figure>
Portanto, se você **encontrar o ARN dos tópicos** dentro da conta (ou forçar nomes potenciais para tópicos), você pode **verificar** se pode **publicar** ou **se inscrever** **neles**.
Portanto, se você **encontrar o ARN dos tópicos** dentro da conta (ou forçar nomes potenciais para tópicos), você pode **verificar** se pode **publicar** ou **se inscrever** neles.
{{#include ../../../banners/hacktricks-training.md}}

View File

@@ -1,4 +1,4 @@
# AWS - SQS Unauthenticated Enum
# AWS - SQS Enum Não Autenticado
{{#include ../../../banners/hacktricks-training.md}}
@@ -10,7 +10,7 @@ Para mais informações sobre SQS, consulte:
../aws-services/aws-sqs-and-sns-enum.md
{{#endref}}
### Modelo de URL pública
### Modelo de URL Pública
```
https://sqs.[region].amazonaws.com/[account-id]/{user_provided}
```