domingo, 9 de diciembre de 2012

Cómo no hacer un sistema de exámenes...


El otro día me tocó hacer un curso de esos online, para tener un títulillo sobre Prevención de Riesgos Laborales.
Por mucho que la RRHH te diga que no te llevará más de 15 minutos... al principio del curso ya ves que es una repetición de los mismos conceptos que has escuchado una y otra vez, y de la lógica.. y bueno, un mensajito indica que dura 160 slides, y que serán aproximadamente unos 240 minutos.
Así que 160 slides después, lo último que tienes ganas es que te hagan un examen de la teoría que has tenido que leer, repitiendo lo mismo una y otra vez... Por lo que cuando he acabado el examen correctamente... me ha dado por "mirar" la aplicación.

Que nos podemos encontrar en este punto? pues muchas opciones, pero la que me he encontrado.. ha sido una que no me la esperaba... por lo mal hecha que estaba. 


Al acceder al examen, era tipo test, con tres posibles respuestas de A, B, o C, con lo que sí acertabas salía un "CORRECTO" y si fallabas un "ERROR". 

Tal y como se comportaba la aplicación, que no parecía haber ningún tipo de refresco, de peticiones hacia el servidor ni nada, me puse a observar el código fuente, esperando que no fuesen verdad mis sospechas. Efectivamente, lo eran. Las comprobaciones las hacía directamente con un javascript en la parte del usuario. FAIL.

Como se puede observar, al elegir una opción, se realiza una petición a una función javascript contenida en la misma página. Y en función de que opción se elija se envían unos parámetros u otros.


Al buscar la función, nos encontramos que en tratando los parámetros recibidos, se indica si la respuesta que has seleccionado es la correcta o no (si el primer parámetro es un 1, es la correcta), además, al hacer el envío, tenemos el valor de "value" que nos indica cómo se tiene que respuesta se deberá pintar de verde, por lo que es otra forma de saber la respuesta correcta. En resumen, que en la misma petición, ya se está enviando la solución! la función de validación, solo sirve para pintar los colores y el mensajito de CORRECTO y sumar puntos! (se puede observar al final de la siguiente captura)


Además, no solo contentos con esto.. han hecho que todas las preguntas estén en el mismo Html, y que por lo tanto, se puede visualizar todas las respuestas de golpe, buscando los "validarRespuesta(1,XXX" 
podríamos obtener todas las respuestas posibles. 

Cómo sería muy cansado y laborioso estar revisando todo el código de la página para ir acertando cada una de las preguntas que se hacen... es más fácil si sabes como se hace la petición para registrar tu resultado... y cómo no, también está en el código fuente:


Pero recordad, haciendo esto, no se aprende! que si os apuntan a un curso, es para sacar provecho, y que luego os envíen un título como el siguiente. 


martes, 20 de marzo de 2012

Owned for ever


Some days ago, I read something about the modules of meterpreter that one can execute once a machine has been compromised but I can't remember where I did it. So, I want to talk about the use of some of them.

First for all, we have a lot of scripts to run (about 180) and we can do some actions such as to collect the credentials stored in the system, or in the software installed.

There are other options one can do, and one this is the possibility to make our connection persistent and mantain that channel for future connections. In order to do that, we must use the "persistent" script. For see the options that it have, one must execute "run persistence -h":

Using that script, we create service on the compromissed machine that it will be ready every time the server will be rebooted.

To explain how it works, we must know the options it have:

-A Automatically start a matching multi/handler to connect to the agent
-L Location in target host where to write payload to, if none %TEMP% will be used.
-P Payload to use, default is windows/meterpreter/reverse_tcp.
-S Automatically start the agent on boot as a service (with SYSTEM privileges)
-T Alternate executable template to use
-U Automatically start the agent when the User logs on
-X Automatically start the agent when the system boots
-h This help menu
-i The interval in seconds between each connection attempt
-p The port on the remote host where Metasploit is listening
-r The IP of the system running Metasploit listening for the connect back

I will use the options "-A", "-S", "-X", "-p 4445" and "-r 192.168.0.182". As we can see on the following image, a new session has been created, and also we can see where the vbs script has been stored and executed with a new process ID (PID).

If we want to proof if the channel is persistent now, we must reboot the owned computer, so the active sessions will be died and when the computer has been loaded it will try to connect to our multihandler.


In order to clean our evidences, we must delete the files created, and kill the current process. For do that, whe we run for the first time the "persistent" script, a cleaning script has been created on /root/.msf4/logs/persistence/*.rc, so we must to change the PID on the script and put it as the last command to execute because if we run that before the other commands, the conection will be died, and will not be possible to delete the key on the register.

At last, we must run the "resource" command for meterpreter to execute the cleaning script.

It is possible to obtain some errors when we run the resource command, but only the accepted errors are when tring to delete the payload created on the system (only, if we didn't change the path and the script was created on the %TEMP% directory because when the machine will be rebooted, the script will be deleted), and the error when tring to kill the Process, for the same reason.

miércoles, 7 de marzo de 2012

Cuidado con lo que te cachean... y no en los aeropuertos


Hace unos días me compré un billete de avión y me llegó al móvil un SMS por parte de eDreams con una url acortada por Tinyurl para que si lo abro desde el móvil me muestra la información de ruta de ésta compra.

El problema fue, que no entré con mi teléfono a la página, si no con mi ordenador y un navegador normal... Y al "des-acortar" la url, me entraba directamente a la aplicación móvil, con los datos de "trayecto" para mi usuario.

La URL que se genera para poder entrar es del siguiente estilo:
http://m.edreams.es/Mobile/b2aeb0a0****************

Así que.. por que no buscar si existe algún contenido similar en google?

Pues la respuesta es que sí, existe, por lo menos un resultado, que permite acceder a los trayectos de un usuario de eDreams, dónde se pueden observar 3 de sus próximos viajes.


Por desgracia.. sólo permite observar.. nada de cambios de nombres ni nada por el estilo más jugoso ;)