Leer CSV y buscar en Google usando Python
Anuncio:
¡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:
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!
2 comentarios
Hola! tengo una duda ¿como debo instalar pygoogle? ya lo he instalado pero cuando ejecuto algun codigo, me dice que el modulo pygoogle no se encuentra, espero me pueda ayudar, saludos.
Hola, la sección «INSTALLATION» de este documento te ayudará:
http://pygoogle.sourceforge.net/dist/readme.txt
Saludos!