sábado, 27 de agosto de 2016

Completando CTF PwnLab (Walkthrough)



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. Podriamos intentar desde el inicio tirarle un BruteForce heavy al login, pero por como venia la prueba quería intentar otras vías de acceso, suponía que tendría que darme algun conocimiento el avanzar 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:


  • 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. 

  • 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...

  • $ 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 KENT jeje.
Una vez logueados, estamos listos para poder subir archivos.. pero antes podriamos 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 continuacion 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 conexion 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.


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





















Vemos que el parametro "lang" esta seteado como una 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 conexion entrante... jeje.






















Vemos que no tenemos permisos para 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.

  • $> 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:

  • $> ./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)

Vemos que tenemos en PATH:


  1. kane@pwnlab:~$ echo $PATH
  2. echo $PATH
  3. /usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games

Bien, lo que hago es exportar en PATH lo siguiente:


  1. kane@pwnlab:~$ export PATH=.
  2. export PATH=.
  3. kane@pwnlab:~$ echo $PATH
  4. echo $PATH
  5. .
Una vez que le pasamos el valor a PATH, procedemos a crear un file llamado CAT, que contendra /bin/sh, el cual al ejecutar ./msgmike, deberiamos escalar privilegios, veamos:
















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:


  1. mike@pwnlab:/home/mike$ file msg2root
  2. file msg2root
  3. 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:


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.

lunes, 22 de agosto de 2016

"VulnHub CTF Breach2" recien salido del horno.





Proba tus habilidades con esta ISO recien salida del horno en su segunda version Breach 2.0. Como los creadores dicen, intentan ofrecer un escenario virtual lo mas similar posible a la realidad.

Datos del creador:

Second in a multi-part series, Breach 2.0 is a boot2root/CTF challenge which attempts to showcase a real-world scenario, with plenty of twists and trolls along the way.
The VM is configured with a static IP (192.168.110.151) so you'll need to configure your host only adaptor to this subnet. Sorry! Last one with a static IP ;)
A hint: Imagine this as a production environment during a busy work day.
Shout-out to knightmare for many rounds of testing and assistance with the final configuration as well as rastamouse, twosevenzero and g0blin for testing and providing valuable feedback. As always, thanks to g0tmi1k for hosting and maintaining #vulnhub.
If you run into any issues, you can find me on Twitter: https://twitter.com/mrb3n813 or on IRC in #vulnhub.
Looking forward to the write-ups, especially any unintended paths to local/root.
Happy hunting!
SHA1:AF85D25B1A5E14FB0E8539BAFCA832BFC17F425D

Pueden descargarlo del siguiente lugar: https://www.vulnhub.com/#modal159download

domingo, 21 de agosto de 2016

Chan.. Shadow Brokers NSA Hack Leaks 0-day Vulnerabilities

Right now there’s a ton of people talking about the NSA Hack, the severity, the repercussions and the value of what has been leaked. It seems the 0-day exploits in the cache of stolen aren’t super recent ones, as it appears they are from 2013.


















But even so, some of them haven’t been patched as both Cisco and Fortinet have warned customers about the vulnerabilities revealed in the data posted by Shadow Brokers.
A group calling itself the Shadow Brokers has started an online auction for top-of-the-range tools it claims were stolen from the Equation Group, a digital attack squad linked to the NSA.
The Shadow Brokers posted up news of the auction saying (in broken English) that they had been monitoring the Equation Group’s servers, had stolen the advanced hacking tools, and will auction them off to the highest bidder. The group said that if it gets Bitcoins worth $1m they will release the tools for free to everyone.
“We want make sure Wealthy Elite recognizes the danger cyber weapons, this message, our auction, poses to their wealth and control. Let us spell out for Elites. Your wealth and control depends on electronic data,” the group said [the link has since been taken down].
“You see what ‘Equation Group’ can do. You see what cryptolockers and stuxnet can do. You see free files we give for free. You see attacks on banks and SWIFT in news. Maybe there is Equation Group version of cryptolocker+stuxnet for banks and financial systems?”
Claims about stuff like this for sale online are often fake, so to prove their case the team posted sample code, which it says is around 40 per cent of the total, online. Postings on Github and other download sites have since been taken down, but not before some people got copies.

Now it seems NSA wasn’t hacked directly, but via an agency called Equation Group which is believed to be a digital cyber-terrorism arm of the NSA.
Even so, it brings up some well debated issues about the NSA reporting zero-day flaws to vendors rather than hoarding them (which the White House promised they would stop doing).
A preliminary analysis shows the revealed list seems to be focusing on router flaws, some of them quite old. Some files also share names with exploits listed in the NSA’s Tailored Access Operations hacking team’s catalogue for agents, revealed in 2013 by Edward Snowden.
Kaspersky, who first linked the Equation Group to the NSA, said it was analyzing the files but had no clue as to their veracity as yet. But Timo Steffens, a member of the German CERT-Bund team, is taking a skeptical line, although he acknowledged that if this is a fake, the scammers had put in a lot of effort.
Initial analysis by the likes of Kaspersky Labs, NSA whistleblower Edward Snowden, and a host of independent security researchers shore up claims by a hacking group calling itself Shadow Brokers that the exploits and toolsets it hopes to auction for millions of dollars in Bitcoins are legitimate Equation group weaponry.
Kaspersky Labs last year revealed the Equation group to be almost certainly a state-sponsored actor and, according to deep analysis of its activities, highly likely to be a wing of the National Security Agency given a series of very striking operational and technical similarities.
The Shadow Brokers group seems to likely originate from Russia, so this is a nation state vs nation state attack possibly at the highest levels of each countries intelligence agencies.
It’s an interesting story and it’s creating a lot of news and drama, it’s a tough call for NSA as they have to maintain their attack capabilities against Russia and China whilst also balancing the health of American commerce and the safety of all the users utilising equipment from those vendors.
Source: The Register

domingo, 14 de agosto de 2016

Resolviendo el "Starting VirtualBox kernel modules …failed" (Ubuntu 16.04 x64)

Bueno luego de desaparecer por mucho tiempo, i'm back.
Estos dias estuve preparando mi chiche nuevo de laptop con Ubuntu 16.04 64bits e instale el querido virtualbox, pero claro tuve un inconveniente al arrancarlo y levantar la imagen nueva de la virtual que había creado. El error que arrojaba era el siguiente:

WARNING: The vboxdrv kernel module is not loaded. Either there is no module
         available for the current kernel (4.4.0-22-generic) or it failed to
         load. Please recompile the kernel module and install it by

           sudo /sbin/rcvboxdrv setup

         You will not be able to start VMs until this problem is fixed.
Logicamente al tipear /sbin/rcvboxdrv setup no se resolvia facilmente. En mi caso arrojaba el siguiente error:

sudo /sbin/rcvboxdrv setup
Starting VirtualBox kernel modules ...failed!
(modprobe vboxdrv failed. Please use 'dmesg' to find out why)

#> COMO SOLUCIONARLO:

Vamos a proceder a instalar el paquete DKMS como bien lo indica en la wiki de virtualbox:


  • Note: Ubuntu/Debian users might want to install the dkms package to ensure that the VirtualBox host kernel modules (vboxdrvvboxnetflt and vboxnetadp)


# Instalamos DKMS:

$> sudo apt-get install dkms

Luego de esto, vamos a reiniciar el ubuntu y entrar al BIOS, debemos desactivar el BOOTEO SEGURO/UEFI. Reiniciamos nuevamente, iniciamos el ubuntu y ahora al tipear lo siguiente ya deberia funcionar:

$> sudo /sbin/vboxconfig 
vboxdrv.sh: Starting VirtualBox services.


Saludos.