Translated ['.github/pull_request_template.md', 'src/pentesting-cloud/az

This commit is contained in:
Translator
2024-12-31 18:56:17 +00:00
parent 7770a50092
commit ea97a1362c
244 changed files with 8836 additions and 11682 deletions
@@ -4,9 +4,9 @@
## Basic Information
**Before start pentesting** a Digital Ocean environment there are a few **basics things you need to know** about how DO works to help you understand what you need to do, how to find misconfigurations and how to exploit them.
**Antes de começar o pentesting** em um ambiente Digital Ocean, há algumas **coisas básicas que você precisa saber** sobre como o DO funciona para ajudá-lo a entender o que você precisa fazer, como encontrar configurações incorretas e como explorá-las.
Concepts such as hierarchy, access and other basic concepts are explained in:
Conceitos como hierarquia, acesso e outros conceitos básicos são explicados em:
{{#ref}}
do-basic-information.md
@@ -22,26 +22,20 @@ https://book.hacktricks.xyz/pentesting-web/ssrf-server-side-request-forgery/clou
### Projects
To get a list of the projects and resources running on each of them from the CLI check:
Para obter uma lista dos projetos e recursos em execução em cada um deles a partir da CLI, verifique:
{{#ref}}
do-services/do-projects.md
{{#endref}}
### Whoami
```bash
doctl account get
```
## Services Enumeration
## Enumeração de Serviços
{{#ref}}
do-services/
{{#endref}}
{{#include ../../banners/hacktricks-training.md}}
@@ -1,139 +1,127 @@
# DO - Basic Information
# DO - Informações Básicas
{{#include ../../banners/hacktricks-training.md}}
## Basic Information
## Informações Básicas
DigitalOcean is a **cloud computing platform that provides users with a variety of services**, including virtual private servers (VPS) and other resources for building, deploying, and managing applications. **DigitalOcean's services are designed to be simple and easy to use**, making them **popular among developers and small businesses**.
DigitalOcean é uma **plataforma de computação em nuvem que fornece aos usuários uma variedade de serviços**, incluindo servidores privados virtuais (VPS) e outros recursos para construir, implantar e gerenciar aplicações. **Os serviços da DigitalOcean são projetados para serem simples e fáceis de usar**, tornando-os **populares entre desenvolvedores e pequenas empresas**.
Some of the key features of DigitalOcean include:
Algumas das principais características da DigitalOcean incluem:
- **Virtual private servers (VPS)**: DigitalOcean provides VPS that can be used to host websites and applications. These VPS are known for their simplicity and ease of use, and can be quickly and easily deployed using a variety of pre-built "droplets" or custom configurations.
- **Storage**: DigitalOcean offers a range of storage options, including object storage, block storage, and managed databases, that can be used to store and manage data for websites and applications.
- **Development and deployment tools**: DigitalOcean provides a range of tools that can be used to build, deploy, and manage applications, including APIs and pre-built droplets.
- **Security**: DigitalOcean places a strong emphasis on security, and offers a range of tools and features to help users keep their data and applications safe. This includes encryption, backups, and other security measures.
- **Servidores privados virtuais (VPS)**: A DigitalOcean fornece VPS que podem ser usados para hospedar sites e aplicações. Esses VPS são conhecidos por sua simplicidade e facilidade de uso, e podem ser rapidamente implantados usando uma variedade de "droplets" pré-construídos ou configurações personalizadas.
- **Armazenamento**: A DigitalOcean oferece uma gama de opções de armazenamento, incluindo armazenamento de objetos, armazenamento em bloco e bancos de dados gerenciados, que podem ser usados para armazenar e gerenciar dados para sites e aplicações.
- **Ferramentas de desenvolvimento e implantação**: A DigitalOcean fornece uma variedade de ferramentas que podem ser usadas para construir, implantar e gerenciar aplicações, incluindo APIs e droplets pré-construídos.
- **Segurança**: A DigitalOcean coloca uma forte ênfase na segurança e oferece uma gama de ferramentas e recursos para ajudar os usuários a manter seus dados e aplicações seguros. Isso inclui criptografia, backups e outras medidas de segurança.
Overall, DigitalOcean is a cloud computing platform that provides users with the tools and resources they need to build, deploy, and manage applications in the cloud. Its services are designed to be simple and easy to use, making them popular among developers and small businesses.
No geral, a DigitalOcean é uma plataforma de computação em nuvem que fornece aos usuários as ferramentas e recursos de que precisam para construir, implantar e gerenciar aplicações na nuvem. Seus serviços são projetados para serem simples e fáceis de usar, tornando-os populares entre desenvolvedores e pequenas empresas.
### Main Differences from AWS
### Principais Diferenças em Relação ao AWS
One of the main differences between DigitalOcean and AWS is the **range of services they offer**. **DigitalOcean focuses on providing simple** and easy-to-use virtual private servers (VPS), storage, and development and deployment tools. **AWS**, on the other hand, offers a **much broader range of services**, including VPS, storage, databases, machine learning, analytics, and many other services. This means that AWS is more suitable for complex, enterprise-level applications, while DigitalOcean is more suited to small businesses and developers.
Uma das principais diferenças entre a DigitalOcean e o AWS é a **variedade de serviços que oferecem**. **A DigitalOcean se concentra em fornecer servidores privados virtuais (VPS)** simples e fáceis de usar, armazenamento e ferramentas de desenvolvimento e implantação. **O AWS**, por outro lado, oferece uma **gama muito mais ampla de serviços**, incluindo VPS, armazenamento, bancos de dados, aprendizado de máquina, análises e muitos outros serviços. Isso significa que o AWS é mais adequado para aplicações complexas de nível empresarial, enquanto a DigitalOcean é mais adequada para pequenas empresas e desenvolvedores.
Another key difference between the two platforms is the **pricing structure**. **DigitalOcean's pricing is generally more straightforward and easier** to understand than AWS, with a range of pricing plans that are based on the number of droplets and other resources used. AWS, on the other hand, has a more complex pricing structure that is based on a variety of factors, including the type and amount of resources used. This can make it more difficult to predict costs when using AWS.
Outra diferença chave entre as duas plataformas é a **estrutura de preços**. **Os preços da DigitalOcean são geralmente mais diretos e fáceis** de entender do que os do AWS, com uma variedade de planos de preços baseados no número de droplets e outros recursos utilizados. O AWS, por outro lado, tem uma estrutura de preços mais complexa que é baseada em uma variedade de fatores, incluindo o tipo e a quantidade de recursos utilizados. Isso pode dificultar a previsão de custos ao usar o AWS.
## Hierarchy
## Hierarquia
### User
### Usuário
A user is what you expect, a user. He can **create Teams** and **be a member of different teams.**
Um usuário é o que você espera, um usuário. Ele pode **criar Equipes** e **ser membro de diferentes equipes.**
### **Team**
### **Equipe**
A team is a group of **users**. When a user creates a team he has the **role owner on that team** and he initially **sets up the billing info**. **Other** user can then be **invited** to the team.
Uma equipe é um grupo de **usuários**. Quando um usuário cria uma equipe, ele tem o **papel de proprietário nessa equipe** e inicialmente **configura as informações de cobrança**. **Outros** usuários podem então ser **convidados** para a equipe.
Inside the team there might be several **projects**. A project is just a **set of services running**. It can be used to **separate different infra stages**, like prod, staging, dev...
Dentro da equipe, pode haver vários **projetos**. Um projeto é apenas um **conjunto de serviços em execução**. Ele pode ser usado para **separar diferentes estágios de infraestrutura**, como produção, homologação, desenvolvimento...
### Project
### Projeto
As explained, a project is just a container for all the **services** (droplets, spaces, databases, kubernetes...) **running together inside of it**.\
A Digital Ocean project is very similar to a GCP project without IAM.
Como explicado, um projeto é apenas um contêiner para todos os **serviços** (droplets, spaces, bancos de dados, kubernetes...) **executando juntos dentro dele**.\
Um projeto da Digital Ocean é muito semelhante a um projeto do GCP sem IAM.
## Permissions
## Permissões
### Team
### Equipe
Basically all members of a team have **access to the DO resources in all the projects created within the team (with more or less privileges).**
Basicamente, todos os membros de uma equipe têm **acesso aos recursos DO em todos os projetos criados dentro da equipe (com mais ou menos privilégios).**
### Roles
### Papéis
Each **user inside a team** can have **one** of the following three **roles** inside of it:
Cada **usuário dentro de uma equipe** pode ter **um** dos seguintes três **papéis** dentro dela:
| Role | Shared Resources | Billing Information | Team Settings |
| ---------- | ---------------- | ------------------- | ------------- |
| **Owner** | Full access | Full access | Full access |
| **Biller** | No access | Full access | No access |
| **Member** | Full access | No access | No access |
| Papel | Recursos Compartilhados | Informações de Cobrança | Configurações da Equipe |
| ---------- | ----------------------- | ----------------------- | ----------------------- |
| **Proprietário** | Acesso total | Acesso total | Acesso total |
| **Faturador** | Sem acesso | Acesso total | Sem acesso |
| **Membro** | Acesso total | Sem acesso | Sem acesso |
**Owner** and **member can list the users** and check their **roles** (biller cannot).
**Proprietário** e **membro podem listar os usuários** e verificar seus **papéis** (faturador não pode).
## Access
## Acesso
### Username + password (MFA)
### Nome de usuário + senha (MFA)
As in most of the platforms, in order to access to the GUI you can use a set of **valid username and password** to **access** the cloud **resources**. Once logged in you can see **all the teams you are part** of in [https://cloud.digitalocean.com/account/profile](https://cloud.digitalocean.com/account/profile).\
And you can see all your activity in [https://cloud.digitalocean.com/account/activity](https://cloud.digitalocean.com/account/activity).
Como na maioria das plataformas, para acessar a GUI, você pode usar um conjunto de **nome de usuário e senha válidos** para **acessar** os **recursos** da nuvem. Uma vez logado, você pode ver **todas as equipes das quais faz parte** em [https://cloud.digitalocean.com/account/profile](https://cloud.digitalocean.com/account/profile).\
E você pode ver toda a sua atividade em [https://cloud.digitalocean.com/account/activity](https://cloud.digitalocean.com/account/activity).
**MFA** can be **enabled** in a user and **enforced** for all the users in a **team** to access the team.
**MFA** pode ser **ativado** em um usuário e **exigido** para todos os usuários em uma **equipe** para acessar a equipe.
### API keys
In order to use the API, users can **generate API keys**. These will always come with Read permissions but **Write permission are optional**.\
The API keys look like this:
### Chaves de API
Para usar a API, os usuários podem **gerar chaves de API**. Estas sempre virão com permissões de leitura, mas **permissões de gravação são opcionais**.\
As chaves de API se parecem com isto:
```
dop_v1_1946a92309d6240274519275875bb3cb03c1695f60d47eaa1532916502361836
```
The cli tool is [**doctl**](https://github.com/digitalocean/doctl#installing-doctl). Initialise it (you need a token) with:
A ferramenta cli é [**doctl**](https://github.com/digitalocean/doctl#installing-doctl). Inicialize-a (você precisa de um token) com:
```bash
doctl auth init # Asks for the token
doctl auth init --context my-context # Login with a different token
doctl auth list # List accounts
```
Por padrão, este token será escrito em texto claro no Mac em `/Users/<username>/Library/Application Support/doctl/config.yaml`.
By default this token will be written in clear-text in Mac in `/Users/<username>/Library/Application Support/doctl/config.yaml`.
### Chaves de acesso do Spaces
### Spaces access keys
These are keys that give **access to the Spaces** (like S3 in AWS or Storage in GCP).
They are composed by a **name**, a **keyid** and a **secret**. An example could be:
Estas são chaves que dão **acesso aos Spaces** (como S3 na AWS ou Storage no GCP).
Elas são compostas por um **nome**, um **keyid** e um **secret**. Um exemplo poderia ser:
```
Name: key-example
Keyid: DO00ZW4FABSGZHAABGFX
Secret: 2JJ0CcQZ56qeFzAJ5GFUeeR4Dckarsh6EQSLm87MKlM
```
### OAuth Application
OAuth applications can be granted **access over Digital Ocean**.
Aplicações OAuth podem ser concedidas **acesso sobre a Digital Ocean**.
It's possible to **create OAuth applications** in [https://cloud.digitalocean.com/account/api/applications](https://cloud.digitalocean.com/account/api/applications) and check all **allowed OAuth applications** in [https://cloud.digitalocean.com/account/api/access](https://cloud.digitalocean.com/account/api/access).
É possível **criar aplicações OAuth** em [https://cloud.digitalocean.com/account/api/applications](https://cloud.digitalocean.com/account/api/applications) e verificar todas as **aplicações OAuth permitidas** em [https://cloud.digitalocean.com/account/api/access](https://cloud.digitalocean.com/account/api/access).
### SSH Keys
It's possible to add **SSH keys to a Digital Ocean Team** from the **console** in [https://cloud.digitalocean.com/account/security](https://cloud.digitalocean.com/account/security).
É possível adicionar **chaves SSH a um Time da Digital Ocean** a partir do **console** em [https://cloud.digitalocean.com/account/security](https://cloud.digitalocean.com/account/security).
This way, if you create a **new droplet, the SSH key will be set** on it and you will be able to **login via SSH** without password (note that newly [uploaded SSH keys aren't set in already existent droplets for security reasons](https://docs.digitalocean.com/products/droplets/how-to/add-ssh-keys/to-existing-droplet/)).
Dessa forma, se você criar um **novo droplet, a chave SSH será configurada** nele e você poderá **fazer login via SSH** sem senha (note que as novas [chaves SSH carregadas não são configuradas em droplets já existentes por razões de segurança](https://docs.digitalocean.com/products/droplets/how-to/add-ssh-keys/to-existing-droplet/)).
### Functions Authentication Token
The way **to trigger a function via REST API** (always enabled, it's the method the cli uses) is by triggering a request with an **authentication token** like:
A maneira **de acionar uma função via REST API** (sempre habilitado, é o método que o cli usa) é acionando uma solicitação com um **token de autenticação** como:
```bash
curl -X POST "https://faas-lon1-129376a7.doserverless.co/api/v1/namespaces/fn-c100c012-65bf-4040-1230-2183764b7c23/actions/functionname?blocking=true&result=true" \
-H "Content-Type: application/json" \
-H "Authorization: Basic MGU0NTczZGQtNjNiYS00MjZlLWI2YjctODk0N2MyYTA2NGQ4OkhwVEllQ2t4djNZN2x6YjJiRmFGc1FERXBySVlWa1lEbUxtRE1aRTludXA1UUNlU2VpV0ZGNjNqWnVhYVdrTFg="
-H "Content-Type: application/json" \
-H "Authorization: Basic MGU0NTczZGQtNjNiYS00MjZlLWI2YjctODk0N2MyYTA2NGQ4OkhwVEllQ2t4djNZN2x6YjJiRmFGc1FERXBySVlWa1lEbUxtRE1aRTludXA1UUNlU2VpV0ZGNjNqWnVhYVdrTFg="
```
## Logs
### User logs
The **logs of a user** can be found in [**https://cloud.digitalocean.com/account/activity**](https://cloud.digitalocean.com/account/activity)
Os **logs de um usuário** podem ser encontrados em [**https://cloud.digitalocean.com/account/activity**](https://cloud.digitalocean.com/account/activity)
### Team logs
The **logs of a team** can be found in [**https://cloud.digitalocean.com/account/security**](https://cloud.digitalocean.com/account/security)
Os **logs de uma equipe** podem ser encontrados em [**https://cloud.digitalocean.com/account/security**](https://cloud.digitalocean.com/account/security)
## References
- [https://docs.digitalocean.com/products/teams/how-to/manage-membership/](https://docs.digitalocean.com/products/teams/how-to/manage-membership/)
{{#include ../../banners/hacktricks-training.md}}
@@ -1,11 +1,7 @@
# DO - Permissions for a Pentest
# DO - Permissões para um Pentest
{{#include ../../banners/hacktricks-training.md}}
DO doesn't support granular permissions. So the **minimum role** that allows a user to review all the resources is **member**. A pentester with this permission will be able to perform harmful activities, but it's what it's.
DO não suporta permissões granulares. Portanto, o **papel mínimo** que permite a um usuário revisar todos os recursos é **membro**. Um pentester com essa permissão poderá realizar atividades prejudiciais, mas é o que é.
{{#include ../../banners/hacktricks-training.md}}
@@ -1,8 +1,8 @@
# DO - Services
# DO - Serviços
{{#include ../../../banners/hacktricks-training.md}}
DO offers a few services, here you can find how to **enumerate them:**
DO oferece alguns serviços, aqui você pode encontrar como **enumerá-los:**
- [**Apps**](do-apps.md)
- [**Container Registry**](do-container-registry.md)
@@ -17,7 +17,3 @@ DO offers a few services, here you can find how to **enumerate them:**
- [**Volumes**](do-volumes.md)
{{#include ../../../banners/hacktricks-training.md}}
@@ -2,18 +2,17 @@
{{#include ../../../banners/hacktricks-training.md}}
## Basic Information
## Informações Básicas
[From the docs:](https://docs.digitalocean.com/glossary/app-platform/) App Platform is a Platform-as-a-Service (PaaS) offering that allows developers to **publish code directly to DigitalOcean** servers without worrying about the underlying infrastructure.
[Dos documentos:](https://docs.digitalocean.com/glossary/app-platform/) App Platform é uma oferta de Plataforma como Serviço (PaaS) que permite aos desenvolvedores **publicar código diretamente nos servidores da DigitalOcean** sem se preocupar com a infraestrutura subjacente.
You can run code directly from **github**, **gitlab**, **docker hub**, **DO container registry** (or a sample app).
Você pode executar código diretamente do **github**, **gitlab**, **docker hub**, **DO container registry** (ou um aplicativo de exemplo).
When defining an **env var** you can set it as **encrypted**. The only way to **retreive** its value is executing **commands** inside the host runnig the app.
Ao definir uma **env var**, você pode configurá-la como **criptografada**. A única maneira de **recuperar** seu valor é executando **comandos** dentro do host que está executando o aplicativo.
An **App URL** looks like this [https://dolphin-app-2tofz.ondigitalocean.app](https://dolphin-app-2tofz.ondigitalocean.app)
### Enumeration
Uma **App URL** se parece com isso [https://dolphin-app-2tofz.ondigitalocean.app](https://dolphin-app-2tofz.ondigitalocean.app)
### Enumeração
```bash
doctl apps list # You should get URLs here
doctl apps spec get <app-id> # Get yaml (including env vars, might be encrypted)
@@ -21,18 +20,13 @@ doctl apps logs <app-id> # Get HTTP logs
doctl apps list-alerts <app-id> # Get alerts
doctl apps list-regions # Get available regions and the default one
```
> [!CAUTION]
> **Apps doesn't have metadata endpoint**
> **Apps não têm endpoint de metadados**
### RCE & Encrypted env vars
### RCE & Variáveis de ambiente criptografadas
To execute code directly in the container executing the App you will need **access to the console** and go to **`https://cloud.digitalocean.com/apps/<app-id>/console/<app-name>`**.
Para executar código diretamente no contêiner que executa o App, você precisará de **acesso ao console** e ir para **`https://cloud.digitalocean.com/apps/<app-id>/console/<app-name>`**.
That will give you a **shell**, and just executing **`env`** you will be able to see **all the env vars** (including the ones defined as **encrypted**).
Isso lhe dará um **shell**, e apenas executando **`env`** você poderá ver **todas as variáveis de ambiente** (incluindo as definidas como **criptografadas**).
{{#include ../../../banners/hacktricks-training.md}}
@@ -2,14 +2,13 @@
{{#include ../../../banners/hacktricks-training.md}}
## Basic Information
## Informações Básicas
DigitalOcean Container Registry is a service provided by DigitalOcean that **allows you to store and manage Docker images**. It is a **private** registry, which means that the images that you store in it are only accessible to you and users that you grant access to. This allows you to securely store and manage your Docker images, and use them to deploy containers on DigitalOcean or any other environment that supports Docker.
O DigitalOcean Container Registry é um serviço fornecido pela DigitalOcean que **permite que você armazene e gerencie imagens Docker**. É um registro **privado**, o que significa que as imagens que você armazena nele são acessíveis apenas a você e aos usuários que você conceder acesso. Isso permite que você armazene e gerencie suas imagens Docker de forma segura e as utilize para implantar contêineres na DigitalOcean ou em qualquer outro ambiente que suporte Docker.
When creating a Container Registry it's possible to **create a secret with pull images access (read) over it in all the namespaces** of Kubernetes clusters.
### Connection
Ao criar um Container Registry, é possível **criar um segredo com acesso a pull images (leitura) sobre ele em todos os namespaces** dos clusters Kubernetes.
### Conexão
```bash
# Using doctl
doctl registry login
@@ -19,9 +18,7 @@ docker login registry.digitalocean.com
Username: <paste-api-token>
Password: <paste-api-token>
```
### Enumeration
### Enumeração
```bash
# Get creds to access the registry from the API
doctl registry docker-config
@@ -29,9 +26,4 @@ doctl registry docker-config
# List
doctl registry repository list-v2
```
{{#include ../../../banners/hacktricks-training.md}}
@@ -2,22 +2,19 @@
{{#include ../../../banners/hacktricks-training.md}}
## Basic Information
## Informações Básicas
With DigitalOcean Databases, you can easily **create and manage databases in the cloud** without having to worry about the underlying infrastructure. The service offers a variety of database options, including **MySQL**, **PostgreSQL**, **MongoDB**, and **Redis**, and provides tools for administering and monitoring your databases. DigitalOcean Databases is designed to be highly scalable, reliable, and secure, making it an ideal choice for powering modern applications and websites.
Com os Bancos de Dados da DigitalOcean, você pode facilmente **criar e gerenciar bancos de dados na nuvem** sem se preocupar com a infraestrutura subjacente. O serviço oferece uma variedade de opções de banco de dados, incluindo **MySQL**, **PostgreSQL**, **MongoDB** e **Redis**, e fornece ferramentas para administrar e monitorar seus bancos de dados. Os Bancos de Dados da DigitalOcean são projetados para serem altamente escaláveis, confiáveis e seguros, tornando-os uma escolha ideal para impulsionar aplicações e sites modernos.
### Connections details
### Detalhes de Conexão
When creating a database you can select to configure it **accessible from a public network**, or just from inside a **VPC**. Moreover, it request you to **whitelist IPs that can access it** (your IPv4 can be one).
The **host**, **port**, **dbname**, **username**, and **password** are shown in the **console**. You can even download the AD certificate to connect securely.
Ao criar um banco de dados, você pode selecionar configurá-lo **acessível a partir de uma rede pública**, ou apenas de dentro de uma **VPC**. Além disso, ele solicita que você **adicione IPs à lista de permissões que podem acessá-lo** (seu IPv4 pode ser um).
O **host**, **porta**, **dbname**, **username** e **senha** são exibidos no **console**. Você pode até baixar o certificado AD para se conectar de forma segura.
```bash
sql -h db-postgresql-ams3-90864-do-user-2700959-0.b.db.ondigitalocean.com -U doadmin -d defaultdb -p 25060
```
### Enumeration
### Enumeração
```bash
# Databse clusters
doctl databases list
@@ -39,9 +36,4 @@ doctl databases backups <db-id> # List backups of DB
# Pools
doctl databases pool list <db-id> # List pools of DB
```
{{#include ../../../banners/hacktricks-training.md}}
@@ -2,47 +2,46 @@
{{#include ../../../banners/hacktricks-training.md}}
## Basic Information
## Informações Básicas
In DigitalOcean, a "droplet" is a v**irtual private server (VPS)** that can be used to host websites and applications. A droplet is a **pre-configured package of computing resources**, including a certain amount of CPU, memory, and storage, that can be quickly and easily deployed on DigitalOcean's cloud infrastructure.
No DigitalOcean, um "droplet" é um v**servidor privado virtual (VPS)** que pode ser usado para hospedar sites e aplicações. Um droplet é um **pacote pré-configurado de recursos computacionais**, incluindo uma certa quantidade de CPU, memória e armazenamento, que pode ser rapidamente e facilmente implantado na infraestrutura de nuvem do DigitalOcean.
You can select from **common OS**, to **applications** already running (such as WordPress, cPanel, Laravel...), or even upload and use **your own images**.
Você pode selecionar entre **sistemas operacionais comuns**, para **aplicações** já em execução (como WordPress, cPanel, Laravel...), ou até mesmo fazer upload e usar **suas próprias imagens**.
Droplets support **User data scripts**.
Droplets suportam **scripts de dados do usuário**.
<details>
<summary>Difference between a snapshot and a backup</summary>
<summary>Diferença entre um snapshot e um backup</summary>
In DigitalOcean, a snapshot is a point-in-time copy of a Droplet's disk. It captures the state of the Droplet's disk at the time the snapshot was taken, including the operating system, installed applications, and all the files and data on the disk.
No DigitalOcean, um snapshot é uma cópia de ponto no tempo do disco de um Droplet. Ele captura o estado do disco do Droplet no momento em que o snapshot foi tirado, incluindo o sistema operacional, aplicações instaladas e todos os arquivos e dados no disco.
Snapshots can be used to create new Droplets with the same configuration as the original Droplet, or to restore a Droplet to the state it was in when the snapshot was taken. Snapshots are stored on DigitalOcean's object storage service, and they are incremental, meaning that only the changes since the last snapshot are stored. This makes them efficient to use and cost-effective to store.
Snapshots podem ser usados para criar novos Droplets com a mesma configuração do Droplet original, ou para restaurar um Droplet ao estado em que estava quando o snapshot foi tirado. Snapshots são armazenados no serviço de armazenamento de objetos do DigitalOcean, e são incrementais, o que significa que apenas as mudanças desde o último snapshot são armazenadas. Isso os torna eficientes para usar e econômicos para armazenar.
On the other hand, a backup is a complete copy of a Droplet, including the operating system, installed applications, files, and data, as well as the Droplet's settings and metadata. Backups are typically performed on a regular schedule, and they capture the entire state of a Droplet at a specific point in time.
Por outro lado, um backup é uma cópia completa de um Droplet, incluindo o sistema operacional, aplicações instaladas, arquivos e dados, bem como as configurações e metadados do Droplet. Backups são tipicamente realizados em uma programação regular, e capturam todo o estado de um Droplet em um ponto específico no tempo.
Unlike snapshots, backups are stored in a compressed and encrypted format, and they are transferred off of DigitalOcean's infrastructure to a remote location for safekeeping. This makes backups ideal for disaster recovery, as they provide a complete copy of a Droplet that can be restored in the event of data loss or other catastrophic events.
Ao contrário dos snapshots, backups são armazenados em um formato comprimido e criptografado, e são transferidos para fora da infraestrutura do DigitalOcean para um local remoto para segurança. Isso torna os backups ideais para recuperação de desastres, pois fornecem uma cópia completa de um Droplet que pode ser restaurada em caso de perda de dados ou outros eventos catastróficos.
In summary, snapshots are point-in-time copies of a Droplet's disk, while backups are complete copies of a Droplet, including its settings and metadata. Snapshots are stored on DigitalOcean's object storage service, while backups are transferred off of DigitalOcean's infrastructure to a remote location. Both snapshots and backups can be used to restore a Droplet, but snapshots are more efficient to use and store, while backups provide a more comprehensive backup solution for disaster recovery.
Em resumo, snapshots são cópias de ponto no tempo do disco de um Droplet, enquanto backups são cópias completas de um Droplet, incluindo suas configurações e metadados. Snapshots são armazenados no serviço de armazenamento de objetos do DigitalOcean, enquanto backups são transferidos para fora da infraestrutura do DigitalOcean para um local remoto. Tanto snapshots quanto backups podem ser usados para restaurar um Droplet, mas snapshots são mais eficientes para usar e armazenar, enquanto backups fornecem uma solução de backup mais abrangente para recuperação de desastres.
</details>
### Authentication
### Autenticação
For authentication it's possible to **enable SSH** through username and **password** (password defined when the droplet is created). Or **select one or more of the uploaded SSH keys**.
Para autenticação, é possível **habilitar SSH** através de nome de usuário e **senha** (senha definida quando o droplet é criado). Ou **selecionar uma ou mais das chaves SSH carregadas**.
### Firewall
> [!CAUTION]
> By default **droplets are created WITHOUT A FIREWALL** (not like in oder clouds such as AWS or GCP). So if you want DO to protect the ports of the droplet (VM), you need to **create it and attach it**.
> Por padrão, **droplets são criados SEM UM FIREWALL** (diferente de outras nuvens como AWS ou GCP). Portanto, se você quiser que o DO proteja as portas do droplet (VM), você precisa **criar e anexar um**.
More info in:
Mais informações em:
{{#ref}}
do-networking.md
{{#endref}}
### Enumeration
### Enumeração
```bash
# VMs
doctl compute droplet list # IPs will appear here
@@ -68,18 +67,13 @@ doctl compute certificate list
# Snapshots
doctl compute snapshot list
```
> [!CAUTION]
> **Droplets have metadata endpoints**, but in DO there **isn't IAM** or things such as role from AWS or service accounts from GCP.
> **Os Droplets têm endpoints de metadados**, mas no DO **não há IAM** ou coisas como funções do AWS ou contas de serviço do GCP.
### RCE
With access to the console it's possible to **get a shell inside the droplet** accessing the URL: **`https://cloud.digitalocean.com/droplets/<droplet-id>/terminal/ui/`**
Com acesso ao console, é possível **obter um shell dentro do droplet** acessando a URL: **`https://cloud.digitalocean.com/droplets/<droplet-id>/terminal/ui/`**
It's also possible to launch a **recovery console** to run commands inside the host accessing a recovery console in **`https://cloud.digitalocean.com/droplets/<droplet-id>/console`**(but in this case you will need to know the root password).
Também é possível lançar um **console de recuperação** para executar comandos dentro do host acessando um console de recuperação em **`https://cloud.digitalocean.com/droplets/<droplet-id>/console`** (mas neste caso você precisará saber a senha do root).
{{#include ../../../banners/hacktricks-training.md}}
@@ -2,39 +2,34 @@
{{#include ../../../banners/hacktricks-training.md}}
## Basic Information
## Informações Básicas
DigitalOcean Functions, also known as "DO Functions," is a serverless computing platform that lets you **run code without having to worry about the underlying infrastructure**. With DO Functions, you can write and deploy your code as "functions" that can be **triggered** via **API**, **HTTP requests** (if enabled) or **cron**. These functions are executed in a fully managed environment, so you **don't need to worry** about scaling, security, or maintenance.
DigitalOcean Functions, também conhecido como "DO Functions," é uma plataforma de computação serverless que permite que você **execute código sem se preocupar com a infraestrutura subjacente**. Com DO Functions, você pode escrever e implantar seu código como "funções" que podem ser **ativadas** via **API**, **requisições HTTP** (se habilitado) ou **cron**. Essas funções são executadas em um ambiente totalmente gerenciado, então você **não precisa se preocupar** com escalabilidade, segurança ou manutenção.
In DO, to create a function first you need to **create a namespace** which will be **grouping functions**.\
Inside the namespace you can then create a function.
No DO, para criar uma função, primeiro você precisa **criar um namespace** que será **um agrupamento de funções**.\
Dentro do namespace, você pode então criar uma função.
### Triggers
The way **to trigger a function via REST API** (always enabled, it's the method the cli uses) is by triggering a request with an **authentication token** like:
### Gatilhos
A maneira **de ativar uma função via REST API** (sempre habilitado, é o método que o cli usa) é acionando uma requisição com um **token de autenticação** como:
```bash
curl -X POST "https://faas-lon1-129376a7.doserverless.co/api/v1/namespaces/fn-c100c012-65bf-4040-1230-2183764b7c23/actions/functionname?blocking=true&result=true" \
-H "Content-Type: application/json" \
-H "Authorization: Basic MGU0NTczZGQtNjNiYS00MjZlLWI2YjctODk0N2MyYTA2NGQ4OkhwVEllQ2t4djNZN2x6YjJiRmFGc1FERXBySVlWa1lEbUxtRE1aRTludXA1UUNlU2VpV0ZGNjNqWnVhYVdrTFg="
-H "Content-Type: application/json" \
-H "Authorization: Basic MGU0NTczZGQtNjNiYS00MjZlLWI2YjctODk0N2MyYTA2NGQ4OkhwVEllQ2t4djNZN2x6YjJiRmFGc1FERXBySVlWa1lEbUxtRE1aRTludXA1UUNlU2VpV0ZGNjNqWnVhYVdrTFg="
```
To see how is the **`doctl`** cli tool getting this token (so you can replicate it), the **following command shows the complete network trace:**
Para ver como a ferramenta de linha de comando **`doctl`** está obtendo esse token (para que você possa replicá-lo), **o seguinte comando mostra o rastreamento de rede completo:**
```bash
doctl serverless connect --trace
```
**When HTTP trigger is enabled**, a web function can be invoked through these **HTTP methods GET, POST, PUT, PATCH, DELETE, HEAD and OPTIONS**.
**Quando o gatilho HTTP está habilitado**, uma função web pode ser invocada através desses **métodos HTTP GET, POST, PUT, PATCH, DELETE, HEAD e OPTIONS**.
> [!CAUTION]
> In DO functions, **environment variables cannot be encrypted** (at the time of this writing).\
> I couldn't find any way to read them from the CLI but from the console it's straight forward.
> Nas funções DO, **variáveis de ambiente não podem ser criptografadas** (no momento da redação deste texto).\
> Não consegui encontrar nenhuma maneira de lê-las a partir da CLI, mas a partir do console é direto.
**Functions URLs** look like this: `https://<random>.doserverless.co/api/v1/web/<namespace-id>/default/<function-name>`
### Enumeration
**URLs das funções** parecem com isso: `https://<random>.doserverless.co/api/v1/web/<namespace-id>/default/<function-name>`
### Enumeração
```bash
# Namespace
doctl serverless namespaces list
@@ -53,12 +48,7 @@ doctl serverless activations result <activation-id> # get only the response resu
# I couldn't find any way to get the env variables form the CLI
```
> [!CAUTION]
> There **isn't metadata endpoint** from the Functions sandbox.
> Não **existe um endpoint de metadados** do sandbox de Functions.
{{#include ../../../banners/hacktricks-training.md}}
@@ -2,22 +2,16 @@
{{#include ../../../banners/hacktricks-training.md}}
## Basic Information
## Informações Básicas
DigitalOcean Images are **pre-built operating system or application images** that can be used to create new Droplets (virtual machines) on DigitalOcean. They are similar to virtual machine templates, and they allow you to **quickly and easily create new Droplets with the operating system** and applications that you need.
As Imagens do DigitalOcean são **imagens de sistema operacional ou aplicativo pré-construídas** que podem ser usadas para criar novos Droplets (máquinas virtuais) no DigitalOcean. Elas são semelhantes a modelos de máquinas virtuais e permitem que você **crie rápida e facilmente novos Droplets com o sistema operacional** e aplicativos que você precisa.
DigitalOcean provides a wide range of Images, including popular operating systems such as Ubuntu, CentOS, and FreeBSD, as well as pre-configured application Images such as LAMP, MEAN, and LEMP stacks. You can also create your own custom Images, or use Images from the community.
O DigitalOcean oferece uma ampla gama de Imagens, incluindo sistemas operacionais populares como Ubuntu, CentOS e FreeBSD, além de Imagens de aplicativos pré-configuradas, como pilhas LAMP, MEAN e LEMP. Você também pode criar suas próprias Imagens personalizadas ou usar Imagens da comunidade.
When you create a new Droplet on DigitalOcean, you can choose an Image to use as the basis for the Droplet. This will automatically install the operating system and any pre-installed applications on the new Droplet, so you can start using it right away. Images can also be used to create snapshots and backups of your Droplets, so you can easily create new Droplets from the same configuration in the future.
### Enumeration
Quando você cria um novo Droplet no DigitalOcean, pode escolher uma Imagem para usar como base para o Droplet. Isso instalará automaticamente o sistema operacional e quaisquer aplicativos pré-instalados no novo Droplet, para que você possa começar a usá-lo imediatamente. As Imagens também podem ser usadas para criar instantâneas e backups dos seus Droplets, para que você possa facilmente criar novos Droplets a partir da mesma configuração no futuro.
### Enumeração
```
doctl compute image list
```
{{#include ../../../banners/hacktricks-training.md}}
@@ -2,19 +2,18 @@
{{#include ../../../banners/hacktricks-training.md}}
## Basic Information
## Informações Básicas
### DigitalOcean Kubernetes (DOKS)
DOKS is a managed Kubernetes service offered by DigitalOcean. The service is designed to **deploy and manage Kubernetes clusters on DigitalOcean's platform**. The key aspects of DOKS include:
DOKS é um serviço de Kubernetes gerenciado oferecido pela DigitalOcean. O serviço é projetado para **implantar e gerenciar clusters Kubernetes na plataforma da DigitalOcean**. Os principais aspectos do DOKS incluem:
1. **Ease of Management**: The requirement to set up and maintain the underlying infrastructure is eliminated, simplifying the management of Kubernetes clusters.
2. **User-Friendly Interface**: It provides an intuitive interface that facilitates the creation and administration of clusters.
3. **Integration with DigitalOcean Services**: It seamlessly integrates with other services provided by DigitalOcean, such as Load Balancers and Block Storage.
4. **Automatic Updates and Upgrades**: The service includes the automatic updating and upgrading of clusters to ensure they are up-to-date.
### Connection
1. **Facilidade de Gerenciamento**: A necessidade de configurar e manter a infraestrutura subjacente é eliminada, simplificando o gerenciamento de clusters Kubernetes.
2. **Interface Amigável**: Ele fornece uma interface intuitiva que facilita a criação e administração de clusters.
3. **Integração com Serviços da DigitalOcean**: Integra-se perfeitamente com outros serviços fornecidos pela DigitalOcean, como Load Balancers e Block Storage.
4. **Atualizações e Upgrades Automáticos**: O serviço inclui a atualização e upgrade automáticos de clusters para garantir que estejam atualizados.
### Conexão
```bash
# Generate kubeconfig from doctl
doctl kubernetes cluster kubeconfig save <cluster-id>
@@ -22,9 +21,7 @@ doctl kubernetes cluster kubeconfig save <cluster-id>
# Use a kubeconfig file that you can download from the console
kubectl --kubeconfig=/<pathtodirectory>/k8s-1-25-4-do-0-ams3-1670939911166-kubeconfig.yaml get nodes
```
### Enumeration
### Enumeração
```bash
# Get clusters
doctl kubernetes cluster list
@@ -35,9 +32,4 @@ doctl kubernetes cluster node-pool list <cluster-id>
# Get DO resources used by the cluster
doctl kubernetes cluster list-associated-resources <cluster-id>
```
{{#include ../../../banners/hacktricks-training.md}}
@@ -2,48 +2,34 @@
{{#include ../../../banners/hacktricks-training.md}}
### Domains
### Domínios
```bash
doctl compute domain list
doctl compute domain records list <domain>
# You can also create records
```
### Reserverd IPs
### IPs Reservados
```bash
doctl compute reserved-ip list
doctl compute reserved-ip-action unassign <ip>
```
### Load Balancers
### Balanceadores de Carga
```bash
doctl compute load-balancer list
doctl compute load-balancer remove-droplets <id> --droplet-ids 12,33
doctl compute load-balancer add-forwarding-rules <id> --forwarding-rules entry_protocol:tcp,entry_port:3306,...
```
### VPC
```
doctl vpcs list
```
### Firewall
> [!CAUTION]
> By default **droplets are created WITHOUT A FIREWALL** (not like in oder clouds such as AWS or GCP). So if you want DO to protect the ports of the droplet (VM), you need to **create it and attach it**.
> Por padrão, **os droplets são criados SEM UM FIREWALL** (diferente de outras nuvens como AWS ou GCP). Portanto, se você quiser que o DO proteja as portas do droplet (VM), você precisa **criar e anexar**.
```bash
doctl compute firewall list
doctl compute firewall list-by-droplet <droplet-id>
doctl compute firewall remove-droplets <fw-id> --droplet-ids <droplet-id>
```
{{#include ../../../banners/hacktricks-training.md}}
@@ -1,27 +1,21 @@
# DO - Projects
# DO - Projetos
{{#include ../../../banners/hacktricks-training.md}}
## Basic Information
## Informações Básicas
> project is just a container for all the **services** (droplets, spaces, databases, kubernetes...) **running together inside of it**.\
> For more info check:
> um projeto é apenas um contêiner para todos os **serviços** (droplets, spaces, bancos de dados, kubernetes...) **executando juntos dentro dele**.\
> Para mais informações, consulte:
{{#ref}}
../do-basic-information.md
{{#endref}}
### Enumeration
It's possible to **enumerate all the projects a user have access to** and all the resources that are running inside a project very easily:
### Enumeração
É possível **enumerar todos os projetos aos quais um usuário tem acesso** e todos os recursos que estão sendo executados dentro de um projeto com muita facilidade:
```bash
doctl projects list # Get projects
doctl projects resources list <proj-id> # Get all the resources of a project
```
{{#include ../../../banners/hacktricks-training.md}}
@@ -2,25 +2,24 @@
{{#include ../../../banners/hacktricks-training.md}}
## Basic Information
## Informações Básicas
DigitalOcean Spaces are **object storage services**. They allow users to **store and serve large amounts of data**, such as images and other files, in a scalable and cost-effective way. Spaces can be accessed via the DigitalOcean control panel, or using the DigitalOcean API, and are integrated with other DigitalOcean services such as Droplets (virtual private servers) and Load Balancers.
DigitalOcean Spaces são **serviços de armazenamento de objetos**. Eles permitem que os usuários **armazenem e sirvam grandes quantidades de dados**, como imagens e outros arquivos, de maneira escalável e econômica. Os Spaces podem ser acessados através do painel de controle da DigitalOcean ou usando a API da DigitalOcean, e estão integrados com outros serviços da DigitalOcean, como Droplets (servidores privados virtuais) e Load Balancers.
### Access
### Acesso
Spaces can be **public** (anyone can access them from the Internet) or **private** (only authorised users). To access the files from a private space outside of the Control Panel, we need to generate an **access key** and **secret**. These are a pair of random tokens that serve as a **username** and **password** to grant access to your Space.
Os Spaces podem ser **públicos** (qualquer pessoa pode acessá-los pela Internet) ou **privados** (apenas usuários autorizados). Para acessar os arquivos de um espaço privado fora do Painel de Controle, precisamos gerar uma **chave de acesso** e **secreta**. Estas são um par de tokens aleatórios que servem como um **nome de usuário** e **senha** para conceder acesso ao seu Space.
A **URL of a space** looks like this: **`https://uniqbucketname.fra1.digitaloceanspaces.com/`**\
Note the **region** as **subdomain**.
Uma **URL de um espaço** se parece com isto: **`https://uniqbucketname.fra1.digitaloceanspaces.com/`**\
Note a **região** como **subdomínio**.
Even if the **space** is **public**, **files** **inside** of it can be **private** (you will be able to access them only with credentials).
Mesmo que o **espaço** seja **público**, os **arquivos** **dentro** dele podem ser **privados** (você só poderá acessá-los com credenciais).
However, **even** if the file is **private**, from the console it's possible to share a file with a link such as `https://fra1.digitaloceanspaces.com/uniqbucketname/filename?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=DO00PL3RA373GBV4TRF7%2F20221213%2Ffra1%2Fs3%2Faws4_request&X-Amz-Date=20221213T121017Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=6a183dbc42453a8d30d7cd2068b66aeb9ebc066123629d44a8108115def975bc` for a period of time:
No entanto, **mesmo** que o arquivo seja **privado**, a partir do console é possível compartilhar um arquivo com um link como `https://fra1.digitaloceanspaces.com/uniqbucketname/filename?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=DO00PL3RA373GBV4TRF7%2F20221213%2Ffra1%2Fs3%2Faws4_request&X-Amz-Date=20221213T121017Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=6a183dbc42453a8d30d7cd2068b66aeb9ebc066123629d44a8108115def975bc` por um período de tempo:
<figure><img src="../../../images/image (277).png" alt=""><figcaption></figcaption></figure>
### Enumeration
### Enumeração
```bash
# Unauthenticated
## Note how the region is specified in the endpoint
@@ -42,9 +41,4 @@ aws s3 ls --endpoint=https://fra1.digitaloceanspaces.com s3://uniqbucketname
## It's also possible to generate authorized access to buckets from the API
```
{{#include ../../../banners/hacktricks-training.md}}
@@ -2,18 +2,12 @@
{{#include ../../../banners/hacktricks-training.md}}
## Basic Information
## Informações Básicas
DigitalOcean volumes are **block storage** devices that can be **attached to and detached from Droplets**. Volumes are useful for **storing data** that needs to **persist** independently of the Droplet itself, such as databases or file storage. They can be resized, attached to multiple Droplets, and snapshot for backups.
### Enumeration
Os volumes do DigitalOcean são dispositivos de **armazenamento em bloco** que podem ser **anexados e desanexados de Droplets**. Os volumes são úteis para **armazenar dados** que precisam **persistir** independentemente do Droplet em si, como bancos de dados ou armazenamento de arquivos. Eles podem ser redimensionados, anexados a vários Droplets e ter snapshots para backups.
### Enumeração
```
compute volume list
```
{{#include ../../../banners/hacktricks-training.md}}