mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2026-02-04 19:11:41 -08:00
Translated ['src/pentesting-ci-cd/terraform-security.md', 'src/pentestin
This commit is contained in:
@@ -32,13 +32,13 @@ Aqui você tem um [guia](https://learn.hashicorp.com/tutorials/terraform/install
|
||||
|
||||
## RCE no Terraform: envenenamento de arquivo de configuração
|
||||
|
||||
O Terraform **não tem uma plataforma que expõe uma página da web ou um serviço de rede** que possamos enumerar, portanto, a única maneira de comprometer o terraform é **ser capaz de adicionar/modificar arquivos de configuração do terraform** ou **ser capaz de modificar o arquivo de estado do terraform** (veja o capítulo abaixo).
|
||||
O Terraform **não tem uma plataforma que exponha uma página da web ou um serviço de rede** que possamos enumerar, portanto, a única maneira de comprometer o terraform é **ser capaz de adicionar/modificar arquivos de configuração do terraform** ou **ser capaz de modificar o arquivo de estado do terraform** (veja o capítulo abaixo).
|
||||
|
||||
No entanto, o terraform é um **componente muito sensível** a comprometer porque terá **acesso privilegiado** a diferentes locais para que possa funcionar corretamente.
|
||||
|
||||
A principal maneira de um atacante conseguir comprometer o sistema onde o terraform está sendo executado é **comprometer o repositório que armazena as configurações do terraform**, porque em algum momento elas serão **interpretadas**.
|
||||
|
||||
Na verdade, existem soluções que **executam terraform plan/apply automaticamente após um PR** ser criado, como **Atlantis**:
|
||||
Na verdade, existem soluções que **executam terraform plan/apply automaticamente após a criação de um PR**, como **Atlantis**:
|
||||
|
||||
{{#ref}}
|
||||
atlantis-security.md
|
||||
@@ -124,7 +124,7 @@ value = nonsensitive(var.do_token)
|
||||
```
|
||||
## Abusando de Arquivos de Estado do Terraform
|
||||
|
||||
Caso você tenha acesso de escrita sobre arquivos de estado do terraform, mas não possa alterar o código do terraform, [**esta pesquisa**](https://blog.plerion.com/hacking-terraform-state-privilege-escalation/) oferece algumas opções interessantes para aproveitar o arquivo. Mesmo que você tenha acesso de escrita sobre os arquivos de configuração, usar o vetor de arquivos de estado é muitas vezes muito mais sorrateiro, já que você não deixa rastros no histórico do `git`.
|
||||
Caso você tenha acesso de escrita sobre os arquivos de estado do terraform, mas não possa alterar o código do terraform, [**esta pesquisa**](https://blog.plerion.com/hacking-terraform-state-privilege-escalation/) oferece algumas opções interessantes para aproveitar o arquivo. Mesmo que você tenha acesso de escrita sobre os arquivos de configuração, usar o vetor de arquivos de estado é muitas vezes muito mais sorrateiro, já que você não deixa rastros no histórico do `git`.
|
||||
|
||||
### RCE no Terraform: envenenamento de arquivo de configuração
|
||||
|
||||
@@ -176,13 +176,13 @@ Porque o terraform verá que o recurso não deveria existir, ele o destruirá (s
|
||||
]
|
||||
},
|
||||
```
|
||||
2. **Modifique o recurso para excluir de uma maneira que não seja possível atualizar (para que ele seja excluído e recriado)**
|
||||
2. **Modifique o recurso para deletar de uma maneira que não seja possível atualizar (para que ele seja deletado e recriado)**
|
||||
|
||||
Para uma instância EC2, modificar o tipo da instância é suficiente para fazer com que o terraform a exclua e a recrie.
|
||||
Para uma instância EC2, modificar o tipo da instância é suficiente para fazer o terraform deletar e recriá-la.
|
||||
|
||||
### Substituir provedor na lista negra
|
||||
|
||||
Caso você encontre uma situação em que `hashicorp/external` foi colocado na lista negra, você pode reimplementar o provedor `external` fazendo o seguinte. Nota: Usamos um fork do provedor external publicado por https://registry.terraform.io/providers/nazarewk/external/latest. Você também pode publicar seu próprio fork ou reimplementação.
|
||||
Caso você encontre uma situação onde `hashicorp/external` foi colocado na lista negra, você pode reimplementar o provedor `external` fazendo o seguinte. Nota: Usamos um fork do provedor external publicado por https://registry.terraform.io/providers/nazarewk/external/latest. Você também pode publicar seu próprio fork ou reimplementação.
|
||||
```terraform
|
||||
terraform {
|
||||
required_providers {
|
||||
@@ -221,9 +221,9 @@ snyk iac test /path/to/terraform/code
|
||||
|
||||
**Checkov** é uma ferramenta de análise de código estático para infraestrutura como código (IaC) e também uma ferramenta de análise de composição de software (SCA) para imagens e pacotes de código aberto.
|
||||
|
||||
Ela escaneia a infraestrutura em nuvem provisionada usando [Terraform](https://terraform.io/), [Terraform plan](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Terraform%20Plan%20Scanning.md), [Cloudformation](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Cloudformation.md), [AWS SAM](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/AWS%20SAM.md), [Kubernetes](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Kubernetes.md), [Helm charts](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Helm.md), [Kustomize](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Kustomize.md), [Dockerfile](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Dockerfile.md), [Serverless](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Serverless%20Framework.md), [Bicep](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Bicep.md), [OpenAPI](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/OpenAPI.md), [ARM Templates](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Azure%20ARM%20templates.md) ou [OpenTofu](https://opentofu.org/) e detecta configurações incorretas de segurança e conformidade usando escaneamento baseado em grafo.
|
||||
Ele escaneia a infraestrutura em nuvem provisionada usando [Terraform](https://terraform.io/), [Terraform plan](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Terraform%20Plan%20Scanning.md), [Cloudformation](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Cloudformation.md), [AWS SAM](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/AWS%20SAM.md), [Kubernetes](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Kubernetes.md), [Helm charts](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Helm.md), [Kustomize](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Kustomize.md), [Dockerfile](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Dockerfile.md), [Serverless](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Serverless%20Framework.md), [Bicep](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Bicep.md), [OpenAPI](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/OpenAPI.md), [ARM Templates](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Azure%20ARM%20templates.md) ou [OpenTofu](https://opentofu.org/) e detecta configurações incorretas de segurança e conformidade usando escaneamento baseado em grafo.
|
||||
|
||||
Ela realiza [Software Composition Analysis (SCA) scanning](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Sca.md), que é uma varredura de pacotes de código aberto e imagens para Vulnerabilidades e Exposições Comuns (CVEs).
|
||||
Ele realiza [Software Composition Analysis (SCA) scanning](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Sca.md), que é uma varredura de pacotes de código aberto e imagens para Vulnerabilidades e Exposições Comuns (CVEs).
|
||||
```bash
|
||||
pip install checkov
|
||||
checkov -d /path/to/folder
|
||||
|
||||
@@ -26,7 +26,7 @@ aws dynamodb get-resource-policy \
|
||||
--query 'Policy' \
|
||||
--output text > policy.json
|
||||
```
|
||||
Se você não conseguir recuperar a política atual, use esta que concede acesso total à tabela para seu principal:
|
||||
Se você não conseguir recuperar a política atual, use esta que concede acesso total à tabela ao seu principal:
|
||||
```json
|
||||
{
|
||||
"Version": "2012-10-17",
|
||||
@@ -61,7 +61,7 @@ Agora, você deve ter as permissões necessárias.
|
||||
|
||||
### Pós Exploração
|
||||
|
||||
Até onde sei, **não há outra maneira direta de escalar privilégios na AWS apenas tendo algumas permissões do `dynamodb`**. Você pode **ler informações sensíveis** das tabelas (que podem conter credenciais da AWS) e **escrever informações nas tabelas** (o que pode acionar outras vulnerabilidades, como injeções de código lambda...) mas todas essas opções já estão consideradas na **página de Pós Exploração do DynamoDB**:
|
||||
Até onde sei, **não há outra maneira direta de escalar privilégios na AWS apenas tendo algumas permissões do AWS `dynamodb`**. Você pode **ler informações sensíveis** das tabelas (que podem conter credenciais da AWS) e **escrever informações nas tabelas** (o que pode acionar outras vulnerabilidades, como injeções de código lambda...) mas todas essas opções já estão consideradas na **página de Pós Exploração do DynamoDB**:
|
||||
|
||||
{{#ref}}
|
||||
../aws-post-exploitation/aws-dynamodb-post-exploitation.md
|
||||
|
||||
Reference in New Issue
Block a user