Dans cette étape, nous allons configurer un simple serveur HTTPS en utilisant le module intégré http.server
de Python avec SSL/TLS activé. Cela nous permettra de simuler un environnement de serveur sécurisé pour tester les capacités SSL de Hydra.
Tout d'abord, nous devons générer un certificat auto-signé et une clé. Ce certificat sera utilisé pour chiffrer la communication entre le client (Hydra) et le serveur. Ouvrez votre terminal et accédez au répertoire ~/project
:
cd ~/project
Maintenant, utilisez la commande openssl
pour générer le certificat et la clé :
openssl req -new -x509 -keyout key.pem -out cert.pem -days 365 -nodes
Vous serez invité à entrer certaines informations sur le certificat. Vous pouvez laisser la plupart des champs vides en appuyant sur Entrée. Un nom commun (Common Name) est requis, vous pouvez entrer localhost
.
Generating a RSA private key
+++++
writing new private key to 'key.pem'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:
State or Province Name (full name) [Some-State]:
Locality Name (eg, city) []:
Organization Name (eg, company) [Internet Widgits Pty Ltd]:
Organizational Unit Name (eg, section) []:
Common Name (e.g. server FQDN or YOUR name) []:localhost
Email Address []:
Cette commande crée deux fichiers : key.pem
(la clé privée) et cert.pem
(le certificat).
Maintenant, créons un script Python pour notre serveur HTTPS. Nous utiliserons l'éditeur de texte nano
pour créer et éditer le script :
nano https_server.py
Copiez et collez le code suivant dans l'éditeur :
import http.server
import ssl
import os
## Create the HTTP server
httpd = http.server.HTTPServer(('127.0.0.1', 443), http.server.SimpleHTTPRequestHandler)
## Create SSL context
ssl_context = ssl.SSLContext(ssl.PROTOCOL_TLS_SERVER)
ssl_context.load_cert_chain(certfile='cert.pem', keyfile='key.pem')
## Wrap the socket with SSL
httpd.socket = ssl_context.wrap_socket(httpd.socket, server_side=True)
print("Serving HTTPS on 127.0.0.1 port 443 (https://127.0.0.1:443/) ...")
httpd.serve_forever()
Pour enregistrer le fichier dans nano :
- Appuyez sur
Ctrl + X
pour quitter
- Appuyez sur
Y
pour confirmer l'enregistrement
- Appuyez sur
Enter
pour confirmer le nom de fichier
Maintenant, vous pouvez exécuter le serveur HTTPS en utilisant :
python3 https_server.py
Vous devriez voir une sortie similaire à :
Serving HTTPS on 127.0.0.1 port 443 (https://127.0.0.1:443/) ...
Laissez cette fenêtre de terminal ouverte. C'est votre serveur HTTPS. Dans les étapes suivantes, nous utiliserons Hydra pour tenter de craquer l'authentification.
IMPORTANT : N'oubliez pas de laisser la fenêtre de terminal originale avec le serveur HTTPS en cours d'exécution. Ne la fermez pas, car nous en aurons besoin pour les étapes suivantes.