sábado, 14 de enero de 2017

Baja seguridad en portales [Full Source Disclosure]

Estimados lectores, les doy la bienvenida a un nuevo post, la primera cosa que comentaré es sobre la inactividad del blog, he tenido poco tiempo para escribir, he estado un poco ocupado y el poco rato libre que tenia lo usaba para leer documentos o descansar, una vez dicho esto pasaremos a la explicación de la vulnerabilidad.
En primer lugar, la vulnerabilidad que explicaré hoy, sera sobre una fuga de datos sensibles que podrian conllevar al control total de la página web.
Primero de todo expondré donde erradica la vulnerabilidad, la cual es debida a una mala configuración del codigo fuente de la página. El código fuente seria de este tipo



Bien, este código lo que hace es que sea posible descargar cualquier fichero por medio de la variable 'd', así que podemos hacer uso del ataque Directory Trasversal para poder movernos entre los directorios y así poder llegar a al archivo objetivo.
A cotinuación, intentaremos conseguir el fichero /etc/passwd 
Una vez hecho esto, no pude hacer nada al no poder llegar a obtener el archivo shadow, para poder llevar acabo el crackeo de las contraseñas. Así que accedí al panel de administrador a curiosear, si se podria llevar acabo un SQL bypass en el login, cosa que dió fallo rotundo, entonces tube la idea de capturar cabeceras a ver que podia sacar de provecho de ellas y bingo!
 


La página auntetificaba las credenciales del usuario admin mediante un fichero llamado autentificar.php, entonces vamos a echarle un vistazo al source de esa autentificación con nuestra vulnerabilidad FSD para ver como trabaja

Una vez leído el código nos damos cuenta de que autentifica las credenciales comparandolas con una base de datos MySQL, así que bueno vamos a echar un vistazo a ver si podemos conseguir algo más de información sobre el logueo, principalmente me llaman la atención esas 3 líneas del include en el source. Procedemos a descargarlas a ver que contienen.
Bueno, una vez visto por encima los 3 ficheros, me he dado cuenta que en los ficheros "funciones.php" y "menu_principal.php" no contienen nada que nos pueda ser útil, pero en cambio en el fichero "query.php" nos encontramos con esto :).


La query la cuál autentifica la conexión en seco y arriba la importación del código "conexion.php", tiene buena pinta vamos a ver que podemos encontrarnos dentro de ese archivo.



De esta manera se puede llegar a conseguir las credenciales de la DataBase, acceder a la base de datos y extraer las credenciales del administrador de la página web, ya que como vemos se autentifica en base la DB.
Una vez hecho esto, reporté la vulnerabilidad a la web que es un portal de una comunidad autónoma española, eso fue quizás hace 2 semanas a día de hoy sigue sin ser parcheada.
Finalmente, gracias por haber leído y espero poder seguir teniendo un poquito de tiempo para postear las cositas que voy haciendo.

Saludos meteor :)

martes, 11 de octubre de 2016

Walkthrough - CTF PwnLAB Boot2Root

Buenas lectores, hace unos días estaba aburrido acababa de leerme el último apartado de un PDF y no tenia nada que hacer, de pronto me dieron ganas de completar algún reto, así que me dirigí a la página de Snifer (http://www.sniferl4bs.com/p/blog-page_25.html), donde sabía que iba a encontrar un divertido e interactivo reto, después de unos minutos navegando por la página me encontré con el CTF PwnLAB Boot2Root en el cuál se requeria la descarga de una maquina virtual para posteriormente conseguir privilegios root y así finalmente conseguir el ansiado "flag.txt". Sin más preámbulos comenzaré a describir como conseguí llegar a dicho archivo.

Primero de todo reconocimiento, tenia que saber a que me estaba enfrentando, así que escanee toda mi red en busca de hosts vivos.

Mi primer pensamiento fue que en el CTF tendriamos que jugar con la base de datos MySQL, por otra parte se me ocurrió que si el servicio rpcbind tenia el servicio NFS activo podriamos explotar dicha configuración, seguido hice un rpcinfo y no mostró ningún efecto de lo que buscaba. Por último accedí a la página por browser, seguidamente le pasé un Nikto, y me devolvió algo interesante.. :)


Ahora sabia cual era el principal objetivo, leer el archivo "/config.php" el cuál mostraria las credenciales de la base de datos. Después de un tiempo navegando por la página me dí cuenta que cuando intentaba lanzar algún tipo de string vía url a la variable "?page=" me mostraba la pagina en blanco, así que deduje que algo me estaba escondiendo Snifer xD, así que solo tendríamos que buscar alguna manera el tipo de filtro que tenia activo, buscando por google encontré este Wrapper  

example1.php?page=php://filter/convert.base64-encode/resource=

Lo que hacia era encodear el output del source del archivo PHP, lo único que tendríamos que hacer luego seria decodearlo.
Bingo!! Encontramos las credenciales de la bases de datos ahora podriamos proceder a conectarnos mediante la terminal.


Ahora a probar a entrar en el login de la página, al acceder al login solo nos quedaba un objetivo para poder llegar a tener una sesión en la máquina subir una shell mediante el "Upload" que teniamos con acceso restringido solo a los usuarios logeados, lo primero que hice fue insertar código de una shell en una imagen mediante la herramienta msfvenom



De esta forma logré bypassear el uploader y subir la shell, aquí estaba el primer dilema solamente accediendo a la url no podiamos obtener una sesión meterpreter ya que el directorio no ejecutaba codigo PHP, después de buscar entre directorios con el filtro en php que usamos antes para sacar el config.php me di cuenta de una función en index.php

<?php “include/”.include($_GET['filename'].“.php”); ?>
 Comparando el código extraido de index.php  con un LFI, vemos que sí la cookie esta puesta, da paso a un source code vulnerable a otro LFI medainte la variable lang, eso quiere decir que si capturamos cabeceras y seteamos detrás de la cookie la variable ·"lang=" seguido del directorio que queremos ver, podria llegar a ejecutar código PHP y entonces podriamos llegar a obtener nuestra ansiada shell con el host



Ya tenemos sesión meterpreter ahora toca llegar escalar privilegios para tener root y así poder obtener la flag, lo primero sera hacer su a las cuentas para conocer a cuál podemos entrar y a cuál no utilizaremos el siguiente script en python para obtener una TTY porque con una conexión reversa de meterpreter no nos deja hacer uso de la funcionalidad (su).

python -c ‘import pty; pty.spawn(“/bin/sh”)’

 
 
  

En resumen, lo que hice es hacer uso del script en python para acceder a una terminal, accedí al usuario kane con la contraseña de la base de datos MySQL,básicamente porque en los demás usuarios no habia nada interesante, luego liste todos los archivos con sus respectivos permisos en este caso contaba con el bit SUID activo así que cualquiera que lo ejecute iba a tener los mismos permisos de quien lo creó, al intentar ejecutarlo me devolvió una ruta la cual es ejecutada por "cat"

 
En ese momento supe que cambiando el orden de ejecución del PATH podria crear mi propio cat y así ejecutar una shell
Ahora me aparecia un nuevo archivo pero con el bit SUID también activado, así que le hice un "strings" para ver que estaba haciendo

/bin/echo %s >> /root/messages.txt
Lo que pasaría es que podriamos cortar el string con un ";" y detrás poder poner una orden para que se pueda ejecutar
Y ahora que tenemos privilegios le podemos hacer un cat a la flag.txt para estar seguros que Snifer no nos ha troleado esta vez como cuando troleo a medio twitter con los PDF's de 0xWORD xD


El primer CTF tuyo y ya me hicistes tener migraña nada más empezar con la página web, por lo demás fue muy divertido y espero unos cuantos más para la colección.

Greetz  Anxrchy, SuicidePanthers, d3struc70r y Zae

sábado, 8 de octubre de 2016

Presentación

Queridos lectores, les doy la bienvenida a este blog, donde trataremos diversos temas sobre  seguridad informática.
Soy un aficionado a la informática desde los 12 años, y ahora me gustaría poder compartir mi conocimiento con ustedes como hicieron conmigo, pero como todos saben esto es constante aprendizaje así que intentare traer buen material y al mismo tiempo variado, también les digo que no se convertirán "hackers" aquí, más que nada porque la base de la informática se basa en matarse a leer PDF's y la práctica.
Sin mas preámbulos espero que le sea útil todos y cada unos de los post que escribiré en este blog


Saludos a mrdestruct0r y gracias por enseñarme a nunca mirar por encima del hombro

meteor