GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Testen Sie WordPress-Logins mit Hydra unter Kali Linux

Einführung

Es gibt überall im Internet Webformulare. Sogar Websites, die normalerweise keinen regulären Benutzern erlauben, sich anzumelden, haben wahrscheinlich einen Admin-Bereich. Beim Ausführen und Bereitstellen einer Website ist es wichtig sicherzustellen, dass die Passwörter, die den Zugriff auf vertrauliche Steuerelemente und Admin-Panels sperren, so sicher wie möglich sind.

Es gibt verschiedene Möglichkeiten, eine Webanwendung anzugreifen, aber dieser Leitfaden behandelt die Verwendung von Hydra, um einen Brute-Force-Angriff auf ein Anmeldeformular durchzuführen. Die Zielplattform der Wahl ist WordPress. Es ist mit Abstand die beliebteste CMS-Plattform der Welt und außerdem dafür bekannt, schlecht verwaltet zu werden.

Denken Sie daran, Dieser Leitfaden soll Ihnen helfen, Ihre WordPress- oder andere Website zu schützen. Die Verwendung auf einer Website, deren Eigentümer Sie nicht sind oder deren Test Sie nicht schriftlich genehmigt haben, ist illegal .

Einrichtung

Bevor Sie irgendetwas tun, benötigen Sie eine WordPress-Website, auf die Sie abzielen können. Diese Anleitung geht auch davon aus, dass Sie die WordPress-Site auf Ihrem eigenen Computer hosten. Wenn Sie Hilfe beim Einrichten von LAMP auf Ihrem Computer benötigen, sehen Sie sich unsere Debian LAMP- und Ubuntu LAMP-Anleitungen an.

Sie können dies entweder auf einer regulären Linux-Installation oder auf einer Kali Linux-Installation tun. Wenn Sie Kali verwenden, folgen Sie dem Debian LAMP from source guide. Stellen Sie einfach sicher, dass Sie Hydra und cURL auf dem System Ihrer Wahl installiert haben. Sie sind in den meisten Repositories verfügbar.

Wenn Sie Ihre reguläre Installation wirklich nicht verwenden möchten, können Sie auf jeden Fall einen anderen Computer verwenden, geben Sie einfach die IP des Ziels für localhost ein und stellen Sie sicher, dass der Zielcomputer vom angreifenden aus zugänglich ist.

Sammeln von Informationen

Sobald Sie WordPress eingerichtet und ausgeführt haben, ist es an der Zeit, so viele Informationen wie möglich über die Installation zu finden, auf die Sie abzielen. Das bedeutet, herauszufinden, wie das Anmeldeformular aufgebaut ist, was passiert, wenn Sie es absenden, und wo es möglicherweise hingeht, wenn die Anmeldung erfolgreich ist.

HTML-Quelle

Beginnen Sie mit der Navigation zur Anmeldeseite. Sie finden es unter localhost/wp-login.php . Nutzen Sie die Möglichkeit Ihres Browsers, den Quellcode zu inspizieren. Sie können einfach irgendwo auf der Seite mit der rechten Maustaste klicken und „Quelle anzeigen“ oder „Element prüfen“ auswählen. In beiden Fällen können Sie die Quelle anzeigen, sie wird nur auf unterschiedliche Weise angezeigt.

Suchen Sie in der Mitte des Codes herum. Sie suchen die Tags. Das ist das eigentliche Anmeldeformular. Dieses Formular enthält einige Informationen, die Sie benötigen.

Überprüfen Sie vor dem Sammeln der Informationen, ob das Formular eine GET- oder POST-Anforderung sendet. In der ersten Zeile des Formulars sollte eine Methodenoption stehen, die so aussieht:method="post" . Im Fall von WordPress ist es ein POST.

Suchen Sie zuerst die Eingabe des Benutzernamens. Es sollte wie die folgende Zeile aussehen.

<input type="text" name="log" id="user_login" class="input" value="" size="20" />

Der Teil, den Sie brauchen, ist der name . In diesem Fall ist es log .

Suchen Sie als nächstes die Passworteingabe. Es sollte ähnlich aussehen.

<input type="password" name="pwd" id="user_pass" class="input" value="" size="20" />

Suchen Sie erneut den name das ist pwd .

Sie müssen auch die Senden-Schaltfläche identifizieren, damit Hydra das Formular senden kann.

<input type="submit" name="wp-submit" id="wp-submit" class="button button-primary button-large" value="Log In" />

Es ist wichtig, sowohl den name zu protokollieren und den value .

Es gibt ein letztes Stück. Falls Sie es noch nicht bemerkt haben, es gibt zwei versteckte Felder am Ende des Formulars. Einer weist WordPress an, umzuleiten, wenn das Formular gesendet wird, und der andere ist ein Cookie, nach dem WordPress sucht, wenn das Formular gesendet wird. Du brauchst das Cookie.

<input type="hidden" name="testcookie" value="1" />

Notieren Sie sich wieder den name und value .

cURL

Auch wenn es viele Informationen gab, die man durch das Betrachten der HTML-Quelle gewinnen konnte, gibt es noch einige Dinge, die Sie wissen müssen, bevor Sie Hydra entfesseln. In den meisten Fällen können Sie den Test jedoch möglicherweise nur mit den gesammelten Informationen durchführen. Sie würden einfach versuchen, sich mit falschen Anmeldeinformationen anzumelden, die Fehlermeldung aufzuzeichnen und diese Nachricht als fehlgeschlagene Testbedingung in Hydra zu verwenden.

WordPress ist jedoch anders konzipiert, und es gibt keine gute Möglichkeit, mit fehlgeschlagenen Anmeldeversuchen zu testen. Aus diesem Grund müssen Sie auf eine erfolgreiche Anmeldung testen. Denn Sie können Ihre eigene WordPress-Installation verwalten und sich anmelden Dies würde keinen Unterschied machen, wenn Sie ein System für einen Kunden testen würden. Die Bedingung, die Sie lokal finden, sollte für WordPress universell sein.

Hier gibt es noch eine weitere Falte. Erinnern Sie sich an das versteckte Weiterleitungsfeld im Formular? Nun, diese Weiterleitung hindert Sie daran, eine Bedingung wie das Vorhandensein des Wortes „Dashboard“ zu verwenden, um auch den Erfolg zu testen. Sie müssen sich die Anfrage selbst ansehen, und dafür gibt es cURL.

Um zu vergleichen, müssen Sie zuerst die ursprüngliche Anmeldeseite mit cURL sehen.

$ curl -v http://localhost/wp-login.php

Die meisten Informationen entsprechen dem Quellcode, den Sie sich im Browser angesehen haben. Ganz oben stehen jedoch Informationen zum HTTP-Request. Beachten Sie diese Informationen. Sie müssen es mit einer erfolgreichen Anmeldung vergleichen.

Als nächstes müssen Sie sich erfolgreich mit cURL anmelden. Dazu benötigen Sie das Cookie aus der vorherigen Anfrage. Sehen Sie sich die HTTP-Daten an und suchen Sie eine Zeile, die wie die folgende aussieht.

< Set-Cookie: wordpress_test_cookie=WP+Cookie+check; path=/

Sie benötigen den wordpress_test_cookie=WP+Cookie+check Teil.

In Ordnung, jetzt benötigen Sie die Informationen, die Sie aus dem HTML zusammen mit diesem Cookie gesammelt haben, um die Anfrage zu stellen. So sollte es aussehen.

curl -v --data 'log=username&pwd=realpassword&wp-submit=Log+In&testcookie=1' --cookie 'wordpress_test_cookie=WP+Cookie+check' http://localhost/wp-login.php

Sie haben also dieselbe grundlegende Anfrage wie zuvor, aber dieses Mal verwenden Sie --data -Flag und das --cookie Flag, um cURL zu übergeben, mit welchen Formulardaten Sie interagieren möchten, und dieses Cookie, damit das Formular tatsächlich gesendet wird.

Diese Datenzeichenfolge, log=username&pwd=realpassword&wp-submit=Log+In&testcookie=1 entspricht direkt den Informationen, die Sie aus dem HTML entnommen haben. Es bedeutet, den Wert „Benutzername“ in die Eingabe namens log einzufügen und den Wert „realpassword“ in die Eingabe namens pwd . Stellen Sie sicher, dass Sie den tatsächlichen Benutzernamen und das Passwort verwenden, um sich anzumelden. Verwenden Sie dann den Submit mit dem Namen wp-submit und einen Wert von Log In um die Daten zu übermitteln. Am Ende steht testcookie mit einem Wert von 1 . Das sagt cURL nur, dass es das zusammen mit den restlichen Formulardaten übermitteln soll.

Wenn cURL die Anfrage abschließt, sehen Sie wirklich kein HTML, sondern nur eine Menge Anfrageinformationen. Erinnern Sie sich an die Umleitung, die dazu führte, dass das Testen mit „Dashboard“ als Testbedingung nicht funktionierte? Nun, jetzt wird die Weiterleitung selbst die Testbedingung sein. Sehen Sie sich die folgende Zeile an.

< Location: http://localhost/wp-admin/

Diese Zeile war nicht in der vorherigen Anfrage enthalten. Es enthält auch keine spezifischen Informationen zu diesem Benutzer oder Login. Das heißt, es wird immer während einer erfolgreichen WordPress-Anmeldung anwesend sein, was es zur perfekten Erfolgsbedingung zum Testen macht.

Testen mit Hydra

Endlich haben Sie alles, was Sie brauchen, um Ihre Passwörter mit Hydra zu testen. Der Zweck dieses Handbuchs besteht nicht so sehr darin, die Hydra-Syntax zu behandeln, sondern den verwendeten Befehl aufzuschlüsseln. Wenn Sie mehr über Hydra erfahren möchten, sehen Sie sich den SSH-Leitfaden an, der viel mehr ins Detail geht.

Es gibt wirklich nur einen Befehl, den Sie benötigen, damit Hydra mögliche Benutzernamen und Passwörter durchläuft, um die Sicherheit Ihrer WordPress-Site zu testen. Am einfachsten ist es, sich den Befehl anzusehen und ihn aufzuschlüsseln.

$ hydra -L lists/usrname.txt -P lists/pass.txt localhost -V http-form-post '/wp-login.php:log=^USER^&pwd=^PASS^&wp-submit=Log In&testcookie=1:S=Location'

Okay, das ist offensichtlich eine Menge auf einmal. Das -L Flag weist Hydra an, eine Wortliste von Benutzernamen unter lists/usrname.txt zu verwenden . Ebenso das -P Flag weist Hydra an, eine Wortliste mit Passwörtern unter lists/pass.txt zu verwenden . localhost weist Hydra an, auf localhost abzuzielen, und -V weist es an, jeden Test in der Konsolenausgabe zu protokollieren.

Der Rest des Befehls befasst sich mit der HTTP-Anforderung selbst. http-form-post aktiviert das Hydra-Modul zur Verarbeitung von HTTP-Formularen mit einer POST-Methode. Denken Sie daran, dass das WordPress-Anmeldeformular vor einem POST steht. Die folgende Zeichenfolge enthält alle Parameter, die Hydra verwenden wird. Sie sollten bemerken, dass es dem sehr ähnlich ist, das verwendet wird, um sich über cURL anzumelden.

Der String besteht aus verschiedenen Abschnitten, die durch : getrennt sind . Der erste Teil ist die genaue Adresse, die getestet wird, /wp-login.php . Der nächste Teil ist fast genauso wie der von cURL verwendete. Es übergibt Werte an das Formular und sendet es einschließlich des Cookies ab. Anstatt wörtliche Werte zu übergeben, verwendet Hydra tatsächlich Variablen. Hinweis in log=^USER^ und pwd=^PASS^ . Das sind mit dem Karottenzeichen getrennte Variablen, die die Werte aus den Wortlisten nehmen und sie in der Anfrage für jeden Test, den Hydra ausführt, weitergeben.

Das allerletzte Stück der Saite ist die Testbedingung. S bedeutet, dass es auf Erfolg getestet wird. Wenn Sie auf Fehler testen möchten, verwenden Sie F . Sie setzen dies gleich dem Wort oder Satz, auf den getestet wird. Stellen Sie sich vor, es wäre fast wie grep .

Wenn Sie dies ausführen, sollten Sie ein positives Ergebnis erhalten, vorausgesetzt, der richtige Benutzername und das richtige Passwort befinden sich in den Wortlisten, die Sie Hydra zur Verfügung gestellt haben.

Abschlussgedanken

Erstmal Glückwunsch, dass du das alles überstanden hast. Wenn Sie es geschafft haben, haben Sie jetzt eine solide Methode, um die Passwortstärke Ihrer WordPress-Benutzerkonten zu testen.

Dieser Leitfaden wurde auf WordPress zugeschnitten, aber Sie können einfach die gleichen Schritte ausführen, um andere Webformulare zu testen. Wenn Sie eine Webanwendung mit mehreren Benutzern ausführen, ist es auf jeden Fall eine gute Idee,
sicherzustellen, dass diese starke Passwörter verwenden. Dies kann helfen, Ihre Passwortrichtlinie zu informieren. Stellen Sie auch hier sicher, dass Sie immer nur mit Erlaubnis testen.


Linux
  1. Verwenden Sie Aircrack-ng, um Ihr WLAN-Passwort unter Kali Linux zu testen

  2. So aktualisieren Sie Kali Linux mit einem einzigen Befehl

  3. Installieren Sie WordPress unter Linux mit Apache

  4. Kali Linux 1.0.8 Release mit EFI-Boot-Unterstützung

  5. SDL2 unter Linux mit g++ verwenden?

Kali Linux Review und Installationsanleitung mit Screenshots

Linux test Command Tutorial für Anfänger (mit Beispielen)

Linux-make-Befehl mit Beispielen erklärt

Installieren Sie WordPress 4.0 mit Nginx 1.6 auf Linux Mint 17

Geben Sie vor, Windows mit dem Kali Linux Undercover-Modus zu verwenden

Melden Sie sich unter Linux und macOS mit einem privaten SSH-Schlüssel an