Skip to content

Latest commit

 

History

History
224 lines (149 loc) · 6.22 KB

File metadata and controls

224 lines (149 loc) · 6.22 KB

JWTelescope

🇺🇸 English | 🇪🇸 Español

jwtelescope

🔭 JWTelescope es una herramienta CLI avanzada para decodificar, inspeccionar y realizar análisis de seguridad sobre JSON Web Tokens (JWT). Está diseñada para bug bounty hunters, pentesters y desarrolladores que buscan obtener información rápida sobre la estructura de los JWT, sus claims y configuraciones incorrectas comunes.

La herramienta se centra en el análisis de solo lectura y en la evaluación de riesgos, lo que la hace segura para usar durante las fases de reconocimiento y triage.


✨ Características

  • Decodificación del header y payload del JWT (Base64URL)

  • Salida en terminal limpia, con colores y formato legible

  • Detección automática de problemas de seguridad comunes en JWT

  • Sistema de puntuación de riesgo: Bajo / Medio / Alto

  • Conversión de timestamps a formato legible (exp, iat, nbf)

  • Detección de patrones peligrosos:

    • alg: none
    • exp ausente o expirado
    • Tokens con una validez excesivamente larga
    • aud débil o genérico
    • Valores kid sospechosos (path traversal, predictibilidad)
    • Riesgo de confusión de algoritmo simétrico (HS256)
    • Claims personalizados peligrosos (admin, role, scope, etc.)
    • URLs externas en jku / x5u
  • Salida JSON estructurada para reportes y automatización

  • Modos compatibles con pipes (--raw, --stdin)

  • Dependencias mínimas (solo librería estándar de Python)


🧠 Casos de uso

  • Reconocimiento en bug bounty
  • Detección de malas configuraciones en JWT
  • Triage de tokens durante pruebas de APIs
  • Reportes de seguridad (HackerOne / Bugcrowd)
  • Aprendizaje y comprensión interna de JWT

📦 Instalación

Clona el repositorio:

git clone https://github.com/urdev4ever/jwtelescope.git
cd jwtelescope

Haz el script ejecutable (opcional):

chmod +x jwtelescope.py

Requisitos:

  • Python 3.8+
  • No se requieren librerías externas

🚀 Uso

jwtelescopehelp

Leer un JWT directamente

./jwtelescope.py -r "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."

Leer desde un archivo

./jwtelescope.py -f token.jwt

Leer desde stdin (piping)

echo "JWT_TOKEN" | ./jwtelescope.py --stdin

Salida JSON cruda (sin colores ni análisis)

./jwtelescope.py -r "JWT_TOKEN" --raw

Mostrar solo advertencias de seguridad

./jwtelescope.py -r "JWT_TOKEN" --only-warnings

Mostrar puntuación de riesgo

./jwtelescope.py -r "JWT_TOKEN" --score

Generar reporte JSON estructurado

./jwtelescope.py -r "JWT_TOKEN" --json > report.json
[ ! ] Nota: solo puedes usar `./jwtelescope.py` si lo hiciste ejecutable; de lo contrario deberás usar:
python jwtelescope.py 

🧪 Ejemplo de salida (usando un JWT autorizado de anytask.com)

  • Header decodificado

    image (31)
  • Payload decodificado

    image (32)
  • Detalles de la firma

    image
  • Metadatos del token (longitud, algoritmo, key ID)

    image
  • Resumen de claims comunes

    image
  • Hallazgos de seguridad con severidad

    image
  • Puntuación de riesgo general

    image

⚠️ Lógica de puntuación de riesgo (simplificada)

Problema Severidad
alg: none Crítica
exp ausente Alta
Token expirado Alta
Expiración > 10 años Alta
aud débil Media
Riesgo de confusión HS256 Media
Claims personalizados peligrosos Media
nbf ausente Baja

Niveles finales de riesgo:

  • Bajo: Mayormente informativo
  • Medio: Posible debilidad de seguridad
  • Alto: Mala configuración probablemente explotable

📄 Estructura de salida JSON

{
  "metadata": {},
  "token_info": {},
  "header": {},
  "payload": {},
  "security_analysis": {},
  "common_claims": {}
}

Diseñada para una integración sencilla en scripts, pipelines de CI o reportes.


🔒 Filosofía de seguridad

JWTelescope:

  • NO modifica tokens
  • NO fuerza secretos
  • NO evade autenticación

Es una herramienta de análisis pasivo, pensada para pruebas de seguridad legítimas.


🚧 Descargo de responsabilidad

Esta herramienta está destinada únicamente a fines educativos y pruebas de seguridad autorizadas. Prueba siempre contra sistemas que poseas o para los que tengas permiso explícito.


⭐ Contribuir

Las pull requests son bienvenidas si:

  • Mejoran la lógica de detección de seguridad en JWT o agregan nuevos patrones de mala configuración
  • Mejoran la usabilidad de la CLI, la claridad del output o los formatos de reporte (JSON / flujos con piping)
  • Mantienen la filosofía de análisis pasivo y solo lectura de la herramienta y conservan las dependencias mínimas

Hecho con <3 por URDev