
Elimina temporalmente la contraseña de root utilizando CVE-2026-31431
[!WARNING] Úsalo solo en sistemas que poseas o tengas autorización para probar.
Elimina temporalmente la contraseña de root, utiliza CVE-2026-31431 para permitir una escalada a root independiente de la arquitectura sin conocer la contraseña del usuario actual.
Úsalo con responsabilidad, solo en sistemas que estés autorizado a probar. Si este método es compatible con tu sistema variará, pero ha funcionado en todas las derivadas de Debian que he probado.
El PoC en el que se basa esencialmente reemplazaba tu UID con todos ceros en /etc/passwd, dándote efectivamente root. Este enfoque elimina la contraseña de root, así que cuando ejecutas su obtienes root al instante. Esto mantiene tu usuario intacto para estabilidad, con la salvedad de que cualquier usuario en la máquina puede escalar hasta la limpieza. Al no ser una modificación binaria, también debería funcionar en todas las arquitecturas (probado en Aarch64 y x64).
python exploit.py [ --shell | --clean | --noclean ]
Sin argumentos, el programa se ejecuta, realiza los cambios en /etc/passwd y luego los revierte.
--noclean evita que los cambios se reviertan al finalizar.--clean solo limpiará una ejecución anterior, no ejecutará el exploit.--shell no limpiará, pero abrirá un shell de root con su después de ejecutar el exploit.
a
Eliminar la 'x' que indica que la contraseña está almacenada en /etc/shadow hará que se trate como si el usuario no tuviera contraseña, permitiendo un inicio de sesión sencillo.
En el momento en que escribí esto, solo existían PoCs conocidos para CopyFail, uno que sobrescribía un ejecutable SUID y otro que reemplazaba el UID del usuario por ceros. Ambos tienen casos de uso razonablemente diferentes si estás realizando una prueba contra un sistema. Las sobrescrituras SUID requieren shellcode adaptado a la arquitectura del sistema, y modificar tu UID requiere que te autentiques nuevamente con la contraseña de tu usuario actual, que quizás no conozcas. RootRemover a menudo puede usarse si esos requisitos interfieren.
Está diseñado para cuando obtienes un shell con un usuario nologin como www-data, no para una máquina donde tengas una contraseña conocida o conozcas la arquitectura lo suficiente como para preparar shellcode.
*LK*' o '*NP*' en el campo de contraseña (podría solucionarse con escrituras encadenadas, pero no he tenido tiempo de implementarlo)su (sin argumentos siempre significa root, el parche de UID del PoC parece simplemente cambiar a tu propio usuario en los registros)El código real del exploit proviene del repositorio de rootsecdev, principalmente he modificado los bytes que se escriben por las razones que he expuesto anteriormente.