Escalamiento de privilegios usando el archivo passwd

8

Si tengo un archivo / etc / passwd de escritura mundial en un sistema, ¿cómo puedo escalar mis privilegios a root? Actualmente soy un usuario desfavorecido. El sistema operativo subyacente es CentOS 7.2 en caso de que se esté preguntando

Sé que el archivo de contraseña no es normalmente grabable en todo el mundo, estoy haciendo un desafío que tiene el escenario actual.

Cualquier paso hacia la explotación será de gran ayuda

    
pregunta Airbourne 19.02.2017 - 11:46
fuente

2 respuestas

17

Las contraseñas normalmente se almacenan en /etc/shadow , que los usuarios no pueden leer. . Sin embargo, históricamente, se almacenaron en el archivo legible para el mundo /etc/passwd junto con Toda la información de la cuenta. Para la compatibilidad con versiones anteriores, si un hash de contraseña está presente en la segunda columna en /etc/passwd , tiene prioridad sobre el que está en /etc/shadow .

Históricamente, un segundo campo vacío en /etc/passwd significa que la cuenta no tiene contraseña, es decir, cualquier persona puede iniciar sesión sin una contraseña (utilizada para cuentas de invitado). Esto a veces está deshabilitado. Si las cuentas sin contraseña están deshabilitadas, puede poner el hash de una contraseña de su elección. Puede utilizar la función crypt para generar hashes de contraseña, por ejemplo, perl -le 'print crypt("foo", "aa")' para establecer la contraseña en foo .

Es posible obtener acceso a la raíz incluso si solo puede agregar a /etc/passwd y no sobrescribir el contenido. Esto se debe a que es posible tener varias entradas para el mismo usuario, siempre que tengan nombres diferentes: los usuarios se identifican por su ID, no por su nombre, y la característica definitoria de la cuenta raíz no es su nombre sino el hecho de que tiene un ID de usuario 0. Por lo tanto, puede crear una cuenta raíz alternativa agregando una línea que declare una cuenta con otro nombre, una contraseña de su elección y un ID de usuario 0.

    
respondido por el Gilles 19.02.2017 - 13:27
fuente
7

Solo escribe:

echo root::0:0:root:/root:/bin/bash > /etc/passwd

su

y tú eres root.

(Eliminar x significa que la raíz ya no requiere contraseña, puedes usar el comando sed en lugar de echo , pero esto es suficiente para obtener el shell raíz)

    
respondido por el Yılmaz Değirmenci 28.09.2017 - 21:44
fuente

Lea otras preguntas en las etiquetas