Configurar um Servidor HTTP Básico com Autenticação
Neste passo, você configurará um servidor HTTP simples que requer autenticação básica. Este servidor servirá como nosso alvo para o ataque Hydra no próximo passo. Usaremos um script Python para isso.
Primeiro, certifique-se de que você está no diretório ~/project:
cd ~/project
Agora, crie um novo arquivo Python chamado webserver.py usando nano:
nano webserver.py
Cole o seguinte código Python no editor:
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()
Este script cria um servidor HTTP básico na porta 8000. Ele requer autenticação básica. O nome de usuário correto é admin e a senha é password. A string codificada em base64 YWRtaW46cGFzc3dvcmQ= representa admin:password.
Salve o arquivo (Ctrl+O, depois Enter) e saia do nano (Ctrl+X).
Agora, execute o script Python para iniciar o servidor HTTP. Vamos executá-lo em segundo plano para que você possa continuar usando o terminal:
nohup python3 webserver.py > /dev/null 2>&1 &
O comando nohup permite que o processo continue rodando mesmo se você fechar o terminal. > /dev/null 2>&1 redireciona a saída padrão e o erro padrão para /dev/null, evitando que a saída do servidor polua seu terminal. O & no final executa o comando em segundo plano.
Para confirmar que o servidor está funcionando, você pode verificar se um processo está ouvindo na porta 8000:
ss -ltn | grep ':8000'
Você deve ver uma saída semelhante a esta, indicando que um processo está ouvindo na porta 8000:
LISTEN 0 4096 0.0.0.0:8000 0.0.0.0:*
Mantenha este servidor em execução para o próximo passo.