Archivo /etc/passwd para la Elevación de Privilegios
Archivo /etc/passwd para la Elevación de Privilegios

Archivo /etc/passwd para la Elevación de Privilegios

Te mostraré varios métodos para modificar el archivo etc/passwd para crear o modificar un usuario con privilegios root.

Es fundamental saber cómo modificar tu propio usuario para elevar los privilegios en tu máquina. Todo sucede en el archivo /etc/passwd.

Recuerda: ¡No dudes en leer el artículo Administrar Permisos en Linux con chmod y Sobre los Permisos SUID/SGID/Sticky BIT en esgeeks!

Primero, necesito conocer en detalle el archivo /etc/passwd. En realidad, en el directorio /etc, hay tres archivos que debes conocer: passwd, group y shadow.

  • etc/passwd: Es un archivo de texto legible por humanos que almacena la información de la cuenta del usuario.
  • etc/group: También es un archivo de texto legible por humanos que almacena información de grupo, así como el usuario al que pertenece el grupo, que se puede identificar mediante este archivo.
  • etc/shadow: Es un archivo que contiene una contraseña encriptada.

Agregar un usuario desde una terminal

Voy a empezar abriendo el archivo /etc/passwd con el comando cat /etc/passwd:

Abrir archivo etc/passwd
Abrir archivo etc/passwd

Observa la estructura del contenido. Hay varias cosas que debes entender, y te las explicaré con detalle:

Entender el archivo etc/passwrd
Entender el archivo etc/passwrd
alexis:x:1000:1000:Alexis,,,:/home/alexis:/usr/bin/zsh

El primer campo indica el nombre del usuario que se utiliza para iniciar sesión, en mi caso es alexis.

La “X” indica la contraseña encriptada que realmente se almacena en el archivo /shadow. Si el usuario no tiene contraseña, el campo de la contraseña tendrá un * (asterisco).

Justo después viene el ID de usuario llamado UID: A cada usuario se le debe asignar un ID de usuario. El UID 0 (cero) está reservado para el usuario root y los UID 1-99 se reservan para otras cuentas predefinidas.

El UID 100-999 está reservado por el sistema para fines administrativos. El UID 1000 es casi siempre el primer usuario no sistema, generalmente un administrador. Si creo un nuevo usuario en mi sistema (Kali Linux), tendrá el UID 1001.

Después del UID está el Group Id (GID): indica el grupo de cada usuario. Funciona de la misma manera que el UID, pero aquí es para un grupo. El GID de 0 se refiere al grupo root y el GID de 1000 generalmente significa usuarios.

Campo Gecos: Por lo general, es un conjunto de valores separados por comas que proporciona más detalles sobre los usuarios. El formato del campo GECOS indica la siguiente información:

  1. Nombre completo del usuario
  2. Número de edificio y habitación o persona de contacto
  3. Número de teléfono de la oficina
  4. Número de teléfono del hogar
  5. Cualquier otra información de contacto
  • /home/directory: Indica la ruta del directorio de inicio del usuario, donde se almacenan todos sus archivos y programas. Si no se especifica ningún directorio, entonces / se convierte en el directorio del usuario. No te recomiendo guardar / como directorio, ya que es la raíz del sistema.
  • Shell: indica la ruta completa del shell predeterminado que ejecuta el comando (por el usuario) y muestra los resultados.

¡Ya está! Ahora que entiendo cómo funciona, voy a pasar a la creación y manipulación de un nuevo usuario. Para eso voy a usar el comando adduser:

Creación y manipulación de nuevos usuarios

Añadir usuario ejemplo1 en Linux
Añadir usuario ejemplo1 en Linux
adduser ejemplo1

Acabo de crear un nuevo usuario llamado ejemplo1. Si lo observas de cerca:

  • UID = 1001
  • GID = 1001
  • Directorio personal = /home/ejemplo1

Hago una pequeña comprobación volviendo a abrir el archivo /etc/passwd:

Comprobar usuario ejemplo 1 en etc/passwd
Comprobar usuario ejemplo 1 en etc/passwd

¡Genial! Funcionó. También puedo listar el contenido del directorio /home para ver los usuarios:

ls /home
Comando ls home
Comando ls home

Agregar un usuario desde el archivo /etc/passwd

Ahora que sé cómo agregar un nuevo usuario desde la terminal, voy a realizar la misma tarea directamente desde el archivo que contiene los usuarios.

Normalmente, un usuario Lambda tiene permiso de solo lectura para el archivo passwd, pero a veces también es posible que un usuario tenga permiso de lectura/escritura. Entonces, si ese es el caso, puedo agregar manualmente un usuario en el archivo /etc/passwd.

Voy a usar nano para modificar el archivo:

nano /etc/passwd

y luego agrego:

ejemplo2:*:1002:1003:,,,:/home/ejemplo2:/bin/bash

El signo * indica que el usuario ejemplo2 no tiene contraseña.

Agregar usuario ejemplo2 manualmente
Agregar usuario ejemplo2 manualmente

¡Listo!

Como he asignado 1003 GID para ejemplo2, también debo agregarlo al archivo /etc/group:

ejemplo2:*:1003:
Archivo etc group
Archivo etc/group
Agregar usuario a etc/group
Agregar usuario a etc/group

¡Hecho! Voy a definir una contraseña para este usuario: passwd ejemplo2

Establecer contraseña para usuario ejemplo2
Establecer contraseña para usuario ejemplo2

Como creé un nuevo usuario manualmente sin usar el comando adduser, no voy a encontrar una nueva entrada en el archivo /etc/shadow. Pero sí veré una diferencia en el archivo /etc/passwd:

cat /etc/passwd
Contraseña cifrada para usuario
Contraseña cifrada para usuario

Aquí, el signo * ha sido reemplazado por el valor de la contraseña encriptada. De esta manera, puedo crear un usuario para la elevación de privilegios.

Uso de OpenSSL

A veces no puedo ejecutar el comando passwd para definir la contraseña de un usuario, entonces uso OpenSSL que generará una contraseña encriptada con sal.

OpenSSL passwd calculará el hash de la contraseña dada usando la cadena de sal y el algoritmo de contraseña BSD basado en MD5.

Te lo explico con un ejemplo práctico:

openssl passwd -1 -salt ejemplo3 test123
Uso de openssl para crear contraseña de usuario
openssl para crear contraseña de usuario

Obtuve la contraseña encriptada. Ahora voy a agregar manualmente al usuario ejemplo3 en el archivo /etc/passwd dándole los parámetros del superusuario root (GID=0, UID0 y /root/root como ruta):

nano /etc/passwd
Agregar usuario ejemplo3 manualmente
Agregar usuario ejemplo3 manualmente

Compruebo iniciando sesión como ejemplo3:

su ejemplo3
whoami
id
Comprobar usuario ejemplo3
Comprobar usuario ejemplo3

¡Genial, soy root, funciona!

Uso de mkpasswd

mkpasswd es similar a OpenSSL passwd, que generará un hash de la cadena de contraseña dada. Veámoslo más de cerca:

mkpasswd -m SHA-512 pass
Uso de mkpasswd para generar contraseña
mkpasswd para generar contraseña

Me generó un hash de cadena de contraseña. Reemplazo X: por el valor del hash para ejemplo1:

Reemplazar contraseña de ejemplo1
Reemplazar contraseña de ejemplo1

¡Listo! Ahora verifico si funciona:

su ejemplo1
whoami
id
Comprobar usuario ejemplo1
Comprobar usuario ejemplo1

¡Perfecto! Está funcionando.

Uso de Python

Con Python, puedo importar una biblioteca de encriptación y agregar sal a mi contraseña, lo que creará una contraseña encriptada que incluye este valor de sal.

python2 -c "import crypt; print crypt.crypt('pass', '\$6\$salt')"
Cifrar contraseña pass con Python
Cifrar contraseña pass con Python

Me generó un hash de cadena de contraseña. Reemplazo el valor anterior comprendido entre : por el valor del hash para el usuario ejemplo2:

Reemplazar contraseña para usuario ejemplo2
Reemplazar contraseña para ejemplo2

Cambio de usuario para verificar si funciona:

su ejemplo2
whoami
id
Comprobar usuario ejemplo2
Comprobar usuario ejemplo2

¡Y ahí está! También funciona con Python.

Nota: También puedes usar Perl y PHP para generar un hash y probar si funciona.

Conclusión

Este es el final de este artículo. Espero que hayas entendido el principio y que también hayas tenido éxito de tu lado.

Es importante tener en cuenta que existen muchas maneras de agregar tus propios usuarios con acceso root, lo cual es muy útil para obtener el privilegio root en cualquier máquina.

A veces hay que ponerlo en práctica, equivocarse… para comprenderlo bien. No dudes en probar otros métodos y nombres de usuarios diferentes.

Si a veces algunos de ustedes tienen dificultades, contáctenme para que pueda guiarlos y explicarles con otro método.

¡Nos vemos pronto en otro artículo!

My Cart Close (×)

Tu carrito está vacío
Ver tienda