Resultados 1 al 2 de 2

Error de seguridad

  1. #1 Error de seguridad 
    Iniciado
    Fecha de ingreso
    Jan 2012
    Mensajes
    1
    Descargas
    0
    Uploads
    0
    He descubierto una "vulnerabilidad" en la web de un amigo y estoy comprobando si realmente pueden hacer algo por ahi...

    Todo lo que explico a continuación es por intuición ya que no he visto el codigo y quiero conseguirlo sin verlo.

    Por la url se pasa un parametro orden=1.

    Si cambio ese parámetro y cierro y abro la página el valor introducido se mantiene, por lo que interpreto que se guarda en sesión, así que en algun momento debe hacerse:

    -----
    String orden = request.getParameter("orden");
    session.setAttribute("orden",orden);
    -----

    o

    -----
    session.setAttribute("orden",request.getParameter( "orden"));
    -----

    Por otro lado, si introduzco una letra en lugar de un entero me muestra un error 500, por lo que debe ejecutarse:

    -----
    String orden = request.getParameter("orden");
    int o = Integer.parseInt(orden);
    -----

    o

    -----
    int o = Integer.parseInt(request.getParameter("orden"));
    -----

    Por esto, interpreto que se esta produciendo una excepcion que no está controlada.

    Lo que intento es inyectar codigo java de forma que consiga mostrar algún texto en la pagina y comprobar así que esto es una vulnerabilidad que debe corregirse.

    ¿Alguien me puede decir como puedo comprobar esto?

    Gracias de antemano
    Citar  
     

  2. #2  
    Moderador Global Avatar de hystd
    Fecha de ingreso
    Jul 2005
    Ubicación
    1, 11, 21, 1211...
    Mensajes
    1.596
    Descargas
    58
    Uploads
    0
    Con esa información no se puede sacar ninguna conclusión clara... ni siquiera puedes presuponer que no se trata la excepción... puede tratarse (meterla en un bloque try catch, o lanzar un throw), y aún ambos casos hacen que se lance un error 500 si el tratamiento interno no es el adecuado.

    Si estás seguro que cerrando el navegador, el parámetro &orden=1, pasado por GET, se mantiene es porque exite una cookie en el navegador que lo almacena. Puedes intentar jugar con esa cookie y ver si hay algún otro parámetro almacenado que te pueda interesar, que se pase por ejemplo por POST.

    En cuanto a inyectar código java, para mostrar un texto en la página... eso lo veo "chungo", pero sin embargo tienes otras altenativas... cómo por ejemplo saber en dónde se usa el parámetro &orden, y para qué. ¿Para indicar el orden en el que se muestran datos en una consulta a una BD? Si fuera así, tendrías a groso modo, una estructura (que no quiere decir que internamente se proceda del mismo modo) del tipo:

    switch(orden){
    case 1: String consulta = "SELECT * FROM tabla WHERE condicion ORDER BY campo1";
    case 2: String consulta = "SELECT * FROM tabla WHERE condicion ORDER BY campo2";
    etc...
    }

    Estarías en tal caso, enfrentándote a un problema de SQL injection para lograr ejecutar tus propias consultas a la BD, ya sea para volcar, actualizar, insertar o borrar.

    Insertando la información adecuada (por ejemplo un registro que contenga código javascript), lograrías, si la aplicación no depura lo que se recupera de la BD, inyectar tu código "malicioso" en aquella parte de la aplicación que muestre los datos obtenidos de hacer la consulta... habrás hecho tu XSS a través de un SQL injection, mediante el parámetro &orden pasado por GET, que contiene un valor que invalida la consulta real, por una propia...

    Estoy haciendo suposiciones sobre la aplicación, sin concerla, pero te sitúo en contexto para ofrecerte algunas orientaciones sobre por dónde puedes enfocar tu ataque.

    Otras alternativas, es que de tratarse de una excepción no controlada, tendrías en toda regla un punto débil para hacer un DoS, pues provocar excepciones hacen que se vayan metiendo en pila las direcciones de retornos de llamadas a las funciones de tratamiento de la excepción, (instrucciones CALL + IRET en ensamblador), lo que provocaría un desbordamiento de la pila en pocos segundos.

    Y otra cosa, aunque sea de tu amigo, en el caso de encontrar alguna vulnerabilidad, lo correcto es que le reportes el error, y de paso lo compartas con nosotros si te parece bien .

    Un saludo.
    Última edición por hystd; 13-01-2012 a las 01:38
    El optimista tiene ideas, el pesimista... excusas

    Citar  
     

Temas similares

  1. Seguridad y programacion? o seguridad?
    Por a4tech en el foro GENERAL
    Respuestas: 2
    Último mensaje: 19-12-2011, 14:58
  2. Respuestas: 0
    Último mensaje: 19-01-2009, 17:34
  3. Respuestas: 1
    Último mensaje: 09-11-2008, 21:36
  4. Respuestas: 3
    Último mensaje: 27-06-2006, 05:12
  5. Error de seguridad en descargamovil.com
    Por twilight en el foro TELEFONÍA MOVIL
    Respuestas: 0
    Último mensaje: 09-09-2003, 12:38

Marcadores

Marcadores