Brutforce Angriff auf Admin Login - diesmal mit korrekten Usernnamen

  • Hallo,

    ich habe privat und für Freunde/Vereine schon mehrere WP-Seiten erstellt. Überall das Plugin Limit Login Attempts installiert.
    Bisher haben mich die Mails, die nach x erfolglosen Logins von dem Plugin verschickt werden ziemlich kalt gelassen weil immer probiert wurde sich mit "admin" anzumelden. Die Zeiten, wo das der Standard-Admin bei der Installation war, sind zum Glück schon lange vorbei. Es gibt daher nirgendwo einen "admin".

    Heute war es aber anders: Es wurde probiert mit zwei verschiedenen Benutzern anzumelden, die genau so auch existieren. Auf dieser Website gibt es 1.) keine Kommentarfunktion wo Benutzernamen sichtbar sind 2.) keine author-meta Infos im HTML head 3.) im Template bei Beiträgen/Seiten/... kein the_author()
    Keiner der getesteten User hat sich zu den Zeiten probiert anzumelden.

    Gibt es irgendeine andere Möglichkeit herauszufinden welche Usernamen bei einer WP-Installation existieren? Wie kommen Angreifer zu diesen Infos?

    Die IP Adressen kamen laut verschiedener Websites aus Polen und den USA (Botnet?!).

    WP und alle Plugins sind am neuesten Stand. WP 4.1, Limit Login Attempts Version 1.7.1 und The Subtitle 1.4.

    • Anzeige

    Hallo!

    Wenn du gerade an deiner Website arbeitest oder dein aktuelles Hosting überdenkst: Wir betreiben mit NetzLiving eine Hosting-Plattform, die speziell auf Performance, Sicherheit und einfache Verwaltung ausgelegt ist.

    • ✔️ Schnelle Ladezeiten (optimiert für WordPress & Co.)
    • ✔️ Deutsche Server & DSGVO-konform
    • ✔️ Persönlicher Support (kein 0815-Ticket-System)

    Mehr erfahren

  • Hänge einfach an Deine URL /?author=1 oder /?author=2 oder /?author=3 usw. an. Also http://deinedomain.de/?author=1

    WordPress ist "frei" wie in Freiheit es zu nutzen, aber nicht im Sinne von Freibier. Wer also glaubt man bekommt rund um WordPress alles kostenlos, der irrt. Hilfe ist ein Geschenk für das man sich bedankt, dafür gibt es den 'Gefällt mir' Button. Wer das nicht kann und sich selbst nicht zu helfen weiss, muss sich bezahlte Unterstützung suchen.

  • Diese Art des Angriffs kann man z.B. so verhindern, vor dem WordPress-Block in [FONT=courier new].htaccess[/FONT] setzen, die [FONT=courier new]RewriteBase[/FONT] ggf. anpassen.

    Apache Configuration
    <IfModule mod_rewrite.c>
    Options +FollowSymlinks
    RewriteEngine On
    RewriteBase /
    RewriteCond %{REQUEST_URI} ^/$
    RewriteCond %{QUERY_STRING} ^/?author=([0-9]*)
    RewriteRule ^(.*)$ $1?author=999999 [L]
    </IfModule>


    Das leitet alle o.g. URLs intern zu einem User mit ID 999999 weiter, den es aber (höchstwahrscheinlich) nicht gibt und daher eine 404-Seite anstelle der Autor-Seite geliefert wird.

    Einmal editiert, zuletzt von b3317133 (15. Januar 2015 um 00:46)

  • Stimmt, "irgendwas&" ist durchgerutscht, hier eine angepasste Version:

    Apache Configuration
    <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteCond %{REQUEST_URI} ^/$
    RewriteCond %{QUERY_STRING} (^/?|&)author=([0-9]*)
    RewriteRule ^(.*)$ $1?author=999999 [L]
    </IfModule>


    Noch weitere Lücken?

  • Hmmmm, entweder ich geb mir eine schön hohe ID, oder ich werde wohl eher gleich die kompletten Authorseiten sperren.

    Einfach den Author Slug ändern. Benutzer, öffentlichen Namen und Slug unterschiedlich gestallten. Und natürlich den Benutzernamen niemals als öffentlichen Namen verwenden. Auf diese Weise können Benutzernamen nicht mehr "ausgelesen" werden.

    WordPress ist "frei" wie in Freiheit es zu nutzen, aber nicht im Sinne von Freibier. Wer also glaubt man bekommt rund um WordPress alles kostenlos, der irrt. Hilfe ist ein Geschenk für das man sich bedankt, dafür gibt es den 'Gefällt mir' Button. Wer das nicht kann und sich selbst nicht zu helfen weiss, muss sich bezahlte Unterstützung suchen.

  • Das klingt auch gut.

    War grade mal in den Logs.
    Die letzten 1-2 Wochen hatte zumindestens keiner diesen Author-Link-Trick benutzt.
    Die wenigen Loginversuche der letzten 5 Wochen gingen einmal gegen "admin", den es nicht gibt, und ansonsten ging es ausschließlich gegen meinen öffentlichen Namen.
    Aktuell versucht einer es gegen Passwort "öffentlicher Name"+"angebliches Geburstjahr" (1986, 1987, 1989, ...) und so jung bin ich nu och nimmer.
    Aber im Login sind Angriffe aktuell stark gesunken (man konzentriert sich seit Dezember dafür vermehrt wieder darauf in den Kommentaren erfolglos rumzuspammen.

  • Bei mir läuft fail2ban. Ich habe rund 200 Loginversuche pro Tag und etwa 1000 Hex-Hacks (Proxy Scans, URL Exploits, usw.). In etwa 95% davon kommen aus Asien (China, Taiwan).

    WordPress ist "frei" wie in Freiheit es zu nutzen, aber nicht im Sinne von Freibier. Wer also glaubt man bekommt rund um WordPress alles kostenlos, der irrt. Hilfe ist ein Geschenk für das man sich bedankt, dafür gibt es den 'Gefällt mir' Button. Wer das nicht kann und sich selbst nicht zu helfen weiss, muss sich bezahlte Unterstützung suchen.

  • Es gibt auch viele Loginversuche via XML-RPC, die werden oft vergessen bei der "Verteidigung". Die einzige echte Lösung hier ist das Abschalten der Schnittstelle.

    Oder über eine Funktion abfangen.

    WordPress ist "frei" wie in Freiheit es zu nutzen, aber nicht im Sinne von Freibier. Wer also glaubt man bekommt rund um WordPress alles kostenlos, der irrt. Hilfe ist ein Geschenk für das man sich bedankt, dafür gibt es den 'Gefällt mir' Button. Wer das nicht kann und sich selbst nicht zu helfen weiss, muss sich bezahlte Unterstützung suchen.

  • Ich denke da eher an eine Funktion, die die Fehlversuche aufzeichnet und die IP sperrt, nach dem Model

    Wie gesagt ist eine Idee.

    WordPress ist "frei" wie in Freiheit es zu nutzen, aber nicht im Sinne von Freibier. Wer also glaubt man bekommt rund um WordPress alles kostenlos, der irrt. Hilfe ist ein Geschenk für das man sich bedankt, dafür gibt es den 'Gefällt mir' Button. Wer das nicht kann und sich selbst nicht zu helfen weiss, muss sich bezahlte Unterstützung suchen.

  • Wie verhindert man dann den nächsten Loginversuch der aufgezeichneten IP?

    WordPress XML-RPC stellt meines Wissens keine Filter/Actions vor dem XML-RPC Loginversuch zur Verfügung.

  • vielen Dank ^^ wobei ein Bruteforce den Datenbank Connect allgemein schon sehr belastet

  • Ich hatte vor einiger Zeit auch versuche auf die xml-rpc stelle. Nachdem ich auch den Lösungsweg aus dem Link oben probierte, konnte ich mich selber nicht mehr einloggen. Jemand meinte hängt mit dem htaccess Schutz der Admin Seite zusammen. Daraufhin habe ich einfach dort die xml-rpc mit eingetragen. Entweder hat derjenige just in dem Moment seine Versuche aufgegeben oder der Eintrag hat geholfen.

  • Derzeit ist meines Erachtens die einzige Lösung mit WordPress-Bordmitteln das Abschalten der XML-RPC Schnittstelle in [FONT=courier new]functions.php[/FONT] via

    Code
    add_filter( 'xmlrpc_enabled', '__return_false' );

    und das Entfernen der damit nutzlosen [FONT=courier new]<link rel="pingback" href="<?php bloginfo( 'pingback_url' ); ?>" />[/FONT] o.ä. in [FONT=courier new]header.php[/FONT] oder sonstwo im Theme. Bitte gern andere Vorschläge zu XML-RPC posten.

    Für Bruteforce bei normalen Logins mit den üblichen Account-Namen bevor überhaupt Plugins o.ä. geladen bzw. die Datenbank connected wird, nutze ich einen Code-Block wie z.B. diesen in der [FONT=courier new]wp-config.php[/FONT]


    Das reduziert die Serverlast erheblich...

    Ergänzung: Oft wird als Login auch der Domainname ohne www. und .de/.com versucht, oder E-Mail Adressen die auf dem Website vorkommen. Die trage ich dann noch in das o.g. Array ein.

    Einmal editiert, zuletzt von b3317133 (15. Januar 2015 um 12:28)

  • Wie verhindert man dann den nächsten Loginversuch der aufgezeichneten IP?

    WordPress XML-RPC stellt meines Wissens keine Filter/Actions vor dem XML-RPC Loginversuch zur Verfügung.

    muplugins_loaded kommt bestimmt davor ;-) Das ist aber auch gar nicht weiter nötig. Mit wp_authenticate steht einem der notwendige Hook zur Verfügung, da er vor der eigentlichen Authentifizierung stattfindet.

    Grundsätzlich sind wir uns aber wahrscheinlich alle einige, dass Abwehrmaßnahmen dieser sowieso außerhalb von WordPress stattfinden sollten (IP-Tables, Fail2Ban oder mit vorgeschalteten Proxy-, Firewall- oder IPS-Systemen).

    WordPress ist "frei" wie in Freiheit es zu nutzen, aber nicht im Sinne von Freibier. Wer also glaubt man bekommt rund um WordPress alles kostenlos, der irrt. Hilfe ist ein Geschenk für das man sich bedankt, dafür gibt es den 'Gefällt mir' Button. Wer das nicht kann und sich selbst nicht zu helfen weiss, muss sich bezahlte Unterstützung suchen.

  • Dachte gestern Abend nicht, dass ich mit diesem Thread so einen Stein ins Rollen bringe - finde ich sehr gut, dass die Community so sicherheitsbewusst ist und eine solche konstruktive Diskussion gestartet wurde mit jede Menge Tipps. Habe ich gleich ein wenig etwas zu tun mit dem Einbau der genannten Codeschnipsel.

    Ich habe in dem Template zwar keine author-Seite definiert, wodurch domain.de/?author=1 komplett zerstört aussieht und der Name nirgendwo zu lesen ist, im Quelltext steht er aber an zwei Stellen. Vermutlich kamen die Angriffe also auf diesem Weg.


    Ergänzung: Oft wird als Login auch der Domainname ohne www. und .de/.com versucht, oder E-Mail Adressen die auf dem Website vorkommen. Die trage ich dann noch in das o.g. Array ein.


    Das hatte ich, neben admin und administrator, auch schon öfters.

    Kann ich mir mit einer Adaption von Limit Login Attempts auch die eingegebenen Passwörter anschauen bzw. zusenden lassen?

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!