Adecuado

Alcaldia de San Jose del Guaviare

Rama Ejecutiva · Sector territorial · Alcaldía capital

Resumen ejecutivoRiesgo ALTO

Riesgo alto. La entidad presenta 5 hallazgos de severidad alta — principalmente configuraciones de email débiles (SPF/DMARC), headers de seguridad incompletos, y posible hosting fuera de territorio nacional. Adicionalmente, 2 de los hallazgos detectados se replican en otras entidades del Estado — el patrón sugiere causa raíz compartida (proveedor común, template institucional o stack heredado). Acción recomendada: publicar registros DMARC con política reject, habilitar HSTS y completar el set de headers de seguridad.

Total: 39Altas: 5Medias: 6Sistémicas: 2
Cobertura100
Postura de seguridad90
Divulgación responsable0
Consistencia operativa100

Hallazgos (39)

Servidor catch-all en 2 host(s) — observabilidad reducida

Alta

El portal en sanjosedelguaviare-guaviare.gov.co, www.sanjosedelguaviare-guaviare.gov.co retorna HTTP 200 con la misma página para múltiples rutas inexistentes (paths sensibles como /.env, /web.config.bak, /aws.json devuelven el mismo HTML que /). Comportamiento típico de SPAs/CMS sin handler 404 explícito.

Catch-all 200 (en vez de 404) impide a herramientas de auditoría externas distinguir entre rutas reales y rutas inexistentes. Crea ruido para defenders y oculta exposiciones reales bajo un mar de 'falsos 200'. Buena práctica: configurar handler 404 explícito que retorne código 4xx para rutas no mapeadas.

robots.txt revela 1 ruta(s) sensibles en www.sanjosedelguaviare-guaviare.gov.co

Media

Disallow/Allow incluye: /backup. robots.txt es publico — los crawlers respetan, los atacantes lo usan como mapa.

robots.txt no impide acceso, solo solicita ignorar a crawlers benignos. Listar paths internos/admin alli es un atajo para enumerar superficie sensible.

robots.txt revela 1 ruta(s) sensibles en sanjosedelguaviare-guaviare.gov.co

Media

Disallow/Allow incluye: /backup. robots.txt es publico — los crawlers respetan, los atacantes lo usan como mapa.

robots.txt no impide acceso, solo solicita ignorar a crawlers benignos. Listar paths internos/admin alli es un atajo para enumerar superficie sensible.

DNSSEC ausente en sanjosedelguaviare-guaviare.gov.co

Media

No hay registro DS en zona padre.

Sin DNSSEC, un atacante con MITM en cualquier resolvedor puede inyectar respuestas DNS falsas. Permite redirección a servidores controlados sin alertas.

DNS de sanjosedelguaviare-guaviare.gov.co totalmente fuera de Colombia

Media

NS records: ns-cloud-b1.googledomains.com, ns-cloud-b4.googledomains.com, ns-cloud-b2.googledomains.com, ns-cloud-b3.googledomains.com

Toda la zona DNS está bajo proveedores extranjeros — los logs de queries DNS, claves DNSSEC y eventual modificación quedan bajo jurisdicción foránea. Para el Estado, esto debería evaluarse contra Ley 1581/2012.

Bucket S3 privado existe con nombre jose

Info

GET https://jose.s3.amazonaws.com retorna 403 AccessDenied (bucket existe, no listable). Sugiere infraestructura cloud asociada a la entidad.

Bucket existe pero está cerrado al público. Útil como pista de inventario cloud — en un escenario de takeover (entidad deja de pagar AWS), un atacante podría reclamar el nombre. Recomendación: documentar y monitorear.

Bucket GCS privado existe con nombre jose

Info

GET https://storage.googleapis.com/jose retorna 403 AccessDenied (bucket existe, no listable). Sugiere infraestructura cloud asociada a la entidad.

Bucket existe pero está cerrado al público. Útil como pista de inventario cloud — en un escenario de takeover (entidad deja de pagar AWS), un atacante podría reclamar el nombre. Recomendación: documentar y monitorear.

Bucket AZURE privado existe con nombre jose

Info

GET https://jose.blob.core.windows.net retorna 403 AccessDenied (bucket existe, no listable). Sugiere infraestructura cloud asociada a la entidad.

Bucket existe pero está cerrado al público. Útil como pista de inventario cloud — en un escenario de takeover (entidad deja de pagar AWS), un atacante podría reclamar el nombre. Recomendación: documentar y monitorear.

Bucket S3 privado existe con nombre jose-dev

Info

GET https://jose-dev.s3.amazonaws.com retorna 403 AccessDenied (bucket existe, no listable). Sugiere infraestructura cloud asociada a la entidad.

Bucket existe pero está cerrado al público. Útil como pista de inventario cloud — en un escenario de takeover (entidad deja de pagar AWS), un atacante podría reclamar el nombre. Recomendación: documentar y monitorear.

Bucket S3 privado existe con nombre jose-backup

Info

GET https://jose-backup.s3.amazonaws.com retorna 403 AccessDenied (bucket existe, no listable). Sugiere infraestructura cloud asociada a la entidad.

Bucket existe pero está cerrado al público. Útil como pista de inventario cloud — en un escenario de takeover (entidad deja de pagar AWS), un atacante podría reclamar el nombre. Recomendación: documentar y monitorear.

Bucket GCS privado existe con nombre jose-backup

Info

GET https://storage.googleapis.com/jose-backup retorna 403 AccessDenied (bucket existe, no listable). Sugiere infraestructura cloud asociada a la entidad.

Bucket existe pero está cerrado al público. Útil como pista de inventario cloud — en un escenario de takeover (entidad deja de pagar AWS), un atacante podría reclamar el nombre. Recomendación: documentar y monitorear.

Bucket S3 privado existe con nombre jose-files

Info

GET https://jose-files.s3.amazonaws.com retorna 403 AccessDenied (bucket existe, no listable). Sugiere infraestructura cloud asociada a la entidad.

Bucket existe pero está cerrado al público. Útil como pista de inventario cloud — en un escenario de takeover (entidad deja de pagar AWS), un atacante podría reclamar el nombre. Recomendación: documentar y monitorear.

Bucket S3 privado existe con nombre jose-tmp

Info

GET https://jose-tmp.s3.amazonaws.com retorna 403 AccessDenied (bucket existe, no listable). Sugiere infraestructura cloud asociada a la entidad.

Bucket existe pero está cerrado al público. Útil como pista de inventario cloud — en un escenario de takeover (entidad deja de pagar AWS), un atacante podría reclamar el nombre. Recomendación: documentar y monitorear.

Bucket GCS privado existe con nombre jose-tmp

Info

GET https://storage.googleapis.com/jose-tmp retorna 403 AccessDenied (bucket existe, no listable). Sugiere infraestructura cloud asociada a la entidad.

Bucket existe pero está cerrado al público. Útil como pista de inventario cloud — en un escenario de takeover (entidad deja de pagar AWS), un atacante podría reclamar el nombre. Recomendación: documentar y monitorear.

Bucket S3 privado existe con nombre jose-test

Info

GET https://jose-test.s3.amazonaws.com retorna 403 AccessDenied (bucket existe, no listable). Sugiere infraestructura cloud asociada a la entidad.

Bucket existe pero está cerrado al público. Útil como pista de inventario cloud — en un escenario de takeover (entidad deja de pagar AWS), un atacante podría reclamar el nombre. Recomendación: documentar y monitorear.

Bucket GCS privado existe con nombre jose-test

Info

GET https://storage.googleapis.com/jose-test retorna 403 AccessDenied (bucket existe, no listable). Sugiere infraestructura cloud asociada a la entidad.

Bucket existe pero está cerrado al público. Útil como pista de inventario cloud — en un escenario de takeover (entidad deja de pagar AWS), un atacante podría reclamar el nombre. Recomendación: documentar y monitorear.

Bucket S3 privado existe con nombre san

Info

GET https://san.s3.amazonaws.com retorna 403 AccessDenied (bucket existe, no listable). Sugiere infraestructura cloud asociada a la entidad.

Bucket existe pero está cerrado al público. Útil como pista de inventario cloud — en un escenario de takeover (entidad deja de pagar AWS), un atacante podría reclamar el nombre. Recomendación: documentar y monitorear.

Bucket GCS privado existe con nombre san

Info

GET https://storage.googleapis.com/san retorna 403 AccessDenied (bucket existe, no listable). Sugiere infraestructura cloud asociada a la entidad.

Bucket existe pero está cerrado al público. Útil como pista de inventario cloud — en un escenario de takeover (entidad deja de pagar AWS), un atacante podría reclamar el nombre. Recomendación: documentar y monitorear.

Bucket S3 privado existe con nombre san-prod

Info

GET https://san-prod.s3.amazonaws.com retorna 403 AccessDenied (bucket existe, no listable). Sugiere infraestructura cloud asociada a la entidad.

Bucket existe pero está cerrado al público. Útil como pista de inventario cloud — en un escenario de takeover (entidad deja de pagar AWS), un atacante podría reclamar el nombre. Recomendación: documentar y monitorear.

Bucket S3 privado existe con nombre san-dev

Info

GET https://san-dev.s3.amazonaws.com retorna 403 AccessDenied (bucket existe, no listable). Sugiere infraestructura cloud asociada a la entidad.

Bucket existe pero está cerrado al público. Útil como pista de inventario cloud — en un escenario de takeover (entidad deja de pagar AWS), un atacante podría reclamar el nombre. Recomendación: documentar y monitorear.

Bucket GCS privado existe con nombre san-staging

Info

GET https://storage.googleapis.com/san-staging retorna 403 AccessDenied (bucket existe, no listable). Sugiere infraestructura cloud asociada a la entidad.

Bucket existe pero está cerrado al público. Útil como pista de inventario cloud — en un escenario de takeover (entidad deja de pagar AWS), un atacante podría reclamar el nombre. Recomendación: documentar y monitorear.

Bucket S3 privado existe con nombre san-backup

Info

GET https://san-backup.s3.amazonaws.com retorna 403 AccessDenied (bucket existe, no listable). Sugiere infraestructura cloud asociada a la entidad.

Bucket existe pero está cerrado al público. Útil como pista de inventario cloud — en un escenario de takeover (entidad deja de pagar AWS), un atacante podría reclamar el nombre. Recomendación: documentar y monitorear.

Bucket GCS privado existe con nombre san-backup

Info

GET https://storage.googleapis.com/san-backup retorna 403 AccessDenied (bucket existe, no listable). Sugiere infraestructura cloud asociada a la entidad.

Bucket existe pero está cerrado al público. Útil como pista de inventario cloud — en un escenario de takeover (entidad deja de pagar AWS), un atacante podría reclamar el nombre. Recomendación: documentar y monitorear.

Bucket S3 privado existe con nombre san-uploads

Info

GET https://san-uploads.s3.amazonaws.com retorna 403 AccessDenied (bucket existe, no listable). Sugiere infraestructura cloud asociada a la entidad.

Bucket existe pero está cerrado al público. Útil como pista de inventario cloud — en un escenario de takeover (entidad deja de pagar AWS), un atacante podría reclamar el nombre. Recomendación: documentar y monitorear.

Bucket S3 privado existe con nombre san-public

Info

GET https://san-public.s3.amazonaws.com retorna 403 AccessDenied (bucket existe, no listable). Sugiere infraestructura cloud asociada a la entidad.

Bucket existe pero está cerrado al público. Útil como pista de inventario cloud — en un escenario de takeover (entidad deja de pagar AWS), un atacante podría reclamar el nombre. Recomendación: documentar y monitorear.

Bucket S3 privado existe con nombre san-data

Info

GET https://san-data.s3.amazonaws.com retorna 403 AccessDenied (bucket existe, no listable). Sugiere infraestructura cloud asociada a la entidad.

Bucket existe pero está cerrado al público. Útil como pista de inventario cloud — en un escenario de takeover (entidad deja de pagar AWS), un atacante podría reclamar el nombre. Recomendación: documentar y monitorear.

Bucket S3 privado existe con nombre san-media

Info

GET https://san-media.s3.amazonaws.com retorna 403 AccessDenied (bucket existe, no listable). Sugiere infraestructura cloud asociada a la entidad.

Bucket existe pero está cerrado al público. Útil como pista de inventario cloud — en un escenario de takeover (entidad deja de pagar AWS), un atacante podría reclamar el nombre. Recomendación: documentar y monitorear.

Bucket S3 privado existe con nombre san-app

Info

GET https://san-app.s3.amazonaws.com retorna 403 AccessDenied (bucket existe, no listable). Sugiere infraestructura cloud asociada a la entidad.

Bucket existe pero está cerrado al público. Útil como pista de inventario cloud — en un escenario de takeover (entidad deja de pagar AWS), un atacante podría reclamar el nombre. Recomendación: documentar y monitorear.

Bucket S3 privado existe con nombre san-web

Info

GET https://san-web.s3.amazonaws.com retorna 403 AccessDenied (bucket existe, no listable). Sugiere infraestructura cloud asociada a la entidad.

Bucket existe pero está cerrado al público. Útil como pista de inventario cloud — en un escenario de takeover (entidad deja de pagar AWS), un atacante podría reclamar el nombre. Recomendación: documentar y monitorear.

Bucket S3 privado existe con nombre san-test

Info

GET https://san-test.s3.amazonaws.com retorna 403 AccessDenied (bucket existe, no listable). Sugiere infraestructura cloud asociada a la entidad.

Bucket existe pero está cerrado al público. Útil como pista de inventario cloud — en un escenario de takeover (entidad deja de pagar AWS), un atacante podría reclamar el nombre. Recomendación: documentar y monitorear.

Bucket GCS privado existe con nombre san-test

Info

GET https://storage.googleapis.com/san-test retorna 403 AccessDenied (bucket existe, no listable). Sugiere infraestructura cloud asociada a la entidad.

Bucket existe pero está cerrado al público. Útil como pista de inventario cloud — en un escenario de takeover (entidad deja de pagar AWS), un atacante podría reclamar el nombre. Recomendación: documentar y monitorear.

Bucket S3 privado existe con nombre alcaldia

Info

GET https://alcaldia.s3.amazonaws.com retorna 403 AccessDenied (bucket existe, no listable). Sugiere infraestructura cloud asociada a la entidad.

Bucket existe pero está cerrado al público. Útil como pista de inventario cloud — en un escenario de takeover (entidad deja de pagar AWS), un atacante podría reclamar el nombre. Recomendación: documentar y monitorear.

Bucket GCS privado existe con nombre alcaldia

Info

GET https://storage.googleapis.com/alcaldia retorna 403 AccessDenied (bucket existe, no listable). Sugiere infraestructura cloud asociada a la entidad.

Bucket existe pero está cerrado al público. Útil como pista de inventario cloud — en un escenario de takeover (entidad deja de pagar AWS), un atacante podría reclamar el nombre. Recomendación: documentar y monitorear.

DMARC en modo none (no reject)

Alta

_dmarc.sanjosedelguaviare-guaviare.gov.co publica politica permisiva.

Politica none no rechaza correos no autenticados. Atacante puede suplantar @sanjosedelguaviare-guaviare.gov.co contra ciudadanos del territorio.

Datos del portal hospedados fuera de Colombia

Alta

Apex resuelve a 35.241.6.138 (rango caracteristico de proveedor extranjero — Cloudflare/AWS/Azure US).

Ley 1581/2012 art. 26 exige consentimiento o nivel de proteccion adecuado para transferencia internacional. EE.UU. no esta en la lista de paises adecuados de la SIC sin clausulas contractuales tipo.

Hallazgo agrupado por similitud semántica (196 findings, 196 entidades)

Alta

ML clustering identificó 196 findings similares afectando 196 entidades distintas. Categoría dominante: datos_personales. Severidades: {'alta': 196}. Muestra: DMARC en modo permisivo (quarantine en lugar de reject) | DMARC en modo quarantine (no reject) | DMARC en modo quarantine (no reject).

Findings agrupados por similitud semántica reflejan una vulnerabilidad común (causa raíz compartida): mismo proveedor, misma configuración por defecto, o mismo template institucional sin endurecer. Resolver el problema en una entidad sin coordinar con las demás deja el problema activo en N-1 entidades.

Hallazgo agrupado por similitud semántica (17 findings, 17 entidades)

Alta

ML clustering identificó 17 findings similares afectando 17 entidades distintas. Categoría dominante: datos_personales. Severidades: {'alta': 17}. Muestra: Datos del portal hospedados fuera de Colombia | Datos del portal hospedados fuera de Colombia | Datos del portal hospedados fuera de Colombia.

Findings agrupados por similitud semántica reflejan una vulnerabilidad común (causa raíz compartida): mismo proveedor, misma configuración por defecto, o mismo template institucional sin endurecer. Resolver el problema en una entidad sin coordinar con las demás deja el problema activo en N-1 entidades.

Sin canal estandar de divulgacion responsable

Media

Ninguno de los 2 subdominios alcanzables publica /.well-known/security.txt (RFC 9116).

Un investigador que descubra una vulnerabilidad no tiene canal estandarizado para reportar antes de publicar. Crisis va a prensa antes que a la entidad.

Headers exponen versiones de stack en 2 hosts

Media

Ejemplos: sanjosedelguaviare-guaviare.gov.co: X-Powered-By=N/A; www.sanjosedelguaviare-guaviare.gov.co: X-Powered-By=N/A.

Cada header de version acelera la explotacion de vulnerabilidades especificas. Buena practica: ocultar Server, X-Powered-By, X-Generator en respuestas externas.

Activos públicos (2)

sanjosedelguaviare-guaviare.gov.co

portal principal

7/8
HTTPS
Certificado
HSTS
CSP
X-Frame-Options
X-Content-Type
Referrer-Policy
security.txt

Server: nginx

Tech: Nginx. Title: Sede Electrónica Alcaldía de San José del Guaviare

Observado: 2026-05-02

www.sanjosedelguaviare-guaviare.gov.co

portal principal

7/8
HTTPS
Certificado
HSTS
CSP
X-Frame-Options
X-Content-Type
Referrer-Policy
security.txt

Server: nginx

Tech: Nginx. Title: Sede Electrónica Alcaldía de San José del Guaviare

Observado: 2026-05-02