Challenge (reto_comandos)
User1
Luego de importar la máquina. Vamos a poner usuario y contraseña. Para ambos es user1
Luego deberiamos ver algo asi:
Recuerda que el password no se ve al escribir. Pero tu escribe, confía, y dale al enter

Ejecutamos clear para limpiar la consola.
Qué comando podemos correr para saber que usuario somos?
Vamos a ver que hay dentro de la carpeta en la que estoy actualemente, para eso corremos que comando?
Esto nos da un output como este:
Parece que hay un archivo que podemos leer.
Qué comando podemos correr para ver el contenido del archivo? 🤔
Recordemos que al apretar el tabulador ↹ nos autocompleta. Entonces podemos correr el inicio del nombre del archivo, y luego darle al tabulador. Algo asi:
comando ins↹ y al darle al tabulador terminará de escribir por nosotros.
Al correr el comando vemos este output. Esto ya nos da un indicio. Hay mas usuarios!

Qué comando sirve para cambiar de usuario?
Respuesta
su que son las iniciales de 'switch user' en ingles. Y luego le pasamos el argumento del usuario al que queremos cambiar. En este caso, user5
Entonces el comando queda: su user5
Probamos cambiar a user5 pero claro. Esto no iba a ser tan fácil. Nos pide un password y por mas que probemos con user1 o user5 no funciona.

Vamos a ver donde estamos. Qué comando nos sirve para eso?
Podremos ir a la carpeta anterior en la herarquia? Como?
Si miramos las carpetas que hay aqui con ls nos encontramos con muchas!

Vamos a entrar a user2 , a ver que nos encontramos.
cd user2
Que hay adentro? Pues ls
Deberiamos ver algo asi:

Que comando usamos antes para ver el contenido de instrucciones? cat pues lo mismo.
Le damos a cat + co + tabulador.
Cual es la contraseña que aparece?
Serán tan idio*** que es la contraseña del user2 lo que acabo de encontrar? Pues a probar!
Con que comando cambiamos de usuario?
Nos pide el password y ponemos lo que nos aparecio en el archivo!
Recuerda que al tipear el password no aparece en la consola. Confia, escribe el password y dale a enter.
Deberiamos hacer algo asi:

User 2
Ahora somos user2. Siguiendo esta lógica, donde al ser user1 pudimos entrar a user2 y encontrar el password ahi, podriamos hacer lo msimo no? Podriamos como user2 ir al folder de /user3. A lo mejor se dejaron el password ahi?
Corremos cd /home/user3 o también puedes ir para atras con cd .. y luedo cd user3 como prefieras. En fin, que ya estamos en la carpeta user 3. ⚠️No nos confudamos la carpeta, que se llama user 3 con el usuario user3. Aun no somos el usuario3, simplemente estamos en su carpeta.
Corremos un ls para ver que hay dentro y vemos un archivo info.txt pero no tiene información muy útil. Habrá algo más? Como hago para ver archivos ocultos?
Respuesta
ls -a
Y podriamos verlo en formato lista asi que podemos hacer ls -la o ls -l -a
⚠️Es lo mismo combinar parameteros como -la o ponerlos por separado -l -a
Vemos algo asi: (estoy corriendo el comando de las dos maneras para que se vea que es el mismo resultado)
Cómo recoocemos qué archivos son carpetas y cuales son otra cosa?
Vale. Podriamos hacerle un cat a cada archivo a ver que nos da verdad? Pero soy muy vago. Hagamos algo más interesante. Se te ocurre algo?
Posible respuesta (hay muchas maneras)
grep . .* * | less
Grep es un programa que basicamente busca texto y lo filtra con las reglas que vos pongas.
Entonces aca le estamos diciendo lo siguiente:
.* *: selecciona todos los archivos (ocultos y visibles).grep .: busca líneas que tengan “algo” (el.significa "cualquier carácter").
Ademas de eso. Estamos usando pipe el simbolo es esta barra | que es para pasarle un resultado de un comando a otro comando. Pipe significa 'tuberia' literalmente es un tubo entre un comando y otro. Por ejemplo:
ls | grep txt
🧠 ¿Qué hace esto?
lslista todos los archivos del directorio.El
|toma la salida delsy se la pasa agrepcomo entrada.grep txtfiltra y muestra solo los archivos que contienen "txt" en su nombre.
Si lo hacemos en la carpeta actual obtenemos esto:

Bien. Al correr el comando que pusimos arriba. Le estamos pasando el resultado de lo que grep nos encontro (osea que lea todo) a otro programa que se llama less este programa es para leer archivos largos y poder movernos. Entonces esto nos permite usar las flechas de arriba y abajo del teclado para movernos por el output de grep
Que pasa si ejecutas grep . .* * sin pasarlo a less?
Pues que es muy largo y no llegamos a ver las primeras lineas.
Si vamas bajando por el arhivo suavemente con las teclas. Encontraremos algo interesante. 
Viste esa linea? Ves el password? Cual es?
Respuesta
El password es Psyduck54 
Y podemos ver que esta en el archivo .historial. Lo cual significa que podriamos haber corrido el comando cat .historial y eso nos habría dicho lo mismo. Solo que tendríamos que haber ido archivo por archivo para ver cuál era el password.
Para salir del programa less hay que apretar Q. Funciona parecido a vi/vim etc. Abajo de todo en la consola en vez de ver dos puntos titilando ya deberian ver su usuario, ubicacion y deberian poder volver a correr comandos. Como se ve en el siguiente gif

Probaste que pasa si en vez de less usamos more con pipe?
User 3
Al igual que antes. Cambiamos de usuario con su user3 y el password que obtuvimos.
Fijate como la console cambia de decir user2@ubuntu:/home/user3$ a decir user3@ubuntu:~$

Vale. Siguiendo la misma dinámica nos vamos a la carpeta del user4 !
cd .. y luego cd user4 o poniendo la ruta entera. Ya sabeis.
Vale. Ya estamos en la carpeta user 4. Que vemos cuando hacemos un ls ?

Muchos archivos. Y si le hacemos cat al que dice contraseña.txt.cpt ? que pasa?
Spoiler
Pues que la consola se vuelve loca y todos los caracteres y output estan encripadisimos

Para salir de esta situacion desesperante, escribe reset dale a enter y ya deberias estar bien de nuevo.
Vale. Por ahi no es. Vamos a probar con las instrucciones.
cat instrucciones.txt
Vale. Pues tenemos que
Vamos a ver que tiene dentro token.txt
cat token.txt
Me dice permission denied. Ok. Y ahora? Cómo podemos saber quién puede ver ejecutar y demas este archivo?

🧩 Desglose columna por columna:
-rw-rw----
Permisos del archivo (tipo y permisos para dueño, grupo, otros).
1
Número de links (cuántos nombres apuntan a este archivo).
user4
Dueño del archivo.
pokemon
Grupo al que pertenece el archivo.
12
Tamaño en bytes.
Sep 18 2020
Fecha de última modificación.
token.txt
Nombre del archivo.
Por lo que vemos. user4 es el dueño del archivo. Pero también pertenece al grupo pokemon
Y como puedo saber a que grupo pertenezco?
Cómo puedo saber quienes pertenecen al grupo pokemon ?
Posible solución
cat /etc/group
La salida es esta:

Es una salida larga. Podriamos pasarselo a more o less para leerlo mas tranquilos.
Pero para nuestra suerte la respuesta esta ahi. En esa linea

Al grupo pokemon pertenecen user2 y user4 user4 no tenemos el password. Pero user2 si!
Pues de nuevo switcheamos a user2 con su user2 y ponemos el password.
Ahora podemos ver el archivo! cat token.txt
Ademas de guardar esas credenciales. Cambiemos a user3 de nuevo. su user3 y password de nuevo.
Por lo que decían las instrucciones tenemos que ejecutar el .sh con ese token que nos dieron
Un arhivo .sh es un ejecutable escrito en bash. Se ejecuta con ./elNombreDelArchivo.sh (siempre y cuando tengas permisos para hacerlo)
Intentamos correr el script y nos dice "Permission denied"

Si hacemos ls -la de nuevo, vemos lo siguiente:

El permiso -rwxrwx--- se descompone así:
-: es un archivo regularrwx: permisos para el owner (lectura, escritura y ejecución) el owner esuser4pero nosotros somosuser3(recuerda que puedes correrwhoami) para saberlo.rwx: permisos para el grupo (lectura, escritura y ejecución)---: permisos para otros (ningún permiso)
Pero un momento. Yo soy user3 verdad? Y por qué no puedo ejecutarlo entonces?
Respuesta
Porque si bien, tenemos acceso para ejecutar dame_pass.sh (porque somos del grupo user3)
No tenemos accessos suficientes para el archivo contraseña.txt.cpt que esta siento usado dentro del script dame_pass.sh

Si hacemos un cat a dame_ssh.sh podremos ver lo siguiente:
Fijate como el script usa al arhivo. contraseña.txt.cpt

Como podemos solucionar esto de que no tenemos permisos?
Posible solución
Copiando los archivos a un directorio dodne si tenemos permisos.

ejecutamos cp dame_pass.sh /home/user3 para copiar el script a la carpeta de user3
ejecutamos cp contraseña.txt.cpt /home/user3 para copiar la contraseña encriptada a nuestra carpeta user3
Si corremos ls -la podemos ver los arhivos en nuestra carpeta user3

Si lo comparamos con la carpeta de user4 vemos que el owner es otro.

Como nosotros somos los owners del arhivo, ahora si, podemos ejecutar lo anterior.
./dame_pass.sh instroducimos la clave que teniamos qwerty67890 y esto nos escupe el .ext sin encriptar. Le hacemos cat contraseña.txt y nos da el password.
User 4
Al igual que antes. Hacemos su user4 y nos vamos a la carpeta del user 5!
Si vamos a la carpeta de user5 vemos un archivo exito.txt pero no nos deja verlo.

A ver, hagamos un ls -la quién tendrá permisos? 🤔

Vale. user5 es el owner del archivo exito.txt , además de que el grupo es user5 .
Esto no nos ayuda, porque nosotros somos user4
Si te olvidas quién eres, busca en tu interior.. Ser o no ser...
O correo el comando whoami
Veamos de nuevo los grupos.
cat /etc/group 
Ok, es muy largo. Recuerdas como ver archivos largos? Porque me parece que no veo el principio del archivo....
Posible respuesta
Pasarle a less o more o cualquier editor/lector de texto, el output de cat /etc/group
Quedaria algo asi:
cat /etc/group | less
Y esto ya nos permite subir y bajar en el archivo para verlo entero.
Ahora que vemos todo el archivo:

Lo ves? Estas viendo lo mismo que yo?
A ver te ayudo:

Lo ves?
Se te ocurre otra manera de saber esto?
Entonces. Si nosotros somos user4 ... Y user4 pertenece a sudo... Qué podemos hacer???
Respuesta
Correr sudo su poner el password de user4 que ya la sabemos y ya está!

Ahora somos 
Somos root

No Grooooot.
root
Pues ahora vamos a la carpeta de user5 y veamos si podemos ver el contenido!

Le hacemos un cat y ya está! ahi tenemos el contenido!
Nuevo hechizo malicioso aprendido 🧙
Que la terminal siempre esté de tu lado

Last updated







