17 oct 2011

Buscando SQL Injections: spider para buscar URLs con parámetros por GET

Buenas a todos, hace unos días para llevar a cabo un proyecto necesitaba una herramienta tipo spider que me permitiese recuperar todas las URL de un sitio Web. Para esta tarea como sabéis hay numerosas aplicaciones, pero en este caso lo que necesitaba era averiguar cuales de todas esas URL contenían parámetros pasados por GET en la propia URL, para probar si esos parámetros eran vulnerables a algún tipo de inyección de código (en concreto para este caso SQL Injection).

Para esta tarea decidí desarrollar un pequeño programa en python, el cual os dejo a continuación.

La aplicación se ejecuta como cualquier programa en python, tendréis que pasarle un argumento con la URL del site que se auditará:

 

 

La aplicación irá recorriendo todas las páginas que vaya encontrando e irá navegando por ellas recursivamente. Cada vez que encuentra una URL con una "?", la identificará como una posible inyección para que inmediatamente podamos analizar dicha URL de manera manual:

 

 

A continuación os dejo el código fuente:

DESCARGAR CÓDIGO FUENTE

24 comentarios:

  1. Muyyy buena genio!!! está de lujo esta tool! muchas gracias =D

    ResponderEliminar
  2. Hola, en que version de Python esta escrito el codigo?

    ResponderEliminar
  3. juanmar: Hola, en que version de Python esta escrito el codigo?En la 2.7.1saludos

    ResponderEliminar
  4. ok, yo tengo la 2.7.2 y al importarlo me da error en algunas lineas, sera por la version?Me parece interesante el codigo , Felicitaciones :)En lo personal mas adelenate me gustaria hacer algo parecido , que seria automatizar el /robots.txt que se pone en la URL , en algunos casos te da los directorios de dicho sitio web , existen algunos sitios webs que dejan bastante informacion.Saludos.

    ResponderEliminar
  5. @juanmar si te entendi bien, lo de que quieres hacer ya esta echo por otros, no te dejo el url porque no se si esta permitido dejar url a paginas externas, si te interesa mandame un mensaje privado y te paso el link

    ResponderEliminar
  6. El spider solo busca en los hrefs, no las urls que pueden contener parámetros por GET....

    ResponderEliminar
  7. Una cosa, estoy intentando depurar el script y me siga dando errores en linea 35, creo que te falta ahi algopuedes decirme la solucion?gracias

    ResponderEliminar
  8. doomed: Una cosa, estoy intentando depurar el script y me siga dando errores en linea 35, creo que te falta ahi algopuedes decirme la solucion?graciasHola, imagino que ya os habréis dado cuenta, ahora lo modifico en el artículo, al copiaros el código fuente en el post se ha convertido el carácter ">" a "& g t;". Modificar esto y os debería funcionar.saludos!

    ResponderEliminar
  9. me da error en en "f"f=urllib2.urlopen(page)

    ResponderEliminar
  10. Hola, como teníais algún problema al copiar y pegar el código desde el post, os he dejado mejor el fichero en nuestro servidor. Os lo podéis descargar desde aquí: http://www.fluproject.hol.es/descargasDirectas/codigos/spider.pyHe hecho una mejora al código, sacando los print por pantalla de la función, para que podáis portar el código a otros programas.

    ResponderEliminar
  11. juanmar: me da error en en “f”f=urllib2.urlopen(page)Dime qué error te da, a ver si puedo ayudarte.saludos!

    ResponderEliminar
  12. juanmar: ok, yo tengo la 2.7.2 y al importarlo me da error en algunas lineas, sera por la version?Me parece interesante el codigo , Felicitaciones En lo personal mas adelenate me gustaria hacer algo parecido , que seria automatizar el /robots.txt que se pone en la URL , en algunos casos te da los directorios de dicho sitio web , existen algunos sitios webs que dejan bastante informacion.Saludos.El error esta porque aparece >Segun vi el codigo, eso lo tenes que cambiar por !Seguramente al publicar el articulo se modificó el simbolo de admiracion.Saludos!

    ResponderEliminar
  13. Puedes colgar páginas de ayuda externas, lo único que es probable que el filtro anti-spam del blog lo detecte como spam y lo bloquee. En tal caso avísanos con un email y te lo publicamos sin problemas.gracias, saludos!

    ResponderEliminar
  14. xust4m4n: El spider solo busca en los hrefs, no las urls que pueden contener parámetros por GET….Eso es, era la funcionalidad para la que necesitaba el script, pero puedes modificarlo para añadir esa otra funcionalidad fácilmente cambiándolo en la siguiente expresión regular:re.finditer('href="(.*?)[\'"]', code)saludos

    ResponderEliminar
  15. Juanan ha trabajado a destajo hoy con los comentarios eso es innegable.el comienzo de python en flu-project no ha dejado indiferencias! buen trabajo Juanan!

    ResponderEliminar
  16. muchas gracias! ya tira bien!

    ResponderEliminar
  17. Haora me funciona el codigocomo introdusco la pagina?ha hacer "http://www.paginaweb.org" no pasa nada

    ResponderEliminar
  18. juanmar: Haora me funciona el codigocomo introdusco la pagina?ha hacer “http://www.paginaweb.org” no pasa nadaAsí: spider.py http://www.paginaweb.orgEl programa tarda un rato en analizar todos los links del Sitio Web. Si finaliza y no te aparece nada (y no ha habido algún tipo de problema), es que el Sitio Web no contiene hrefs con parámetros pasados por GET.saludos

    ResponderEliminar
  19. juanmar: ok.me interesa.Aquí tienes el enlace que nos ha pasado @Andriy:http://www.securitybydefault.com/2011/08/checkmyrobots-manten-raya-los-robots-y.htmlsaludos!

    ResponderEliminar
  20. [...] ¿Qué tal se os dan las inyecciones? Buscando SQL Injections: spider para buscar URLs con parámetros por GET [...]

    ResponderEliminar
  21. Hola!Cuando leí tu post me gustó la idea base y comencé a desarrollar una herramienta, GoLISMERO, un spider web con una idea parecida a la de tu script, pero con más posibilidades.Espero que os sirva de ayuda:https://code.google.com/p/golismero/Un saludo

    ResponderEliminar
  22. Dani: Hola!Cuando leí tu post me gustó la idea base y comencé a desarrollar una herramienta, GoLISMERO, un spider web con una idea parecida a la de tu script, pero con más posibilidades.Espero que os sirva de ayuda:https://code.google.com/p/golismero/Un saludoA ver si saco un ratillo para estudiarlo en profundidad, pero echándole un vistazo por encima tiene muy buena pinta, enhorabuena :)Si quieres puedes escribir un post para el blog hablando de golismero y lo publicamos para darle más difusiónsaludos, gracias por compartirlo con nosotros :)

    ResponderEliminar
  23. [...] con el objetivo de analizar el alcance del sitio con distintas finalidades. Hace varios meses, desarrollamos en Flu Project un spider en python cuyo fin era localizar páginas de una web que utilizasen parámetros de tipo id, que [...]

    ResponderEliminar