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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
pfsense-api-unix-sock-noauth — pfSense Plus MIM API toolkit b4acd7ca - 高 - ローカル - 権限残留 - unix sock enroll no JWT | Kitploit
ツール/GitHubGitHub/abraxas/pfsense-api-unix-sock-noauth
特権昇格脆弱性分析エクスプロイト情報収集ネットワークセキュリティペネトレーションテスト認証ラボと実践

人気

すべて見る →

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

すべてのツールを探索

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

すべてのツールを見る →
共有
GitHub
abraxas/pfsense-api-unix-sock-noauth

pfsense-api-unix-sock-noauth

pfSense Plus MIM API toolkit b4acd7ca - 高 - ローカル - 権限残留 - unix sock enroll no JWT

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

Abraxas Labs - pfsense-api-unix-sock-noauth

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  pfsense-api-unix-sock-noauth

pfsense-api-unix-sock-noauth

クラス: 権限の残留 到達範囲: ローカル

pfSense Plus MIM API b4acd7ca - Netgate

github.com/Netgate/pfsense-api は、pfSense Plus Nexus Multi-instance Management 向けの公開 OpenAPI と生成された Python です。これは CE REST パッケージではありません。公式の登録サンプルは、Bearer JWT を使用して HTTPS :8443 にログインし、その後 POSIX スクリプトを各ファイアウォールに SSH で送り込みます。そのスクリプトは Authorization なしで /var/run/pfnet-controller.sock と通信します。

curl --unix-socket /var/run/pfnet-controller.sock -H "Content-Type: application/json" -d "{controller JSON}" http://unix/api/mim/controllers
curl --unix-socket /var/run/pfnet-controller.sock http://unix/api/mim/device/identity

非推奨のフォールバック /api/system/controller と /api/system/mim/devid は同一である。Bearer は不要。HTTPS ログインは依然として JWT を発行する。そのトークンはオンデバイスの sock には適用されない。これは :8443 と mim_* グループとは別の信頼境界である。

Nexus MIM シリーズの Part 3。G1 / G2 がボックス上に展開された後、この sock がローカルプレーンとなる。

sock に connect(2) できるローカルプロセスは、JWT なしでコントローラを登録し、デバイスアイデンティティをダンプできる。Plus は実行されていない。実際の sock DAC は不明。

IDCVE 未割当
クラス権限の残存
到達範囲ローカル (/var/run/pfnet-controller.sock への connect(2))
CWECWE-306
CVSSHigh: 7.8 CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H (sock モードが別のローカル uid の接続を許可する場合)。正直に言えば: DAC 不明、Plus 未実行。
製品Netgate/pfsense-api (Plus Nexus MIM ツールキット)
影響対象公開 main b4acd7ca21dbca739a530403a1f62a7440f7726f (2026-05-25)
認証公式 unix-socket enroll curl にはなし
ライセンスGNU Affero GPL v3.0
ラボ127.0.0.1:19121 のみ。Unix HTTP モック。Plus イメージなし。

攻撃者ができること

アクターは、/var/run/pfnet-controller.sock に connect(2) できる pfSense デバイス上の任意のプロセスである。この例ではリモート TCP ではない (curl --unix-socket のみ)。HTTPS :8443 の JWT と mim_* グループはこの fd には適用されない。

ラボで実証済み (公開された enroll プロトコルのモック)

メソッドシンク権限
Authorization なしの公式 device_script POSTPOST http://unix/api/mim/controllersIntegrity: モックが enroll JSON を受け入れた。ヒットログ authorization_present=false。
Authorization なしの公式 device_script GETGET http://unix/api/mim/device/identityRecon: モックが PFSENSE-API-UNIX-SOCK-NOAUTH-WITNESS を含む DeviceIdentity 形式の JSON を返した。
Authorization: Bearer lab-jwt 付きの同じ GET同じ identity パスラボ対照: 401、witness はボディに含まれない。存在と不在を区別する。Plus の結果ではない。

稼働中の Plus デーモンでの推測 (バイナリはテスト対象外)

これらは公式サンプルと mim タグがデバイス上に配置する OpenAPI オペレーションと同じものである。プロトコルとしてのみ実証済みであり、Plus の 200 としてではない。

メソッドシンク権限
攻撃者の ControllerIdentity (key、vpn_pubkey、vpn_listenaddr、vpn_netkey、cert) による POST /mim/controllers (フォールバック POST /api/system/controller)SetControllerIntegrity: 敵対的コントローラを登録する。仕様: デバイスは「10 秒ごとに接続要求を発行し続ける」(攻撃者への Netgard VPN)。
GET /mim/device/identity (フォールバック GET /api/system/mim/devid)GetDeviceIdentityRecon: デバイスの Noise/VPN 公開鍵、address、controller_add curl テキスト。
GET /mim/controllersGetControllersRecon: コントローラ一覧とデバイス情報 (ControllerInfo.noise_secret、鍵)。
GET /mim/controllers/id/{key}GetMIMControllerRecon: 1 件のコントローラレコード。
DELETE /mim/controllers/id/{key}DeleteMIMControllerIntegrity / availability: 実際のコントローラを登録解除する (key hex または base64-URL)。
攻撃者の privkey / pubkey による POST /mim/device/pubkeySetDevicePublicKey (DevicePublicKeyOption に privkey が含まれる)Integrity: デバイスの ED25519 アイデンティティを置き換える。コントローラのハンドシェイクはその後攻撃者の鍵を信頼する。

これ自体がホストの root シェルを付与するものではない。MIM プレーン、すなわちデバイスがコントローラとして信頼する相手、および pubkey POST が受け入れられた場合のデバイス Noise 秘密鍵を付与する。

必要条件: ローカルの connect(2) から /var/run/pfnet-controller.sock への接続。DAC(モード、オーナー、グループ、SO_PEERCRED)は公開クライアントツリーには含まれていない。デーモンが 0600 root でバインドしている場合、これはすでに root 権限のローカル(/var/run を参照できるヘルパー、パッケージ、またはエスケープのための confused deputy)である。ソケットが別の uid から到達可能な場合、スコアリングどおり CVSS 7.8。

閉じたままの隣接サーフェス

  • Nexus HTTPS :8443 上の /mim/controllers への未認証リモート TCP。このポートは User Manager JWT として文書化されている。この残存物は unix fd である。
  • HTTPS POST /login は依然として Bearer JWT を発行する。AuthenticatedClient は依然としてそれを CONTROLLER_URL+"/api" に送信する。
  • 生成されたライブラリのデフォルトは verify_ssl=True。パスパラメータは ../ をパーセントエンコードする。
  • 755 個の全オペレーションにおける OpenAPI security: MISSING はスキーマのギャップであり、未認証 HTTPS スキップが証明されたわけではない。
  • このラボは unix HTTP モックである。Plus バイナリがリクエストを受け入れたことを証明するものではない。
  • スーパーユーザー JWT 上の意図された管理者 Diagnostics php/shell。この残存物ではない。

同じピン、リモート登録プレーン: pfsense-api-enroll-json-ssh および pfsense-api-enroll-autoadd。シリーズマップ: pfsense-api-nexus-mim。

発見の経緯

Netgate/pfsense-api b4acd7ca21dbca739a530403a1f62a7440f7726f をピンし、公式の登録ループを読んだ: login、GET /mim/controller/identity、文字列化、unix-socket POST/GET の SSH exec、POST /mim/devices。HTTPS は AuthenticatedClient(token=...) を使用する。sock の curl は使用しない。

誤った方向: 欠落した securitySchemes を未認証 HTTPS として扱う(login にも欠落している。例は常に Bearer が最初)。sock が world-writable であると仮定する(モードはこのリポジトリにはない)。Plus 200 を主張する。ここで証明された残存物は公開された登録プロトコルである。

お芝居: リバースシェル。オラクルは公式の curl 形状に加え、identity ボディ内の証人、そして Bearer 401 コントロールである。

ラボ

python3 pfsense-api-unix-sock-noauth-Abraxas-Labs.py

または

cd lab
./run.sh

Loopback のみ: 127.0.0.1:19121。Compose プロジェクト pfsense-api-unix-sock-noauth。/var/run/pfnet-controller.sock で unix HTTP をモック。Witness PFSENSE-API-UNIX-SOCK-NOAUTH-WITNESS。Docker unix-socket モック。Plus イメージなし。

期待される最終行:

SUCCESS PFSENSE-API-UNIX-SOCK-NOAUTH auth-absent=yes identity-witness=yes bearer-401=yes PFSENSE-API-UNIX-SOCK-NOAUTH-WITNESS

修正

/var/run/pfnet-controller.sock でデバイス JWT または SO_PEERCRED を要求します。ソケットを 0600 root でバインドします。認証されていない unix ピアからの POST /mim/controllers、POST /mim/device/pubkey、または identity GET を許可しないでください。

参考資料

  • github.com/Netgate/pfsense-api b4acd7ca21dbca739a530403a1f62a7440f7726f
  • example-add-devices.py device_script (unix curls、Authorization なし)
  • pfapi_openapi.yml /mim/controllers、/mim/device/identity、/mim/device/pubkey
  • シリーズ: pfsense-api-nexus-mim
  • リモートプレーン: pfsense-api-enroll-json-ssh · pfsense-api-enroll-autoadd
  • CWE-306

ライセンス

GNU Affero GPL v3.0。LICENSE を参照してください。ループバックラボ専用。保証なし。

ツールをダウンロード