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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
ats-ipallow-method-case — Apache Traffic Server 10.2.0 - 高 - リモート - 権限の残留 - ip_allow メソッドの大文字小文字 | Kitploit
ツール/GitHubGitHub/abraxas/ats-ipallow-method-case
特権昇格脆弱性分析エクスプロイトウェブアプリケーション悪用ウェブセキュリティネットワークセキュリティラボと実践
GitHubabraxas/ats-ipallow-method-case

ats-ipallow-method-case

Apache Traffic Server 10.2.0 - 高 - リモート - 権限の残留 - ip_allow メソッドの大文字小文字

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

人気

すべて見る →

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

すべてのツールを探索

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

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

Abraxas Labs - ats-ipallow-method-case

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  ats-ipallow-method-case

ats-ipallow-method-case

クラス: 権限の取りこぼし 到達性: リモート

Apache Traffic Server 10.2.0 (b1df7334) - Apache Software Foundation

HTTP/1 の大文字小文字混在メソッドは、デフォルトの ip_allow.yaml による PURGE/PUSH/DELETE/TRACE の拒否を回避し、リマップ先オリジンへ ATS uid として TUNNEL される。YAML および remap の @method パースは大文字小文字を区別しない。H1 はトークン化した後、リクエストバイト列を strncmp し、大文字小文字が一致しない場合は -1 を返す。拒否の反転処理は、この未知のトークンを許可として扱う。HTTP/2 の :method は大文字小文字を区別せず、拒否されたままである。キャッシュの PURGE/PUSH には依然として既知の wksidx が必要なため、大文字小文字混在ではキャッシュのパージやプッシュは行われない。

これはデフォルトの受信メソッド ACL の取りこぼしであり、CVE-2026-33267 (hop-by-hop) でも、反転した空の非標準 remap ACL (このピンではクローズ済み) でもない。

IDCVE 未割当
クラス権限の取りこぼし
到達性リモート (非ループバッククライアントからの未認証 HTTP/1)
CWECWE-178, CWE-863
CVSSHigh: 7.5 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N
製品Apache Traffic Server
影響範囲10.2.0 (b1df7334b39a878971c376da849e8da4984918b6) デフォルトリバースプロキシ
認証なし。デフォルトの ip_allow.yaml。remap_required: 1 と 1 つの map。
ライセンスGNU Affero GPL v3.0
ラボ127.0.0.1:18710 のみ。イメージ ats-10.2.0-lab:local。

タグ 10.2.0、コミット b1df7334b39a878971c376da849e8da4984918b6 をピン留めした。Latest Stable は 2026 年 8 月 17 日。ソースからビルドしたイメージであり、ガジェットではない。

攻撃者ができること

非ループバックアドレスから HTTP/1 で典型的なリバースプロキシ (remap_required: 1 と 1 つの map) に到達する。127.0.0.1 は ALL 許可。plugin.config は空。デフォルトの ip_allow.yaml。

メソッドシンク権限
172.x サイドカーからのリマップ後の HTTP/1 delete / DeLeTehdrtoken_method_tokenize の後 process_quick_http_filter、続いて METHOD_NOT_SUPPORTED TUNNEL (HdrToken.cc:512-528, HttpTransact.cc:6855-6858)整合性 (ラボ実証): オリジン 200 DELETED ATS-IPALLOW-METHOD-CASE-WITNESS。大文字の DELETE は 403。オリジンには ATS uid としてメソッドが渡る。
HTTP/1 trace同じ TUNNEL偵察 (ラボ実証): オリジン 200 TRACE-OK。ATS は TRACE エコーを構築しない (wksidx は TRACE ではない)。大文字の TRACE は 403。
HTTP/1 purge / push未知メソッドの TUNNEL、キャッシュ操作ではない整合性 (ATS キャッシュ): クローズ (ラボ実証)。 オリジンは PURGE-ORIGIN / PUSH-ORIGIN を受信した。キャッシュ操作には既知の wksidx が必要。push_method_enabled のデフォルトは 0。
同じ大文字小文字混在リクエストオリジンへの余分な 1 ホップ可用性 (ラボ実証): プロセスの停止ではない。

ラボ実証と推測: 大文字の拒否、大文字小文字混在 DELETE/TRACE のトンネル、キャッシュ PURGE/PUSH のクローズはラボで実証済み。オリジンでの DELETE/TRACE は、そのオリジンがメソッドの大文字小文字を折りたたむ場合 (IIS / 一部の Java) に限られる。RFC 9110 に準拠した大文字小文字を区別するオリジン (nginx、httpd、Go) は 501 を返す。ラボのオリジンは大文字小文字を折りたたむ。

要件: 非ループバッククライアントからの HTTP/1。remap_required: 1 と1つの map。デフォルトで PURGE/PUSH/DELETE/TRACE の受信を拒否。HTTP/2 の :method は大文字小文字を区別せず、依然として拒否される。

閉じたままの隣接する攻撃面

攻撃面ラボ
172.x からの完全一致する DELETE / TRACE403、オリジンには到達しない
HTTP/2 :method の大文字小文字混在大文字小文字を区別せずトークン化、依然として拒否
ATS キャッシュ操作としての大文字小文字混在 purge / pushオリジンはその動詞を認識したが、キャッシュパスは閉じたまま
CONNECT 宛先拒否 (0.0.0.0/8、RFC1918、リンクローカル、::ffff:0:0/96)デフォルトの ip_allow.yaml によるアウトバウンド
remap_required: 1 のミス404、オープンリレーにはならない
反転された空の非標準 remap ACLCHANGELOG の修正が維持された
CVE-2026-33267 のホップバイホップ / @ ストリップこのピンでは閉じている

発見の経緯

デフォルトの ip_allow.yaml は標準のリモートメソッド ACL である。YAML の読み込みは hdrtoken_tokenize (大文字小文字を区別しない) を使用する。DENY の反転により _method_mask = ALL & ~listed が設定され、空の非標準リストとともに _deny_nonstandard_methods = true が設定される (IPAllow.cc:545-548)。

HTTP/1 のパースは hdrtoken_method_tokenize でトークン化する。DFA は大文字小文字を区別しないが、その後ヘルパーがリクエストバイトを既知の文字列と strncmp で比較し、大文字小文字が一致しない場合は -1 を返す:

retval = hdrtoken_tokenize(string, string_len, &string_out);
if (retval >= 0) {
  if (strncmp(string, string_out, string_len) != 0) {
    // Not a case match
    retval = -1;
  }
}

EndRemapRequest は method == -1 に対して isNonstandardMethodAllowed を問い合わせます(IPAllow.h:365-376)。非標準メソッド集合が空で、非標準メソッドを拒否する設定の場合、!method_in_set となるため、大文字小文字混在は許可されます。is_this_http_method_supported(-1) は false です。METHOD_NOT_SUPPORTED は ProxyMode_t::TUNNELLING を設定して true を返します。ドキュメントには、ATS が未知のメソッドをオリジンへ転送すると記載されています。TUNNELLING ではキャッシュ検索はスキップされます。

HTTP/2 の :method は HTTPHdr::method_set -> hdrtoken_tokenize を経由し、大文字小文字のチェックはありません。H2 の delete は DELETE になり、拒否されます。この残存部分は HTTP/1 です。

誤った方向性:RFC 9110 の大文字小文字を区別するオリジンが拒否リストを無効化するとみなすこと(ATS キャッシュの PURGE/PUSH は引き続き閉じたまま。オリジンへの DELETE/TRACE が残存部分です)。127.0.0.1 から curl を実行すること(ALL を許可)。キャッシュパージを主張すること。hop-by-hop を再申請すること。

茶番:リバースシェル。オラクルは、大文字化された 403 の後にオリジン上に現れる証人文字列です。

ラボ

python3 ats-ipallow-method-case-Abraxas-Labs.py

または

cd lab
./run.sh

ループバック 127.0.0.1:18710。Compose プロジェクト ats-ipallow-method-case。イメージ ats-10.2.0-lab:local(10.2.0 のソースビルド)。攻撃者サイドカーは 172.x 上にあり、localhost の ALL が deny を隠さないようにしている。Origin はメソッドの大文字小文字を折りたたむ。ウィットネス ATS-IPALLOW-METHOD-CASE-WITNESS。最終行:

SUCCESS ats-ipallow-method-case how=live control=DELETE/TRACE-403 poc=delete/DeLeTe/trace-tunneled cache-purge-push=closed ATS-IPALLOW-METHOD-CASE-WITNESS

修正

HTTP/1 メソッドを、YAML と HTTP/2 がすでに行っているのと同じ方法(nocase)でトークン化するか、未知のメソッドの TUNNEL より前に ip_allow.yaml の deny 名を nocase で照合します。キャッシュの PURGE/PUSH は既知の wksidx のままにします。拒否された既知のメソッドの大文字小文字違いを新しいメソッドとして扱わないでください。

参考資料

  • github.com/apache/trafficserver タグ 10.2.0 (b1df7334b39a878971c376da849e8da4984918b6)
  • HdrToken.cc hdrtoken_method_tokenize
  • IPAllow.cc DENY 反転
  • IPAllow.h isNonstandardMethodAllowed
  • HttpTransact.cc METHOD_NOT_SUPPORTED TUNNEL
  • ip_allow.yaml.default
  • CWE-178 · CWE-863
ツールをダウンロード