Bug en sistema de encuestas en Diario de Cuyo

El objetivo de éste artículo es solucionar el bug exponiendo que realmente es posible explotarlo para que sea reconocido por los responsables y los lectores vean encuestas válidas.

En general considero una gran pérdida de tiempo escribir artículos sobre reportes de bugs/vulnerabilidades ya que los reportados el 99% de las veces no responden, o lo hacen de un modo altanero del tipo “lo que me decís es imposible”…

No tuve respuesta de la empresa GCM Informática que figura como desarrolladora al pié de al web, por tanto comenté a conocidos del tema, esperemos que se llegue a algo, mientras…

De entrada aclarar que no tengo nada en contra con Diario de Cuyo ni con ningún integrante de su equipo de trabajo, directivos, etc. de hecho al contrario, estoy muy agradecido porque nos dieron una gran ayuda en la difusión del proyecto themipro.org , tampoco soy de ningún partido político ni milito en ninguno.

La causa de publicar ésto es dejar en claro como una encuesta que podría influenciar a la población SanJuanina puede fácilmente ser modificada.

La historia

06/06 después de las 21hs:

El bug y su explotación surge a raíz de enterarme por una red social que la encuesta  de las elecciones en la UNSJ estaba siendo falseada para inducir a que uno de los postulantes (Nassisi, OJO acá yo NO estoy diciendo que los que apoyan a Nassisi lo hicieran, pudo haber sido otro partido tratando de degradar su imagen) encabezara la misma, a continuación una captura obtenida de un grupo de facebook:

Encuesta elecciones UNSJ 2012 Diario de Cuyo / Datos siendo modificados, había cerca de 5k votos.

Evidente, no? Si, en otro grupo de facebook se comenzaron a hacer bromas al respecto , guardo la imagen porque seguro el grupo se eliminará luego de las elecciones:

Broma de encuestas falseadas

Acá yo tenía los pelos de punta, porque soy un lector asiduo de ese diario y me dió mucha impotencia ver que no se hacía nada y que mucha gente toma esa información como válida y después los resultados son citados en noticieros, otros diarios y programas…lo cual empeora aún mas el tema.

Revolviendo el sistema

Siempre pongo “research” pero acá muchos te critican porque usas términos en inglés…vamos a evitar el troleo.

Al ingresar al widget de votación se puede obtener el paráemtro/variable “encues_id” cuyo valor 1269 pertenecía a la encuesta en cuestión.

A su vez se  puede obtener 4 alternativas de votación, variable “pregu_id“, y los valores que podía tomar son:

Nelly=10580
Oscar=10581
Rodolfo=10582
Raul=10583

Al seleccionar una de las alternativas y dar clic en votar, se abre un popup con un captcha, al ingresarlo correctamente direcciona a los resultados actuales de la encuesta. En éste momento el sistema crea una cookie donde una de las variables de la misma contiene el valor encues_id = 1269 , el “hackeo” consistía en eliminar esa cookie y volver a votar.

Muy simple, no?  En realidad el mismo problema tienen muchos sistemas de votación incluidos en algún punto los cms que usan en la nación o clarin.

Lo malintencionado del tema viene cuando se quiere automatizar el proceso para explotar el bug, no toma mas de 10 minutos hacerlo, no publicaré el código para evitar que otros aprovechen el bug pero si comentaré (parcialmente) como se podria reproducir, en definitiva

  1. Realizar un GET a la URL  Get http://www.diariodecuyo.com.ar/popencues/new_code.php?encues_id=<aca_id_de_la_encuesta>&pregu_id=<aca_id_de_la_alt_a_votar&gt;
  2. Acá falta algo importante, esencial…no publicaré por ahora
  3. Parsear el resultado del GET para obtener el captcha
  4. Con esos datos realizar un POST a la siguiente URL…. no publicaré por ahora
  5. Y listo… ya tendrás un voto mas sin ingresar captcha mientras te tomás un cafecito en estos días de frío.

La encuesta cerró con mas de 57mil votos y ganando Furlán

La programación de un bot para la automatización de votación puede llevar no mas de 10 minutos.

Solución

Actualizar el sistema con lo siguiente:

  1. Primero veo prioritario reconocer que hay un bug,  veces pasa que el poseedor del mismo trata de sacarte información o probarte, al final te calentás y decidís seguir con otra cosa.
  2. Implementar técnicas de filtros para ataques de SQLi ( también se pueden crear y modificar encuestas, las alternativas de votación y otras cosas mas)
  3. No usar cookies para validar variables que el sistema use en operaciones sensibles como puede ser votar nuevamente, se debería usar sesión del lado del servidor para rastrear la acción del usuario.
  4. Limitar las peticiones por IP  a las páginas del sistema de votación.
  5. Usar un captcha mas avanzado, antes de implementarlo validarlo con este proyecto que permite leer fácilmente muchos tipos de  captchas y que podría ser usado en futuros ataques al actualizarse el sistema.

3 pensamientos en “Bug en sistema de encuestas en Diario de Cuyo

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s