# Reporte de Seguridad Completo - Mafra Tijuana **Objetivo:** https://mafratijuana.com **IP:** 162.210.97.174 **Fecha:** 2026-03-25 **Estado:** COMPROMETIDO (evidencia de hackeo previo) --- ## RESUMEN EJECUTIVO Mafra Tijuana presenta **el nivel de riesgo más alto posible**. El servidor ya fue comprometido anteriormente (evidencia: archivo `inf.txt` con mensaje "hacked by EH!" y web shell C99.php presente). La infraestructura está basada en PHP 4.4.9 (fin de vida en 2008), sin prácticamente ningún control de seguridad, con inyección SQL confirmada y el panel de administración accesible sin autenticación. **Hallazgos totales:** 27 - 🔴 CRÍTICOS: 8 - 🟠 ALTOS: 9 - 🟡 MEDIOS: 7 - 🔵 BAJOS: 3 --- ## HALLAZGOS CRÍTICOS (8) ### C1 — Evidencia de compromiso previo (hacked by EH!) - **Archivo:** `/adminm/archivosnoticias/inf.txt` - **Contenido:** `hacked by EH!` - **Impacto:** El servidor ya fue hackeado. No se puede confiar en la integridad de ningún archivo. - **Recomendación:** Asumir compromiso total. Reconstruir desde cero. ### C2 — Web Shell C99.php presente - **URL:** `/adminm/archivosnoticias/C99.php` - **Estado:** Retorna HTTP 500 (ionCube Loaders faltantes impiden ejecución), pero el archivo existe - **Impacto:** C99 es un web shell PHP famoso que da control total del servidor (ejecución de comandos, exploración de archivos, conexión a BD, etc.) - **Nota:** Si se restauran los ionCube Loaders o se actualiza PHP, el shell volvería a funcionar - **Recomendación:** Eliminar inmediatamente. Auditar todos los archivos PHP del servidor. ### C3 — Web Shell disfrazado en /phpinfo.php - **URL:** `/phpinfo.php` - **Contenido:** Muestra una página falsa de "Not Found" pero incluye un formulario de password oculto (``) con CSS que lo camufla (fondo blanco, borde blanco) - **Impacto:** Puerta trasera activa protegida por contraseña. Si alguien conoce el password, tiene acceso al servidor. - **Recomendación:** Eliminar inmediatamente. Investigar quién lo instaló. ### C4 — Inyección SQL ciega confirmada (Time-Based Blind SQLi) - **Endpoint:** `/adminm/muestraimagen.php?tipo=chica&id=` - **Prueba:** `id=136 AND SLEEP(3)` → respuesta en 3.2s; `SLEEP(5)` → 5.2s; `SLEEP(0)` → 0.2s - **Impacto:** Permite extraer toda la base de datos: usuarios, contraseñas, datos de clientes, pedidos - **DB name:** 12 caracteres de longitud (extracción parcial confirmada) - **ModSecurity:** Bloquea OR/UNION/SELECT pero NO bloquea SLEEP() ni IF() - **Recomendación:** Usar prepared statements. Actualizar reglas de ModSecurity. ### C5 — Credenciales de SQL Server expuestas - **Archivo:** `/adminm/archivosnoticias/SCRIPTPABORRAR.txt` - **Contenido:** ``` sqlcmd -U sa -P BREVA@1 -S 201.130.120.52\sqlexpress ``` - **Impacto:** Credenciales del usuario SA (administrador) de SQL Server con IP pública. Si el puerto 1433 está abierto en esa IP, acceso total a la base de datos. - **Recomendación:** Cambiar contraseña inmediatamente. Eliminar archivo. Auditar accesos. ### C6 — Panel de administración sin autenticación - **URL:** `/adminm/tipoCambio.php` - **Estado:** Totalmente funcional sin login. Permite modificar y eliminar tipos de cambio. - **Formulario POST activo** a `tipoCambio_exe2.php` con operaciones CRUD - **Otros endpoints admin accesibles:** catalogoUsuarios.php, catalogoPaquetes.php, catalogoNoticias.php, catalogoMarcas.php, catalogoEmail.php, pedidosPrincipal.php, catalogoGalerias2.php, agregarBanner.php - **Recomendación:** Implementar control de acceso en todas las páginas admin. ### C7 — PHP 4.4.9 (fin de vida hace 18 años) - **Header:** `X-Powered-By: PHP/4.4.9` - **Impacto:** Miles de CVEs conocidos. Sin soporte de seguridad desde 2008. Incompatible con prácticas de seguridad modernas. - **Recomendación:** Migrar a PHP 8.x como mínimo. ### C8 — Login de administración vulnerable a fuerza bruta - **URL:** `/adminm/` → POST a `/login/logea.php` - **Campos:** `txtUsuario`, `txtPassword` (texto plano) - **Sin protección:** No CAPTCHA, no rate limiting, no bloqueo de cuenta, no 2FA - **Respuesta uniforme:** "Usuario y contrasena no valida" (sin diferenciación usuario/contraseña) - **ModSecurity:** Bloquea SQLi con comillas simples en el login, pero no protege contra fuerza bruta --- ## HALLAZGOS ALTOS (9) ### A1 — 420 archivos públicamente accesibles en /adminm/archivosnoticias/ - **URL:** `/adminm/archivosnoticias/` - **Contenido:** 420 archivos incluyendo: - 292 imágenes (.jpg, .JPG) - 42 PDFs (catálogos, precios) - 22 archivos ZIP (listas de precios en dólares y MN) - 18 hojas de cálculo Excel (.xls) — intercambios de marcas, catálogos - 14 documentos Word (.doc) - 1 archivo SQL (script de vista de base de datos INVENTARIO) - 1 archivo PHP (C99 web shell) - 6 archivos de texto (incluyen credenciales) - 1 archivo de log, 1 .gz, 1 .wmv, 1 .swf - **Impacto:** Datos comerciales confidenciales expuestos (listas de precios, catálogos internos) ### A2 — Script SQL expone estructura de base de datos interna - **Archivo:** `/adminm/archivosnoticias/Script VWArticuloUltimo.sql` - **Contenido:** `USE [INVENTARIO]` — crea vista `VWULTIMASALIDA` sobre tabla `VWDETALLE4` - **DB:** Microsoft SQL Server (no MySQL) - **Impacto:** Revela nombres de tablas, columnas y lógica de negocio del sistema de inventario ### A3 — Directory listing habilitado en 15+ directorios Directorios con listing activo: - `/img/` (50+ archivos), `/img/_notes/`, `/img/common/`, `/img/glyph/`, `/img/icons/`, `/img/imgMenu/` - `/css/`, `/Scripts/`, `/login/` (archivos PHP visibles) - `/principal/img/`, `/principal/css/` - `/adminm/img/` (17 archivos), `/adminm/css/` (2), `/adminm/archivosnoticias/` (420) - `/uploads/`, `/files/`, `/imgBanner2/` (20 subdirectorios) - `/javascript/` (incluye archivos PHP: borraedita.php, borrar.php) ### A4 — Fuga de información en formulario de contacto - **URL:** POST a `/principal/contactanos_send.php` - **Fuga:** Imprime el array completo de `mail()` en la respuesta HTTP: - Email interno: `luissigma@hotmail.com` - From: `contactenos@mafratijuana.com` - Estructura interna del sistema de correo - **Impacto:** Phishing dirigido, spam, ingeniería social ### A5 — Sin SPF, DKIM ni DMARC - **SPF:** No configurado - **DKIM:** No configurado - **DMARC:** No configurado - **MX:** mx1/mx2.ntchosting.com (hosting compartido) - **Impacto:** Cualquiera puede enviar emails como @mafratijuana.com (spoofing) ### A6 — Posible LFI en accesoarchivos.php - **Parámetro:** `txtDestino` - **Uso legítimo:** Incluye archivos como `../adminm/archivosnoticias/*.pdf` y `../principal/boletines.php?idNoticia=X` - **ModSecurity:** Bloquea `../../../etc/passwd` pero permite rutas relativas a archivos PHP del sitio - **Rutas accesibles:** `../adminm/index.php`, `../adminm/config.php`, `../adminm/conexion.php`, `../login/logea.php` - **Impacto:** Posible lectura de código fuente PHP y archivos de configuración (requiere análisis más profundo) ### A7 — FTP expuesto (Pure-FTPd) - **Puerto:** 21/TCP abierto - **Versión:** Pure-FTPd [privsep] [TLS] - **Anónimo:** Deshabilitado - **Límite:** 200 usuarios concurrentes - **Impacto:** Vector de fuerza bruta para credenciales FTP ### A8 — TLS 1.0 y 1.1 habilitados - **Protocolos:** TLSv1.0 ✓, TLSv1.1 ✓, TLSv1.2 ✓, TLSv1.3 ✓ - **TLS 1.0/1.1:** Deprecados, vulnerables a BEAST/POODLE - **Cifrados CBC:** Presentes en TLS 1.0/1.1 - **Recomendación:** Deshabilitar TLS 1.0 y 1.1 ### A9 — NRPE (Nagios) expuesto en puerto 5666 - **Puerto:** 5666/TCP abierto - **Servicio:** tcpwrapped (NRPE - Nagios Remote Plugin Executor) - **Impacto:** Posible ejecución remota de comandos si NRPE no está restringido --- ## HALLAZGOS MEDIOS (7) ### M1 — Todas las headers de seguridad HTTP ausentes (7/7) - HSTS, CSP, X-Frame-Options, X-Content-Type-Options, X-XSS-Protection, Referrer-Policy, Permissions-Policy: NINGUNA presente - **Impacto:** Clickjacking, MIME sniffing, XSS facilitado ### M2 — Cookie PHPSESSID sin flags de seguridad - Sin `Secure` flag (transmisión en texto plano posible) - Sin `HttpOnly` flag (accesible via JavaScript) - Sin `SameSite` flag (CSRF posible) ### M3 — Versión de PHP expuesta en X-Powered-By - Header `X-Powered-By: PHP/4.4.9` en cada respuesta ### M4 — Estructura del login expuesta via directory listing - `/login/` muestra: `error.php`, `logea.php`, `logeacookies.php`, `logeapartes.php`, `login.php`, `logout.php` - Múltiples endpoints de autenticación revelan la arquitectura interna ### M5 — Archivos de Dreamweaver expuestos - `/img/_notes/` contiene archivos `.mno` de Adobe Dreamweaver - Revelan información sobre el entorno de desarrollo ### M6 — Log de aplicación expuesto (shcv2.log) - **URL:** `/adminm/archivosnoticias/shcv2.log` - **Contenido:** Stack traces de .NET (SHC_V20), errores de facturación electrónica SAT - **Impacto:** Revela tecnología interna, rutas de código, lógica de facturación ### M7 — Redirección de logout a HTTP (no HTTPS) - `/login/logout.php` redirige a `http://www.mafratijuana.com` (sin SSL) --- ## HALLAZGOS BAJOS (3) ### B1 — Código legacy (Dreamweaver/Flash era) - JavaScript inline: MM_nbGroup, AC_RunActiveContent - Flash ActiveX content (.swf) - HTML 4.01 Transitional ### B2 — Hosting compartido (NTC Hosting) - NS: dns1/dns2.ntchosting.com - Riesgo de "vecino ruidoso" y compromiso lateral ### B3 — Cache-Control con directivas legacy - `post-check=0, pre-check=0` (directivas IE-only obsoletas) --- ## PUERTOS ABIERTOS | Puerto | Servicio | Estado | |--------|----------|--------| | 21/TCP | FTP (Pure-FTPd) | Abierto | | 80/TCP | HTTP (Apache) | Abierto | | 443/TCP | HTTPS (Apache) | Abierto | | 5666/TCP | NRPE (Nagios) | Abierto | --- ## INFRAESTRUCTURA | Componente | Detalle | |-----------|---------| | IP | 162.210.97.174 | | Hosting | NTC Hosting (compartido) | | Servidor | Apache | | PHP | 4.4.9 (EOL 2008) | | SSL | Let's Encrypt E8 (válido hasta 2026-05-02) | | FTP | Pure-FTPd [privsep] [TLS] | | WAF | ModSecurity (parcial, bypasseable) | | Monitoreo | NRPE (Nagios) en puerto 5666 | | DNS | dns1/dns2.ntchosting.com | | MX | mx1/mx2.ntchosting.com | | BD referenciada | SQL Server (EDGAR-PC\sqlexpress / 201.130.120.52\sqlexpress) | --- ## ENDPOINTS DESCUBIERTOS ### Panel de Administración (/adminm/) - `index.php` — Login de administración - `menu.php` — Menú principal (sin auth) - `header.php` — Header con menú completo (sin auth) - `tipoCambio.php` — Gestión tipo de cambio (funcional sin auth) - `catalogoUsuarios.php` — Catálogo de usuarios - `catalogoPaquetes.php` — Catálogo de paquetes - `catalogoNoticias.php` — Catálogo de noticias - `catalogoMarcas.php` — Catálogo de marcas - `catalogoEmail.php` — Catálogo de emails - `pedidosPrincipal.php` — Gestión de pedidos - `catalogoGalerias2.php` — Galerías - `agregarBanner.php` — Gestión de banners - `muestraimagen.php` — Visualización de imágenes (**SQLi confirmada**) ### Sitio Público (/principal/) - `index.php` — Página principal - `boletines.php?idNoticia=` — Boletines - `novedades.php?idNoticia=` — Novedades - `scrolldetalle.php?idNoticia=` — Detalles - `accesoarchivos.php?txtDestino=` — Acceso a archivos (**LFI potencial**) - `contactanos.php` / `contactanos_send.php` — Contacto (**fuga de info**) - `descargaarchivos.php` — Descarga de archivos - `ventas.php`, `precios.php`, `marcas.php`, `promociones.php`, `nosotros.php` - `lineasdetemporada.php` — Líneas de temporada ### Login (/login/) - `logea.php` — Login principal - `logeacookies.php` — Login con cookies - `logeapartes.php` — Login por partes (usado por accesoarchivos) - `login.php` — Login alternativo - `error.php` — Página de error - `logout.php` — Cierre de sesión --- ## RECOMENDACIONES PRIORITARIAS ### INMEDIATO (24-48 horas) 1. **Asumir compromiso total** — El servidor ya fue hackeado. Eliminar C99.php, phpinfo.php (webshell), y auditar todos los archivos. 2. **Cambiar TODAS las contraseñas** — Especialmente el SA de SQL Server (BREVA@1) expuesto en SCRIPTPABORRAR.txt 3. **Eliminar archivos sensibles** de /adminm/archivosnoticias/ (credenciales, scripts SQL, web shells) 4. **Deshabilitar directory listing** en Apache (`Options -Indexes`) ### CORTO PLAZO (1-2 semanas) 5. **Implementar autenticación** en todas las páginas de /adminm/ 6. **Corregir SQL Injection** en muestraimagen.php y todos los endpoints con parámetros 7. **Actualizar ModSecurity** con reglas que bloqueen SLEEP(), IF(), BENCHMARK() 8. **Configurar SPF, DKIM y DMARC** para el dominio 9. **Deshabilitar TLS 1.0/1.1** ### MEDIANO PLAZO (1-3 meses) 10. **Migrar a PHP 8.x** — PHP 4.4.9 es insostenible 11. **Reconstruir la aplicación** con framework moderno y prepared statements 12. **Implementar headers de seguridad** (HSTS, CSP, etc.) 13. **Cerrar FTP** o migrar a SFTP 14. **Restringir NRPE** solo a IPs de monitoreo autorizadas 15. **Mover hosting** a proveedor con mejor soporte de seguridad --- *Reporte generado por Lucy para Consultoría AS — Pentest autorizado*