
Набор инструментов для сканирования и эксплуатации уязвимостей FreeSWITCH CVE-2021-37624 и CVE-2021-41157.
Инструмент для сканирования и эксплуатации уязвимостей FreeSWITCH, специфичных для CVE-2021-37624 и CVE-2021-41157.
Статья по теме: https://0xinfection.github.io/posts/analyzing-freeswitch-vulns/
Справка по инструменту выглядит следующим образом:
$ ./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")
По умолчанию инструмент проверяет обе уязвимости. Если вы хотите протестировать конкретную уязвимость, используйте флаг -cve.
Пример:
./pewswitch -cve 'cve-2021-37624' -exts 1000 freeserver.voip.com
Для указания расширений можно выбрать один из следующих способов:
Передать список расширений через запятую с помощью аргумента -exts.
Пример:
./pewswitch -exts 1000,1001 freeserver.voip.com freeserver1.voip.com:5060
Это заставит инструмент проверять все комбинации пар «расширение–хост». Таким образом, конечными целями в приведённой выше команде будут: [email protected], [email protected], [email protected]:5060 и [email protected]:5060.
Указать файл, содержащий расширения. Обратите внимание: при использовании файла необходимо указывать как пользователя, так и хост. Это особенно полезно, когда требуется проверить определённые расширения на определённых серверах. Пример такого файла (например, extensions-sample.txt) может выглядеть так:
[email protected]
[email protected]:5060
[email protected]:5660
...
Пример:
./pewswitch -ext-file extensions-sample.txt
Обратите внимание: если порт не указан вместе с хостом, по умолчанию будет использоваться порт 5060.
Инструмент может выдавать результат в двух форматах: JSON и CSV. По умолчанию используется JSON. Формат вывода можно изменить с помощью флага -out-format.
Пример:
./pewswitch -exts 1000 -out-format csv freeserver.voip.com
Образцы отчётов в форматах json и csv можно найти в каталоге ./pewswitch-results/.
Каталог для вывода результатов можно изменить с помощью аргумента -out-dir. По умолчанию используется каталог ./pewswitch-results/, который создаётся в текущем рабочем каталоге при запуске инструмента.
Пример:
./pewswitch -ext-file extensions-sample.txt -out-dir /tmp
В инструменте есть несколько дополнительных настроек, связанных с пакетами, которые позволяют настраивать запросы во время проверки/эксплуатации уязвимости.
Если сервер оказывается уязвимым к CVE-2021-37624, по умолчанию на целевое расширение отправляется тестовое сообщение от имени FBI с номером 022-324-3000. Содержимое сообщения выглядит так: FBI here. Open your door!
Это поведение можно изменить с помощью аргумента -msg-file. Он принимает CSV-файл, содержащий имя отправителя, номер телефона и, наконец, текст сообщения. Пример такого файла: 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!
Пример:
./pewswitch -cve 'cve-2021-27624' -msg-file messages-sample.csv -exts 1000 freeserver.voip.com
По умолчанию инструмент отправляет запросы SUBSCRIBE с заголовком Expires, установленным на 60 секунд. В течение этого же времени инструмент продолжает прослушивать сообщения NOTIFY от сервера. Значение можно изменить с помощью флага -expires.
Пример:
./pewswitch -expires 600 -ext-file extensions-sample.txt
Инструмент также отслеживает сообщения NOTIFY, подписываясь на все события. Список всех событий приведён ниже:
talkholdconferenceas-feature-eventdialogline-seizecall-infoslainclude-session-descriptionpresencepresence.winfomessage-summaryreferЭто поведение можно изменить с помощью флага -events, который принимает список событий через запятую. Пример:
./pewswitch -cve 'cve-2021-41157' -events message-summary,presence -exts 1000,1002 freeserver.voip.com
Вы можете воспользоваться готовыми бинарными сборками из раздела Releases. Или, если вы предпочитаете компилировать код самостоятельно, вам понадобится Go версии выше 1.13. Чтобы собрать инструмент, выполните go build — это создаст исполняемый файл.
Инструмент распространяется под лицензией MIT. Можете делать с ним всё, что пожелаете. :)
Текущая версия PewSWITCH — v0.1.
Новые запросы и функции? Смело создавайте issue или pull request.
Если есть что обсудить, можете связаться со мной через Twitter или email (указаны в моём профиле).
Создано с ♡ Пинаки.