Leer CSV y buscar en Google usando Python

David Galisteo Cantero

¡Hola! Hoy traemos una nueva entrada sobre Python, en este caso, vamos a ver cómo leer desde un fichero ‘csv’ para a continuación hacer búsquedas en Google.

Bien, pongámonos en contexto:
Hace unos días conseguí explotar una vulnerabilidad SQL Injection en una web de la universidad y, a partir de ahí, obtener la totalidad de su base de datos MySQL.

A continuación empecé a buscar qué cosas interesantes podría haber en el botín conseguido. Trabajos, prácticas… etc etc, nada del otro mundo, hasta que me encontré con un fichero interesante: ‘profesor_contrasena.csv’. En aquel momento me brillaban los ojos con la de posibilidades que se me abrían, y ya, si hubieran estado en texto plano, hubiera sido ‘la pera’, pero no, al menos habían guardado el hash (aparentemente un sha1, usado por MySQL) y no el password en texto legible.

Una vez abierto el fichero, aparecían distintas tuplas, formadas por 2 columnas, un identificador de profesor y su hash.

Lo primero que se me vino a la mente fue usar fuerza bruta, algo que desestimé al instante siguiente.

Pensando cómo poder obtener las contraseñas en texto plano, recordé la entrada Usando buscadores como calculadoras de hashes . En la cual se explica cómo podemos obtener un password a través de una búsqueda en Google de su hash.

Tenía que probarlo, pero el fichero tenía suficientes tuplas como para demorarme más tiempo del que quisiera haciendo búsquedas manuales, aquí es donde entra Python.

Con Python, pude leer el fichero ‘csv’ donde estaban almacenados los identificadores de contraseñas con sus passwords, para que os hagais una idea:

archivo csv contrasena

Una vez leido el hash, había que buscarlo en Google, por lo que se usé la librería ‘pygoogle’.

El código se puede encontrar aquí abajo y en un repositorio de github, por si quereis hacer fork directamente.
https://github.com/darkvid/busquedaPythonGoogle

#!/usr/bin/env python
import csv
from pygoogle import pygoogle
 
reader = csv.reader(open('/Users/davidgalisteo/Desktop/scriptsPython/buscarGoogle/profesor_contrasena.csv', 'rb'))
writer = open('/Users/davidgalisteo/Desktop/scriptsPython/buscarGoogle/resultado.txt', "w")
 
#recorro todas las filas
for row in reader:
    #obtengo el profesor y el password
    profesor = row[0]
    password = row[1]
 
    #busco en google
    g = pygoogle(password)
    #seteo número de páginas
    g.pages = 1
 
    #si obtengo 1 o más resultados, los escribo en otro fichero
    if g.get_result_count() > 0
        print '*Hay %s resultados*'%(g.get_result_count())
        writer.write(profesor)
        writer.write('\n')
        writer.write(g.get_urls())
        writer.write('\n')
 
#cierro fichero
writer.close()

Como podeis ver, es algo sencillo, pero bastante potente, una cosa a tener en cuenta es el límite de búsquedas diarias automáticas que impone Google, 50, es decir, hay que buscar cada día 50 o cambiar la IP.

Respecto a si encontré coincidencias, la respuesta fue NO, por lo que he de seguir investigando.

Se puede descargar pygoogle desde aquí:
https://code.google.com/p/pygoogle/source/checkout

Espero que os haya gustado.

Ahh, después de esto reporté la vulnerabilidad y, a dia de hoy, ya está corregida.

HackSaludos!

Publicado el 09-12-2014

Compartelo!

2 comentarios

Deja un comentario

Comentanos

*
Ir arriba de la pagina