VulnHub @ Completando CTF PwnLab (Walkthrough)

  • 5 Respuestas
  • 4070 Vistas

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado shadkz.

  • *
  • Underc0der
  • Mensajes: 107
  • Actividad:
    0%
  • Reputación 3
  • Fly your own flag.
  • Twitter: https://twitter.com/cmind33
    • Ver Perfil
    • shkz.
    • Email

VulnHub @ Completando CTF PwnLab (Walkthrough)

  • en: Agosto 28, 2016, 12:37:43 am
Bueno consideraba postearlo en (Wargames y Retos), pero también considerando que es un walkthrough quizás también sirve como un Tutorial de Hacking/Pentest y para aquellos que no entiendan o estén perdidos prefieren seguirlo paso a paso a medida que leen como un tutorial, por eso es que me decidí a postearlo acá, si consideran los admins en que debería ir a Wargames, todo bien y disculpen.


Bueno hace unos días aburrido me puse a bajar este CTF llamado PWNLAB desde la siguiente dirección: https://www.vulnhub.com/entry/pwnlab-init,158. Necesitaran VirtualBOX - OVA para correrlo, sin mas preámbulos, intentare detallar de manera reducida y directa como logre pasarlo. (Algunos tests los saltie para no escribir de mas ya que no me brindaron lo que necesitaba para avanzar y llegar al bendito flag).

~ Comenzando:
En mi caso la ip del servidor victima es 192.168.0.106. Veamos que puertos tiene abierto, utilizando nmap:


Bien como vemos tiene algunos puertos interesantes entre los que se destaca el HTTP y el MYSQL. Podríamos intentar desde el inicio tirarle un BruteForce al login, pero por como venia la prueba quería intentar otras vías de acceso, suponía que tendría que darme algún conocimiento el avanzar de otro modo a diferencia de algo tan sencillo como bruteforcear jeje.



Bastante sencilla la web, tiene solo tres links, el home, login y el upload. Como dije antes, realice varias pruebas, ninguna satisfactoria, hasta que me puse a mirar bien. Al momento de llamar algunos de esos links por ejemplo HOME, o LOGIN, el path luce de esta manera:

Código: [Seleccionar]
http://192.168.0.106/?page=login
Ese ?page=login me recuerda a como explotaba años atrás al famoso LFI / RFI. Con la ayuda de este site y debido a varias pruebas que no resultaron positivas, logre poder idear el método para avanzar. http://phpsecurity.readthedocs.io/en/latest/Injection-Attacks.html.

Se trata de pedir ayuda a los Wrappers o 'envoltorios, empaquetadores' en castellano. PHP acepta una serie de wrappers para distintos protocolos de tipo URL, estos permiten trabajar con funciones del sistema de archivos. Los Wrapper soportan varios filtros que pueden ser aplicados a un determinado recurso que le pasemos, en este caso como dice el site ese, podríamos probar con la función 'convert.base64-encode' y ver que pasa, la estructura quedaría asi y se la paso via BurpSuite en mi caso je.

Código: [Seleccionar]
http://192.168.0.106/?page=php://filter/read=convert.base64-encode/resource=login


Bien, la respuesta es rápida y con buenos resultados. Si usamos un poco la lógica, la función convert.base64-encode, nos dice que el resultado lo codificara en base64. Si este resultado lo pasamos al decoder, nos da lo siguiente:



Esta mostrándonos codificado el código fuente de "login.php". Tambien vemos que existe el archivo de configuración llamado "config.php", veamos que contiene:





Volvemos a tener los mismos resultados, el resultado codificado en base64 y al decodificarlo, surprise!, el acceso al server mysql. "La contraseña fue censurada, no es la verdadera, solo por jodido y para que no sean tan vagos jeje".

Una rápida conexión desde el cliente mysql en la terminal nos confirma el acceso:



Navegamos por la DB hasta llegar a lo que nos interesa...

Código: [Seleccionar]
$ mysql> show databases;
$ mysql> use Users;
$ mysql> show tables;
$ mysql> select * from users;

Y el resultado:



Nice, los resultados están en base64, seguimos.. opto por loguearme como KANE jeje.
Una vez logueados, estamos listos para poder subir archivos.. pero antes podríamos ver el codigo fuente de "upload.php" verdad?. Una vez mas el wrapper nos ayudara:



Obtenemos respuesta codificada y al pasarlo por el decoder, obtenemos el codigo fuente, lo que resalto a continuación es interesante, ya que de ello depende como se nos limitara nuestro archivo que subamos via el Upload.php:



Como vemos, se subirá a la carpeta upload/. Y las extensiones están limitadas a jpg, jpeg, gif y png. Bueno, necesitamos buscar la manera, de intentar subir algún archivo 'malicioso', que nos permita tomar control del sistema, y luego de alguna manera poder invocarlo para darnos ese bendito acceso.

Por mi parte lo que intente hacer fue buscar una shell de conexión inversa, la cual guarde como w0t.gif recordemos que solo 4 extensiones eran posibles y permitiría subir. Tambien pueden crear la shell inversa con metasploit, a libre criterio.

Vamos a Upload y probemos subir la imagen:



"Error 002", wtffffff??.. jeje.

Por lo visto, logra darse cuenta que no es un archivo GIF razo.. podemos bypassear de la siguiente manera, ingresando el encabezado GIF justo antes del comienzo de el codigo PHP de la shell:



Le damos a upload nuevamente y ahora si logramos bypassearlo, en mi caso se encuentra el archivo en el siguiente path:

http://192.168.0.106/upload/acb881cb3656e6bdc56c987e0f051593.gif

Seguimos.. ahora tenemos que buscar el modo en que el codigo php, el de nuestra shell, se ejecute.. ya investigamos login.php, upload.php y config.php.. nos resta lo fundamental, index.php jej.

Código: [Seleccionar]
GET /?page=php://filter/read=convert.base64-encode/resource=index
Nos arroja el resultado codificado en base64, decodificamos y obtenemos algo interesante:



Vemos ese parametro "lang" seteado en la Cookie. Investiguemos un poco mas:



Bingo!, mediante la Cookie podemos realizar un LFI (Local File Inclusion). Por ende si podemos ver el /etc/passwd, tambien podríamos ejecutar nuestra shell de conexión inversa verdad?. Vamos a intentarlo, primero dejamos un netcat escuchando localmente en el puerto 4444, que este fue el puerto que personalice la shell para que se conecte.



Como vemos en la parte de abajo en BurpSuit explotamos el LFI y en la parte de arriba en la terminal vemos como el netcat que estaba a la escucha recibe una conexión entrante... jeje.



Vemos que no podemos ingresar a la carpeta de Kane, somos www-data y el comando "su kane" para cambiar de usuario no funciona. Por lo tanto tenemos que acomodar la shell correctamente, importando bash con un script python.

Código: [Seleccionar]
$ python -c 'import pty; pty.spawn("/bin/bash")'
Ahora si tenemos bash y procedemos a loguear con el usuario Kane, utilizamos la password mysql de antes para loguear.



Vemos que no tenemos mucho en la carpeta /home a excepción de un archivo llamado msgmike, el cual tiene un interesante detalle y es que tiene el bit SUID activado bajo el usuario MIKE.

Corremos msgmike:

Código: [Seleccionar]
$ ./msgmike
Y nos devuelve el siguiente mensaje de error:

cat: /home/mike/msg.txt: No such file or directory

Nos damos cuenta que ejecuta 'cat' pero al parecer no con un path absoluto. Entonces pensamos que podríamos manipularlo y lograr escalar privilegios. (Referencia a tener en cuenta: http://www.fatetek.net/lessons/lesson10.shtml, referencia 2) repasen su ingles jeje)

Vemos que tenemos en PATH:

Código: [Seleccionar]
[email protected]:~$ echo $PATH
echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games

Bien suponiendo que se empaparon en el tema del link que pase y sobre PATH e IFS Exploit, lo que hago es exportar en PATH lo siguiente:

Código: [Seleccionar]
[email protected]:~$ export PATH=.
export PATH=.
[email protected]:~$ echo $PATH
echo $PATH
.

Una vez que le pasamos el valor a PATH, procedemos a crear un file llamado CAT, que contendra /bin/sh, mediante el cual al ejecutar ./msgmike, deberiamos escalar privilegios:



Como vemos en la imagen, con whoami verificamos que somos Kane, luego creamos el archivo cat y le damos permisos. Al ejecutar msgmike escalamos privilegios a mike, gracias al SUID.

Continuamos... estamos cerca.

Nos vamos hacia nuestro nuevo /home/mike, y verificamos que tenemos otro file, llamado msg2root.. comprobamos de que se trata:

Código: [Seleccionar]
[email protected]:/home/mike$ file msg2root
file msg2root
msg2root: setuid, setgid ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.2, for GNU/Linux 2.6.32, BuildID[sha1]=60bf769f8fbbfd406c047f698b55d2668fae14d3, not stripped

Ok, tenemos otro file con SUID, esta vez de "ROOT". jeje.. Al ejecutarlo, vemos que hace un echo de todo lo que tipeamos:



Al verificar con strings msg2root vemos que lo que hace es lo que esta en evidencia, realiza un stdin y stdout con /bin/echo. Por ende si cortáramos el mensaje, con ";" y escribimos una segunda orden como por ejemplo con el comando "pwd", tendría que funcionar y darnos el path:



Y efectivamente funciono, considerando el bit suid activado, procedo a verificar si esta netcat en el sistema, e intento abrir una nueva shell para escalar privilegios a Root ;D:

(Pantalla desde la shell inveresa en el sistema victima)


(Pantalla desde la terminal atacante el cual corre netcat en el puerto 8000, esperando conexion de la victima)


Tambien podriamos haber realizado un 'cat' desde msg2root hacia /root/flag.txt, era el modo facil, jeje, pero al saber que estaba netcat, fue un plus. De esta manera se finaliza con el CTF. Cualquier duda, simplemente preguntar.

https://insecuritynotes.blogspot.com/2016/08/completando-ctf-pwnlab-walkthrough.html
« Última modificación: Septiembre 04, 2016, 06:07:04 pm por cnfs »
Security Researcher / Reverse Engineer
https://shadkz.blogspot.com

Desconectado 0mega

  • *
  • Underc0der
  • Mensajes: 4
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil

Re:Completando CTF PwnLab (Walkthrough)

  • en: Agosto 28, 2016, 01:54:26 am
Sos un mostro... voy a seguir paso a paso esto, ya esta descargandoseeeeeeeeeeee!! jejeje. Aunque no voy a entender ni la mitad.

Abrazo!!!

Desconectado blackdrake

  • *
  • Co Admin
  • Mensajes: 1968
  • Actividad:
    3.33%
  • Country: es
  • Reputación 16
    • Ver Perfil

Re:Completando CTF PwnLab (Walkthrough)

  • en: Agosto 28, 2016, 01:09:46 pm
Muy bien explicado @cnfs y buen CTF, muchas gracias por traerlo :D

Un saludo.


Desconectado shadkz.

  • *
  • Underc0der
  • Mensajes: 107
  • Actividad:
    0%
  • Reputación 3
  • Fly your own flag.
  • Twitter: https://twitter.com/cmind33
    • Ver Perfil
    • shkz.
    • Email

Re:Completando CTF PwnLab (Walkthrough)

  • en: Agosto 28, 2016, 01:46:19 pm
Muchas gracias, ya sacaron los creadores uno nuevo, voy a ver si logro pasarlo y tratare de aportar nuevamente.

Greets!
Security Researcher / Reverse Engineer
https://shadkz.blogspot.com

Conectado Gabriela

  • *
  • Co Admin
  • Mensajes: 992
  • Actividad:
    33.33%
  • Country: 00
  • Reputación 22
  • A las personas se las conoce por sus heridas...
    • Ver Perfil
    • Hirana: red de IRC
    • Email

Re:Completando CTF PwnLab (Walkthrough)

  • en: Agosto 29, 2016, 12:04:20 am

Estupendo aporte! Te dejo karma.
Detallado, propio y con amplias explicaciones para hacer la práctica.
Esperemos a por más.

Gracias, @cnfs


Tú te enamoraste de mi valentía, yo me enamoré de tu oscuridad; tú aprendiste a vencer tus miedos, yo aprendí a no perderme en tu abismo.

Desconectado shadkz.

  • *
  • Underc0der
  • Mensajes: 107
  • Actividad:
    0%
  • Reputación 3
  • Fly your own flag.
  • Twitter: https://twitter.com/cmind33
    • Ver Perfil
    • shkz.
    • Email

Re:Completando CTF PwnLab (Walkthrough)

  • en: Agosto 30, 2016, 10:17:16 pm

Estupendo aporte! Te dejo karma.
Detallado, propio y con amplias explicaciones para hacer la práctica.
Esperemos a por más.

Gracias, @cnfs

Muchas gracias genia. En estos días ya posteo una resolución de uno que salio reciente, solo necesito un poco de time para redactar jeje.
Saludos!
Security Researcher / Reverse Engineer
https://shadkz.blogspot.com

 

Resolviendo el CTF: RickdiculouslyEasy: 1 @ VulnHub.com

Iniciado por shadkz.

Respuestas: 2
Vistas: 4272
Último mensaje Noviembre 03, 2017, 08:29:17 am
por shadkz.
Completando CTF Mr. Robot

Iniciado por Stuxnet

Respuestas: 2
Vistas: 4769
Último mensaje Agosto 30, 2016, 06:50:51 pm
por seth
hackfest2016: Quaoar - [ Walkthrough ]

Iniciado por Stuxnet

Respuestas: 0
Vistas: 2418
Último mensaje Julio 19, 2017, 12:12:45 pm
por Stuxnet
VulnHub @ Completando CTF: Billy Madison 1.1

Iniciado por shadkz.

Respuestas: 0
Vistas: 3109
Último mensaje Septiembre 20, 2016, 01:03:19 am
por shadkz.
VulnHub @ Completando CTF: Breach2.1

Iniciado por shadkz.

Respuestas: 4
Vistas: 4868
Último mensaje Septiembre 05, 2016, 09:58:22 pm
por shadkz.