Configurar un Servidor HTTP Básico con Autenticación
En este paso, configurarás un servidor HTTP simple que requiere autenticación básica. Este servidor actuará como nuestro objetivo para el ataque con Hydra en el siguiente paso. Usaremos un script de Python para esto.
Primero, asegúrate de estar en el directorio ~/project:
cd ~/project
Ahora, crea un nuevo archivo de Python llamado webserver.py usando nano:
nano webserver.py
Pega el siguiente código Python en el 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 crea un servidor HTTP básico en el puerto 8000. Requiere autenticación básica. El nombre de usuario correcto es admin y la contraseña es password. La cadena codificada en base64 YWRtaW46cGFzc3dvcmQ= representa admin:password.
Guarda el archivo (Ctrl+O, luego Enter) y sale de nano (Ctrl+X).
Ahora, ejecuta el script de Python para iniciar el servidor HTTP. Lo ejecutaremos en segundo plano para que puedas seguir usando el terminal:
nohup python3 webserver.py > /dev/null 2>&1 &
El comando nohup permite que el proceso continúe ejecutándose incluso si cierras el terminal. > /dev/null 2>&1 redirige la salida estándar y el error estándar a /dev/null, evitando que la salida del servidor ensucie tu terminal. El & al final ejecuta el comando en segundo plano.
Para confirmar que el servidor está funcionando, puedes comprobar si un proceso está escuchando en el puerto 8000:
ss -ltn | grep ':8000'
Debes ver una salida similar a esta, lo que indica que un proceso está escuchando en el puerto 8000:
LISTEN 0 4096 0.0.0.0:8000 0.0.0.0:*
Mantén este servidor en funcionamiento para el siguiente paso.