Directory traversal in Argus Surveillance DVR (CVE-2018-13388)
Argus Surveillance DVR 4.0.0.0 expone un servidor web (habitualmente en el 8080) con un endpoint WEBACCOUNT.CGI que no sanea el parámetro RESULTPAGE. Con una ristra de ..%2F se sale del directorio web y se lee cualquier fichero del disco con los privilegios del servicio (CVE-2018-13388): es un directory traversal clásico, sin autenticación.
curl "http://<ip>:8080/WEBACCOUNT.CGI?OkBtn=++Ok++&RESULTPAGE=..%2F..%2F..%2F..%2F..%2F..%2F..%2FWindows%2Fsystem.ini&USEREDIRECT=1&WEBACCOUNTID=&WEBACCOUNTPASSWORD="El valor real no es system.ini, sino ficheros que permitan pivotar: una clave SSH privada (/Users/<user>/.ssh/id_rsa) si hay SSH, ficheros de configuración con credenciales (secretos en el código), o el propio DVRParams.ini de Argus, que guarda la contraseña del administrador con un cifrado reversible.
Matices. Es una lectura, no una ejecución: encadena con lo que se encuentre (SSH, credenciales). Al ser Windows, conviene enumerar antes qué usuarios existen (la propia interfaz de Argus los filtra) para saber qué rutas de perfil leer. El número de ..%2F debe ser suficiente para llegar a la raíz del disco.
Cómo detectarlo. El ataque vive en el log de acceso del servidor web: peticiones no autenticadas a WEBACCOUNT.CGI con el parámetro RESULTPAGE conteniendo ..%2F repetido y rutas absolutas de Windows (Windows/system.ini, /.ssh/id_rsa, DVRParams.ini). Un mismo origen probando distintas profundidades de ..%2F o leyendo varios ficheros de sistema en segundos delata el barrido, y cualquier WAF marca el traversal codificado. La lectura de DVRParams.ini o de claves privadas es la señal de mayor gravedad.
Defensa. Actualizar o retirar Argus Surveillance DVR (software sin soporte); no exponer su panel a la red; y, como principio, normalizar y validar del lado servidor cualquier ruta que provenga de un parámetro antes de abrir el fichero.
Máquinas donde se aplica
- DVR4Proving Grounds Practice