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

This commit is contained in:
Translator
2024-12-31 18:54:26 +00:00
parent 7770a50092
commit 192d97f7b7
244 changed files with 8835 additions and 11676 deletions

View File

@@ -2,17 +2,17 @@
{{#include ../../banners/hacktricks-training.md}}
## Basic Information
## Información Básica
**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 comenzar el pentesting** en un entorno de Digital Ocean, hay algunas **cosas básicas que necesitas saber** sobre cómo funciona DO para ayudarte a entender qué necesitas hacer, cómo encontrar configuraciones incorrectas y cómo explotarlas.
Concepts such as hierarchy, access and other basic concepts are explained in:
Conceptos como jerarquía, acceso y otros conceptos básicos se explican en:
{{#ref}}
do-basic-information.md
{{#endref}}
## Basic Enumeration
## Enumeración Básica
### SSRF
@@ -20,28 +20,22 @@ do-basic-information.md
https://book.hacktricks.xyz/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf
{{#endref}}
### Projects
### Proyectos
To get a list of the projects and resources running on each of them from the CLI check:
Para obtener una lista de los proyectos y recursos que se ejecutan en cada uno de ellos desde la CLI, consulta:
{{#ref}}
do-services/do-projects.md
{{#endref}}
### Whoami
```bash
doctl account get
```
## Services Enumeration
## Enumeración de Servicios
{{#ref}}
do-services/
{{#endref}}
{{#include ../../banners/hacktricks-training.md}}

View File

@@ -1,139 +1,127 @@
# DO - Basic Information
# DO - Información Básica
{{#include ../../banners/hacktricks-training.md}}
## Basic Information
## Información Básica
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 es una **plataforma de computación en la nube que proporciona a los usuarios una variedad de servicios**, incluyendo servidores privados virtuales (VPS) y otros recursos para construir, desplegar y gestionar aplicaciones. **Los servicios de DigitalOcean están diseñados para ser simples y fáciles de usar**, lo que los hace **populares entre desarrolladores y pequeñas empresas**.
Some of the key features of DigitalOcean include:
Algunas de las características clave de DigitalOcean incluyen:
- **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 virtuales (VPS)**: DigitalOcean proporciona VPS que pueden ser utilizados para alojar sitios web y aplicaciones. Estos VPS son conocidos por su simplicidad y facilidad de uso, y pueden ser desplegados rápida y fácilmente utilizando una variedad de "droplets" preconstruidos o configuraciones personalizadas.
- **Almacenamiento**: DigitalOcean ofrece una gama de opciones de almacenamiento, incluyendo almacenamiento de objetos, almacenamiento en bloques y bases de datos gestionadas, que pueden ser utilizados para almacenar y gestionar datos para sitios web y aplicaciones.
- **Herramientas de desarrollo y despliegue**: DigitalOcean proporciona una variedad de herramientas que pueden ser utilizadas para construir, desplegar y gestionar aplicaciones, incluyendo APIs y droplets preconstruidos.
- **Seguridad**: DigitalOcean pone un fuerte énfasis en la seguridad, y ofrece una gama de herramientas y características para ayudar a los usuarios a mantener sus datos y aplicaciones seguros. Esto incluye cifrado, copias de seguridad y otras medidas de seguridad.
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.
En general, DigitalOcean es una plataforma de computación en la nube que proporciona a los usuarios las herramientas y recursos que necesitan para construir, desplegar y gestionar aplicaciones en la nube. Sus servicios están diseñados para ser simples y fáciles de usar, lo que los hace populares entre desarrolladores y pequeñas empresas.
### Main Differences from AWS
### Principales Diferencias con 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.
Una de las principales diferencias entre DigitalOcean y AWS es la **gama de servicios que ofrecen**. **DigitalOcean se centra en proporcionar servidores privados virtuales (VPS)** simples y fáciles de usar, almacenamiento y herramientas de desarrollo y despliegue. **AWS**, por otro lado, ofrece una **gama de servicios mucho más amplia**, incluyendo VPS, almacenamiento, bases de datos, aprendizaje automático, análisis y muchos otros servicios. Esto significa que AWS es más adecuado para aplicaciones complejas a nivel empresarial, mientras que DigitalOcean es más adecuado para pequeñas empresas y desarrolladores.
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.
Otra diferencia clave entre las dos plataformas es la **estructura de precios**. **Los precios de DigitalOcean son generalmente más directos y fáciles** de entender que los de AWS, con una variedad de planes de precios que se basan en el número de droplets y otros recursos utilizados. AWS, por otro lado, tiene una estructura de precios más compleja que se basa en una variedad de factores, incluyendo el tipo y la cantidad de recursos utilizados. Esto puede dificultar la predicción de costos al usar AWS.
## Hierarchy
## Jerarquía
### User
### Usuario
A user is what you expect, a user. He can **create Teams** and **be a member of different teams.**
Un usuario es lo que esperas, un usuario. Puede **crear Equipos** y **ser miembro de diferentes equipos.**
### **Team**
### **Equipo**
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.
Un equipo es un grupo de **usuarios**. Cuando un usuario crea un equipo, tiene el **rol de propietario en ese equipo** y inicialmente **configura la información de facturación**. **Otros** usuarios pueden ser **invitados** al equipo.
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 del equipo puede haber varios **proyectos**. Un proyecto es solo un **conjunto de servicios en funcionamiento**. Puede ser utilizado para **separar diferentes etapas de infraestructura**, como producción, staging, desarrollo...
### Project
### Proyecto
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 se explicó, un proyecto es solo un contenedor para todos los **servicios** (droplets, espacios, bases de datos, kubernetes...) **que funcionan juntos dentro de él**.\
Un proyecto de Digital Ocean es muy similar a un proyecto de GCP sin IAM.
## Permissions
## Permisos
### Team
### Equipo
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).**
Básicamente, todos los miembros de un equipo tienen **acceso a los recursos de DO en todos los proyectos creados dentro del equipo (con más o menos privilegios).**
### Roles
Each **user inside a team** can have **one** of the following three **roles** inside of it:
Cada **usuario dentro de un equipo** puede tener **uno** de los siguientes tres **roles** dentro de él:
| Role | Shared Resources | Billing Information | Team Settings |
| Rol | Recursos Compartidos | Información de Facturación | Configuración del Equipo |
| ---------- | ---------------- | ------------------- | ------------- |
| **Owner** | Full access | Full access | Full access |
| **Biller** | No access | Full access | No access |
| **Member** | Full access | No access | No access |
| **Propietario** | Acceso total | Acceso total | Acceso total |
| **Facturador** | Sin acceso | Acceso total | Sin acceso |
| **Miembro** | Acceso total | Sin acceso | Sin acceso |
**Owner** and **member can list the users** and check their **roles** (biller cannot).
**El propietario** y **el miembro pueden listar los usuarios** y verificar sus **roles** (el facturador no puede).
## Access
## Acceso
### Username + password (MFA)
### Nombre de usuario + contraseña (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 en la mayoría de las plataformas, para acceder a la GUI puedes usar un conjunto de **nombre de usuario y contraseña válidos** para **acceder** a los **recursos** de la nube. Una vez que inicies sesión, puedes ver **todos los equipos de los que eres parte** en [https://cloud.digitalocean.com/account/profile](https://cloud.digitalocean.com/account/profile).\
Y puedes ver toda tu actividad en [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** puede ser **habilitado** en un usuario y **exigido** para todos los usuarios en un **equipo** para acceder al equipo.
### 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:
### Claves API
Para utilizar la API, los usuarios pueden **generar claves API**. Estas siempre vendrán con permisos de lectura, pero **los permisos de escritura son opcionales**.\
Las claves API se ven así:
```
dop_v1_1946a92309d6240274519275875bb3cb03c1695f60d47eaa1532916502361836
```
The cli tool is [**doctl**](https://github.com/digitalocean/doctl#installing-doctl). Initialise it (you need a token) with:
La herramienta de línea de comandos es [**doctl**](https://github.com/digitalocean/doctl#installing-doctl). Inicialízala (necesitas un token) con:
```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 defecto, este token se escribirá en texto claro en Mac en `/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`.
### Claves de acceso a 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 son claves que dan **acceso a los Spaces** (como S3 en AWS o Storage en GCP).
Se componen de un **nombre**, un **keyid** y un **secret**. Un ejemplo podría ser:
```
Name: key-example
Keyid: DO00ZW4FABSGZHAABGFX
Secret: 2JJ0CcQZ56qeFzAJ5GFUeeR4Dckarsh6EQSLm87MKlM
```
### OAuth Application
OAuth applications can be granted **access over Digital Ocean**.
Las aplicaciones OAuth pueden recibir **acceso 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).
Es posible **crear aplicaciones OAuth** en [https://cloud.digitalocean.com/account/api/applications](https://cloud.digitalocean.com/account/api/applications) y verificar todas las **aplicaciones OAuth permitidas** en [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).
Es posible agregar **claves SSH a un equipo de Digital Ocean** desde la **consola** en [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/)).
De esta manera, si creas un **nuevo droplet, la clave SSH se configurará** en él y podrás **iniciar sesión a través de SSH** sin contraseña (ten en cuenta que las [claves SSH recién subidas no se configuran en droplets ya existentes por razones de seguridad](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:
La forma **de activar una función a través de REST API** (siempre habilitado, es el método que utiliza el cli) es activando una solicitud con un **token de autenticación** 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)
Los **logs de un usuario** se pueden encontrar en [**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)
Los **logs de un equipo** se pueden encontrar en [**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}}

View File

@@ -1,11 +1,7 @@
# DO - Permissions for a Pentest
# DO - Permisos para un 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 no soporta permisos granulares. Así que el **rol mínimo** que permite a un usuario revisar todos los recursos es **miembro**. Un pentester con este permiso podrá realizar actividades dañinas, pero así es.
{{#include ../../banners/hacktricks-training.md}}

View File

@@ -1,8 +1,8 @@
# DO - Services
# DO - Servicios
{{#include ../../../banners/hacktricks-training.md}}
DO offers a few services, here you can find how to **enumerate them:**
DO ofrece algunos servicios, aquí puedes encontrar cómo **enumerarlos:**
- [**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}}

View File

@@ -2,18 +2,17 @@
{{#include ../../../banners/hacktricks-training.md}}
## Basic Information
## Información Básica
[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.
[De la documentación:](https://docs.digitalocean.com/glossary/app-platform/) App Platform es una oferta de Plataforma como Servicio (PaaS) que permite a los desarrolladores **publicar código directamente en los servidores de DigitalOcean** sin preocuparse por la infraestructura subyacente.
You can run code directly from **github**, **gitlab**, **docker hub**, **DO container registry** (or a sample app).
Puedes ejecutar código directamente desde **github**, **gitlab**, **docker hub**, **DO container registry** (o una aplicación de muestra).
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.
Al definir una **env var**, puedes configurarla como **encriptada**. La única forma de **retreive** su valor es ejecutando **commands** dentro del host que ejecuta la aplicación.
An **App URL** looks like this [https://dolphin-app-2tofz.ondigitalocean.app](https://dolphin-app-2tofz.ondigitalocean.app)
### Enumeration
Una **App URL** se ve así [https://dolphin-app-2tofz.ondigitalocean.app](https://dolphin-app-2tofz.ondigitalocean.app)
### Enumeración
```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**
> **Las aplicaciones no tienen un endpoint de metadatos**
### RCE & Encrypted env vars
### RCE y variables de entorno encriptadas
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 ejecutar código directamente en el contenedor que ejecuta la aplicación, necesitarás **acceso a la consola** y dirigirte a **`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**).
Eso te dará un **shell**, y al ejecutar **`env`** podrás ver **todas las variables de entorno** (incluyendo las definidas como **encriptadas**).
{{#include ../../../banners/hacktricks-training.md}}

View File

@@ -2,14 +2,13 @@
{{#include ../../../banners/hacktricks-training.md}}
## Basic Information
## Información Básica
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.
DigitalOcean Container Registry es un servicio proporcionado por DigitalOcean que **te permite almacenar y gestionar imágenes de Docker**. Es un registro **privado**, lo que significa que las imágenes que almacenas en él son accesibles solo para ti y los usuarios a los que les otorgues acceso. Esto te permite almacenar y gestionar de manera segura tus imágenes de Docker, y usarlas para desplegar contenedores en DigitalOcean o en cualquier otro entorno que soporte 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
Al crear un Container Registry, es posible **crear un secreto con acceso a imágenes pull (lectura) sobre él en todos los namespaces** de los clústeres de Kubernetes.
### Conexión
```bash
# Using doctl
doctl registry login
@@ -19,9 +18,7 @@ docker login registry.digitalocean.com
Username: <paste-api-token>
Password: <paste-api-token>
```
### Enumeration
### Enumeración
```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}}

View File

@@ -2,22 +2,19 @@
{{#include ../../../banners/hacktricks-training.md}}
## Basic Information
## Información Básica
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.
Con las Bases de Datos de DigitalOcean, puedes **crear y gestionar bases de datos en la nube** sin tener que preocuparte por la infraestructura subyacente. El servicio ofrece una variedad de opciones de bases de datos, incluyendo **MySQL**, **PostgreSQL**, **MongoDB** y **Redis**, y proporciona herramientas para administrar y monitorear tus bases de datos. Las Bases de Datos de DigitalOcean están diseñadas para ser altamente escalables, confiables y seguras, lo que las convierte en una opción ideal para impulsar aplicaciones y sitios web modernos.
### Connections details
### Detalles de Conexiones
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.
Al crear una base de datos, puedes seleccionar configurarla como **accesible desde una red pública**, o solo desde dentro de una **VPC**. Además, te solicita **agregar a la lista blanca las IPs que pueden acceder** (tu IPv4 puede ser una).
El **host**, **puerto**, **dbname**, **nombre de usuario** y **contraseña** se muestran en la **consola**. Incluso puedes descargar el certificado AD para conectarte 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
### Enumeración
```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}}

View File

@@ -2,47 +2,46 @@
{{#include ../../../banners/hacktricks-training.md}}
## Basic Information
## Información Básica
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.
En DigitalOcean, un "droplet" es un v**servidor privado virtual (VPS)** que se puede utilizar para alojar sitios web y aplicaciones. Un droplet es un **paquete preconfigurado de recursos de computación**, que incluye una cierta cantidad de CPU, memoria y almacenamiento, que se puede implementar rápida y fácilmente en la infraestructura en la nube de DigitalOcean.
You can select from **common OS**, to **applications** already running (such as WordPress, cPanel, Laravel...), or even upload and use **your own images**.
Puedes seleccionar entre **sistemas operativos comunes**, aplicaciones ya en funcionamiento (como WordPress, cPanel, Laravel...), o incluso subir y usar **tus propias imágenes**.
Droplets support **User data scripts**.
Los droplets soportan **scripts de datos de usuario**.
<details>
<summary>Difference between a snapshot and a backup</summary>
<summary>Diferencia entre un snapshot y un 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.
En DigitalOcean, un snapshot es una copia en un momento dado del disco de un Droplet. Captura el estado del disco del Droplet en el momento en que se tomó el snapshot, incluyendo el sistema operativo, aplicaciones instaladas y todos los archivos y datos en el 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.
Los snapshots se pueden usar para crear nuevos Droplets con la misma configuración que el Droplet original, o para restaurar un Droplet al estado en que se encontraba cuando se tomó el snapshot. Los snapshots se almacenan en el servicio de almacenamiento de objetos de DigitalOcean, y son incrementales, lo que significa que solo se almacenan los cambios desde el último snapshot. Esto los hace eficientes de usar y rentables de almacenar.
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 otro lado, un backup es una copia completa de un Droplet, incluyendo el sistema operativo, aplicaciones instaladas, archivos y datos, así como la configuración y metadatos del Droplet. Los backups se realizan típicamente en un horario regular, y capturan el estado completo de un Droplet en un momento específico.
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.
A diferencia de los snapshots, los backups se almacenan en un formato comprimido y cifrado, y se transfieren fuera de la infraestructura de DigitalOcean a una ubicación remota para su custodia. Esto hace que los backups sean ideales para la recuperación ante desastres, ya que proporcionan una copia completa de un Droplet que se puede restaurar en caso de pérdida de datos u otros 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.
En resumen, los snapshots son copias en un momento dado del disco de un Droplet, mientras que los backups son copias completas de un Droplet, incluyendo su configuración y metadatos. Los snapshots se almacenan en el servicio de almacenamiento de objetos de DigitalOcean, mientras que los backups se transfieren fuera de la infraestructura de DigitalOcean a una ubicación remota. Tanto los snapshots como los backups se pueden usar para restaurar un Droplet, pero los snapshots son más eficientes de usar y almacenar, mientras que los backups proporcionan una solución de respaldo más completa para la recuperación ante desastres.
</details>
### Authentication
### Autenticación
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 la autenticación, es posible **habilitar SSH** a través de nombre de usuario y **contraseña** (contraseña definida cuando se crea el droplet). O **seleccionar una o más de las claves SSH subidas**.
### 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 defecto, **los droplets se crean SIN UN FIREWALL** (no como en otras nubes como AWS o GCP). Así que si quieres que DO proteja los puertos del droplet (VM), necesitas **crearlo y adjuntarlo**.
More info in:
Más información en:
{{#ref}}
do-networking.md
{{#endref}}
### Enumeration
### Enumeración
```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.
> **Los Droplets tienen puntos finales de metadatos**, pero en DO **no hay IAM** ni cosas como roles de AWS o cuentas de servicio de 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/`**
Con acceso a la consola es posible **obtener un shell dentro del droplet** accediendo a la 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).
También es posible lanzar una **consola de recuperación** para ejecutar comandos dentro del host accediendo a una consola de recuperación en **`https://cloud.digitalocean.com/droplets/<droplet-id>/console`** (pero en este caso necesitarás conocer la contraseña de root).
{{#include ../../../banners/hacktricks-training.md}}

View File

@@ -2,39 +2,34 @@
{{#include ../../../banners/hacktricks-training.md}}
## Basic Information
## Información Básica
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, también conocido como "DO Functions," es una plataforma de computación sin servidor que te permite **ejecutar código sin tener que preocuparte por la infraestructura subyacente**. Con DO Functions, puedes escribir y desplegar tu código como "funciones" que pueden ser **activadas** a través de **API**, **solicitudes HTTP** (si están habilitadas) o **cron**. Estas funciones se ejecutan en un entorno completamente gestionado, por lo que **no necesitas preocuparte** por la escalabilidad, seguridad o mantenimiento.
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.
En DO, para crear una función primero necesitas **crear un espacio de nombres** que será **un grupo de funciones**.\
Dentro del espacio de nombres, puedes crear una funcn.
### 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:
### Activadores
La forma de **activar una función a través de REST API** (siempre habilitado, es el método que utiliza el cli) es activando una solicitud con un **token de autenticación** 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 cómo la herramienta de línea de comandos **`doctl`** está obteniendo este token (para que puedas replicarlo), el **siguiente comando muestra el rastro de red 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**.
**Cuando se habilita el desencadenador HTTP**, una función web se puede invocar a través de estos **métodos HTTP GET, POST, PUT, PATCH, DELETE, HEAD y 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.
> En las funciones de DO, **las variables de entorno no se pueden cifrar** (en el momento de escribir esto).\
> No pude encontrar ninguna manera de leerlas desde la CLI, pero desde la consola es bastante sencillo.
**Functions URLs** look like this: `https://<random>.doserverless.co/api/v1/web/<namespace-id>/default/<function-name>`
### Enumeration
**Las URL de las funciones** se ven así: `https://<random>.doserverless.co/api/v1/web/<namespace-id>/default/<function-name>`
### Enumeración
```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.
> No **hay un endpoint de metadatos** desde el sandbox de Functions.
{{#include ../../../banners/hacktricks-training.md}}

View File

@@ -2,22 +2,16 @@
{{#include ../../../banners/hacktricks-training.md}}
## Basic Information
## Información Básica
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.
Las Imágenes de DigitalOcean son **imágenes de sistema operativo o aplicación preconstruidas** que se pueden usar para crear nuevos Droplets (máquinas virtuales) en DigitalOcean. Son similares a las plantillas de máquinas virtuales y te permiten **crear rápida y fácilmente nuevos Droplets con el sistema operativo** y las aplicaciones que necesitas.
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.
DigitalOcean proporciona una amplia gama de Imágenes, incluidos sistemas operativos populares como Ubuntu, CentOS y FreeBSD, así como Imágenes de aplicaciones preconfiguradas como LAMP, MEAN y LEMP. También puedes crear tus propias Imágenes personalizadas o usar Imágenes de la comunidad.
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
Cuando creas un nuevo Droplet en DigitalOcean, puedes elegir una Imagen para usar como base para el Droplet. Esto instalará automáticamente el sistema operativo y cualquier aplicación preinstalada en el nuevo Droplet, para que puedas comenzar a usarlo de inmediato. Las Imágenes también se pueden usar para crear instantáneas y copias de seguridad de tus Droplets, para que puedas crear fácilmente nuevos Droplets a partir de la misma configuración en el futuro.
### Enumeración
```
doctl compute image list
```
{{#include ../../../banners/hacktricks-training.md}}

View File

@@ -2,19 +2,18 @@
{{#include ../../../banners/hacktricks-training.md}}
## Basic Information
## Información Básica
### 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 es un servicio de Kubernetes gestionado ofrecido por DigitalOcean. El servicio está diseñado para **desplegar y gestionar clústeres de Kubernetes en la plataforma de DigitalOcean**. Los aspectos clave de DOKS incluyen:
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. **Facilidad de Gestión**: Se elimina la necesidad de configurar y mantener la infraestructura subyacente, simplificando la gestión de clústeres de Kubernetes.
2. **Interfaz Amigable**: Proporciona una interfaz intuitiva que facilita la creación y administración de clústeres.
3. **Integración con Servicios de DigitalOcean**: Se integra sin problemas con otros servicios proporcionados por DigitalOcean, como Balanceadores de Carga y Almacenamiento en Bloque.
4. **Actualizaciones y Mejoras Automáticas**: El servicio incluye la actualización y mejora automática de clústeres para garantizar que estén al día.
### Conexión
```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
### Enumeración
```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}}

View File

@@ -2,48 +2,34 @@
{{#include ../../../banners/hacktricks-training.md}}
### Domains
### Dominios
```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 defecto, **los droplets se crean SIN UN FIREWALL** (no como en otras nubes como AWS o GCP). Así que si quieres que DO proteja los puertos del droplet (VM), necesitas **crearlo y adjuntarlo**.
```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}}

View File

@@ -2,26 +2,20 @@
{{#include ../../../banners/hacktricks-training.md}}
## Basic Information
## Información Básica
> project is just a container for all the **services** (droplets, spaces, databases, kubernetes...) **running together inside of it**.\
> For more info check:
> un proyecto es solo un contenedor para todos los **servicios** (droplets, spaces, bases de datos, kubernetes...) **que se ejecutan juntos dentro de él**.\
> Para más información, consulta:
{{#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:
### Enumeración
Es posible **enumerar todos los proyectos a los que un usuario tiene acceso** y todos los recursos que se están ejecutando dentro de un proyecto muy fácilmente:
```bash
doctl projects list # Get projects
doctl projects resources list <proj-id> # Get all the resources of a project
```
{{#include ../../../banners/hacktricks-training.md}}

View File

@@ -2,25 +2,24 @@
{{#include ../../../banners/hacktricks-training.md}}
## Basic Information
## Información Básica
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 son **servicios de almacenamiento de objetos**. Permiten a los usuarios **almacenar y servir grandes cantidades de datos**, como imágenes y otros archivos, de manera escalable y rentable. Los Spaces se pueden acceder a través del panel de control de DigitalOcean, o utilizando la API de DigitalOcean, y están integrados con otros servicios de DigitalOcean como Droplets (servidores privados virtuales) y Load Balancers.
### Access
### Acceso
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.
Los Spaces pueden ser **públicos** (cualquiera puede acceder a ellos desde Internet) o **privados** (solo usuarios autorizados). Para acceder a los archivos de un espacio privado fuera del Panel de Control, necesitamos generar una **clave de acceso** y **secreto**. Estos son un par de tokens aleatorios que sirven como un **nombre de usuario** y **contraseña** para otorgar acceso a tu Space.
A **URL of a space** looks like this: **`https://uniqbucketname.fra1.digitaloceanspaces.com/`**\
Note the **region** as **subdomain**.
Una **URL de un espacio** se ve así: **`https://uniqbucketname.fra1.digitaloceanspaces.com/`**\
Nota la **región** como **subdominio**.
Even if the **space** is **public**, **files** **inside** of it can be **private** (you will be able to access them only with credentials).
Incluso si el **espacio** es **público**, los **archivos** **dentro** de él pueden ser **privados** (solo podrás acceder a ellos con credenciales).
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:
Sin embargo, **incluso** si el archivo es **privado**, desde la consola es posible compartir un archivo con un enlace 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 un período de tiempo:
<figure><img src="../../../images/image (277).png" alt=""><figcaption></figcaption></figure>
### Enumeration
### Enumeración
```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}}

View File

@@ -2,18 +2,12 @@
{{#include ../../../banners/hacktricks-training.md}}
## Basic Information
## Información Básica
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
Los volúmenes de DigitalOcean son dispositivos de **almacenamiento en bloque** que pueden ser **adjuntados y desadjuntados de Droplets**. Los volúmenes son útiles para **almacenar datos** que necesitan **persistir** independientemente del Droplet en sí, como bases de datos o almacenamiento de archivos. Pueden ser redimensionados, adjuntados a múltiples Droplets y tomar instantáneas para copias de seguridad.
### Enumeración
```
compute volume list
```
{{#include ../../../banners/hacktricks-training.md}}