22 noviembre 2011

Bypassing Captchas, más facil de lo que parece

El otro día me preguntaron si recomendaba algún proyecto decente para evitar las validaciones mediante captcha y leyendo al respecto me pareció curioso la cantidad de opciones a las que se puede acudir cuando muchas veces las formas de saltarse esos sistemas no tienen nada que ver con la complejidad de las imágenes que generan (que muchas veces ni nosotros somos capaces de acertarlas a la primera) sino de la implementación que se hace de los mismos.

Hace un año se publicó en este mismo blog una contribución anónima acerca de las vulnerabilidades existentes en la Lista Robinson y pudimos comprobar como la forma de saltarse el sistema de captcha no consistía en nada más que acceder al código de la página y buscar un campo oculto con nombre 'captchacode_01' y obtener de ahí el valor de la imagen mostrada.

Otro caso curioso lo protagonizó la SGAE y su formulario de contacto (aunque la vulnerabilidad es del plugin CForms para Wordpress) que permitía asignar a nuestra sesión un captcha cuyas propiedades de generación podíamos modificar, obteniendo finalmente un captcha que siempre valía '0'.

Como hemos visto, hay formas de saltarse los sistemas de captcha sin tener que utilizar técnicas complejas de reconocimiento de texto en imágenes, simplemente basta con manipular el sistema como tal. Esos ejemplos ya habían sido comentados por aquí pero ¿hay más? En este caso voy a comentar uno que afecta a más sistemas de los que esperaba (inluyendo algunos controles de Google, Twitter, etc).

¿En qué consiste? Pues simplemente en obtener el token y el valor correcto del captcha y replicarlo en cada una de las peticiones que hagamos. De esta forma siempre estaremos enviando la respuesta correcta. La verdad es que parece mentira que esta técnica funcione con lo fácil que sería eliminar el par token-valor una vez ha sido validado (valiéndonos solo para una petición).

Más interesante, veamoslo en un ejemplo... el sistema de control de búsquedas automatizadas de Google.

Cuando realizamos muchas búsquedas en Google al final acaba pidiéndonos que rellenemos un captcha. El sistema en cuestión es:

http://www.google.es/sorry/Captcha?continue=URL

Si nos fijamos vemos que el sistema asigna a nuestra sesión una imagen a la que podemos acceder mediante su identificador:

http://www.google.es/sorry/image?id=ID

Quedando la petición de validación del captcha:

http://www.google.es/sorry/Captcha?continue=URL&id=ID&captcha=VALOR&submit=Enviar

Por lo tanto, bastará con repetir esta petición cada vez que Google intente validar nuestra búsqueda automatizada (colocando la url de la búsqueda en el parámetro 'continue') para saltarnos el control (es necesario enviar la cookie GDSESS).

Como véis, con una técnica de lo más simple es posible saltarse la restricción de búsquedas de Google (aunque hay otros servicios sin reCaptcha que tampoco se ven afectados como el de iniciar sesión), el formulario de creación de una cuenta en Twitter Mobile, y otras muchas páginas.

--------------------------

Contribución por Luis Delgado

5 comments :

fon dijo...

Eso es más viejo que el comer y uno de las cosas más evidentes a tener en cuenta cuando se programa un captcha, me asombro que existan tales vulnerabilidades en twitter y google. Enhorabuena por el post, me ha parecido muy interesante!!
Saludos!

edgar dijo...

Muy interesante, y aparte que facilidad de burlar esta supuesta medida de seguridad...

Kikepadilla1985 dijo...

jajajajjajaja exelente el proseso para saltar esa supuesta seguridad

Max dijo...

Es una medida de seguridad, para evitar que la gente busque mucho? No!!!! solo para evitar robots y no creo que un "robot" sepa realizar ese truquito. Por ello cumple su funcion a la perfeccion señores. Pensar es mas viejo que comer, asi lograron llevar la comida a la boca.

Luis Delgado dijo...

¿? Ni estoy de acuerdo ni llego a comprender tu comentario. Quien tiene que saber implementar el truco es el desarrollador del robot... Una vez implementado, todo lo que se pretendía evitar con dicho captcha queda expuesto a "ataques" automatizados