Dans cette étape, vous allez configurer un serveur HTTP simple nécessitant une authentification de base. Ce serveur servira de cible pour l'attaque Hydra à l'étape suivante. Nous utiliserons un script Python pour cela.
Tout d'abord, assurez-vous d'être dans le répertoire ~/project :
cd ~/project
Maintenant, créez un nouveau fichier Python nommé webserver.py à l'aide de nano :
nano webserver.py
Collez le code Python suivant dans l'éditeur :
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 codé en base64
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()
Ce script crée un serveur HTTP de base sur le port 8000. Il nécessite une authentification de base. Le nom d'utilisateur correct est admin et le mot de passe est password. La chaîne codée en base64 YWRtaW46cGFzc3dvcmQ= représente admin:password.
Enregistrez le fichier (Ctrl+O, puis Entrée) et quittez nano (Ctrl+X).
Maintenant, exécutez le script Python pour démarrer le serveur HTTP. Nous allons l'exécuter en arrière-plan afin de pouvoir continuer à utiliser le terminal :
nohup python3 webserver.py > /dev/null 2>&1 &
La commande nohup permet au processus de continuer à s'exécuter même si vous fermez le terminal. > /dev/null 2>&1 redirige la sortie standard et l'erreur standard vers /dev/null, empêchant la sortie du serveur d'encombrer votre terminal. Le & à la fin exécute la commande en arrière-plan.
Pour confirmer que le serveur est en cours d'exécution, vous pouvez vérifier si un processus écoute sur le port 8000 :
ss -ltn | grep ':8000'
Vous devriez voir une sortie similaire à ceci, indiquant qu'un processus écoute sur le port 8000 :
LISTEN 0 4096 0.0.0.0:8000 0.0.0.0:*
Gardez ce serveur en cours d'exécution pour l'étape suivante.