Descripcion del controlador

Se define un controlador con las siguientes caracteristicas, capacidad de redireccion la vista principal de login, capacidad de registro sobre los intentos de login en el log definido dentro de 3. Programar controladores, resources y routes en laravel esto servira como medio de registro.


showLoginForm

Controlador para mostrar la vista de login de la Escuela Militar de Ingenieria en su sistema de cargado de notas

Controlador para la dirección definido y usando en routes.php

public function showLoginForm()
{
	return view('auth.login'); # esto redirige la peticion la vista login.blade.php
	
}

Diagrama de comunicación y dirección del patron Modelo Vista Controlador:

graph TD
  style Cliente fill:#f9f,stroke:#333,stroke-width:3px
  style Controlador fill:#9f9,stroke:#333,stroke-width:1px

  URL["URL / Ruta"]
  Route["Route.php / Redirector"]
  Controlador["Controlador / showLoginForm u otro metodo"]
  Cliente["Cliente (navegador)"]
  Vista["Vista (Blade)"]

  Cliente --> URL
  URL --> Route
  Route --> Controlador
  Controlador --> Vista
  Vista --> Cliente
  URL --> Vista

Diagrama por Krypton612 - Ronald Diaz

El controlador devuelve una vista blade la cual este dentro de 3.2 Vista resource e integración con controlador .


login(Request $request)

Controlador para registrar todos los inicios o intentos de inicio de sesion realizados en el controlador showLoginForm y guardarlos en el archivos de logs para el stack ELK

Funcion del controlador que permite dichas confirmaciones web_php:

public function login(Request $request)
    {
        // Capturar datos del intento
        $data = [
            'event'      => 'honeypot_login_attempt',
            'username'   => $request->input('username'),
            'password'   => $request->input('password'),
            'captcha'    => $request->input('userCaptcha'),
            'ip'         => $request->ip(),
            'user_agent' => $request->header('User-Agent'),
            'timestamp'  => now()->toDateTimeString(),
        ];
 
        // Guardar en logs JSON
        Log::channel('honeypot')->info('Login attempt detected', $data);
 
        // Respuesta falsa para el atacante
        return back()->withErrors([
            'username' => 'Las credenciales son incorrectas.',
        ]);
    }

Ejemplo de registro capturado:

{
    "message": "Login attempt detected", 
    "context": {
        "event": "honeypot_login_attempt",
        "username": "test",
        "password": "test",
        "captcha": "T4VC",
        "ip": "127.0.0.1",
        "user_agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36",
        "timestamp": "2025-09-22 04:14:50"
    },
    "level": 200,
    "level_name": "INFO",
    "channel": "local",
    "datetime": "2025-09-22T04:14:50.222247+00:00",
    "extra": {}
}

Archivo honeypot.json

Diagrama de comunicación y ejecución del controlador

graph TD
  style Cliente fill:#f9f,stroke:#333,stroke-width:3px
  style HoneypotRegistro fill:#9f9,stroke:#333,stroke-width:1px
  
  URL["URL / Ruta"]
  Route["Route.php / Redirector"]
  Controlador["Controlador / login u otro metodo"]
  PostHttp["Request / HTTP post"]
  Cliente["Cliente (navegador)"]
  Datos["Informacion Ingresada"]
  Vista["Vista (Blade)"]
  HoneypotRegistro["Registro de intrusion"]
  
  Cliente --> URL
  URL --> Route
  Route --> Controlador
  Controlador --> Vista
  Vista --> Cliente
  Cliente --> Datos
  Datos --> PostHttp
  PostHttp --> Controlador
  Controlador --> HoneypotRegistro

Diagrama de Krypton612 - Ronald Diaz


FuzzingController - detect

Controlador para registrar todas las respuestas 404 registrado al fallar o no encontrar la pagina, muy importante cuando existen intentos de fuzzing agresivos.

Funcion del controlador que permite dichos registros de intentos fuzz: web_php

public function detect(Request $request)
    {
        // Captura los datos relevantes
        $data = [
            'event'      => 'honeypot_fuzzing_attempt',
            'method'     => $request->method(),
            'url'        => $request->fullUrl(),
            'payload'    => $request->all(), // todos los parámetros enviados
            'ip'         => $request->ip(),
            'user_agent' => $request->header('User-Agent'),
            'timestamp'  => now()->toDateTimeString(),
        ];
 
        // Guardar en logs JSON en el canal honeypot
        Log::channel('honeypot')->warning('Fuzzing attempt detected', $data);
 
        abort(404);
    }

Ejemplo de registro capturado:

{
  "message": "Fuzzing attempt detected",
  "context": {
    "event": "honeypot_fuzzing_attempt",
    "method": "GET",
    "url": "http://localhost:8000/dexa3",
    "payload": [],
    "ip": "127.0.0.1",
    "user_agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36",
    "timestamp": "2025-09-23 04:08:31"
  },
  "level": 300,
  "level_name": "WARNING",
  "channel": "local",
  "datetime": "2025-09-23T04:08:31.914055+00:00",
  "extra": {}
}

Archivo honeypot.json

Diagrama de comunicación y ejecución del controlador fuzzing

graph TD
   Nodos
  Cliente["Cliente navegador"]
  URL["URL / Ruta solicitada"]
  Route["routes/web.php o api.php"]
  Controlador["FuzzingController - método detect"]
  RequestHttp["Request HTTP"]
  FuzzingRegistro["Registro de intento de fuzzing"]

  %% Flujo
  Cliente --> URL
  URL --> Route
  Route --> Controlador
  Cliente --> RequestHttp
  RequestHttp --> Controlador
  Controlador --> FuzzingRegistro
  Controlador --> Cliente



Diagrama de Krypton612 - Ronald Diaz