Skip to content
KitploitKITPLOIT
ツールエクスプロイトブログ
Log in
提出
ツールエクスプロイトブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

フィードお問い合わせプライバシー© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
ツール/GitHubGitHub/abraxas/pfsense-carp-vhid
脆弱性分析エクスプロイトウェブアプリケーション悪用ポストエクスプロイトペネトレーションテストコマンド&コントロールレッドチーミングラボと実践
GitHubabraxas/pfsense-carp-vhid

pfsense-carp-vhid

pfSense CE 2.9.0-DEVELOPMENT - 高 - リモート - RCE - CARP VHID の残存

リポジトリを見る
1188日前未レビュー

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

Abraxas Labs - pfsense-carp-vhid

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  pfsense-carp-vhid

解説記事: https://abraxaslabs.tech/research/pfsense-carp-vhid

pfsense-carp-vhid

クラス: RCE 到達範囲: リモート

pfSense CE 2.9.0-DEVELOPMENT (9363ac5) - pfsense.org

仮想 IP の編集では、POST から受け取った CARP VHID を 1〜255 の範囲チェックなしで保存します。Form_Select の選択肢は HTML 上の制約にすぎません。CARP の適用処理では VHID を escapeshellarg で処理します。一方、スタックされた IP エイリアスの適用処理では vhid {$carpvip['vhid']} を escapeshellarg の外側で補間します。CARP ステータスでは、同じ保存済み VHID をダブルクォートで囲んだ grep パイプラインに補間します。セミコロンはクォートされたままですが、コマンド置換は /bin/sh -c 配下で依然として実行されます。必要な権限は VIP の編集と適用であり、Diagnostics: Command ではありません。

IDCVE 未割当
クラスRCE
到達範囲リモート(認証済み WebGUI)
CWECWE-78
CVSSHigh: 8.8 CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
製品pfSense CE
影響を受けるバージョン2.9.0-DEVELOPMENT (9363ac5b8651a1c7a333180425ce7719070f95f9) CARP VHID
認証VIP の編集と適用が可能な WebGUI セッション(ステータス/ウィジェットは後段のトリガー)
ライセンスGNU Affero GPL v3.0
ラボ127.0.0.1 のみ

公開 master の 9363ac5 を固定して検証しました。ラボは、固定した interface_carp_configure、スタックされた ipalias の mwexec、ステータスの exec を組み合わせた PHP ガジェットです。ループバック 127.0.0.1:18830 を使用します。

攻撃者が実行できること

手法シンク権限
整数でない VHID を持つ carp VIP を POST し、その _vip{uniqid} 親に対してスタックされた IP エイリアスを適用するmwexec ifconfig ... alias {$gateway} {$vhid} (interfaces.inc:3238)完全性(ラボで実証): root シェル。ラボでは ipalias-unescaped が証跡を書き込みました。同じ VHID の CARP 適用では何も書き込まれませんでした(carp-escaped=yes)。
同じ保存済み VHID を使用し、status_carp.php を GET するか carp_status.widget.php をレンダリングするexec grep パイプライン (pfsense-utils.inc:794)完全性(ラボで実証): ダブルクォート内のコマンド置換が実行され、証跡を書き込みました(status-sink=yes、status-subst=yes)。セミコロンはクォートされたままでした。ウィジェットのトリガーは別の GUI セッションでも可能です。
同じ root シェルホストのファイルシステム偵察(推定): config.xml、鍵。
root シェル、または壊れた ifconfigCARP / エイリアスデバイス可用性(推定): インターフェース / CARP / フィルタの妨害。

ラボで実証済み vs 推定: carp-escaped、ipalias-unescaped の証跡、ステータスのコマンド置換の証跡はラボで実証済みです。ファイルシステムの偵察とフィルタの妨害は、root 権限の PHP-FPM から推定したものです。

必要な権限: page-firewall-virtualipaddress-edit(保存)と page-firewall-virtualipaddresses(適用)。ステータスシンク: page-status-carp、または CARP ウィジェットを含む任意のダッシュボード。POST に対する CSRF。

閉じたままの隣接領域

領域ラボ
CARP 適用そのものVHID に対する escapeshellarg、carp-escaped=yes
CARP パスワード / advbase / advskew / サブネットis_ipaddr / エスケープ済み
未認証閉じている
HA 認証情報なしでの同一オブジェクトの xmlrpc 適用SA-26_22 スキップリスト
Diagnostics: Command別途付与されない限り閉じたまま

ラボ

cd lab
./run.sh

ループバック 127.0.0.1:18830。Compose プロジェクト pfsense-carp-vhid。イメージタグ pfsense-carp-vhid:2.9.0-dev。ウィットネス PFSENSE-CARP-VHID-WITNESS。最終行:

SUCCESS PFSENSE-CARP-VHID carp-escaped=yes ipalias-unescaped=yes status-sink=yes PFSENSE-CARP-VHID-WITNESS

修正

保存時に VHID を 1〜255 の整数範囲に制限する。スタックされた IP Alias の適用時とステータス grep 時に、CARP の適用がすでに行っているのと同じ方法で VHID を escapeshellarg する。

参考資料

  • github.com/pfsense/pfsense 9363ac5b8651a1c7a333180425ce7719070f95f9
  • firewall_virtual_ip.inc saveVIP
  • interfaces.inc スタックされた ipalias の mwexec
  • pfsense-utils.inc CARP ステータス grep
  • CWE-78
ツールをダウンロード