Foro de elhacker.net

Programación => Desarrollo Web => Mensaje iniciado por: MA40 en 20 Agosto 2021, 14:04 pm



Título: Captcha oculto. ¿Puede resolverlo un bot?
Publicado por: MA40 en 20 Agosto 2021, 14:04 pm
Hola.

Utilizando un javascript que encontré en Internet para poner un Captcha en una web, lo que he hecho es ponerlo oculto.

Para que aparezca hay que deslizar la barra de desplazamiento hacia abajo.

Según tengo entendido, los bots no pueden deslizar con el puntero como hace un humano con el ratón.

¿Creéis que este Captcha puede resolverlo algún bot?

Puede verse en esta dirección: http://www.edicionesma40.com/downloads/captcha.htm (http://www.edicionesma40.com/downloads/captcha.htm)

¿Qué opináis?

Un saludo.


Título: Re: Captcha oculto. ¿Puede resolverlo un bot?
Publicado por: Danielㅤ en 20 Agosto 2021, 15:47 pm
Hola, sí claro que un bot puede resolver tu captcha, en el mismo código fuente está la función que crea el captcha que ni siquiera está ofuscado:

Código
  1.      function createCaptcha() {
  2.        //clear the contents of captcha div first
  3.        document.getElementById('captcha').innerHTML = "";
  4.        var charsArray =
  5.        "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ@!#$%^&*";
  6.        var lengthOtp = 6;
  7.        var captcha = [];
  8.        for (var i = 0; i < lengthOtp; i++) {
  9.          //below code will not allow Repetition of Characters
  10.          var index = Math.floor(Math.random() * charsArray.length + 1); //get the next character from the array
  11.          if (captcha.indexOf(charsArray[index]) == -1)
  12.            captcha.push(charsArray[index]);
  13.          else i--;
  14.        }
  15.        var canv = document.createElement("canvas");
  16.        canv.id = "captcha";
  17.        canv.width = 200;
  18.        canv.height = 50;
  19.        var ctx = canv.getContext("2d");
  20.        ctx.font = "25px Georgia";
  21.        ctx.strokeText(captcha.join(""), 0, 30);
  22.        //storing captcha so that can validate you can save it somewhere else according to your specific requirements
  23.        code = captcha.join("");
  24.        document.getElementById("captcha").appendChild(canv); //adds the canvas to the body element
  25.      }
  26.  

Todo lo que haga un navegador, puede hacer un bot, incluso hay muchas librerías para leer y ejecutar javascript en otros lenguajes.


Saludos


Título: Re: Captcha oculto. ¿Puede resolverlo un bot?
Publicado por: MinusFour en 20 Agosto 2021, 16:39 pm
Hola.

Utilizando un javascript que encontré en Internet para poner un Captcha en una web, lo que he hecho es ponerlo oculto.

Para que aparezca hay que deslizar la barra de desplazamiento hacia abajo.

Según tengo entendido, los bots no pueden deslizar con el puntero como hace un humano con el ratón.

¿Creéis que este Captcha puede resolverlo algún bot?

Puede verse en esta dirección: http://www.edicionesma40.com/downloads/captcha.htm (http://www.edicionesma40.com/downloads/captcha.htm)

¿Qué opináis?

Un saludo.


El bot si que puede scrollear:

Código
  1. $('div.centrado-marco-captcha').scrollTop = 200


Título: Re: Captcha oculto. ¿Puede resolverlo un bot?
Publicado por: engel lex en 20 Agosto 2021, 18:45 pm
por otro lado, asumes que el bot navega como un humano, pero incluso si usa sistemas como selenium, lo que uno hace cuando crea bots es que vas leyendo codigo fuente...


Título: Re: Captcha oculto. ¿Puede resolverlo un bot?
Publicado por: #!drvy en 23 Agosto 2021, 01:25 am
Al margen de si puede hacerlo un bot o no (que la respuesta es sí), la pregunta realmente es como pretendes validar que la respuesta es correcta sin dejárselo al cliente.

 Ahora mismo toda tu validación se puede bypasear ya sea leyendo la variable code o directamente asignando el valor de code al input:

Código
  1. document.getElementById("captchaTextBox").value = code;

Estas cosas se generan y validan serverside para que el cliente no tenga la posibilidad de trastear con ello.

Saludos



Título: Re: Captcha oculto. ¿Puede resolverlo un bot?
Publicado por: Danielㅤ en 23 Agosto 2021, 04:35 am
Correcto lo que dicen los compañeros, engel lex tiene razón un bot usando selenium es como si usara un navegador.

También es muy cierto lo que dice #!drvy, esas operaciones se generan y validan desde el servidor nunca del cliente, porque el cliente tranquilamente puede modificar/bypassear/falsear esos valores o simplemente verlos cuando no debería, por eso esas operaciones nunca se deben hacer por medio del cliente (por ejemplo desde javascript), sinó desde el servidor (por ejemplo usando PHP).

En resumen podes hacer las mismas operaciones y validaciones usando PHP, que el cliente no pueda modificar ni saber como está creado el captcha, es decir el algoritmo que usas, nunca tenés que permitirle al cliente que maneje las operaciones y validaciones porque las puede alterar y sería muy vulnerable.


Saludos


Título: Re: Captcha oculto. ¿Puede resolverlo un bot?
Publicado por: MA40 en 23 Agosto 2021, 16:29 pm
Al margen de si puede hacerlo un bot o no (que la respuesta es sí), la pregunta realmente es como pretendes validar que la respuesta es correcta sin dejárselo al cliente.

 Ahora mismo toda tu validación se puede bypasear ya sea leyendo la variable code o directamente asignando el valor de code al input:

Código
  1. document.getElementById("captchaTextBox").value = code;

Estas cosas se generan y validan serverside para que el cliente no tenga la posibilidad de trastear con ello.

Saludos



¡Joooooderrrrr!

Nunca oí a nadie con tanta razón.

El caso es que ese javascript está por todo Internet como si sirviera para algo, y ahora me doy cuenta que es sólo KK. :-\

En fin… de los errores se aprende 100 veces más que de los aciertos.

Un saludo y muchas gracias a todos.


Título: Re: Captcha oculto. ¿Puede resolverlo un bot?
Publicado por: engel lex en 23 Agosto 2021, 17:14 pm

El caso es que ese javascript está por todo Internet como si sirviera para algo, y ahora me doy cuenta que es sólo KK. :-\


es que estás interpretandolo mal... js está para hacer que las paginas se comporten de una manera específica ante el cliente... es parte de ese trio html+css+js , es como que digas que html no sirve para nada porque sin css es feo, pero tienes que entender que en el codigo que tiene el cliente no hay nada seguro, aplica desde web, hasta aplicaciones en c... lo que cambia es la dificultad para explotarlo


Título: Re: Captcha oculto. ¿Puede resolverlo un bot?
Publicado por: MA40 en 23 Agosto 2021, 17:46 pm
No, no,  @engel lex, creo que no me expliqué bien (o no me entendiste).

No me refiero a que javascript no sirve para nada, NO, ya sé lo importante que es para la programación web, IMPRESCINDIBLE.

Me refiero a que yo cogí el javascript del Captcha de una web de programación, y está en muchas otras webs parecidas, y ESE javascript (el del Captcha) no sirve para nada. ¿No?

Un saludo.


Título: Re: Captcha oculto. ¿Puede resolverlo un bot?
Publicado por: engel lex en 23 Agosto 2021, 18:21 pm
ahhh!  :xD

es que me insultaste al js y me pongo agresivo! :xD

puede que tal vez haya un esquema de seguridad no contemplado en ese código


Título: Re: Captcha oculto. ¿Puede resolverlo un bot?
Publicado por: MinusFour en 23 Agosto 2021, 19:09 pm
No, no,  @engel lex, creo que no me expliqué bien (o no me entendiste).

No me refiero a que javascript no sirve para nada, NO, ya sé lo importante que es para la programación web, IMPRESCINDIBLE.

Me refiero a que yo cogí el javascript del Captcha de una web de programación, y está en muchas otras webs parecidas, y ESE javascript (el del Captcha) no sirve para nada. ¿No?

Un saludo.

El problema en el frontend en el que filtras el código se puede arreglar fácilmente pero este captcha, en general, no es una buena solución. Yo creo que hasta los CMS del 2000 que usaban GD para crear imágenes eran mejores (por ejemplo, distorsionaban el código o le agregaban algún tipo de ruido).

Ese lo pasas en cualquier lado y sacas el texto:

(https://i.imgur.com/t9uOuue.png)


Título: Re: Captcha oculto. ¿Puede resolverlo un bot?
Publicado por: MA40 en 24 Agosto 2021, 16:06 pm
Hola.

Aunque ya ha quedado claro que este javascript para validar Captchas NO SIRVE, he añadido sombra al texto para dificultar su lectura, como indica @MinusFour.

http://www.edicionesma40.com/downloads/captcha_con_sombra.htm (http://www.edicionesma40.com/downloads/captcha_con_sombra.htm)

*************************************

(http://www.edicionesma40.com/downloads/TextExtractorTool.jpg)

Un saludo.


Título: Re: Captcha oculto. ¿Puede resolverlo un bot?
Publicado por: Danielㅤ en 24 Agosto 2021, 16:39 pm
Un captcha para que sea seguro necesita que las letras tengan ruido, estén inclinadas, distorsionadas, en algunos casos también cortadas, distintos tipos de fuentes, mayúsculas y minúsculas, algunas letras tachadas, de distintos tamaños, etc.


Saludos