Einrichten eines einfachen HTTP-Servers mit Authentifizierung
In diesem Schritt richten Sie einen einfachen HTTP-Server ein, der eine grundlegende Authentifizierung erfordert. Dieser Server dient als Ziel für den Hydra-Angriff im nächsten Schritt. Wir verwenden dafür ein Python-Skript.
Stellen Sie zunächst sicher, dass Sie sich im Verzeichnis ~/project
befinden:
cd ~/project
Erstellen Sie nun eine neue Python-Datei namens webserver.py
mit nano
:
nano webserver.py
Fügen Sie den folgenden Python-Code in den Editor ein:
import http.server
import socketserver
import base64
PORT = 8000
class AuthHandler(http.server.SimpleHTTPRequestHandler):
def do_HEAD(self):
self.send_response(200)
self.send_header('Content-type', 'text/html')
self.end_headers()
def do_AUTHHEAD(self):
self.send_response(401)
self.send_header('WWW-Authenticate', 'Basic realm="My Realm"')
self.send_header('Content-type', 'text/html')
self.end_headers()
def do_GET(self):
auth = self.headers.get('Authorization')
if auth == None:
self.do_AUTHHEAD()
self.wfile.write(b"Authentication Required")
elif auth == 'Basic YWRtaW46cGFzc3dvcmQ=': ## admin:password base64 encoded
http.server.SimpleHTTPRequestHandler.do_GET(self)
else:
self.do_AUTHHEAD()
self.wfile.write(b"Authentication Failed")
Handler = AuthHandler
with socketserver.TCPServer(("", PORT), Handler) as httpd:
print("serving at port", PORT)
httpd.serve_forever()
Dieses Skript erstellt einen einfachen HTTP-Server auf Port 8000. Er erfordert eine grundlegende Authentifizierung. Der korrekte Benutzername ist admin
und das Passwort ist password
. Die base64-codierte Zeichenkette YWRtaW46cGFzc3dvcmQ=
repräsentiert admin:password
.
Speichern Sie die Datei (Strg+O
, dann Eingabe
) und beenden Sie nano
(Strg+X
).
Führen Sie nun das Python-Skript aus, um den HTTP-Server zu starten. Wir führen es im Hintergrund aus, damit Sie das Terminal weiter verwenden können:
nohup python3 webserver.py > /dev/null 2>&1 &
Der Befehl nohup
ermöglicht es dem Prozess, weiterzulaufen, auch wenn Sie das Terminal schließen. > /dev/null 2>&1
leitet die Standardausgabe und die Standardfehlermeldung an /dev/null
weiter, wodurch die Serverausgabe Ihr Terminal nicht überlädt. Das &
am Ende führt den Befehl im Hintergrund aus.
Um zu bestätigen, dass der Server läuft, können Sie überprüfen, ob ein Prozess auf Port 8000 lauscht:
ss -ltn | grep ':8000'
Sie sollten eine Ausgabe ähnlich dieser sehen, die anzeigt, dass ein Prozess auf Port 8000 lauscht:
LISTEN 0 4096 0.0.0.0:8000 0.0.0.0:*
Halten Sie diesen Server für den nächsten Schritt aktiv.