{"id":87153,"date":"2026-05-19T19:41:15","date_gmt":"2026-05-20T00:41:15","guid":{"rendered":"https:\/\/niixer.com\/?p=87153"},"modified":"2026-05-21T23:27:41","modified_gmt":"2026-05-22T04:27:41","slug":"respira-crm-del-vibe-coding-al-pentesting-usando-hacking-etico","status":"publish","type":"post","link":"https:\/\/niixer.com\/index.php\/2026\/05\/19\/respira-crm-del-vibe-coding-al-pentesting-usando-hacking-etico\/","title":{"rendered":"Respira CRM: Del Vibe Coding al Pentesting usando Hacking \u00c9tico"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">\u00bfQu\u00e9 pasa cuando un equipo de estudiantes de ingenier\u00eda construye una aplicaci\u00f3n web completa usando <a href=\"https:\/\/niixer.com\/?s=inteligencia+artificial\">inteligencia artificial<\/a>, la despliega en producci\u00f3n y, acto seguido, la somete a una auditor\u00eda de seguridad profesional para encontrar sus propias vulnerabilidades? <\/h2>\n\n\n\n<h2 class=\"wp-block-heading\">Eso fue exactamente lo que hicimos con RespiraCRM: un CRM full-stack para dispositivos m\u00e9dicos respiratorios, disponible en producci\u00f3n en <a href=\"https:\/\/web-production-ff1b5.up.railway.app\/dashboard\">https:\/\/web-production-ff1b5.up.railway.app<\/a>, construido desde cero mediante la metodolog\u00eda del Vibe Coding y luego auditado con el OWASP Top 10 2021 en el marco de la asignatura Hacking \u00c9tico de la Universidad Central.<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Este art\u00edculo cuenta esa historia completa:  <\/h2>\n\n\n\n<div class=\"wp-block-group is-layout-constrained wp-block-group-is-layout-constrained\">\n<ul class=\"wp-block-list\">\n<li>qu\u00e9 herramientas de IA<\/li>\n\n\n\n<li>usamos, c\u00f3mo organizamos el c\u00f3digo, qu\u00e9 construimos fase a fase, c\u00f3mo<\/li>\n\n\n\n<li>lo desplegamos en la nube y, finalmente, qu\u00e9 vulnerabilidades cr\u00edticas<\/li>\n\n\n\n<li>descubrimos al hackearlo nosotros mismos. Una historia de construcci\u00f3n<\/li>\n\n\n\n<li>y destrucci\u00f3n controlada que cualquier desarrollador deber\u00eda leer.<\/li>\n<\/ul>\n<\/div>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Primero debemos entender algo fundamental, a partir de lo cual parte todo  <strong>\u00bfQu\u00e9 es el Vibe Coding y por qu\u00e9 lo usamos?<\/strong><\/h2>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"559\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-245.png\" alt=\"Ilustraci\u00f3n del VibeCoding - De la Idea al C\u00f3digo\" class=\"wp-image-87171\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-245.png 1024w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-245-300x164.png 300w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-245-768x419.png 768w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">El <a href=\"https:\/\/niixer.com\/?s=Vibe+Coding\">Vibe Coding<\/a> es una metodolog\u00eda de desarrollo de software en la que<br>la mayor parte del c\u00f3digo es generado y refinado por inteligencia<br>artificial, mientras el desarrollador act\u00faa como director de orquesta:<br>define la visi\u00f3n, los requerimientos, corrige errores y gu\u00eda a la IA<br>para obtener el resultado deseado. Es como tener un programador virtual<br>disponible las 24 horas del d\u00eda que conoce todas las tecnolog\u00edas<br>modernas y escribe c\u00f3digo a la velocidad del pensamiento.<\/h3>\n\n\n\n<h3 class=\"wp-block-heading\">Para este proyecto utilizamos cinco herramientas de IA en paralelo,<br>cada una con un rol espec\u00edfico:<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>OpenAI (GPT-4):<\/strong> generaci\u00f3n y correcci\u00f3n de c\u00f3digo backend y frontend. <\/li>\n\n\n\n<li><strong>Groq (Llama 3.3 70B):<\/strong> integraci\u00f3n de funcionalidades de IA dentro del CRM, como el resumen semanal de ventas. <\/li>\n\n\n\n<li><strong>Google Gemini: <\/strong>asistencia en procesamiento inteligente y optimizaci\u00f3n de consultas a la base de datos.<\/li>\n\n\n\n<li><strong>Codex<\/strong>: apoyo principal para la generaci\u00f3n de m\u00f3dulos completos. <\/li>\n\n\n\n<li><strong>Antigravity<\/strong>: complemento para funcionalidades y soporte en la arquitectura del sistema.<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"683\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-246-1024x683.png\" alt=\"Imagen de herramientas de IA Usadas para la elaboraci\u00f3n de respiracion CRM\" class=\"wp-image-87189\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-246-1024x683.png 1024w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-246-300x200.png 300w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-246-768x512.png 768w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-246.png 1536w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Gracias a este enfoque, pasamos de cero a un MVP (Producto M\u00ednimo<br>Viable) funcional en d\u00edas, no semanas. Pero como descubrir\u00edamos m\u00e1s<br>adelante, la velocidad de desarrollo no garantiza la seguridad del<br>producto.<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>El Stack Tecnol\u00f3gico de <a href=\"https:\/\/web-production-ff1b5.up.railway.app\/\">RespiraCRM<\/a><\/strong><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Antes de ver el proceso de construcci\u00f3n, es importante entender las<br>tecnolog\u00edas que forman el coraz\u00f3n de la plataforma, porque estas<br>decisiones t\u00e9cnicas tambi\u00e9n influir\u00edan en los hallazgos de seguridad.<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Next.js:<\/strong> framework React para el frontend, con App Router y renderizado h\u00edbrido.<\/li>\n\n\n\n<li><strong>NestJS: <\/strong>framework Node.js para el backend, con arquitectura modular orientada a m\u00f3dulos de negocio.<\/li>\n\n\n\n<li><strong>PostgreSQL:<\/strong> base de datos relacional para toda la persistencia del sistema.<\/li>\n\n\n\n<li><strong>Prisma:<\/strong> ORM que conecta el backend con la base de datos mediante consultas type-safe.<\/li>\n\n\n\n<li><strong>Docker: <\/strong>contenedores que garantizan que el entorno de desarrollo sea reproducible en cualquier m\u00e1quina.<\/li>\n\n\n\n<li><strong>JWT + cookies httpOnly: <\/strong>sistema de autenticaci\u00f3n seguro que almacena los tokens en cookies inaccesibles desde JavaScript.<\/li>\n\n\n\n<li><strong>hCaptcha: <\/strong>protecci\u00f3n anti-bot en el formulario de login.<\/li>\n\n\n\n<li><strong>Railway.app:<\/strong> plataforma cloud (PaaS) para el despliegue en producci\u00f3n.<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"683\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-247-1024x683.png\" alt=\"Ilustraci\u00f3n del Stack Tecnol\u00f3gico RESPIRACRM\" class=\"wp-image-87191\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-247-1024x683.png 1024w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-247-300x200.png 300w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-247-768x512.png 768w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-247.png 1536w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">La arquitectura fue un monorepo con tres carpetas principales: apps\/web<br>(frontend), apps\/api (backend) y packages\/shared (c\u00f3digo compartido).<br>El primer prompt que le dimos a la IA fue exactamente eso: generar esta<br>estructura con docker-compose.yml y README incluidos.<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Construcci\u00f3n Fase a Fase: C\u00f3mo Creamos RespiraCRM con IA<\/strong><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Fase 1: Base de Datos y Backend<\/strong><\/h3>\n\n\n\n<h3 class=\"wp-block-heading\">El dise\u00f1o de datos fue el primer paso real. Le pedimos a la IA que generara un esquema de Prisma para las entidades principales: Empresa, Contacto, Producto, Oportunidad, Propuesta, Venta, Orden de Servicio, Factura, Rese\u00f1a, Usuario y Rol. El prompt especificaba relaciones, soft delete (campo deletedAt), timestamps autom\u00e1ticos e \u00edndices de rendimiento.<\/h3>\n\n\n\n<h3 class=\"wp-block-heading\">Con el esquema generado, ejecutamos las migraciones y arrancamos el<br>desarrollo del backend. Los m\u00f3dulos m\u00e1s cr\u00edticos que construimos con<br>asistencia de la IA fueron:<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Autenticaci\u00f3n<\/strong>: login con JWT almacenado en cookies httpOnly, verificaci\u00f3n de hCaptcha, refresh token y endpoint \/auth\/me. El guard de roles (ADMIN, SALES, OPERATOR) protege cada controlador.<\/li>\n\n\n\n<li><strong>CRUDs de negocio<\/strong>: empresas, contactos, productos, oportunidades y m\u00e1s, cada uno con controlador, servicio y DTOs validados con class-validator.<\/li>\n\n\n\n<li><strong>Dashboard de m\u00e9tricas<\/strong>: endpoint GET \/metrics\/dashboard que devuelve conteos, sumas y agrupaciones directamente desde la base de datos v\u00eda Prisma.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Fase 2: Frontend con Next.js<\/strong><\/h3>\n\n\n\n<h3 class=\"wp-block-heading\">El frontend se construy\u00f3 consumiendo la API del backend. Las pantallas<br>m\u00e1s relevantes fueron:<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Login con hCaptcha<\/strong>: formulario seguro con manejo de sesi\u00f3n en un AuthContext global.<\/li>\n\n\n\n<li> <strong>Dashboard principal<\/strong>: tarjetas con m\u00e9tricas en tiempo real y un gr\u00e1fico de ventas por unidad de negocio con Recharts. <\/li>\n\n\n\n<li><strong>Pipeline Kanban<\/strong>: tablero drag-and-drop de oportunidades de venta usando @dnd-kit, con actualizaci\u00f3n en el backend en tiempo real.<\/li>\n\n\n\n<li> <strong>Propuestas con PDF<\/strong>: formulario de propuestas comerciales con generaci\u00f3n de PDF profesional mediante @react-pdf\/renderer.<\/li>\n\n\n\n<li> <strong>Facturaci\u00f3n y \u00f3rdenes de servicio<\/strong>: gesti\u00f3n de estados con permisos por rol. <\/li>\n\n\n\n<li><strong>Calendario y registro r\u00e1pido<\/strong>: FullCalendar integrado con un modal global para registrar llamadas, notas y reuniones desde cualquier pantalla. <\/li>\n\n\n\n<li><strong>Panel de administraci\u00f3n<\/strong>: reportes avanzados con gr\u00e1ficos de conversi\u00f3n, forecast ponderado y estado del sistema.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Fase 3: Despliegue en Railway con Docker y GitHub<\/strong><\/h3>\n\n\n\n<h3 class=\"wp-block-heading\">El despliegue fue el \u00faltimo paso del desarrollo. Le pedimos a la IA<br>que generara Dockerfiles multi-etapa para el frontend y el backend, un<br>entrypoint que ejecutara migraciones de Prisma al arrancar, y las<br>instrucciones para conectar el repositorio de GitHub con Railway para<br>CI\/CD autom\u00e1tico.<\/h3>\n\n\n\n<h3 class=\"wp-block-heading\">El proceso fue el siguiente: creamos el repositorio en GitHub, lo vinculamos a Railway, configuramos las variables de entorno (DATABASE_URL, JWT secrets, etc.) y Railway construy\u00f3 y despleg\u00f3 los contenedores autom\u00e1ticamente. La aplicaci\u00f3n qued\u00f3 accesible en: <a href=\"https:\/\/web-production-ff1b5.up.railway.app\/\">https:\/\/web-production-ff1b5.up.railway.app<\/a><\/h3>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"613\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-257-1024x613.png\" alt=\"Diagrama de Despliegue de RespiraCRM\" class=\"wp-image-87205\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-257-1024x613.png 1024w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-257-300x180.png 300w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-257-768x460.png 768w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-257.png 1121w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">RespiraCRM qued\u00f3 con autenticaci\u00f3n segura, gesti\u00f3n completa de<br>clientes y ventas, dashboard en tiempo real, pipeline Kanban, PDF de<br>propuestas, exportaci\u00f3n a Excel, calendario de actividades y panel de<br>administraci\u00f3n completo.<\/h3>\n\n\n\n<iframe src=\"https:\/\/web-production-ff1b5.up.railway.app\/login\" width =\"100%\" height=\"800px\" frameborder=\"0\"> <\/iframe>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>PETENSTING PAGINA WEB RESPIRACRM <\/strong><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">El presente documento corresponde al informe de Auditor\u00eda de Seguridad Web del sitio: <a href=\"https:\/\/web-production-ff1b5.up.railway.app\/login\">https:\/\/web-production-ff1b5.up.railway.app\/login<\/a>.&nbsp; Cuyo principal objetivo es el identificar y documentar las vulnerabilidades presentes en dicho sitio creado y dise\u00f1ado&nbsp; por nosotros a trav\u00e9s del vibe coding para poder corregirlas y solucionarlas con el fin de garantizar la seguridad e integridad de la misma y de sus usuarios.<\/h3>\n\n\n\n<h3 class=\"wp-block-heading\">Esta Auditor\u00eda se estructura en tres grandes m\u00f3dulos: <strong>(1) <\/strong>Reconocimiento de Red, <strong>(2) <\/strong>An\u00e1lisis DNS, WHOIS y Certificados SSL, y <strong>(3)<\/strong> Aplicaci\u00f3n de la Metodolog\u00eda OWASP Top 10 \u2013 2021. Para cada m\u00f3dulo se describen los objetivos, conceptos clave, procedimiento paso a paso, herramientas utilizadas, hallazgos obtenidos y mejores pr\u00e1cticas recomendadas.<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>El Contrato de Autorizaci\u00f3n: El Paso Legal antes del Hackeo<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Antes de ejecutar cualquier prueba de penetraci\u00f3n sobre RespiraCRM, el\nequipo firm\u00f3 un contrato de autorizaci\u00f3n formal. En Colombia, la\nLey 1273 de 2009 tipifica como delito el acceso no autorizado a\nsistemas inform\u00e1ticos, con penas de hasta ocho a\u00f1os de prisi\u00f3n. La\n\u00fanica diferencia entre un auditor \u00e9tico certificado y un ciberdelincuente\nes ese documento: firmado, con alcance definido y responsabilidades\nclaras para todas las partes.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">El contrato especificaba que las pruebas se realizar\u00edan exclusivamente\nsobre el dominio https:\/\/web-production-ff1b5.up.railway.app, con\nfines acad\u00e9micos, sin modificar ni eliminar datos y sin afectar\nsistemas de terceros. Esto es un requisito no negociable en cualquier\nejercicio profesional de pentesting, independientemente de que el\nsistema sea propio.<\/p>\n\n\n\n<div data-wp-interactive=\"core\/file\" class=\"wp-block-file\"><object data-wp-bind--hidden=\"!state.hasPdfPreview\" hidden class=\"wp-block-file__embed\" data=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/CONTRATO-DE-AUTORIZACION-DE-PRUEBAS-DE-PENETRACION-PENTESTING-\u2013-ACADEMICO-Aplicacion-Web-Moderna-Desplegada-en-Railway.app_.pdf\" type=\"application\/pdf\" style=\"width:100%;height:600px\" aria-label=\"Incrustado de CONTRATO DE AUTORIZACI\u00d3N DE PRUEBAS DE PENETRACI\u00d3N (PENTESTING) \u2013 ACAD\u00c9MICO - Aplicaci\u00f3n Web Moderna Desplegada en Railway.app.\"><\/object><a id=\"wp-block-file--media-1b8ba859-51ae-4b1d-80d5-8ae14625ce5f\" href=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/CONTRATO-DE-AUTORIZACION-DE-PRUEBAS-DE-PENETRACION-PENTESTING-\u2013-ACADEMICO-Aplicacion-Web-Moderna-Desplegada-en-Railway.app_.pdf\">CONTRATO DE AUTORIZACI\u00d3N DE PRUEBAS DE PENETRACI\u00d3N (PENTESTING) \u2013 ACAD\u00c9MICO &#8211; Aplicaci\u00f3n Web Moderna Desplegada en Railway.app<\/a><a href=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/CONTRATO-DE-AUTORIZACION-DE-PRUEBAS-DE-PENETRACION-PENTESTING-\u2013-ACADEMICO-Aplicacion-Web-Moderna-Desplegada-en-Railway.app_.pdf\" class=\"wp-block-file__button wp-element-button\" download aria-describedby=\"wp-block-file--media-1b8ba859-51ae-4b1d-80d5-8ae14625ce5f\">Descarga<\/a><\/div>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">RespiraCRM fue desarrollado como una plataforma CRM full-stack utilizando la metodolog\u00eda de Vibe Coding, donde gran parte del c\u00f3digo fue generado y refinado mediante inteligencia artificial. El sistema fue construido con tecnolog\u00edas modernas como NestJS, Next.js, PostgreSQL y Docker, permitiendo una arquitectura modular, escalable y mantenible.<\/h3>\n\n\n\n<h3 class=\"wp-block-heading\">La aplicaci\u00f3n se ejecut\u00f3 en un entorno basado en Docker Compose, donde el frontend, backend y base de datos funcionaban en contenedores independientes para facilitar el desarrollo y despliegue. El control de versiones y trabajo colaborativo se realiz\u00f3 mediante GitHub, permitiendo integrar funcionalidades desarrolladas en paralelo por los integrantes del proyecto.<\/h3>\n\n\n\n<h3 class=\"wp-block-heading\">Se utilizaron m\u00faltiples herramientas de inteligencia artificial para acelerar la construcci\u00f3n del sistema y automatizar gran parte de la generaci\u00f3n de c\u00f3digo. Las principales IAs utilizadas fueron:<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>OpenAI mediante modelos orientados a generaci\u00f3n y correcci\u00f3n de c\u00f3digo.<\/li>\n\n\n\n<li>Groq para la integraci\u00f3n de funcionalidades de inteligencia artificial dentro del CRM, utilizando el modelo Llama 3.3 70B.<\/li>\n\n\n\n<li>Google con integraci\u00f3n de Gemini para tareas de asistencia y procesamiento inteligente.<\/li>\n\n\n\n<li>Codex como herramienta principal de apoyo al desarrollo y generaci\u00f3n de m\u00f3dulos completos.<\/li>\n\n\n\n<li>Antigravity como herramienta complementaria de vibe coding para generaci\u00f3n de funcionalidades y soporte en arquitectura.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Estas herramientas permitieron generar estructuras backend y frontend, resolver errores, crear m\u00f3dulos completos, optimizar arquitectura y acelerar significativamente el tiempo de desarrollo del proyecto.<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Objetivos<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Realizar un an\u00e1lisis de seguridad sobre la plataforma desarrollada mediante <em>Vibe Coding<\/em>, aplicando metodolog\u00edas de reconocimiento, an\u00e1lisis de infraestructura y criterios basados en OWASP Top 10, con el fin de identificar posibles vulnerabilidades de configuraci\u00f3n, autenticaci\u00f3n, exposici\u00f3n de servicios y seguridad del sistema.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Objetivos Espec\u00edficos<\/strong><\/h2>\n\n\n\n<ol start=\"1\" class=\"wp-block-list\">\n<li><strong>Reconocimiento e infraestructura:<br><\/strong>&nbsp;Analizar la infraestructura de la aplicaci\u00f3n identificando servicios expuestos, puertos abiertos, rutas de acceso y tecnolog\u00edas utilizadas en el Frontend y Backend del sistema.<\/li>\n\n\n\n<li><strong>An\u00e1lisis DNS, hosting y certificados:<br><\/strong>&nbsp;Evaluar la configuraci\u00f3n DNS, registros del dominio, certificados SSL\/TLS y caracter\u00edsticas del hosting utilizado para verificar la seguridad de las comunicaciones y la exposici\u00f3n de informaci\u00f3n sensible.<\/li>\n\n\n\n<li><strong>Evaluaci\u00f3n basada en OWASP Top 10:<br><\/strong>&nbsp;Identificar posibles vulnerabilidades relacionadas con autenticaci\u00f3n, control de acceso, validaci\u00f3n de entradas, manejo de sesiones, exposici\u00f3n de datos y configuraciones inseguras, tomando como referencia las categor\u00edas de OWASP Top 10.<\/li>\n\n\n\n<li><strong>Pruebas y an\u00e1lisis de seguridad:<br><\/strong>&nbsp;Utilizar herramientas de an\u00e1lisis y pruebas controladas para detectar riesgos de seguridad en la aplicaci\u00f3n, documentando hallazgos t\u00e9cnicos y posibles escenarios de explotaci\u00f3n.<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Fase 1 del Pentest: Reconocimiento de Red (OSINT)<\/strong><\/h3>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>Ping<\/strong><\/h4>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"940\" height=\"504\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-745.png\" alt=\"Ping a la wed de Respira CRM\" class=\"wp-image-88048\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-745.png 940w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-745-300x161.png 300w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-745-768x412.png 768w\" sizes=\"auto, (max-width: 940px) 100vw, 940px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><em>Se realiz\u00f3 una prueba de conectividad hacia el servidor donde se encuentra desplegada la aplicaci\u00f3n RespiraCRM utilizando el protocolo ICMP mediante el comando ping desde Kali Linux. Durante el an\u00e1lisis se identific\u00f3 que el dominio web-production-ff1b5.up.railway.app resuelve correctamente a la direcci\u00f3n IP p\u00fablica 66.33.22.152, confirmando que el servidor se encuentra activo y accesible desde Internet. Adem\u00e1s, se observaron tiempos de respuesta entre aproximadamente 88 ms y 251 ms, evidenciando variaciones de latencia propias de una infraestructura cloud desplegada en Railway. Tambi\u00e9n se analiz\u00f3 el valor TTL=56, lo que sugiere que el servidor utiliza un entorno basado en Linux (suele iniciar TTL en 64) eso sugiere que el paquete atraves\u00f3 alrededor de 8 saltos de red.&nbsp; Este procedimiento permiti\u00f3 validar la disponibilidad del sistema y obtener informaci\u00f3n inicial sobre la infraestructura y conectividad de la plataforma antes de realizar pruebas de seguridad m\u00e1s avanzadas.<\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><em>Se realiz\u00f3 una prueba de trazado de ruta utilizando el comando traceroute desde Kali Linux hacia el servidor de RespiraCRM alojado en Railway.<\/em><\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>Traceroute<\/strong><\/h4>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"940\" height=\"660\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-746.png\" alt=\"Traceroute a Respira CRM\" class=\"wp-image-88050\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-746.png 940w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-746-300x211.png 300w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-746-768x539.png 768w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-746-130x90.png 130w\" sizes=\"auto, (max-width: 940px) 100vw, 940px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li><em>Dominio analizado: web-production-ff1b5.up.railway.app<\/em><\/li>\n\n\n\n<li><em>Direcci\u00f3n IP: 66.33.22.152<\/em><\/li>\n\n\n\n<li><em>Primer salto detectado: 10.0.2.2<\/em><\/li>\n\n\n\n<li><em>Estado de los siguientes saltos: * * *<\/em><\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\">\n<li><em>El primer salto corresponde al gateway o router interno de la red local.<\/em><\/li>\n\n\n\n<li><em>Los asteriscos (* * *) indican que los dispositivos intermedios no respondieron a las solicitudes de traceroute.<\/em><\/li>\n\n\n\n<li><em>Esto ocurre porque muchos servidores y proveedores cloud bloquean respuestas ICMP\/UDP por motivos de seguridad.<\/em><\/li>\n<\/ol>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"940\" height=\"179\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-747.png\" alt=\"Treaceroute al Servidor\" class=\"wp-image-88052\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-747.png 940w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-747-300x57.png 300w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-747-768x146.png 768w\" sizes=\"auto, (max-width: 940px) 100vw, 940px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><em>Este comando realiza un trazado de ruta (traceroute) hacia el servidor donde est\u00e1 alojada la aplicaci\u00f3n RespiraCRM, pero en lugar de usar paquetes ICMP o UDP tradicionales, utiliza conexiones TCP sobre el puerto 80.<\/em><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><em>traceroute<\/em><em> \u2192 Permite identificar los saltos o rutas que siguen los paquetes hasta llegar al servidor.<\/em><\/li>\n\n\n\n<li><em>-T<\/em><em> \u2192 Indica que se utilizar\u00e1n paquetes TCP.<\/em><\/li>\n\n\n\n<li><em>-p 80<\/em><em> \u2192 Define el puerto 80, correspondiente al protocolo HTTP.<\/em><\/li>\n\n\n\n<li><em>web-production-ff1b5.up.railway.app<\/em><em> \u2192 Dominio del servidor analizado.<\/em><\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><em>salto&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; direcci\u00f3n &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; descripci\u00f3n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><em>1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 10.0.2.2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Gateway del MV<\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><em>2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 66.33.22.152&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Servidor donde se encuentra el aplicativo<\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><em>A diferencia del traceroute tradicional, este m\u00e9todo s\u00ed logr\u00f3 llegar al servidor porque utiliz\u00f3 tr\u00e1fico TCP permitido por el servicio web. Esto demuestra que:<\/em><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><em>El servidor se encuentra activo y accesible desde Internet.<\/em><\/li>\n\n\n\n<li><em>El puerto 80 (HTTP) est\u00e1 habilitado y responde correctamente.<\/em><\/li>\n\n\n\n<li><em>La infraestructura cloud de Railway permite conexiones TCP hacia la aplicaci\u00f3n.<\/em><\/li>\n\n\n\n<li><em>Existen pocas rutas visibles entre el cliente y el servidor, probablemente debido a la abstracci\u00f3n de red utilizada por el proveedor cloud.<\/em><\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>Obtenci\u00f3n Ip P\u00fablica<\/strong><\/h4>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"413\" height=\"133\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-748.png\" alt=\"IP p\u00fablica\" class=\"wp-image-88053\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-748.png 413w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-748-300x97.png 300w\" sizes=\"auto, (max-width: 413px) 100vw, 413px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><em>Se puede identificar al usar el condado curl <\/em><a href=\"http:\/\/ifconfig.me\"><em>ifconfig.me<\/em><\/a><em> podemos obtener la ip publica.<\/em><\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Escaneo de Puertos<\/strong><\/h3>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>Nmap -F (dominio)<\/strong><\/h4>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"987\" height=\"490\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-749.png\" alt=\"nmap -F (dominio)\" class=\"wp-image-88054\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-749.png 987w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-749-300x149.png 300w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-749-768x381.png 768w\" sizes=\"auto, (max-width: 987px) 100vw, 987px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><em>Se realiz\u00f3 un escaneo de puertos utilizando la herramienta Nmap mediante el comando nmap -F, con el objetivo de identificar los principales servicios expuestos p\u00fablicamente por el servidor donde se encuentra desplegada la aplicaci\u00f3n RespiraCRM. Durante el an\u00e1lisis se confirm\u00f3 que el host se encuentra activo y accesible desde Internet, presentando una latencia aproximada de 0.093 segundos.<\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><em>El escaneo permiti\u00f3 identificar los puertos 22\/tcp, 80\/tcp y 443\/tcp abiertos. El puerto 22 corresponde al servicio SSH, utilizado para administraci\u00f3n remota del servidor, mientras que los puertos 80 y 443 corresponden a los servicios HTTP y HTTPS utilizados para el funcionamiento de la aplicaci\u00f3n web. La presencia del puerto HTTPS indica que la plataforma utiliza cifrado SSL\/TLS para proteger la comunicaci\u00f3n entre el cliente y el servidor.<\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><em>Adicionalmente, se detectaron puertos altos abiertos como 10000, 32768 y el rango 49152\u201349157, algunos identificados por Nmap como servicios desconocidos. Estos puertos podr\u00edan pertenecer a servicios internos de la infraestructura cloud utilizada por Railway, aunque requieren un an\u00e1lisis m\u00e1s detallado para determinar si representan una exposici\u00f3n innecesaria de servicios.<\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><em>Finalmente, el escaneo indic\u00f3 que 89 puertos se encontraban filtrados o sin respuesta, lo cual sugiere la existencia de mecanismos de seguridad y reglas de firewall implementadas para limitar el acceso externo y reducir la superficie de ataque del sistema.<\/em><\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>nmap -sV&nbsp;<\/strong><\/h4>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"940\" height=\"615\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-750.png\" alt=\"nmap -sV  {DOMINIO}\" class=\"wp-image-88055\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-750.png 940w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-750-300x196.png 300w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-750-768x502.png 768w\" sizes=\"auto, (max-width: 940px) 100vw, 940px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"940\" height=\"688\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-751.png\" alt=\"nmap -sV  {DOMINIO} 2da Parte\" class=\"wp-image-88056\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-751.png 940w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-751-300x220.png 300w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-751-768x562.png 768w\" sizes=\"auto, (max-width: 940px) 100vw, 940px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><em>Durante el escaneo, Nmap detect\u00f3 una cantidad inusualmente alta de puertos abiertos categorizados como tcpwrapped (por ejemplo: 10000, 10001, 50006, 58080, entre otros).<\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong><em>Nota:<\/em><\/strong><em> El estado tcpwrapped indica que el firewall o un balanceador de carga del lado del objetivo cerr\u00f3 la conexi\u00f3n inmediatamente despu\u00e9s de que Nmap completara el handshake de tres v\u00edas TCP. Esto suele ser un indicativo de la presencia de un mecanismo de defensa activo (como un WAF o un sistema de mitigaci\u00f3n\/DDoS de Railway) dise\u00f1ado para ofuscar el verdadero estado de la red e invalidar t\u00e9cnicas tradicionales de escaneo.<\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong><em>Posibles Vectores de Ataques:<\/em><\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong><em>Fuzzing Web:<\/em><\/strong><em> Concentrar los esfuerzos de intrusi\u00f3n sobre el puerto 443\/TCP, ya que el puerto 80 es \u00fanicamente un puente de redirecci\u00f3n utilizado herramientas como gobuster o ffuf. Posible vulnerabilidad en el OWASP TOP 10 : A01 Control de Acceso Vulnerable<\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>Nmap -A<\/strong><\/h4>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"909\" height=\"278\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-752.png\" alt=\"nmap -A {Dominio} - Puerto 21 SSH\" class=\"wp-image-88057\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-752.png 909w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-752-300x92.png 300w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-752-768x235.png 768w\" sizes=\"auto, (max-width: 909px) 100vw, 909px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<h5 class=\"wp-block-heading\"><strong>Puerto 21 SSH:<\/strong> <\/h5>\n\n\n\n<p class=\"wp-block-paragraph\">se realiz\u00f3 una investigaci\u00f3n profunda en las bases de datos globales de vulnerabilidades, logrando identificar y validar los siguientes registros de seguridad:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Investigaci\u00f3n en el Repositorio de Vulnerabilidades de Go:<\/strong> Se realiz\u00f3 una consulta t\u00e9cnica en la base de datos oficial de seguridad del lenguaje Go bajo el identificador GO-2025-3487. A trav\u00e9s del enlace p\u00fablico<a href=\"https:\/\/pkg.go.dev\/vuln\/GO-2025-3487\"> <\/a><a href=\"https:\/\/pkg.go.dev\/vuln\/GO-2025-3487\">pkg.go.dev\/vuln\/GO-2025-3487<\/a>, se identific\u00f3 que el paquete afectado corresponde al componente criptogr\u00e1fico central del lenguaje (<a href=\"http:\/\/golang.org\/x\/crypto\/ssh\">golang.org\/x\/crypto\/ssh<\/a>).<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">La clasificaci\u00f3n oficial de plataformas afectadas (CPE &#8211; Common Platform Enumeration) establece que el riesgo compromete de forma generalizada a los despliegues construidos con dicha librer\u00eda, aplicando un l\u00edmite estricto hasta (pero excluyendo) la versi\u00f3n 0.35.0 del paquete de SSH. Se recomienda validar la versi\u00f3n del archivo SSH y generar la actualizaci\u00f3n en caso que sea pertinente.<\/p>\n\n\n\n<h5 class=\"wp-block-heading\"><strong>Puerto 80 HTTP:<\/strong> <\/h5>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"879\" height=\"595\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-753.png\" alt=\"nmap -A {Dominio} - Puerto 80 HTTP\" class=\"wp-image-88060\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-753.png 879w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-753-300x203.png 300w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-753-768x520.png 768w\" sizes=\"auto, (max-width: 879px) 100vw, 879px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"877\" height=\"543\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-754.png\" alt=\"nmap -A {Dominio} - Puerto 80 HTTP part 2\" class=\"wp-image-88063\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-754.png 877w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-754-300x186.png 300w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-754-768x476.png 768w\" sizes=\"auto, (max-width: 877px) 100vw, 877px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Nos indica que re dirige de forma exitosa al protocolo HTTPS Esto confirma que el puerto 80 no expone contenido directamente, sino que act\u00faa como un t\u00fanel de reenv\u00edo.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<h5 class=\"wp-block-heading\"><strong>PUERTO 443 TCP<\/strong>: <\/h5>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"940\" height=\"648\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-755.png\" alt=\"nmap -A {Dominio}  - El puerto 443\/TCP \" class=\"wp-image-88064\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-755.png 940w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-755-300x207.png 300w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-755-768x529.png 768w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-755-130x90.png 130w\" sizes=\"auto, (max-width: 940px) 100vw, 940px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"940\" height=\"640\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-756.png\" alt=\"nmap -A {Dominio}  - El puerto 443\/TCP parte 2\" class=\"wp-image-88065\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-756.png 940w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-756-300x204.png 300w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-756-768x523.png 768w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-756-130x90.png 130w\" sizes=\"auto, (max-width: 940px) 100vw, 940px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">El puerto 443\/TCP se encuentra abierto y expone el servicio web principal protegido mediante cifrado SSL\/TLS. El an\u00e1lisis demuestra que est\u00e1 correctamente configurado:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Al interactuar con la ra\u00edz, el servidor responde con un c\u00f3digo controlado HTTP\/1.0 404 Not Found Esto denota que el sistema est\u00e1 sanitizando las peticiones y no revela informaci\u00f3n sensible del backend&nbsp;<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong> Fase 2 del Pentest: DNS, WHOIS y Certificados SSL\/TLS<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>An\u00e1lisis DNS: Infraestructura al Descubierto<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Registro A (IPv4) del subdominio de la aplicaci\u00f3n<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"975\" height=\"249\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-757.png\" alt=\"Registro A (IPv4) del subdominio de la aplicaci\u00f3n\" class=\"wp-image-88066\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-757.png 975w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-757-300x77.png 300w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-757-768x196.png 768w\" sizes=\"auto, (max-width: 975px) 100vw, 975px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Registros MX (servidores de correo) del dominio padre railway.app<\/strong><\/h3>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"975\" height=\"317\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-758.png\" alt=\"Registros MX (servidores de correo) del dominio padre railway.app\" class=\"wp-image-88067\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-758.png 975w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-758-300x98.png 300w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-758-768x250.png 768w\" sizes=\"auto, (max-width: 975px) 100vw, 975px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Registros TXT (SPF, DKIM, verificaciones)<\/strong><\/h3>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"975\" height=\"478\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-759.png\" alt=\"Registros TXT (SPF, DKIM, verificaciones)\" class=\"wp-image-88068\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-759.png 975w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-759-300x147.png 300w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-759-768x377.png 768w\" sizes=\"auto, (max-width: 975px) 100vw, 975px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"975\" height=\"464\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-760.png\" alt=\"Registros TXT (SPF, DKIM, verificaciones) parte 2\" class=\"wp-image-88069\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-760.png 975w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-760-300x143.png 300w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-760-768x365.png 768w\" sizes=\"auto, (max-width: 975px) 100vw, 975px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Registros NS (nameservers autoritativos)<\/strong><\/h3>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"840\" height=\"316\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-761.png\" alt=\"Registros NS (nameservers autoritativos)\" class=\"wp-image-88070\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-761.png 840w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-761-300x113.png 300w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-761-768x289.png 768w\" sizes=\"auto, (max-width: 840px) 100vw, 840px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Las consultas DNS sobre el dominio objetivo y su dominio padre<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">railway.app entregaron informaci\u00f3n valiosa. El registro A confirm\u00f3 la<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">IP 66.33.22.152 sin balanceo de carga ni CDN visible, lo que facilita<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">la identificaci\u00f3n del servidor de origen. Los registros MX revelaron<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">que railway.app usa Google Workspace como plataforma de correo<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">(aspmx.l.google.com). Los registros TXT expusieron la pol\u00edtica SPF<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">configurada como v=spf1 include:_spf.google.com ~all, que con su<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">par\u00e1metro ~all (softfail en lugar de -all) deja la puerta te\u00f3ricamente<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">abierta a la suplantaci\u00f3n de correo, agravado por la ausencia de una<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">pol\u00edtica DMARC. Los nameservers (NS) pertenecen a Foundation DNS<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">(blue.foundationdns.com), no a Cloudflare, lo que descarta protecci\u00f3n<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">DNS adicional de ese proveedor.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>WHOIS: El Dominio Bien Gestionado<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">La consulta WHOIS sobre railway.app (realizada v\u00eda ip2whois.com, ya que<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">la herramienta local de Sysinternals fall\u00f3 al no poder resolver el<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">servidor WHOIS del TLD .app) confirm\u00f3 que el dominio fue registrado en<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">agosto de 2019, tiene expiraci\u00f3n en 2028 y su registrador es Namecheap<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Inc. Los datos personales del propietario est\u00e1n ocultos por privacidad,<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">y el estado clientTransferProhibited bloquea transferencias no<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">autorizadas. No se detectaron riesgos de domain takeover.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">### Certificado SSL\/TLS: TLS 1.3 y Resistencia Post-Cu\u00e1ntica<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">El an\u00e1lisis del certificado con openssl s_client mostr\u00f3 una<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">configuraci\u00f3n criptogr\u00e1fica s\u00f3lida: protocolo TLSv1.3, cifrador<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">TLS_AES_128_GCM_SHA256 y un intercambio de claves X25519MLKEM768 con<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">resistencia post-cu\u00e1ntica. El certificado es de tipo wildcard<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">(*.up.railway.app) emitido por Let&#8217;s Encrypt con vigencia de solo tres<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">meses, una buena pr\u00e1ctica que reduce la ventana de exposici\u00f3n ante<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">una posible filtraci\u00f3n de la clave privada. Sin embargo, el escaneo<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">de headers de seguridad revel\u00f3 la ausencia completa de HSTS, CSP,<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">X-Frame-Options y X-Content-Type-Options: cuatro escudos que el<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">servidor nunca activ\u00f3. La enumeraci\u00f3n de subdominios pasiva mediante<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Certificate Transparency (crt.sh) descubri\u00f3 miles de subdominios de<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">railway.app, incluyendo jenkins, gitlab, kibana y mysql, lo que<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">evidencia la amplia superficie de ataque del proveedor cloud.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"975\" height=\"615\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-764.png\" alt=\"Descarga del Whois\" class=\"wp-image-88073\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-764.png 975w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-764-300x189.png 300w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-764-768x484.png 768w\" sizes=\"auto, (max-width: 975px) 100vw, 975px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"484\" height=\"156\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-765.png\" alt=\"Archivo ya descargado\" class=\"wp-image-88074\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-765.png 484w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-765-300x97.png 300w\" sizes=\"auto, (max-width: 484px) 100vw, 484px\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Descomprimimos la carpeta, copiamos el whois.exe en la carpeta C:\\Windows\\System32 y ejecutamos el comando desde PowerShell:Descomprimimos la carpeta, copiamos el whois.exe en la carpeta C:\\Windows\\System32 y ejecutamos el comando desde PowerShell:<\/h3>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"975\" height=\"271\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-766.png\" alt=\"\" class=\"wp-image-88075\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-766.png 975w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-766-300x83.png 300w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-766-768x213.png 768w\" sizes=\"auto, (max-width: 975px) 100vw, 975px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Segunda Opci\u00f3n &#8211; Desde la pag\u00edna Web:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"975\" height=\"484\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-767.png\" alt=\"Ip2Whois\" class=\"wp-image-88076\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-767.png 975w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-767-300x149.png 300w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-767-768x381.png 768w\" sizes=\"auto, (max-width: 975px) 100vw, 975px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"965\" height=\"514\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-768.png\" alt=\"whois desde la web\" class=\"wp-image-88077\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-768.png 965w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-768-300x160.png 300w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-768-768x409.png 768w\" sizes=\"auto, (max-width: 965px) 100vw, 965px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"999\" height=\"506\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-769.png\" alt=\"informaci\u00f3n del whois\" class=\"wp-image-88078\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-769.png 999w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-769-300x152.png 300w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-769-768x389.png 768w\" sizes=\"auto, (max-width: 999px) 100vw, 999px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Inspecci\u00f3n manual con OpenSSL<\/strong><br>Instalamos y configuramos las variables de entorno:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"975\" height=\"273\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-770.png\" alt=\"Instalamos y configuramos las variables de entorno\" class=\"wp-image-88079\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-770.png 975w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-770-300x84.png 300w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-770-768x215.png 768w\" sizes=\"auto, (max-width: 975px) 100vw, 975px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Ejecutamos el comando de OpenSSL<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"975\" height=\"636\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-771.png\" alt=\"Ejecutamos el comando de OpenSSL\" class=\"wp-image-88080\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-771.png 975w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-771-300x196.png 300w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-771-768x501.png 768w\" sizes=\"auto, (max-width: 975px) 100vw, 975px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"674\" height=\"1024\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-772-674x1024.png\" alt=\"Ejecutamos el comando de OpenSSL parte 2\" class=\"wp-image-88081\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-772-674x1024.png 674w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-772-197x300.png 197w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-772-768x1167.png 768w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-772.png 838w\" sizes=\"auto, (max-width: 674px) 100vw, 674px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Verificaci\u00f3n de cabeceras de seguridad relacionadas con SSL<\/strong><\/p>\n\n\n\n<ol class=\"wp-block-list\"><\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">Verificar HSTS (Strict-Transport-Security)<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"975\" height=\"151\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-774.png\" alt=\"Verificar HSTS (Strict-Transport-Security)\" class=\"wp-image-88083\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-774.png 975w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-774-300x46.png 300w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-774-768x119.png 768w\" sizes=\"auto, (max-width: 975px) 100vw, 975px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Verificar CSP (Content-Security-Policy) \u2013 buscando upgrade-insecure-requests<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"975\" height=\"111\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-775.png\" alt=\"Verificar CSP (Content-Security-Policy) \u2013 buscando upgrade-insecure-requests\" class=\"wp-image-88084\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-775.png 975w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-775-300x34.png 300w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-775-768x87.png 768w\" sizes=\"auto, (max-width: 975px) 100vw, 975px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Verificar X-Content-Type-Options<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"975\" height=\"107\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-776.png\" alt=\"Verificar X-Content-Type-Options\" class=\"wp-image-88085\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-776.png 975w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-776-300x33.png 300w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-776-768x84.png 768w\" sizes=\"auto, (max-width: 975px) 100vw, 975px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Verificar X-Frame-Options<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"975\" height=\"102\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-777.png\" alt=\"Verificar X-Frame-Options\" class=\"wp-image-88086\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-777.png 975w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-777-300x31.png 300w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-777-768x80.png 768w\" sizes=\"auto, (max-width: 975px) 100vw, 975px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Verificar compresi\u00f3n HTTP (BREACH)<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"975\" height=\"82\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-778.png\" alt=\"Verificar compresi\u00f3n HTTP (BREACH)\" class=\"wp-image-88087\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-778.png 975w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-778-300x25.png 300w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-778-768x65.png 768w\" sizes=\"auto, (max-width: 975px) 100vw, 975px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"975\" height=\"439\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-779.png\" alt=\"Verificar X-Frame-Options 2\" class=\"wp-image-88088\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-779.png 975w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-779-300x135.png 300w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-779-768x346.png 768w\" sizes=\"auto, (max-width: 975px) 100vw, 975px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Fase 3 del Pentest: OWASP Top 10 2021 \u2014 Los Hallazgos Reales<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Esta fue la fase m\u00e1s cr\u00edtica. Se aplicaron las 10 categor\u00edas del<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">OWASP Top 10 2021 sobre la aplicaci\u00f3n en producci\u00f3n con una combinaci\u00f3n<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">de herramientas automatizadas (Nikto, Nmap, curl, Gobuster) y pruebas<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">manuales controladas.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>A01 \u2014 Control de Acceso Roto<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"975\" height=\"485\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-780.png\" alt=\"\" class=\"wp-image-88089\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-780.png 975w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-780-300x149.png 300w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-780-768x382.png 768w\" sizes=\"auto, (max-width: 975px) 100vw, 975px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"975\" height=\"365\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-781.png\" alt=\"\" class=\"wp-image-88090\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-781.png 975w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-781-300x112.png 300w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-781-768x288.png 768w\" sizes=\"auto, (max-width: 975px) 100vw, 975px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"986\" height=\"397\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-782.png\" alt=\"\" class=\"wp-image-88091\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-782.png 986w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-782-300x121.png 300w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-782-768x309.png 768w\" sizes=\"auto, (max-width: 986px) 100vw, 986px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Las pruebas con curl.exe revelaron que las rutas sensibles como<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\/dashboard y \/.env devuelven respuestas 307 (redirecci\u00f3n temporal),<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">lo que indica protecci\u00f3n correcta. Sin embargo, el endpoint \/api\/users<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">respondi\u00f3 con HTTP 401 (Unauthorized), lo que confirma la existencia<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">del recurso y facilita la enumeraci\u00f3n de usuarios. Esta es una<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">vulnerabilidad de severidad media que puede orientar ataques de fuerza<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">bruta hacia cuentas reales.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong> A02 \u2014 Fallos Criptogr\u00e1ficos<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"975\" height=\"272\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-783.png\" alt=\"\" class=\"wp-image-88092\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-783.png 975w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-783-300x84.png 300w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-783-768x214.png 768w\" sizes=\"auto, (max-width: 975px) 100vw, 975px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"975\" height=\"57\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-784.png\" alt=\"\" class=\"wp-image-88093\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-784.png 975w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-784-300x18.png 300w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-784-768x45.png 768w\" sizes=\"auto, (max-width: 975px) 100vw, 975px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"975\" height=\"483\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-785.png\" alt=\"\" class=\"wp-image-88094\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-785.png 975w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-785-300x149.png 300w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-785-768x380.png 768w\" sizes=\"auto, (max-width: 975px) 100vw, 975px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">El servidor redirige correctamente de HTTP a HTTPS (c\u00f3digo 301) y los<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">cifrados TLS son todos calificados como A por Nmap (AES-256-GCM,<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">ChaCha20-Poly1305, Perfect Forward Secrecy). Sin embargo, la ausencia<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">de la cabecera Strict-Transport-Security (HSTS) representa una<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">vulnerabilidad de severidad media: en la primera conexi\u00f3n HTTP, un<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">atacante con posici\u00f3n Man-in-the-Middle puede interceptar el tr\u00e1fico<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">antes de la redirecci\u00f3n a HTTPS (ataque SSL stripping). La compresi\u00f3n<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">HTTP no est\u00e1 activa, lo que descarta el ataque BREACH.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>A03 \u2014 Inyecci\u00f3n SQL y XSS<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"975\" height=\"484\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-786.png\" alt=\"\" class=\"wp-image-88095\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-786.png 975w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-786-300x149.png 300w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-786-768x381.png 768w\" sizes=\"auto, (max-width: 975px) 100vw, 975px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"975\" height=\"519\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-787.png\" alt=\"\" class=\"wp-image-88096\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-787.png 975w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-787-300x160.png 300w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-787-768x409.png 768w\" sizes=\"auto, (max-width: 975px) 100vw, 975px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"975\" height=\"517\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-788.png\" alt=\"\" class=\"wp-image-88097\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-788.png 975w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-788-300x159.png 300w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-788-768x407.png 768w\" sizes=\"auto, (max-width: 975px) 100vw, 975px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"975\" height=\"439\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-789.png\" alt=\"\" class=\"wp-image-88098\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-789.png 975w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-789-300x135.png 300w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-789-768x346.png 768w\" sizes=\"auto, (max-width: 975px) 100vw, 975px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Se enviaron payloads cl\u00e1sicos de SQL injection (admin&#8217; OR &#8216;1&#8217;=&#8217;1) y<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">XSS (&lt;script&gt;alert(&#8216;XSS&#8217;)&lt;\/script&gt;) en el formulario de login y<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">registro, tanto por GET como por POST. En todos los casos el servidor<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">respondi\u00f3 con 200 OK y la p\u00e1gina de login sin ejecutar los scripts ni<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">devolver errores de base de datos. El uso de Prisma como ORM (que<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">genera consultas parametrizadas autom\u00e1ticamente) y el escaping nativo<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">de Next.js parecen mitigar los vectores b\u00e1sicos. Sin embargo, no se<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">utilizaron herramientas avanzadas como SQLMap ni fuzzing extensivo,<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">por lo que no se puede descartar vulnerabilidades complejas.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>A04 \u2014 Dise\u00f1o Inseguro: El Hallazgo M\u00e1s Cr\u00edtico<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"975\" height=\"544\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-790.png\" alt=\"\" class=\"wp-image-88099\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-790.png 975w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-790-300x167.png 300w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-790-768x429.png 768w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-790-800x445.png 800w\" sizes=\"auto, (max-width: 975px) 100vw, 975px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"975\" height=\"821\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-791.png\" alt=\"\" class=\"wp-image-88100\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-791.png 975w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-791-300x253.png 300w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-791-768x647.png 768w\" sizes=\"auto, (max-width: 975px) 100vw, 975px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"975\" height=\"679\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-792.png\" alt=\"\" class=\"wp-image-88101\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-792.png 975w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-792-300x209.png 300w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-792-768x535.png 768w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-792-392x272.png 392w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-792-130x90.png 130w\" sizes=\"auto, (max-width: 975px) 100vw, 975px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Este fue el hallazgo de mayor severidad de toda la auditor\u00eda. Se<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">ejecutaron 30 intentos consecutivos de login con credenciales<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">incorrectas usando m\u00e9todos HEAD y POST. En ning\u00fan caso el servidor<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">devolvi\u00f3 un c\u00f3digo 429 (Too Many Requests), bloque\u00f3 la IP, activ\u00f3 un<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">CAPTCHA, introdujo un retardo progresivo ni mostr\u00f3 un c\u00f3digo 401<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Unauthorized \u2014en su lugar siempre respondi\u00f3 200 OK\u2014. Esto confirma<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">la ausencia total de rate limiting y mecanismos anti-fuerza bruta.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Un atacante puede automatizar miles de intentos por segundo con<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">herramientas como Hydra usando diccionarios como rockyou.txt, sin que<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">el sistema lo detecte ni lo bloquee.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>A05 \u2014 Configuraci\u00f3n Incorrecta de Seguridad<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"975\" height=\"166\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-793.png\" alt=\"\" class=\"wp-image-88102\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-793.png 975w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-793-300x51.png 300w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-793-768x131.png 768w\" sizes=\"auto, (max-width: 975px) 100vw, 975px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"975\" height=\"225\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-794.png\" alt=\"\" class=\"wp-image-88103\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-794.png 975w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-794-300x69.png 300w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-794-768x177.png 768w\" sizes=\"auto, (max-width: 975px) 100vw, 975px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"975\" height=\"424\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-795.png\" alt=\"\" class=\"wp-image-88104\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-795.png 975w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-795-300x130.png 300w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-795-768x334.png 768w\" sizes=\"auto, (max-width: 975px) 100vw, 975px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Un script que verific\u00f3 cinco cabeceras HTTP cr\u00edticas marc\u00f3 todas como<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">[FALTA]: Strict-Transport-Security, X-Frame-Options,<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">X-Content-Type-Options, Content-Security-Policy y X-XSS-Protection.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Adicionalmente, las cabeceras del servidor revelan X-Powered-By:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Next.js y Server: railway-edge, exponiendo la tecnolog\u00eda subyacente<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">y el proveedor cloud. Estas cabeceras ausentes habilitan ataques<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">conocidos: clickjacking (sin X-Frame-Options), MIME sniffing (sin<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">X-Content-Type-Options) y mayor superficie para XSS (sin CSP).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>A06 al A10: Resumen<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"975\" height=\"361\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-796.png\" alt=\"\" class=\"wp-image-88105\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-796.png 975w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-796-300x111.png 300w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-796-768x284.png 768w\" sizes=\"auto, (max-width: 975px) 100vw, 975px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"910\" height=\"613\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-797.png\" alt=\"\" class=\"wp-image-88106\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-797.png 910w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-797-300x202.png 300w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-797-768x517.png 768w\" sizes=\"auto, (max-width: 910px) 100vw, 910px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Para A06, la exposici\u00f3n de X-Powered-By: Next.js y la versi\u00f3n de la<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">librer\u00eda SSH de Go permiten a un atacante identificar componentes y<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">buscar CVEs espec\u00edficos. Para A07, el endpoint \/api\/users expuesto<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">con 401 facilita la enumeraci\u00f3n de cuentas, y la falta de rate<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">limiting en el login (analizada en A04) expone directamente la<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">autenticaci\u00f3n a fuerza bruta. <\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"940\" height=\"681\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-798.png\" alt=\"\" class=\"wp-image-88107\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-798.png 940w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-798-300x217.png 300w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-798-768x556.png 768w\" sizes=\"auto, (max-width: 940px) 100vw, 940px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"940\" height=\"681\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-799.png\" alt=\"\" class=\"wp-image-88108\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-799.png 940w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-799-300x217.png 300w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-799-768x556.png 768w\" sizes=\"auto, (max-width: 940px) 100vw, 940px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Para A08<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"940\" height=\"539\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-800.png\" alt=\"\" class=\"wp-image-88109\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-800.png 940w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-800-300x172.png 300w, https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/image-800-768x440.png 768w\" sizes=\"auto, (max-width: 940px) 100vw, 940px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">los directorios internos no<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">revelan informaci\u00f3n privilegiada: acceso correcto y protegido.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Para A09, la infraestructura de Railway bloque\u00f3 herramientas<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">automatizadas como Nikto, lo que sugiere monitoreo b\u00e1sico activo;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">no se evidenci\u00f3 un SIEM centralizado ni alertas de seguridad<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">configuradas. Para A10 (SSRF), no se identificaron funcionalidades<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">que permitan al usuario suministrar URLs externas en las rutas<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">p\u00fablicas analizadas (\/login y \/register): no se detectaron vectores<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">SSRF explotables.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">[\u2192 C\u00f3mo implementar rate limiting en Next.js y NestJS en producci\u00f3n]<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">(enlace interno Niixer)<\/p>\n\n\n\n<div class=\"wp-block-file\"><a id=\"wp-block-file--media-755e53a6-0fca-4836-bad8-b3c645c5ebaa\" href=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/Analisis-Aplicativo-Web-1.docx\">Analisis Aplicativo Web<\/a><a href=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/Analisis-Aplicativo-Web-1.docx\" class=\"wp-block-file__button wp-element-button\" download aria-describedby=\"wp-block-file--media-755e53a6-0fca-4836-bad8-b3c645c5ebaa\">Descarga<\/a><\/div>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Para m\u00e1s informaci\u00f3n consultar el siguiente documento:<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">## Conclusiones: Lo que Aprendemos al Hackearnos a Nosotros Mismos<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">El ejercicio de construir y luego auditar el mismo sistema dej\u00f3<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">lecciones que ning\u00fan tutorial puede ense\u00f1ar:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">**Fortalezas confirmadas:** La configuraci\u00f3n TLS es robusta (solo<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">TLSv1.2\/1.3 con cifrados A, sin versiones obsoletas). La redirecci\u00f3n<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">HTTP a HTTPS funciona correctamente. El uso de Prisma previene<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">inyecciones SQL b\u00e1sicas. El certificado tiene vida corta (3 meses) como<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">buena pr\u00e1ctica. No se detectaron vectores SSRF explotables en las rutas<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">p\u00fablicas.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">**Vulnerabilidades cr\u00edticas a remediar de inmediato:**<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">1. Implementar rate limiting: m\u00e1ximo 5 intentos de login por minuto,<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">&nbsp;&nbsp; bloqueo temporal por IP tras 10 fallos, y CAPTCHA despu\u00e9s de 3<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">&nbsp;&nbsp; intentos fallidos.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">2. Agregar las cabeceras HTTP faltantes: HSTS (max-age=31536000),<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">&nbsp;&nbsp; X-Frame-Options (DENY), X-Content-Type-Options (nosniff) y una<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">&nbsp;&nbsp; CSP b\u00e1sica (default-src &#8216;self&#8217;).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">3. Ocultar la cabecera X-Powered-By para no revelar el framework.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">4. Verificar y actualizar golang.org\/x\/crypto\/ssh a la versi\u00f3n \u22650.35.0.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">5. Cambiar la respuesta del endpoint \/api\/users de 401 a 404 para<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">&nbsp;&nbsp; evitar la enumeraci\u00f3n de usuarios.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">**La lecci\u00f3n m\u00e1s importante:** el Vibe Coding acelera dram\u00e1ticamente el<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">desarrollo, pero la velocidad no reemplaza la revisi\u00f3n de seguridad.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Construir r\u00e1pido con IA es posible; construir r\u00e1pido y seguro requiere<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">integrar la seguridad desde el primer prompt, no al final del proyecto.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">[\u2192 Checklist de seguridad para aplicaciones Next.js antes de ir a<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">producci\u00f3n] (enlace interno Niixer)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">[\u2192 C\u00f3mo agregar headers de seguridad en Next.js con next.config.js]<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">(enlace interno Niixer)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Fuentes<\/strong><\/h2>\n\n\n\nNmap Network Scanning \u2014 The Official Nmap Project Guide to Network\n  Discovery and Security Scanning. (s. f.).\n  https:\/\/nmap.org\/book\/\n\n  OWASP Foundation. (2021). OWASP Top Ten 2021.\n  https:\/\/owasp.org\/Top10\/\n\n  OpenSSL Project. (s. f.). openssl-s_client \u2014 OpenSSL Documentation.\n  https:\/\/www.openssl.org\/docs\/manmaster\/man1\/openssl-s_client.html\n\n  Grahamrobert, D. (s. f.). GitHub &#8211; robertdavidgraham\/masscan: TCP\n  port scanner, spews SYN packets asynchronously.\n  https:\/\/github.com\/robertdavidgraham\/masscan\n\n  Bee-San. (s. f.). GitHub &#8211; RustScan: The Modern Port Scanner.\n  https:\/\/github.com\/RustScan\/RustScan\n\n  SecLists \u2014 The security tester&#8217;s companion. (s. f.).\n  https:\/\/seclists.dev\/\n\n  InternetWache. (2026). GitTools \u2014 A repository with 3 tools for\n  pwning websites with .git repositories exposed.\n  https:\/\/github.com\/internetwache\/GitTools\n\n  Go Vulnerability Database. (2025). GO-2025-3487: Vulnerability in\n  golang.org\/x\/crypto\/ssh.\n  https:\/\/pkg.go.dev\/vuln\/GO-2025-3487\n\n  Antirez. (s. f.). GitHub &#8211; antirez\/hping: hping network tool.\n  https:\/\/github.com\/antirez\/hping \n\n  Fern\u00e1ndez, A. B. (2023, 7 de mayo). C\u00f3mo redactar un contrato de\n  pentesting. T\u00e9rminos y Condiciones. https:\/\/terminosycondiciones.es\/2019\/04\/23\/como-redactar-un-contrato-de-pentesting\/\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Cr\u00e9ditos:<\/strong><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Autores:&nbsp;<a href=\"https:\/\/niixer.com\/?s=+Luis+Alberto+Diuche+Pe%C3%B1a\">Luis Alberto Diuche Pe\u00f1a<\/a>,&nbsp;<a href=\"https:\/\/niixer.com\/?s=David+Eduardo+Mart%C3%ADnez+Moya\">David Eduardo Mart\u00ednez Moya<\/a>,&nbsp;<a href=\"https:\/\/niixer.com\/?s=Sergio+Numael+Linares+Ducuara+\">Sergio Numael Linares Ducuara<\/a>&nbsp;y&nbsp;<a href=\"https:\/\/niixer.com\/?s=Elizabeth+P%C3%A9rez+Gonz%C3%A1lez\">Elizabeth P\u00e9rez Gonz\u00e1lez<\/a><\/h3>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Editor:&nbsp;<\/strong><a href=\"https:\/\/niixer.com\/?s=Magister+Ingeniero+Carlos+Iv%C3%A1n+Pinz%C3%B3n+Romero\">Magister Ingeniero Carlos Iv\u00e1n Pinz\u00f3n Romero<\/a><\/h3>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>C\u00f3digo:&nbsp;<\/strong><a href=\"https:\/\/niixer.com\/?s=UCHEG1-9\">UCHEG1-9<\/a><\/h3>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Universidad:<\/strong><a href=\"https:\/\/www.ucentral.edu.co\/oferta-academica\/oferta-academica\"><strong>&nbsp;<\/strong>Universidad Central<\/a><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u00bfQu\u00e9 pasa cuando un equipo de estudiantes de ingenier\u00eda construye una aplicaci\u00f3n web completa usando inteligencia artificial, la despliega en producci\u00f3n y, acto seguido, la somete a una auditor\u00eda de seguridad profesional para encontrar sus propias vulnerabilidades? Eso fue exactamente lo que hicimos con RespiraCRM: un CRM full-stack para dispositivosSeguir Leyendo<\/p>\n","protected":false},"author":187,"featured_media":87174,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"colormag_page_container_layout":"default_layout","colormag_page_sidebar_layout":"default_layout","footnotes":""},"categories":[4557],"tags":[3157,417,4561,4560,4611,358,1709,4521],"class_list":["post-87153","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-hacking-etico","tag-crm","tag-ia","tag-owasp-top-10","tag-pentesting","tag-railway","tag-salud","tag-seguridad-web","tag-vibe-coding"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.7 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Respira CRM: Del Vibe Coding al Pentesting usando Hacking \u00c9tico &#8211; Portal de noticias de tecnolog\u00eda, Realidad Virtual, Aumentada y Mixta, Videojuegos<\/title>\n<meta name=\"description\" content=\"En Portal de noticias de tecnolog\u00eda, Realidad Virtual, Aumentada y Mixta, Videojuegos encuentra los mejores contenidos del mundo de la tecnolog\u00eda | Respira CRM: Del Vibe Coding al Pentesting usando Hacking \u00c9tico\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/niixer.com\/index.php\/2026\/05\/19\/respira-crm-del-vibe-coding-al-pentesting-usando-hacking-etico\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Respira CRM: Del Vibe Coding al Pentesting usando Hacking \u00c9tico &#8211; Portal de noticias de tecnolog\u00eda, Realidad Virtual, Aumentada y Mixta, Videojuegos\" \/>\n<meta property=\"og:description\" content=\"En Portal de noticias de tecnolog\u00eda, Realidad Virtual, Aumentada y Mixta, Videojuegos encuentra los mejores contenidos del mundo de la tecnolog\u00eda | Respira CRM: Del Vibe Coding al Pentesting usando Hacking \u00c9tico\" \/>\n<meta property=\"og:url\" content=\"https:\/\/niixer.com\/index.php\/2026\/05\/19\/respira-crm-del-vibe-coding-al-pentesting-usando-hacking-etico\/\" \/>\n<meta property=\"og:site_name\" content=\"Portal de noticias de tecnolog\u00eda, Realidad Virtual, Aumentada y Mixta, Videojuegos\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/niixer\/\" \/>\n<meta property=\"article:published_time\" content=\"2026-05-20T00:41:15+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-05-22T04:27:41+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/Imagen-de-Portada-de-Respira-CRM-1024x683.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1024\" \/>\n\t<meta property=\"og:image:height\" content=\"683\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Luis Alberto Diuche Pe\u00f1a\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Luis Alberto Diuche Pe\u00f1a\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data2\" content=\"30 minutos\" \/>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Respira CRM: Del Vibe Coding al Pentesting usando Hacking \u00c9tico &#8211; Portal de noticias de tecnolog\u00eda, Realidad Virtual, Aumentada y Mixta, Videojuegos","description":"En Portal de noticias de tecnolog\u00eda, Realidad Virtual, Aumentada y Mixta, Videojuegos encuentra los mejores contenidos del mundo de la tecnolog\u00eda | Respira CRM: Del Vibe Coding al Pentesting usando Hacking \u00c9tico","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/niixer.com\/index.php\/2026\/05\/19\/respira-crm-del-vibe-coding-al-pentesting-usando-hacking-etico\/","og_locale":"es_ES","og_type":"article","og_title":"Respira CRM: Del Vibe Coding al Pentesting usando Hacking \u00c9tico &#8211; Portal de noticias de tecnolog\u00eda, Realidad Virtual, Aumentada y Mixta, Videojuegos","og_description":"En Portal de noticias de tecnolog\u00eda, Realidad Virtual, Aumentada y Mixta, Videojuegos encuentra los mejores contenidos del mundo de la tecnolog\u00eda | Respira CRM: Del Vibe Coding al Pentesting usando Hacking \u00c9tico","og_url":"https:\/\/niixer.com\/index.php\/2026\/05\/19\/respira-crm-del-vibe-coding-al-pentesting-usando-hacking-etico\/","og_site_name":"Portal de noticias de tecnolog\u00eda, Realidad Virtual, Aumentada y Mixta, Videojuegos","article_publisher":"https:\/\/www.facebook.com\/niixer\/","article_published_time":"2026-05-20T00:41:15+00:00","article_modified_time":"2026-05-22T04:27:41+00:00","og_image":[{"width":1024,"height":683,"url":"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/Imagen-de-Portada-de-Respira-CRM-1024x683.png","type":"image\/png"}],"author":"Luis Alberto Diuche Pe\u00f1a","twitter_card":"summary_large_image","twitter_misc":{"Escrito por":"Luis Alberto Diuche Pe\u00f1a","Tiempo de lectura":"30 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/niixer.com\/index.php\/2026\/05\/19\/respira-crm-del-vibe-coding-al-pentesting-usando-hacking-etico\/#article","isPartOf":{"@id":"https:\/\/niixer.com\/index.php\/2026\/05\/19\/respira-crm-del-vibe-coding-al-pentesting-usando-hacking-etico\/"},"author":{"name":"Luis Alberto Diuche Pe\u00f1a","@id":"https:\/\/niixer.com\/#\/schema\/person\/1a2a1e30b3a0b5c9e6b2bba11ef6c09c"},"headline":"Respira CRM: Del Vibe Coding al Pentesting usando Hacking \u00c9tico","datePublished":"2026-05-20T00:41:15+00:00","dateModified":"2026-05-22T04:27:41+00:00","mainEntityOfPage":{"@id":"https:\/\/niixer.com\/index.php\/2026\/05\/19\/respira-crm-del-vibe-coding-al-pentesting-usando-hacking-etico\/"},"wordCount":4498,"publisher":{"@id":"https:\/\/niixer.com\/#organization"},"image":{"@id":"https:\/\/niixer.com\/index.php\/2026\/05\/19\/respira-crm-del-vibe-coding-al-pentesting-usando-hacking-etico\/#primaryimage"},"thumbnailUrl":"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/Imagen-de-Portada-de-Respira-CRM.png","keywords":["CRM","IA","OWASP Top 10","Pentesting","Railway","Salud","Seguridad web","vibe coding"],"articleSection":["Hacking \u00c9tico"],"inLanguage":"es"},{"@type":"WebPage","@id":"https:\/\/niixer.com\/index.php\/2026\/05\/19\/respira-crm-del-vibe-coding-al-pentesting-usando-hacking-etico\/","url":"https:\/\/niixer.com\/index.php\/2026\/05\/19\/respira-crm-del-vibe-coding-al-pentesting-usando-hacking-etico\/","name":"Respira CRM: Del Vibe Coding al Pentesting usando Hacking \u00c9tico &#8211; Portal de noticias de tecnolog\u00eda, Realidad Virtual, Aumentada y Mixta, Videojuegos","isPartOf":{"@id":"https:\/\/niixer.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/niixer.com\/index.php\/2026\/05\/19\/respira-crm-del-vibe-coding-al-pentesting-usando-hacking-etico\/#primaryimage"},"image":{"@id":"https:\/\/niixer.com\/index.php\/2026\/05\/19\/respira-crm-del-vibe-coding-al-pentesting-usando-hacking-etico\/#primaryimage"},"thumbnailUrl":"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/Imagen-de-Portada-de-Respira-CRM.png","datePublished":"2026-05-20T00:41:15+00:00","dateModified":"2026-05-22T04:27:41+00:00","description":"En Portal de noticias de tecnolog\u00eda, Realidad Virtual, Aumentada y Mixta, Videojuegos encuentra los mejores contenidos del mundo de la tecnolog\u00eda | Respira CRM: Del Vibe Coding al Pentesting usando Hacking \u00c9tico","breadcrumb":{"@id":"https:\/\/niixer.com\/index.php\/2026\/05\/19\/respira-crm-del-vibe-coding-al-pentesting-usando-hacking-etico\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/niixer.com\/index.php\/2026\/05\/19\/respira-crm-del-vibe-coding-al-pentesting-usando-hacking-etico\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/niixer.com\/index.php\/2026\/05\/19\/respira-crm-del-vibe-coding-al-pentesting-usando-hacking-etico\/#primaryimage","url":"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/Imagen-de-Portada-de-Respira-CRM.png","contentUrl":"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/Imagen-de-Portada-de-Respira-CRM.png","width":1536,"height":1024,"caption":"Portada del Art\u00edculo sobre Respira CRM"},{"@type":"BreadcrumbList","@id":"https:\/\/niixer.com\/index.php\/2026\/05\/19\/respira-crm-del-vibe-coding-al-pentesting-usando-hacking-etico\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Portada","item":"https:\/\/niixer.com\/"},{"@type":"ListItem","position":2,"name":"Respira CRM: Del Vibe Coding al Pentesting usando Hacking \u00c9tico"}]},{"@type":"WebSite","@id":"https:\/\/niixer.com\/#website","url":"https:\/\/niixer.com\/","name":"Portal de noticias de tecnolog\u00eda, ciencia, Android, iOS, Realidad Virtual, Aumentada y Mixta, Videojuegos, computadores, todo lo mas reciente en tecnolog\u00eda","description":"Portal de noticias de tecnolog\u00eda","publisher":{"@id":"https:\/\/niixer.com\/#organization"},"alternateName":"Niixer","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/niixer.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Organization","@id":"https:\/\/niixer.com\/#organization","name":"Niixer","alternateName":"Niixer.com","url":"https:\/\/niixer.com\/","logo":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/niixer.com\/#\/schema\/logo\/image\/","url":"https:\/\/niixer.com\/wp-content\/uploads\/2022\/08\/logo-niixer-sin-fondo-1.png","contentUrl":"https:\/\/niixer.com\/wp-content\/uploads\/2022\/08\/logo-niixer-sin-fondo-1.png","width":140,"height":140,"caption":"Niixer"},"image":{"@id":"https:\/\/niixer.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/niixer\/","https:\/\/www.instagram.com\/niixer.tecnologia\/"]},{"@type":"Person","@id":"https:\/\/niixer.com\/#\/schema\/person\/1a2a1e30b3a0b5c9e6b2bba11ef6c09c","name":"Luis Alberto Diuche Pe\u00f1a","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/secure.gravatar.com\/avatar\/542ed0ee8b60f058eb28c682e6627371203bd7a48f45d3f72f11aad4ccd52417?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/542ed0ee8b60f058eb28c682e6627371203bd7a48f45d3f72f11aad4ccd52417?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/542ed0ee8b60f058eb28c682e6627371203bd7a48f45d3f72f11aad4ccd52417?s=96&d=mm&r=g","caption":"Luis Alberto Diuche Pe\u00f1a"},"sameAs":["http:\/\/www.niixer.com"],"url":"https:\/\/niixer.com\/index.php\/author\/ldiuchep\/"}]}},"jetpack_featured_media_url":"https:\/\/niixer.com\/wp-content\/uploads\/2026\/05\/Imagen-de-Portada-de-Respira-CRM.png","_links":{"self":[{"href":"https:\/\/niixer.com\/index.php\/wp-json\/wp\/v2\/posts\/87153","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/niixer.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/niixer.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/niixer.com\/index.php\/wp-json\/wp\/v2\/users\/187"}],"replies":[{"embeddable":true,"href":"https:\/\/niixer.com\/index.php\/wp-json\/wp\/v2\/comments?post=87153"}],"version-history":[{"count":13,"href":"https:\/\/niixer.com\/index.php\/wp-json\/wp\/v2\/posts\/87153\/revisions"}],"predecessor-version":[{"id":88112,"href":"https:\/\/niixer.com\/index.php\/wp-json\/wp\/v2\/posts\/87153\/revisions\/88112"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/niixer.com\/index.php\/wp-json\/wp\/v2\/media\/87174"}],"wp:attachment":[{"href":"https:\/\/niixer.com\/index.php\/wp-json\/wp\/v2\/media?parent=87153"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/niixer.com\/index.php\/wp-json\/wp\/v2\/categories?post=87153"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/niixer.com\/index.php\/wp-json\/wp\/v2\/tags?post=87153"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}