Ghost AcademySecLearn// Seguridad Informática
🔍 LinuxPrivChecker · Escalada de Privilegios · Python · OSCP / HTB / CTF
LinuxPrivChecker
// Enumeración automática de vectores de escalada de privilegios

Script de enumeración local para sistemas Linux. Identifica vectores comunes de escalada de privilegios: archivos SUID/SGID, configuraciones erróneas, contraseñas en texto plano, credenciales expuestas en historial y exploits aplicables al kernel. Diseñado para OSCP, HTB y CTFs.

SUID · SGID · writable files · sudoers CVE kernel · LD_PRELOAD · PATH hijacking pipx install linuxprivchecker · Python 3 OSCP · HackTheBox · CTF · enumeración bash_history · wp-config.php · MySQL
🔍
LinuxPrivChecker — ¿Qué hace?
Script de Python ejecutado localmente en una caja Linux para enumerar información del sistema y buscar vectores comunes de escalada de privilegios. No explota — identifica e informa.

LinuxPrivChecker está diseñado para identificar áreas potenciales para investigar más a fondo, no para proporcionar explotación directa. Es ideal para aprender cómo funcionan las escaladas de privilegios y para su uso en:

🎓
OSCP
Certificación Offensive Security
⚔️
HackTheBox
Plataforma de CTF y labs
🚩
CTFs
Competiciones de ciberseguridad

Busca automáticamente: archivos SUID/SGID, configuraciones erróneas de sudoers, scripts de servicio escribibles, contraseñas en texto plano, versiones de kernel con CVEs conocidos y variables de entorno manipulables.

📦
Instalación — Python 2 vs Python 3
Dos métodos según la versión de Python disponible en el sistema objetivo.
Python 3 (recomendado · pipx)
Python 2.6/2.7 (legacy)
1
Instalar pipx
Si no está disponible en el sistema: sudo apt install pipx -y
2
Asegurar el PATH de pipx
pipx ensurepath — añade el directorio de ejecutables de pipx (~/.local/bin) al $PATH. Cierra y reabre la terminal para aplicar los cambios.
3
Instalar LinuxPrivChecker con pipx
pipx install linuxprivchecker — pipx gestiona el entorno virtual automáticamente.
4
Recargar el shell (si es necesario)
source ~/.bashrc — carga los cambios del PATH sin reiniciar el terminal.
5
Ejecutar
linuxprivchecker (usuario actual) o sudo $HOME/.local/bin/linuxprivchecker (con root)
bash — instalación Python 3 con pipx
# Paso 1: Instalar pipx
sudo apt update
sudo apt install pipx -y

# Paso 2: Asegurar que ~/.local/bin está en el PATH
pipx ensurepath
# → Cierra y reabre la terminal tras este paso

# Paso 3: Instalar la herramienta
pipx install linuxprivchecker

# Paso 4: Si el PATH no se actualizó, recargar el shell
source ~/.bashrc

# Paso 5: Ejecutar (como usuario o como root)
linuxprivchecker
sudo $HOME/.local/bin/linuxprivchecker
bash — Python 2.6/2.7 (sistemas legacy)
# Descargar el script todo-en-uno
wget https://raw.githubusercontent.com/sleventyeleven/linuxprivchecker/master/linuxprivchecker.py

# Ejecutar con output al log
python linuxprivchecker.py -w -o linuxprivchecker.log
⚠️ Python 2 está obsoleto. Usa solo en sistemas legacy donde Python 3 no esté disponible. Puede perder vulnerabilidades en sistemas modernos.
⚠️
Error con sudo: comando no encontrado
Problema habitual al intentar sudo linuxprivchecker — el PATH de root no incluye el directorio de pipx del usuario.
❌ El problema: sudo linuxprivchecker falla porque sudo usa el PATH de root, que no incluye ~/.local/bin (donde pipx instala los ejecutables del usuario). Aunque pipx ensurepath funciona para tu usuario, el entorno de sudo es diferente.
¿Por qué ocurre?
pipx Instala en /home/feval/.local/bin/ — solo en el PATH del usuario
usuario source ~/.bashrc añade la ruta → linuxprivchecker funciona sin sudo
sudo Usa el PATH de root (restringido) — no incluye rutas personales del usuario

Solución: usar la ruta completa

bash — soluciones al error de PATH con sudo
# ✅ Solución 1: dar la ruta absoluta a sudo (recomendado)
sudo $HOME/.local/bin/linuxprivchecker

# ✅ Solución 2: ruta explícita con usuario real
sudo /home/ATU/.local/bin/linuxprivchecker

# ✅ Solución 3: guardar en archivo desde root
sudo /home/ATU/.local/bin/linuxprivchecker > /tmp/reporte.txt

# ✅ Ejecutar sin sudo (solo información accesible por el usuario)
linuxprivchecker
linuxprivchecker ejecutándose con sudo y la ruta completa
LinuxPrivChecker ejecutándose correctamente usando la ruta completa con sudo
⌨️
Comandos y Opciones
Sintaxis de uso y parámetros disponibles para adaptar el escaneo a cada situación.
Comando Descripción
sudo linuxprivchecker Uso estándar. Escaneo completo en modo interactivo con salida en terminal. Accede a archivos protegidos.
linuxprivchecker Escaneo con permisos del usuario actual. Simula un atacante sin privilegios — útil para ver qué se expone sin root.
linuxprivchecker -h Muestra ayuda y resumen de opciones disponibles.
linuxprivchecker > /tmp/reporte.txt Crucial: Redirige el informe completo a un archivo para análisis posterior y documentación forense.
sudo python3 linuxprivchecker.py Ejecución directa del .py clonado (Python 2: python linuxprivchecker.py -w -o log). Útil si pipx da problemas.
bash — flujo de trabajo recomendado
# Escaneo completo guardando el informe
sudo /home/ATU/.local/bin/linuxprivchecker > /tmp/reporte.txt

# Leer el informe
cat /tmp/reporte.txt
sudo cat /tmp/reporte.txt

# Buscar secciones específicas en el reporte
grep -i "suid" /tmp/reporte.txt
grep -i "password\|passwd" /tmp/reporte.txt
📊
5 Secciones del Informe — Qué Buscar
El informe se divide en secciones que analizan diferentes vectores. El objetivo es saber qué buscar, no solo ver la salida.
🖥️ A — Sistema y Kernel uname -a · CVEs
›

Busca: Versión del kernel (uname -a), distribución y arquitectura.

Significado: Si detecta un kernel antiguo o vulnerable, mostrará automáticamente el CVE correspondiente, sugiriendo un exploit de kernel conocido. La versión de kernel es el primer dato que un atacante aprovecharía para buscar exploits públicos.

👤 B — Usuarios, Grupos y sudo UID=0 · sudoers · NOPASSWD
›

Busca: Usuarios con UID 0 (root), miembros del grupo sudo o wheel, configuraciones débiles en /etc/sudoers.

Significado: Revela qué usuarios tienen más poder y qué comandos pueden ejecutar sin contraseña. La herramienta destaca especialmente líneas en sudoers que permiten ejecutar comandos peligrosos como find, vim o nmap con sudo — todos explotables fácilmente para obtener shell de root.

⚙️ C — Servicios y Procesos ps aux · root processes
›

Busca: Procesos ejecutándose con privilegios de root (ps aux), servicios inusuales y archivos de configuración sensibles.

Significado: Un proceso ejecutándose como root que tiene una versión vulnerable o una configuración incorrecta es un objetivo directo para la explotación.

📁 D — Archivos y Permisos SUID · writable · contraseñas
›

La sección más importante para la escalada. Analiza tres vectores clave:

  • SUID/SGID: Binarios con el bit SUID permiten ejecutarlos con permisos del dueño (si dueño = root → ¡usuario se convierte en root!).
  • Archivos escribibles: Scripts de servicio o cron que el usuario puede modificar para añadir código malicioso.
  • Contraseñas almacenadas: Archivos de configuración con contraseñas en texto plano o codificadas.
🌍 E — Entorno y Variables LD_PRELOAD · PATH hijacking
›

Busca: Variables de entorno sensibles como LD_PRELOAD y paths débiles.

Significado: Algunas vulnerabilidades de escalada se basan en manipular las librerías que carga un programa o las rutas de búsqueda para inyectar código malicioso. Si un script root llama a un binario sin ruta absoluta, un atacante puede colocar un binario malicioso con el mismo nombre antes en el PATH.

⚔️
Vectores de Escalada — Archivos y Permisos
Los tres vectores más comunes que LinuxPrivChecker identifica en la sección de archivos y permisos.
Vector Archivos a revisar Potencial de escalada
SUID / SGID Binarios con bit SUID/SGID: /usr/bin/find, /usr/bin/nmap, etc. Un binario con SUID permite ejecutarlo con los permisos del dueño. Si el dueño es root → el usuario se convierte en root. Hay una lista de binarios SUID conocidamente peligrosos en GTFOBins.
Archivos escribibles Scripts de servicio (/etc/init.d/), archivos de cron modificables por el usuario. Si puedes modificar un script que se ejecuta como root (al reiniciar un servicio), puedes añadir código malicioso para obtener shell de root.
Contraseñas en texto plano Archivos de configuración, scripts con credenciales hardcodeadas, .bash_history. Permite saltarse la autenticación o acceder a otros servicios con las credenciales del administrador.
bash — búsqueda manual de vectores SUID y directorios escribibles
# Buscar binarios con bit SUID (ejecutan como propietario)
find / -perm -4000 -type f 2>/dev/null

# Buscar directorios con permisos 777 (escribibles por todos)
find / -type d -perm 777 2>/dev/null
sudo find / -type d -perm 777 2>/dev/null
📋
Hallazgos del Escaneo Real
Resultado del análisis de un sistema Ubuntu 24.04 con instalación LAMP. Estos son los puntos de interés identificados.
🔴 Usuario atu pertenece al grupo sudo
Vector más directo. Si el usuario atu conoce su contraseña, puede ejecutar cualquier comando como root usando sudo. Esto significa que ya hay control de root a través de este mecanismo — no hace falta nada más sofisticado.
⚠️ Historial bash con rastros de LAMP + WordPress
El archivo .bash_history revela instalación de MySQL, Apache y WordPress. El archivo wp-config.php a menudo contiene credenciales de base de datos en texto plano. Comandos visibles: sudo mysql_secure_installation, sudo nano wp-config.php, sudo chown -R www-data:www-data /var/www/wordpress.
🔵 Kernel Linux 6.14.0-33-generic (Ubuntu 24.04.3 LTS)
Información para buscar CVEs específicos si no se puede usar sudo. Esta versión de kernel es relativamente reciente, pero la información es vital para un atacante que busca exploits de kernel como método alternativo de escalada.
⚠️ Apache2 corriendo como root + WordPress instalado
Si el servidor web permite carga de archivos, podría explotarse via webshell. La instalación de WordPress aumenta la superficie de ataque. Además, MySQL está presente — acceso a MySQL como root puede permitir escalada mediante UDF maliciosa.
🟣 PATH de pipx en .bashrc — posible PATH hijacking
El archivo .bashrc añade /home/atu/.local/bin al PATH. Si un script root llama a un binario sin ruta absoluta, un atacante con escritura en ese directorio podría colocar un ejecutable malicioso con el mismo nombre.
🟢 Puertos expuestos: 80 (HTTP) y 3306 (MySQL)
Servicios con potenciales puntos de entrada. La combinación MySQL + Apache/WordPress con el historial de configuración dirige la atención a estas aplicaciones para buscar credenciales o inyecciones SQL.
Salida de LinuxPrivChecker mostrando información del sistema y vectores identificados
Salida real de LinuxPrivChecker en Ubuntu 24.04 — sección de información del sistema e identificación de vectores
🛡️
Estrategia de Hardening
Una vez obtenido el informe, la misión es corregir cada punto de riesgo identificado. Estos son los pasos ordenados por impacto.
1
Actualizar el kernel ante CVEs detectados
Si se detecta un CVE: sudo apt update && sudo apt upgrade — actualiza el sistema operativo inmediatamente.
2
Eliminar el bit SUID de binarios innecesarios
Para binarios que no necesitan SUID de forma crítica: sudo chmod u-s /usr/bin/find. Revisa la lista con find / -perm -4000 -type f 2>/dev/null y compara contra GTFOBins.
3
Restringir permisos de archivos sensibles
Archivos críticos accesibles solo por root: sudo chmod 600 <archivo>. Aplica a /etc/passwd, scripts de cron y archivos de configuración de servicios.
4
Limpiar cuentas y crons innecesarios
Elimina cuentas de usuario que no se usen y cualquier script cron que se ejecute como root pero no sea esencial para el sistema.
5
Endurecer las políticas de sudoers
Revisa /etc/sudoers con sudo visudo. Evita la directiva NOPASSWD y limita los comandos permitidos. Nunca permitas ALL=(ALL) NOPASSWD: ALL.
✅ Flujo completo: LinuxPrivChecker automatiza la fase de enumeración local — tú decides qué vectores explorar. Combínalo con recursos como GTFOBins (para SUID), HackTricks (técnicas de escalada) y CVEdetails (exploits de kernel).