jueves, 16 de diciembre de 2010

[Hack] La vulnerabilidad que Windows viene arrastrando durante tiempo

SIN ADMINISTRADOR EN WINDOWS 7:
Estaba probando Windows 7 con una cuenta de usuario común. Quería modificar unas cosas y como era de suponer la cuenta no tenía permisos para realizar algunas acciones.
Modifique el control de acceso a usuarios , y cambie a una cuenta con privilegios de "administrador"


Pero luego, a volver a intentar había otro problema. Una aplicacion llamada TruestedInstaller no permite modificar o eliminar archivos del sistema. Al parecer, es el único usuario con permisos de Control Total, Modificar y Escritura.
Este es un servicio de Instalación de módulos de Windows, se encarga de realizar las instalaciones de algunos productos, sobre todo actualizaciones de Windows Update. Lo que permite mayor seguridad pero un problema mas para lidiar con un virus bien programado.

----
CREANDO UNA CUENTA SIN PERMISOS:
Así fue como se me ocurrió probar por curiosidad si se podía obtener una shell al inicio, en la pantalla de selección de usuario. Busqué mi CD live de knoppix que utilice anteriormente (ver http://gonzac-studios.blogspot.com.ar/2009/04/hack-tomando-los-privilegios-de.html) para modificar los archivos "sethc" por "cmd".



Al reiniciar y arrancar normalmente, aprentado shift 5 veces, aparecera la shell.
Todo lo demás que se ejecute solo estará disponibles por 5 min, pero lo suficiente para crear una cuenta.


Aclaracion: El explorer.exe solo lo inicié para ejecutar el programa de captura de la pantalla y no sirve para utilizar de esta manera el sistema. Pues al no tener un usuario predefinido, algunas cosas no se podrán ejecutar y solo durará 5 min.

---
Es raro pensar que no se haya corregido este bug, luego de las muchas versiones que le siguieron a XP, sus "actualizaciones de seguridad" o "Service Packs".
Por ultimo dejo un video, de recuerdo de windows 95 y 98.

video

jueves, 9 de diciembre de 2010

La cibergerra & Wikileaks

Estaba por escribir otra entrada, pero no puedo dejar pasar por alto este tema. Y es que desde hace tiempo que Wikileaks a sido titulo de varias noticias y aunque aca en Argentina se hayan enterado de la existencia de este sitio solo por aparecer en uno de los canales (la web no es para nada nueva), mas ridiculo aun fue responsabilizar al gobierno exterior por lo publicado en estos canales.

Mas alla de las politicas, para los que estamos en el tema, Julian Assange no solo es el creador de Wikileaks. Como participante en distintas comunidades, y foros de discusión de software libre realizo muchas aportaciones. Programador en lenguajes complejos como Ocaml y Haskell, fué quien diseñó Strobe el escaner de puertos legendario que luego dió paso a nmap. Tambien se lo conoce por su participacion en el desarrollo de PostgreSQL (el sistema de base de datos), y FreeBSD el sistema operativo archiconocido. Ademas de muchas otras cosas como coautor del libro Underground sobre el hacktivismo en los 80 y desarrollador de Rubberhos un programa de cifrado.

Ahora que saben quien es este gran personaje, es entendible la dicotomia causada por distintos entes, a los que se le suma la mala informacion, y del otro las comunidades underground y no, que apoyan a Assange.
En el comienzo de lo que paso a ser una ciberguerra, se encuentra el traslado de wikileaks a Amazon debido que la web estaba siendo atacada por denegaciones de servicios (Ddos), luego de un tiempo Amazon misma desalojo a wikileaks de sus servidores (accion que fue muy criticada en twitter). Junto a Amazon estaba Paypal, la reconocimidicima empresa de pago electronico que elemino la cuenta que tenian. En su contrapartida se intento un complot contra las estas empresas convocando a cerrar las cuantas en Amazon y Paypal, mientras que otros grupos decidieron realizar ataques a los servidores de estas y otros tantos.
Otras empresas tomaron medidas similares, evitando que se pudiera ayudar o contribuir de alguna manera a wikileaks, sin saber lo que desencadenaria (una mala decision en mi opinion).

Ayer miercoles ocho se inicio la "Operation Avenge Assange" y "Payback" para atacar los servidores que intentan terminar con wikileaks (MasterCard, Visa, el banco de Suizo, etc). Se trata de un botnet, un sistema distribuido de varios computadoras para saturar los servidores. Los ataques son coordinados por twitter y facebook pero los administradores estan cerrando las cuentas (@Anon_Operation, @Op_Payback, @AnonOpsNet, etc). De todas formas no voy a explicar como se hace ni nada de -> ello ;) .

Por mi parte, se puede crear un servidor espejo (también llamados redundantes) para mantener los datos de wikileaks. Mas alternativas para ayudar.

Otros mas astutos aun, generaron un pequeño malware para
dirigir el ataque a un organismo gubernamental, creando una cadena de correos con el tema de wikileaks y aprovechando las vulnerabilidades de adobe, si! como escucharon los famosos archivos pdf. Pero es que esto no es nada nuevo, las propagaciones de malware que se conocen son las mas simples, pero déjenme decirles que existen muchas y los que no estuvieron al tanto de los ataques de 0 day a google a través de adobe y Internet explorer, vayan actualizando el software.

Y hasta acá con todo ello, es bastante extenso el tema. Mientras transcurre todo, me voy un tiempo al anonimato.
Saludos

domingo, 28 de noviembre de 2010

Java RMI - Ejecucion de codigo remoto

Hago este post, porque me cance de ver tutoriales sobre este tema muy poco claros o que no funcionan. Para entender el codigo se necesita conocimiento basico sobre programacion.
------------------------------------
RMI o Invocación de metodo remoto es un mecanismo de Java, que permite la ejecucion de codigo desde un programa cliente a uno servidor, ubicado en otro equipo en la red.

Servidor:
-El servidor cuenta con la clase "InterfazRemota" que hereda de java.RMI.Remote con los métodos que luego redefinirá el "ObjetoRemoto".

public interface InterfazRemota extends java.rmi.Remote{
public String Imprimir(String mensaje) throws java.rmi.RemoteException;
}


-El "ObjetoRemoto" va a implementar la clase InterfazRemota. En el constructor de la clase se utiliza el método Naming.rebind para vincular la dirección y el nombre del objeto remoto al registro rmi. Y debajo se redefiniran los metodos ha utilizar. De esta clase se obtiene el Stub.

import java.rmi.*;
import java.rmi.server.UnicastRemoteObject;
public class ObjetoRemoto extends UnicastRemoteObject implements InterfazRemota{
public ObjetoRemoto(String nombre) throws java.rmi.RemoteException{
super();
try{
Naming.rebind(nombre, this);
}
catch(Exception e){

System.out.println("Excepcion: "+e.getMessage());
e.printStackTrace();
}
}
public String Imprimir(String mensaje) throws java.rmi.RemoteException{
System.out.println("Mensaje Recibido: "+ mensaje);
return mensaje;
}
}


-La clase "Servidor" tendrá el main, solo creará un objeto de la clase ObjetoRemoto, y pasará por parámetro el puerto y el nombre.

import java.rmi.*;
import java.rmi.server.*;
public class Servidor{
public static void main (String args[]){
try{
ObjetoRemoto obj = new ObjetoRemoto("//:80/pruebaRMI");
System.out.println("Servidor de ObjetoRemoto listo.");
}
catch(Exception e){
System.out.println("Excepcion: "+e.getMessage());
e.printStackTrace();
}
}
}

Cliente:
-El cliente debe tener la InterfazRemota y el Stub, utilizados en el servidor. La clase cliente, crea un objeto de InterfazRemota y buscará el objeto remoto mediante Naming.lookup, la sentencia args[0] permite obtener la dirección ip que se le pasara por parámetros, así poder ejecutar el método remoto.

import java.rmi.*;
import java.rmi.registry.*;
import java.rmi.server.*;
public class Cliente {
public static void main(String args[]){
try{
String mensajeRecibido;
String mensajeEnviado = "mensaje de prueba";
InterfazRemota obj = (InterfazRemota)Naming.lookup("rmi://"+ args[0] + ":80/pruebaRMI");
System.out.print("Msj>");
mensajeRecibido = obj.Imprimir(mensajeEnviado);
System.out.println(mensajeRecibido);
System.out.print("Msj>");
}
catch(Exception e){
System.err.println("Excepcion de Sistema:"+e);
}
System.exit(0);
}
}


------------------------------------
Compilar el Servidor mediante javac *.java y generar el stub con rmic objetoremoto

Copiar el stub y la interfaz a la carpeta del cliente y compilar cliente con javac cliente.java

Arrancar el registro con start rmiregistry puerto, iniciar el servidor con java servidor, y el cliente con java cliente ip_equipo

Prueba en dos dos equipos diferentes:

-----------------------------------
En el ejemplo solo se imprime un mensaje en el equipo con el servidor, pero imagínense el potencial. Generar un jar con una ventana corriendo en segundo plano, inmune a un antivirus, utilizar métodos como toolkits para obtener información del equipo o ejecutar código arbitrario mediante exec, etc.
En fin, me despido hasta la próxima entrada. Saludos

jueves, 11 de noviembre de 2010

Filosofia Gonzac Studios #2



Aveces se preguntan porque tendría una pinza de punta cuando voy al instituto. Pero es que nunca se sabe cuando el cargador de la notebook va a dejar de funcionar o va a sonar como si algo hiciera chispa.

Acaso a los diseñadores no se les ocurrió algo para evitar que el cable se tuerza, si bien la ficha que va a la notebook puede girar debido a su diseño, esto no ayuda del otro extremo que va fijo al cargador y es que al soldar un extremo se crea una torsión sobre la soldadura y el cable.
Acá mi diseño de la solución a algo tan simple.

sábado, 30 de octubre de 2010

Acces point inalambrico para un pc alambrico

Para completar un poco con esto de redes, un post sobre bridge inalámbrico para expandir el alcance de la red.
Escenarios:
1. Pc de escritorio sin posibilidad de conectarse a la red, debido a su distancia al Access point (router) y sin placa de red wireless.
2. Dos Access point distanciados que forman dos redes independientes, una con acceso a internet y la otra no.

Uniendo los dos escenarios anteriores, se presenta la siguiente problemática. La computadora de escritorio debe conectarse a un access point a su alcance, el cual debe comunicarse con el router inalámbrico con acceso a Internet.

En primer lugar, entrar a la configuración del Access point que va a ir conectado por un cable utp al pc. Para que no haya conflictos en LAN se le cambia la IP para que no haya conflictos con el otro router. El dhcp puede ir deshabilitado, y la pc deberá tener una ip estática. En este caso esta habilitado de la 192.168.1.3 a 192.168.1.99 porque el otro router va a manejar de las 100 en adelante y así no se solaparan.


Luego en la configuracion básica de wireless se habilita para que trabaje en modo inalámbrico, pero marque la casilla "Hide", para ocultar el access point y que solo las pc conectadas por utp se conecten. Un punto importante es que aparecerá la mac del dispositivo pero por alguna razón en la etiqueta del dispositivo o utilizando el comando arp -a en la consola de ms-dos, indica otra mac que es verdaderamente la que luego se va a usar en la configuracion del otro router.


En configuracion avanzada hay que colocar los dos dispositivos para que trabajen en el mismo canal y frecuencia. En este caso el canal 6.


Ahora si, configurar el wireless bridge, para ello se necesita la dirección mac del otro dispositivo.
Existe dos modos, que trabaje como Access point de la red, o como Bridge o puente para otros dispositivos en caso de conectarse a un switch u otro Access point. Puede que tenga la opción de detectar automaticamente el dispositivo, como es el caso y esto ayuda para saber si esta funcionando el bridge y los dispositivos se "ven".


Ahora para que el dispositivo brinde acceso a Internet, debe obtenerlo del dispositivo al cual se conecta. Por lo tanto hay que configurar WAN en modo bridge, como bien se vio en la entrada
El reto del concurso de redes .


Una vez guardado la configuracion, se apaga el Acces Point y se lo prende dentro de unos segundos para que los cambios surtan efecto. Luego configurar el otro dispositivo. Solo queda colocar el canal, habilitar el modo bridge y colocar la mac del dispositivo que anotamos.


Reiniciando el dispositivo, ya estará todo listo.

jueves, 14 de octubre de 2010

[Hack] Acceso Físico

Como he hablado de seguridad en algunos sistemas, hoy me gustaría enfocarme en lo que vendría a ser una capa de la seguridad.
Cuando se habla de la seguridad en los sistemas se nombra palabras como antivirus, firewalls, host bastion, niveles de seguridad y políticas de seguridad que hacen y forman a los sistemas. Pero muy pocas veces se habla de la seguridad física. Quien tiene acceso físico, practicamente tiene acceso a la información.

Acceso Físico por niveles:
--
1. Tener acceso a una maquina y una cuenta de usuario: permite tener acceso a la información directamente (ficheros y contraseñas), Vulnerar el sistema directamente para un posterior acceso.

2. Tener acceso a una maquina sin cuenta: Explotando alguna vulnerabilidad, hacer una escala de privilegios para poder acceder a la información. Ejemplo ver entrada Tomando privilegios de administrador.

3. Tener acceso solo al hardware: Sin desarmar el equipo, utilizando el espacio para añadir una lectora de discos se puede instalar dispositivos de encendido remoto, de comunicación, acceder a la información, robar la sam (archivo de informacion de cuentas de usuarios) y vulnerar el sistema para un posterior acceso. Ejemplo

*En la segunda imagen, se tiene acceso al disco utilizando un conversor ide/sata a usb.

4. Tener acceso a gabinete: De servidores o switches, en caso de no tener acceso a la red inalámbrica o red común, se podría conectar directamente a la red sin necesidad de requerir una contraseña, capturar datos transmitidos o vulnerar otros sistemas. Ejemplo

*En este ejemplo, el gabinete aunque tiene cerradura, uno podría conectarse directamente al switch ya que presentan una abertura, se puede ver que esta a una altura de aproximadamente 2,2mts, por seguridad.
*En la imagen de la derecha, se ve un gabinete similar, a una altura menor y alado lo que parece ser un servidor protegido por un candado.


-En el video, me toma 1 minuto abrir 2 cerraduras y un candado.

5. Tener acceso a la sala de servidores o equipos: Tener acceso a toda la información pero incluyendo las diferentes complicaciónes de los demás niveles. Ejemplo

*Se observa una cerradura biométrica, donde se necesita una huella digital para poder entrar. Si bien es un sistema de mayor seguridad a un simple cerrojo, no hay que ser el agente 007. Si alguien tuviera algo de tiempo (como se ve, tiene varios tornillos je) se podría adjuntar un circuito que registre las señales ttl del circuito interno y luego reproducirlas para hacer un Spoofing electrónico (termino de mi invención). Pero antes de segírme liando de explicaciones.. A la derecha se observa una simple cerradura electromagnética, el espacio de esa pequeña abertura son suficientes para desactivar el circuito del electroimán.
En síntesis tecnología de punta y vulnerable.

--
Como ven, la seguridad depende del valor de lo que se quiera proteger. Lo ideal es encontrar un punto intermedio entre el valor de la información y de la seguridad. Al final, todo sistema es vulnerable.

martes, 28 de septiembre de 2010

Upgrade msi: Agregando memoria

Fines de septiembre uno de los meses mas agitados, por alguna razón mes de todos los eventos habidos y por haber. Después de exámenes finales, concursos y campeonatos, de no haber estado en la conferencia de seguridad informática este año, y no haber informado sobre la feria de ciencias. Les dejo un mini post, para los que temen meter mano al pc y ni hablarles de un portátil.

---------------------------
Si tubieron un portátil en sus manos, alguna vez habrán pensado que complicado debe ser "actualizar" el hardware, pero hoy en día con la demanda de mercado los portátiles se fabrican para que sean mas versátiles. Los fabricantes se dieron cuenta que para cambiar un disco o memoria no debería ser necesario desarmarlo y buscar cada cosa, por ello añadieron una especie de ventanas, por así decirlo. Como si se tratase de cambiar las pilas a un control remoto.


Para los que tenemos una netbook msi u100, por desgracia no contamos con esta ventaja.
Antes de comenzar, hay que ver la memoria que posee la maquina o cual se le puede añadir.
En este caso, la U100 tiene
-RAM de 1 Gb DDR2 a 667 Mhz interconstruido que va soldado a la placa.
-Slot de expansion SO-DIMM DDR2 con soporte hasta 1 GB 667/800 Mhz.

Lo ideal es conseguir una ram que trabaje en la misma frecuencia, para poder habilitar el Dual-Chanel e incrementar el rendimiento.


En primer lugar, hay que desconectar la fuente de alimentacion y la batería. En la parte de abajo, hay 9 tornillos. Desatornillar y retirar la batería (desde allí hay que comenzar a destrabar para poder retirar la tapa completamente).

Una vez removida se distingue fácilmente el slot donde ira la memoria. Antes de colocarla hay que limpiar los contactos de la memoria con una goma de borrar, para evitar que haga algún falso contacto. Y finalmente colocar nuevamente todo en su lugar.
--------------------------------

Como verán no existe mayor complicación. Bueno, si su portátil no es una Acer's Aspire One A110/A150.

viernes, 17 de septiembre de 2010

El reto del concurso de redes

Habiendo pasado a la etapa final del concurso de redes que se realizo esta semana, en la VII Jornadas de Informática en la Universidad nacional de la patagónica austral, conseguí un router para poder practicarlo antes de la final.
Se planteo el reto practico de conformar una red inalámbrica accesible desde un dispositivo wireless que recibía acceso a Internet desde otro dispositivo wireless conectado.
Debía hacerse el cableado y la configuración de los dispositivos desde un pc con sistema operativo ubuntu, el cual no debería dar problemas como bien verán, aunque siempre algo puede fallar y mas cuando te dan una maquina con una placa de red desconfigurada y manuales no acorde a todos los dispositivos sin incluir que uno de los routers no guardaba la configuracion. Concepto que un grupo de expertos o cuasiexpertos miembros del jurado no entenderían.
Bueno y todo esto en menos de 30 minutos.


-----------------------------------------------------------------------------
-En primer lugar hay que conectar un cable utp para el ruter y la pc, así poder configurar el dispositivo. Para eso usé mi práctico alarge utp, (pero pueden usar cualquier otro utp).

-Si cuando instalaste ubuntu no tocaste la ip ni nada de ello, el sistema debería detectar automaticamente la direccion ip para poder configurarlo (ip dinámica que le brinda el router).

-Una vez conectado, hay que entrar al explorador, para ello colocar la ip del router y pedirá el usuario y contraseña. Conviene seleccionar la configuracion rápida (Quick Setup), y luego modificar las opciones avanzadas.

-La primera opciones son de Dsl, no tocamos nada y continuamos a la siguiente pantalla, Nos pedirá el tipo de conexion, en caso de utilizarlo como modem seria pppoe, pero lo que queremos es tenerlo de modo bridge, es decir puente y obtener conexion del otro router.

-Le damos next y en la próxima pantalla nos pedirá la casilla para habilitar la wan, es decir la conexion a internet y el nombre del servicio, aquí el que quieras.

-Le damos next y aquí importante colocamos la ip, que debe estar en el rango del otro equipo que vamos aconfigurar y no debe ser igual ya que ocacionaria conflictos.

-En la siguiente habilitamos el wireless y el SSID, es decir el nombre que va a tener la red.

-Por ultimo nos aparecerá una pantalla con todas las opciones que marcamos. Luego en caso de querer configurar otras opciones vamos a Lan para deshbilitar el dhcp (el rango de ip o maquinas que se admite). En Wireless basic (para habilitar el wireless u ocultar nuestro Access Point) y en Advance (para cambiar el canal, banda, etc).


---------------------------------------------------------------------------
-De la misma forma, entramos al siguiente dispositivo, si tenemos una pc con placa wireless podemos acceder sin problemas, sino utilizando el cable utp nos conectamos al router. Lo primero que vamos a definir es la conexion WAN es decir la conexion pppoe para conectarnos a internet con el nombre y contraseña que nos brinda nuestro proveedor. En segundo lugar entrar a "wireless" donde configuramos el nombre de la red, o direcatamente lo deshabilitamos en caso de querer usar el access point anterior, fijence que aparecen dos opciones la de habilitar modo bridge puente y que el nombre SSID se muestre o no. Y finalmente configuramos el DHCP con el rango de ip que va a aceptar.

-En caso de querer cambiar la ip o la mascara vamos a LAN, también podemos crear un ruteo estático (Static Router) con la puerta de enlace, el destino y la submascara.
Ahora solo resta conectar los dos router mediante un cable utp crossover, la normativa de los cables no es necesaria, siempre y cuando en un extremo se cambien los pines 1 y 2 por los 3 y 6. Recomiendo que al terminar apaguen los dispositivos y prenderlos luego de unos segundos.


-----------------------------------------------------------------
Como verán aunque me ha costado varias imágenes, la configuracion es simple y se tarda unos minutos. Pero para que nos sirve? pues simple podemos hace lo mismo con un ruter alambrico y uno inalambrico para no gastar en un roter mas caro. Aveces resulta que añadir un acces point sale mas caro que un router que funcionara como uno. Y permite extender el alcance de nuestra red.

viernes, 6 de agosto de 2010

[Hack web parte.2] filtros & pagina owned

Continuando esta serie de post, publico la segunda y ultima parte.
Si recordamos la ultima sección del post anterior, mostré el primer filtro. Este correspondía a la cantidad de caracteres que se pueden introducir. Si bien éste filtro controla que no haya errores con la base de datos, también evita la inyección de código, es decir el exploit. Aun así quedo demostrado lo fácil que es saltarlo.

Habiendo dejado vulnerable los campos del form, es cuestión de comprobar si existe algún otro filtro que evite que el exploit o código sea interpretado como código dentro de la pagina.
Para esto, la idea es introducir una serie de caracteres especiales normalmente conocido como Locator.

Existen muchos códigos locator y combinaciones, dependiendo del lenguaje etc. En el ejemplo anterior se utiliza una serie de caracteres propio de lenguajes scripting, para ver si existe una vulnerabilidad cross-site scripting y de inyeccion html simple, digo simple porque existen formas avanzadas de inyección como códigos hexadecimales etc.
Otros locator utilizan los mensajes de alert() para poder saber que caracteres se filtran o no, pero yo solo voy a analizar la salida.

Como se muestra, algunos caracteres aparecen en el mensaje, esto es por que están correctamente filtrados, salvo las etiquetas. Este es un error grave que muchos diseñadores inexpertos pasan por alto.
Alojando la imagen en un servidor externo, con </td></br> se cierra el tag y se hace un salto de linea (en este caso es una tabla, pero sino, se cierra con un simple ">), lo demas es diseño html y se inyecta el exploit a la pagina.



Así se vería la pagina después de haber realizado el Defacing (defacear o cambiar el estilo de la pagina). Por lo general los defacing se realizan como protesta contra entidades y a mi parecer se podría definir como un graffiti virtual, en ataques permanentes.
Hay cosas mas complejas partiendo de esta, en este caso se trata de cross-site scripting reflejado pero aun así se puede causar un redireccionamiento a otra web, crear código malicioso para transmitir un malware (virus, troyano etc), robar cookies, sesiones, pishing etc.
Por lo tanto, como webmaster hay que revisar siempre las vulneravilidades o bugs que puedan llegar a presentarce en las paginas. El caso anterior se previene fácilmente con funciones en php htmlspecialchars() , strip_tags(), htmlentities() que evalúan la carga de caracteres, los famosos magic quote que relacionan los caracteres especiales a una variable que comienza con un ampersand , ejemplo &quot seria comillas dobles.

En fin, en otras oportunidades voy a explicar mas sobre las distintas vulneravilidades y técnicas.
Aclaración: Esto no es un tutorial. Gonzac Studios no se hace responsable por el mal uso de este material. Todas las pruebas se realizaron a paginas web dinámicas, actualmente estas no están defaceadas.
Las pruebas se pueden realizar alojando una web de prueba en algun servidor,
con un servlet en java junto a un servidor apache tomcat o algo similar. Recuerda que toda actividad queda almacenada en un log del servidor junto con tus datos. Siempre que encuentres una vulnerabilidad, puedes avisar al webmaster que estará agradecido. (Ética Hacker ;) )

domingo, 25 de julio de 2010

[Hack web parte.1] Analisis de una pagina

Haciendo un tiempo entre los exámenes voy a ir posteando una serie de entradas sobre hacking a paginas web. Básicamente la idea es mostrar lo sencillo que suele ser encontrarse con una pagina vulnerable y explotarla, o como propietario de una pagina ser víctima de algún tipo de ataque.
ACLARACION: Esto no es un tutorial. Gonzac Studios no se hace responsable por el mal uso de este material.



------
Primero voy a comenzar con el análisis, existen varios programas para hacer auditorías que permiten a los webmaster (y a un otro tanto grupo mal intencionado) reconocer las diversas fallas y vulnerabilidades que puede tener una pagina. Pero el análisis que voy a realizar se basa en entender las diferentes partes, y reconocer la vulnerabilidad.
Click en las imagenes para ampliarlas


A primera vista se ve un login común y corriente, para iniciar sesión los datos ingresados deberían estar en la base de datos. Pero miremos que pasa al introducir datos cualquiera, la pagina nos va a redireccion a otra (notificarse) y con el nombre de usuario que introdujimos.

Volviendo a la pagina principal, en el código de fuente se ve que esta compuesto por dos frame (algo así como marcos o partes) la pagina con la cabecera y la pagina con el login.



Ahora que tengo el nombre puedo abrir solo el login y analizar el código de fuente.



Esta primera parte nos interesa porque se observa un script en java script que indica que si los campos están vacíos no nos va a redireccionar, y nos va a mostrar un mensaje de alerta. Luego hace referencia a una ruta donde se encuentra el archivo css , con los estilos de la pagina, tal vez en algún momento nos pueda interesar.



En esta otra se encuentra el form (formulario, donde se solicita información al visitante) llama a autentificarse.php que es el que se encarga de la comprobacion de los usuarios y la base de datos a través del método post,( para desilucion de algunos permanece oculto y no sera tan fácil acceder a ello), y el onsumit que llama al script anterior.

Siguiendo con el análisis, encontramos el primer filtro.
Imput es la etiqueta que representa a los campos a rellenar, sus atributos tipo, tamaño, nombre, autocompletar apagado, y maxlength=20 que filtra la cantidad de caracteres que se puede introducir. En el remoto caso que se pudiera inyectar código, esto limitaría mucho el expliot (secuencia de código que aprovecha la vulnerabilidad) y ni siquiera se podría cambiar el titulo.

Para esto se utiliza una técnica llamada form tampering ya sea utilizando un sniffer o mediante un add-ons de firefox, que nos permite modificar "antes" de enviar la petición (ver campos ocultos y modificarlos o en este caso modificar el atributo maxlength).



Y hasta acá con la primer parte. Saludos a todos.