Sender
Máquina Sender de DockerLabs.
Autor: d1se0
Dificultad: Difícil

Reconocimiento
Comenzamos con un escaneo de nmap para poder descubrir los puerto abiertos de la máquina:
Solo vemos dos puertos abiertos:
•Puerto 22: OpenSSH 9.6p1 Ubuntu
•Puerto 80: Apache httpd 2.4.58
Sabiendo esto iremos directamente al puerto 80, ya que el 22 no nos es útil por ahora.
Puerto 80
Vemos que trata de una especie de software que permite enviar texto por la red, por ahora no nos sirve.
Intrusión
También podemos ver unos usuarios:
los cuales los meteremos en un archivo ya que utilizaremos cewl para ver si en alguna palabra de la página se encuentra alguna contraseña. Para esto debemos ejecutar lo siguiente:
luego usaremos hydra con la lista de posibles contraseñas:
y obtenemos las siguientes credenciales:

ahora nos conectaremos por ssh de la siguiente manera:
Escalada De Privilegios
Alex
Si revisamos el home del usuario alex, veremos que se encuentra un binario llamado server el cual tiene le bit SUID activado, y si a este lo ejecutamos y enviamos muchos datos, veremos que sale el siguiente mensaje:
esto significa que el binario es vulnerable a buffer overflow.
Buffer Overflow
En esta parte, podríamos usar el binario sender para poder enviar el payload, pero para que sea mas entendible voy a crear un exploit con python el cual realiza lo mismo que usando sender. Primero crearemos la base:
este exploit, envía un pattern (/opt/metasploit/tools/exploit/pattern_create.rb -l 100) el cual nos permitirá saber el offset exacto del binario, nos ponemos con gdb (gdb -q server) y al ejecutar el exploit vemos lo siguiente:
pasamos "c5Ac" por pattern_offset de metasploit y nos dice lo siguiente:
por lo que ya sabemos el offset, vamos a actualizar el exploit:
este exploit nos permitirá tomar el control del EIP, ya que al ejecutarlo vemos lo siguiente en el gdb:
Ahora, para saber que tenemos que hacer, vamos a revisar las protecciones del binario:
como vemos no tiene ninguna, esto significa que podremos ejecutar un shellcode en la pila. Ya sabiendo esto, vamos a actualizar el exploit nuevamente pero agregando el shellcode:
En este exploit, estamos modificando el offset para que sea 43 (es 76 menos el valor del shellcode, que vale 33) y reemplazando las 'A' por nops para que nuestro shellcode sea interpretado correctamente, pero ahora nos hace falta saber a cual dirección apuntar con el EIP, para saberla vamos a ejecutar este exploit de ahora y luego en gdb ponemos x/200wx $esp:

Como vemos en la imagen, donde se encuentra el mouse es el EIP y lo que esta marcado los nops, viendo esto podemos hacer que el EIP apunte a la dirección donde comienzan nuestros nops, que seria "0xffffcdd0", solo que esta vez haremos el exploit para que funcione directamente en la máquina victima:
ejecutamos el binario como alex, y al ejecutar el exploit recibiremos una bash con privilegios, solo que nos queda ejecutar lo siguiente para ser root al 100%:
Root

Gracias por leer ;) (pd: srry si no se entendió algo, traté de explicar lo mejor que pude...)
Última actualización