Mostrando entradas con la etiqueta privilegios. Mostrar todas las entradas
Mostrando entradas con la etiqueta privilegios. Mostrar todas las entradas

martes, 6 de septiembre de 2016

Auditando a TheFrequency - Vulnhub (Parte II)




Buenos días a todos!

Después de un largo tiempo sin publicar entrada, y después de que varios de mis compañeros me lo pidieran, os traigo la segunda y última parte del CTF "TheFrequency". 

Como ya dije en la primera parte de Auditando a "TheFrequency" - Vulnhub (Parte I) , esta máquina es muy peculiar y divertida, ya que se basa en el arte de la esteganografía,

Retomamos el reto donde lo dejamos, ya habíamos conseguido las claves para acceder a los dos primeros niveles del reto. De aquí en adelante, no tiene mucho misterio, deberemos seguir el mismo proceso que en los niveles anteriores para ir consiguiendo las claves de los diferentes niveles.


NIVEL 3

Seguimos la misma metodología que para el nivel 2, donde utilizábamos el programa fldigi para analizar los distintos modos digitales de nuestro audio.
Cerca del minuto 30:35 , empezamos a percibir un sonido muy extraño, que resultó ser el modo: BPSK31,  por lo que configuramos de nuevo la herramienta y ejecutamos.

Al igual que en anteriores niveles, es muy importante que la franja roja que observamos en la siguiente imagen (justo entre el 500 y 1000), se sitúe justo en esa posición, para este audio en concreto.


Tras analizar todo el mensaje, hemos conseguido:
NIVEL 3: THE PASSWORD FOR LEVEL THREE IS Ph4z3Sh1ftK3y3d

Ya tenemos la tercera password, así que realizaremos el mismo procedimiento, nos conectaremos por SFTP, consiguiendo un nuevo fichero frequency.txt. Al abrirlo, contiene parte de la clave privada, no toda, por tanto pasamos al siguiente nivel.



Como habéis podido comprobar, el proceso es el mismo para todos los niveles, así que a continuación pondré una captura de cada uno de los niveles, junto al modo de audio utilizado y la contraseña obtenida, para no alargar mucho el post.


NIVEL 4
MODO UTILIZADO: MT63
NIVEL 4: THE PASSWORD FOR LEVEL FOUR IS MT63-2000



NIVEL 5
MODO UTILIZADO: RTTY
NIVEL 5: THE PASSWORD FOR LEVEL FIVE IS WATSONGRAPH1931




NIVEL 6
MODO UTILIZADO: THROB
NIVEL 6: THE PASSWORD FOR LEVEL SIX IS THROBONTHISKNOB




ACCESO A ROOT

En este punto, ya disponemos de las contraseñas de cada uno de los niveles, por lo que habremos obtenido un fichero "frecuency.txt" en cada nivel, con un fragmento de la clave privada.


Unimos los ficheros en uno solo, unificando así todos los fragmentos de la clave privada y le damos permisos de lectura y ejecución para podernos conectar por el protocolo ssh y con el usuario root.


Este es el resultado de la clave privada:


Intentamos conectarnos, y ...BINGO!!!!! ACCESO A ROOT CONSEGUIDO!!!
Una vez dentro, encontramos un fichero llamado flag.txt, que contiene un enlace a un video de youtbe. El video no es nada más y nada menos que Notorious Big feat Frank Sinatra.





Y con esto, damos por finalizada la auditoría a la máquina TheFrequency.
Os invito a todos a que realicéis este CTF ya que es muy divertido y no se parece en nada a ninguno de los retos que hemos visto anteriormente en este blog.

Espero que os haya gustado y hasta la próxima!



jueves, 25 de agosto de 2016

Pentesting Moodle II - Desde dentro

Buenas compañeros,

Este post es la segunda parte de la entrada Pentesting Moodle relacionado con la investigación que hice en mi trabajo de fin de grado. En la primera parte Pentesting con Moodle I - Desde fuera el pentesting se basó en un enfoque de caja negra, es decir, sin tener ningún tipo de conocimiento emulando el rol de un posible atacante.

En este caso, se va a enfocar el rol de caja blanca o caja negra con acceso a la parte privada de la aplicación web con mínimos privilegios, es decir, se está emulando el rol de un alumno o de un profesor (una cuenta cuenta con un nivel intermedio de privilegios).

Vamos al lío!

Enumeración de usuarios

Nuevamente dentro de la aplicación es posible realizar una enumeración de usuarios. Entrando en el perfil del usuario que se tiene en la url se pueda observar un id= X




De esta manera, se puede deducir que el usuario actual tiene el id = 4, por lo tanto, si se va variando a el valor del id, se podría ir accediendo a los perfiles públicos de los diferentes usuarios que estén en la plataforma registrados.


Tras realizar un par de posibles enumeraciones se observan los siguientes resultados:

Usuario registrado pero no se tiene acceso (controles de autorización)  Esto es debido a dos motivos: alumno registrado en un curso diferente del actual o por ser un usuario con privilegios (administrador o profesor de otros cursos).





Usuario no registrado: ID no asociado a ningún usuario.




Usuario con permisos accesible: Se está accediendo al perfil de un profesor que está matriculado en nuestro curso, de ahí que se pueda visualizar su perfil así como conocer el id que tiene asociado en la plataforma que es una información útil para posibles intentos de intrusión.





Además Moodle está permitiendo la visualización de un listado de los usuarios matriculados en un curso (tanto profesor/es como alumnos) con datos interesantes como los correos electrónicos para posibles campañas de phishing.




Esta información puede ser utilizada para atacar la aplicación web, por ejemplo, a través de un ataque de fuerza bruta o un ataque de usuarios/contraseñas predeterminadas.

Con la información recolectada se podría crear un diccionario personalizado con la combinación de nombre y apellidos, o a través de partes del nombre de la aplicación o cualquier otro dato significante a través de la información obtenida en su perfil, una vez que se sabe que está registrado en la aplicación.

Incorrecta configuración de seguridad

Esta vulnerabilidad es bastante peculiar...Los que habéis tenido que hacer algún examen a través de Moodle seguro que os hubiera gustado poder parar el contador del examen o incluso suprimirlo...pues resulta que es posible...

Adquiriendo el rol de alumno que se dispone a realizar un test que tiene un tiempo de duración limitada.

Sabiendo que el contador de tiempo se encuentra implementado con JavaScript, se realiza como prueba de concepto la deshabilitación de JavaScript empleando el complemento de Firefox Mozilla, NoScript. De tal manera, que se obtiene como resultado saltarse la duración por tiempo limitado para la realización del test.





Mientras que deshabilitando JavaScript desaparece el contador del tiempo para finalizar el test. El aspecto para la realización del test es el siguiente:



Cross Site Scripting (XSS) almacenado

Verificando la posibilidad de XSS almacenado en los test correspondiente al módulo quiz. Adquiriendo el rol de profesor (con permisos de edición) quien tiene la capacidad de poder editar un curso para añadir foros, exámenes, noticias,…se verifica que es vulnerable a XSS.

Citar que los compañeros de @FluProject, desarrollaron una herramienta llamado Flunym0us  para enumerar plugins de Moodle.

Como prueba de concepto se introduce código JavaScript tanto en el contenido de la pregunta como en la retroalimentación de la pregunta. Esto es posible pues permite el uso de HTML en el contenido tanto de la pregunta del test como en la retroalimentación del mismo.

<𝑠𝑐𝑟𝑖𝑝𝑡>𝑎𝑙𝑒𝑟𝑡(‘𝑉𝑢𝑙𝑛𝑒𝑟𝑎𝑏𝑙𝑒 𝑋𝑆𝑆’)</𝑠𝑐𝑟𝑖𝑝𝑡>




De tal manera que nada más iniciar el examen cuando se muestra la primera pregunta aparece el alert:




Análogamente tomando el rol de profesor, añadiendo el recurso “Página” es posible explotar la vulnerabilidad XSS en la descripción y/o contenido de la página al posibilitar introducir código HTML.

 De esta manera se inyecta código JavaScript y al no existir mecanismos de protección anti-XSS en este recurso se posibilita explotar la vulnerabilidad. Inyectando el código:


<𝑠𝑐𝑟𝑖𝑝𝑡 𝑡𝑦𝑝𝑒 =”𝑡𝑒𝑥𝑡/𝑗𝑎𝑣𝑎𝑠𝑐𝑟𝑖𝑝𝑡”>𝑎𝑙𝑒𝑟𝑡(𝑑𝑜𝑐𝑢𝑚𝑒𝑛𝑡.𝑐𝑜𝑜𝑘𝑖𝑒)</𝑠𝑐𝑟𝑖𝑝𝑡>

Se consigue visualizar la cookie del usuario que accede al recurso como se muestra en la siguiente figura:


En las diferentes entradas del blog, se han desarrollando pruebas de concepto de los riegos de un XSS y como explotarlos: phishing manual explotando xss y automatizando  vulnerabilidades xss con beEF

Exposición de información sensible

Existe una exposición de información debido a un incorrecto control de autorización desde el exterior, esto es, un usuario sin estar logueado en la plataforma podría acceder a información sensible desde el exterior a través de rutas predecibles o fáciles de descubrir empleando herramientas como dirbuster.

Acceso README.txt:

Como ya se detalló en el post anterior, el acceso al fichero README.txt desvela información sensible como la ruta para ejecutar el script cron.php




Listing herramientas del panel de administrador:

Se puede acceder al listado de directorios de las herramientas disponibles por el administrador:



Acceso documento explicativo de cookies:

A su vez, es posible acceder a través de la URL a un fichero que explica las cookies que soportan y su uso:



Errores y excepciones no controladas:

Numerosos errores y excepciones no controladas que facilitan el conocimiento de información como son los parámetros que esperan recibir.



Citar que las pruebas que se han mostrador se han realizado en entornos controlados y virtuales, por lo que la finalidad de esta entrada es con fines educativas y formativos, no nos hacemos responsables de uso para otro fin.


Espero que os haya gustado :) ¡Para cualquier cosa, usad el apartado de comentarios!

La mejor defensa es un buen ataque.

NaxHack5

sábado, 5 de marzo de 2016

Crea tu backdoor automatizado con BackdoorMe


Hola hackers, en esta ocasión vamos a ver como utilizar BackdoorMe.

BackdoorMe se trata de una utilidad de post-explotación capaz de crear un backdoor o puerta trasera en equipos Unix. Dispone de una interfaz similar a la de Metasploit.

Para transferir la puerta trasera al equipo objetivo, necesitamos que tenga el servicio SSH corriendo (o abrirlo en su defecto) y las credenciales del mismo.

BackdoorMe viene con una serie de puertas traseras, módulos (se pueden usar con cualquier puerta trasera para hacerlas mas potentes) y auxiliares (para ayudar a la persistencia). A continuación una lista de todo lo que nos ofrece.


MODULOS
  • Adduser: agrega un nuevo usuario en el equipo.
  • Cron: añade una puerta trasera existente al archivo crontab del usuario root para que se ejecute con cierta frecuencia.
  • Poison: envenena el archivo ejecutable de un comando del equipo objetivo, de esta forma, cada vez que el usuario utilice dicho comando, se ejecutará la acción correspondiente al comando y el backdoor.
  • Startup: permite que el backdoor se ejecute al encender el sistema, o meterlo en el archivo .bashrc para que se ejecute cada vez que se abre una consola o terminal.
  • Web: se instala un servidor web y coloca una web que desencadena la puerta trasera. Solo hay que visitar ésta y la puerta trasera se iniciará.
  • Whitelist: lista de las IPs que pueden conectarse al backdoor.
PUERTAS TRASERAS 
  • ssh_port: cambia el puerto para el servicio SSH
  • remove_ssh: desactiva el servicio SSH. Se usa cuando terminamos la sesión.
  • ssh_key: crea una clave RSA.
ESCALATION
  •  Shell: se trata de una puerta trasera para escalada de privilegios, similar a SetUID. Una vez ejecutada, podemos entrar como un usuario normal y ejecutar el comando .bash -p para obtener una shell con privilegios root.
  • SetUID: nos permite infectar el archivo bin de un comando (por ejemplo nano) y, entrando con un usuario sin privilegios, poder ejecutar el comando como si del usuario root se tratase.
WINDOWS
  • Windows: usa msfvenom para crear un backdoor para windows. 
SHELL
  • Netcat: usa netcat para obtener una shell interactiva.
  • Web: instala apache en el equipo objetivo y envía un payload, luego basta con entrar en el servidor y ejecutar el payload para, con multi/handler escuchando, obtener una shell.
  • PHP: ejecuta un backdoor php que redirige el resultado a bash.
  • Bash: un simple script bash para conectarse a una IP y puerto especifico.
  • Metasploit: usa msfvenom para crear un payload reverse_tcp y lo ejecuta para obtener una shell meterpreter.
  • Perl: script escrito en perl y redirige el resultado a bash.
  • Pupy: esta shell utiliza el backdoor creado por n1nj4sec (enlace).
  • Python: script escrito en python para ejecutar comandos y recibir los resultados en bash.
AUXILIARES
  • Web: instala el servidor web Apache en el objetivo.
  • User: crea un nuevo usuario en el objetivo.
  • Append: añade o quita el atributo append (nos permite añadir información) a cualquier archivo del sistema.
  • SimpleHttp: instala el servidor python SimpleHttp en el objetivo.
  • Keylogger: instala un keylogger en el objetivo con opción de recibir el log en un mail dado.
  • Immutable: añade o quita el atributo immutable a cualquier archivo del sistema. 

Como podeis ver tenemos infinidad de opciones para colocar nuestro backdoor o puerta trasera.

Lo primero que haremos será descargar BackdoorMe y prepararlo para su uso.


Ya está listo para usarlo, ahora lo ejecutamos con python master.py.


Para ver los comandos que tenemos disponibles escribiremos help.


En esta PoC usaremos como equipo objetivo una máquina virtual con Metasploitable 2 (192.168.0.195).

Lo primero que haremos será cambiar la ip local, que es donde se conectará el backdoor, tenemos que poner la ip de nuestra máquina atacante. Para esto usamos el comando change_ip, pulsamos enter, y escribimos la IP.

A continuación añadiremos nuestro objetivo.

  • Target Hostname: IP del objetivo
  • Username: nombre de usuario del servicio SSH.
  • Password: contraseña del servicio SSH.

Decir que BackdoorMe soporta varios targets (objetivos) a la vez, los diferencia asignandoles números (1, 2, 3...). Para usar el backdoor en uno u otro target, la sintaxis es la siguiente:

 use <backdoor> <numero target>
Ejemplo: use shell/metasploit 2 


Establecemos la conexión por SSH con el comando open.


 Ya estamos conectados al objetivo.

Con el comando list vemos los diferentes backdoors disponibles. Vamos a ver el funcionamiento de algunos de ellos.


METASPLOIT

Este backdoor nos devolverá una shell meterpreter.


Para cambiar cualquiera de las opciones del backdoor usaremos la siguiente sintaxis:

set <nombre opción> <nuevo valor>
Ejemplo: set name apache

Una vez cambiadas las opciones a nuestro gusto, ejecutamos el backdoor con exploit.


En la captura podemos ver los pasos que sigue, también nos dice que ejecutemos Metasploit y pongamos a la escucha el exploit multi/handler.




Con todo listo, pulsamos enter (en la consola de BackdoorMe) y obtendremos la shell.



NETCAT

En este ejemplo, utilizaremos el backdoor netcat junto con el módulo poison.

Igual que hicimos antes, seleccionamos el backdoor y lo configuramos.


Ahora añadimos el módulo al backdoor.


Como vemos en la captura para cambiar las opciones del módulo se usa la siguiente sintaxis:

set <nombre modulo>.<opción> <valor> 
(fijaros que entre el módulo y la opción, hay un punto)

Ejemplo: set poison.name ls

Yo voy a dejar las opciones tal cual puesto que el comando ls se utiliza bastante y es lo que nos interesa. Usamos el comando exploit para ejecutarlo.


Al igual que paso con el backdoor de Metasploit, en este también nos indica lo que debemos hacer para obtener la shell. Abrimos una nueva terminal/consola y ponemos el netcat a la escucha como nos indica: nc -v -n -l -p 4444.

Pulsamos enter en la consola de BackdoorMe y obtendremos la shell.



Gracias al módulo poison, ahora cada vez que se use el comando ls en el equipo objetivo, ejecutará el backdoor y, teniendo el netcat a la escucha, obtendremos una shell.


ESCALATION/SHELL

Con este backdoor, aunque entremos con un usuario sin privilegios, obtendremos una shell con privilegios ejecutando el comando .bash -p.


Esta vez no nos va devolver una shell directamente como en los vistos anteriormente. Para ver que ha funcionado, nos conectaremos por SSH al equipo objetivo con un usuario sin privilegios.


Ahora ejecutamos el comando antes mencionado y obtendremos la shell con privilegios.


BackdoorMe además dispone de un backdoor (access/remove_ssh) que nos permite cerrar el servicio SSH  en el objetivo al finalizar.


Si hacemos un nmap al objetivo apuntando al puerto 22 SSH, vemos que esta cerrado.




Hasta aquí la PoC de hoy, espero os haya gustado y recordar que está realizado con fines educativos, no nos hacemos responsables del mal uso que se le pudiera dar.

Google Analytics