
Un toolkit di scansione e sfruttamento specifico per FreeSWITCH per le vulnerabilità CVE-2021-37624 e CVE-2021-41157.
Un toolkit di scansione e sfruttamento specifico per FreeSWITCH per CVE-2021-37624 e CVE-2021-41157.
Blog correlato: https://0xinfection.github.io/posts/analyzing-freeswitch-vulns/
L'help del tool è il seguente:
$ ./pewswitch --help
___ . ____ _ __ __
/ _ \___|\ __/ __/| __(_) /_____/ /
/ ___/ -_) |/|/ /\ \| |/|/ / / __/ __/ _ \
/_/ \__/|__,__/___/|__,__/_/\__/\__/_//_/ v0.1
"where we pew pew pew freeswitch"
Usage of ./pewswitch:
-cve string
Specify a specific CVE to scan. Both vulns are tested by default.
-delay int
Delay in seconds between subsequent requests. (default 0)
-events string
Comma-separated list of events to be subscribed to. All events are monitored by default.
-expires int
Maximum value of the 'Expires' header for SUBSCRIBE requests. (default 60)
-ext-file string
Specify a file containing extensions instead of '-exts'.
-exts string
Comma separated list of extensions to scan.
-msg-file string
Specify a CSV file containing messages to be sent (if found vulnerable to CVE-2021-37624).
-out-dir string
Output directory to write the results to. (default "./pewswitch-results/")
-out-format string
Output format type of the results. Can be either 'json' or 'csv'. (default "json")
-threads int
Number of threads to use while scanning. (default 2)
-user-agent string
Custom user-agent string to use. (default "pewswitch/0.1")
Per impostazione predefinita lo strumento esegue la scansione per entrambe le vulnerabilità. Se si desidera testare una vulnerabilità specifica, è possibile utilizzare il flag -cve.
Esempio:
./pewswitch -cve 'cve-2021-37624' -exts 1000 freeserver.voip.com
Per specificare le estensioni, è possibile scegliere uno dei seguenti metodi:
Specificare un elenco di estensioni separate da virgole tramite l'argomento -exts.
Esempio:
./pewswitch -exts 1000,1001 freeserver.voip.com freeserver1.voip.com:5060
In questo modo lo strumento testerà le combinazioni di coppie per ogni estensione con ogni host. Quindi i target finali testati nel comando sopra sono: [email protected], [email protected], [email protected]:5060 e [email protected]:5060.
Specificare un file contenente le estensioni. Nota: quando si utilizza un file, è necessario specificare sia l'utente che l'host. Ciò è particolarmente utile quando si devono testare estensioni specifiche su server specifici. Un esempio di tale file (ad es. extensions-sample.txt) potrebbe assomigliare a questo:
[email protected]
[email protected]:5060
[email protected]:5660
...
Esempio:
./pewswitch -ext-file extensions-sample.txt
Nota: se non viene specificata alcuna porta con l'host, la porta 5060 verrà utilizzata come porta di destinazione predefinita.
Lo strumento può produrre output in 2 formati diversi, JSON e CSV. Il formato di output predefinito è JSON. Il formato di output può essere modificato utilizzando l'opzione -out-format.
Esempio:
./pewswitch -exts 1000 -out-format csv freeserver.voip.com
È possibile trovare esempi di report in formato json e csv nella directory ./pewswitch-results/.
La directory di output di destinazione può essere modificata utilizzando l'argomento -out-dir. Per impostazione predefinita, la directory di output è ./pewswitch-results/ che viene creata nella directory di lavoro corrente durante l'esecuzione dello strumento.
Esempio:
./pewswitch -ext-file extensions-sample.txt -out-dir /tmp
Ci sono alcune impostazioni aggiuntive specifiche dei pacchetti nello strumento che consentono la personalizzazione delle richieste durante la validazione/sfruttamento della vulnerabilità.
Se un server viene trovato vulnerabile a CVE-2021-37624, per impostazione predefinita viene inviato all'estensione target un messaggio di esempio dal nome FBI e dal numero 022-324-3000. Il contenuto del messaggio è: FBI here. Open your door!
Questo comportamento può essere modificato utilizzando l'argomento -msg-file. Questo accetta un file CSV contenente il nome del mittente, il numero di telefono e infine il contenuto del messaggio da inviare. Un esempio di tale file è messages-sample.csv.
sender_name,sender_phone,message
FBI,022-324-3000,FBI here. Open your door!
0xInfection,000-000-0000,Hi. Just confirming the vulnerability.
SPAMMY SALESMAN,BAD-GUY-9999,BUY MY STUFF!
Esempio:
./pewswitch -cve 'cve-2021-27624' -msg-file messages-sample.csv -exts 1000 freeserver.voip.com
Per impostazione predefinita, lo strumento invia richieste SUBSCRIBE con un header Expires impostato a 60 secondi. Per lo stesso intervallo di tempo lo strumento continuerà ad ascoltare i messaggi NOTIFY dal server. Il valore può essere modificato utilizzando il flag -expires.
Esempio:
./pewswitch -expires 600 -ext-file extensions-sample.txt
Lo strumento monitora anche i messaggi NOTIFY sottoscrivendo tutti gli eventi. Di seguito è riportato un elenco di tutti gli eventi:
talkholdconferenceas-feature-eventdialogline-seizecall-infoslainclude-session-descriptionpresencepresence.winfomessage-summaryreferQuesto comportamento può essere modificato con il flag -events che accetta un elenco separato da virgole di eventi da monitorare. Esempio:
./pewswitch -cve 'cve-2021-41157' -events message-summary,presence -exts 1000,1002 freeserver.voip.com
È possibile utilizzare i binari precompilati dalla sezione Releases. Oppure, se si preferisce compilare il codice da soli, è necessario Go > 1.13. Per compilare lo strumento, è possibile eseguire go build che fornirà un binario da eseguire.
Lo strumento è disponibile sotto licenza MIT. Sentiti libero di farne ciò che vuoi. :)
Attualmente, PewSWITCH è alla versione v0.1.
Nuove richieste e funzionalità? Sentiti libero di creare un issue o una pull request.
Se hai qualcosa da discutere, puoi contattarmi tramite Twitter/email sul mio profilo.
Creato con ♡ da Pinaki.