Configurar um Servidor HTTPS Local
Nesta etapa, configuraremos um servidor HTTPS simples usando o módulo http.server embutido do Python com SSL/TLS habilitado. Isso nos permitirá simular um ambiente de servidor seguro para testar as capacidades SSL do Hydra.
Primeiro, precisamos gerar um certificado e chave autoassinados. Este certificado será usado para criptografar a comunicação entre o cliente (Hydra) e o servidor. Abra seu terminal e navegue até o diretório ~/project:
cd ~/project
Agora, use o comando openssl para gerar o certificado e a chave:
openssl req -new -x509 -keyout key.pem -out cert.pem -days 365 -nodes
Você será solicitado a inserir algumas informações sobre o certificado. Você pode deixar a maioria dos campos em branco pressionando Enter. Um nome comum é obrigatório, você pode inserir 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 cria dois arquivos: key.pem (a chave privada) e cert.pem (o certificado).
Agora, vamos criar um script Python para nosso servidor HTTPS. Usaremos o editor de texto nano para criar e editar o script:
nano https_server.py
Copie e cole o seguinte código no 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 salvar o arquivo no nano:
- Pressione
Ctrl + X para sair
- Pressione
Y para confirmar a gravação
- Pressione
Enter para confirmar o nome do arquivo
Agora você pode executar o servidor HTTPS usando:
python3 https_server.py
Você deve ver uma saída semelhante a:
Serving HTTPS on 127.0.0.1 port 443 (https://127.0.0.1:443/) ...
Deixe esta janela do terminal em execução. Este é o seu servidor HTTPS. Nas próximas etapas, usaremos o Hydra para tentar quebrar a autenticação.
IMPORTANTE: Lembre-se de manter a janela do terminal original em execução com o servidor HTTPS. Não a feche, pois precisaremos dela para as próximas etapas.