Configurar un servidor HTTPS local
En este paso, configuraremos un simple servidor HTTPS utilizando el módulo incorporado http.server de Python con SSL/TLS habilitado. Esto nos permitirá simular un entorno de servidor seguro para probar las capacidades SSL de Hydra.
Primero, necesitamos generar un certificado y una clave autofirmados. Este certificado se utilizará para cifrar la comunicación entre el cliente (Hydra) y el servidor. Abra su terminal y navegue al directorio ~/project:
cd ~/project
Ahora, utilice el comando openssl para generar el certificado y la clave:
openssl req -new -x509 -keyout key.pem -out cert.pem -days 365 -nodes
Se le pedirá que ingrese alguna información sobre el certificado. Puede dejar la mayoría de los campos en blanco presionando Enter. Se requiere un nombre común, puede ingresar 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 []:
Este comando crea dos archivos: key.pem (la clave privada) y cert.pem (el certificado).
Ahora, creemos un script de Python para nuestro servidor HTTPS. Utilizaremos el editor de texto nano para crear y editar el script:
nano https_server.py
Copie y pegue el siguiente código en el editor:
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()
Para guardar el archivo en nano:
- Presione
Ctrl + X para salir
- Presione
Y para confirmar el guardado
- Presione
Enter para confirmar el nombre del archivo
Ahora puede ejecutar el servidor HTTPS utilizando:
python3 https_server.py
Debería ver una salida similar a:
Serving HTTPS on 127.0.0.1 port 443 (https://127.0.0.1:443/) ...
Deje esta ventana de terminal en ejecución. Este es su servidor HTTPS. En los siguientes pasos, utilizaremos Hydra para intentar descifrar la autenticación.
IMPORTANTE: Recuerde mantener la ventana de terminal original en ejecución con el servidor HTTPS. No la cierre, ya que la necesitaremos para los siguientes pasos.