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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
gitea-user-keys-idor — GiteaのIDOR(CWE-639)に関するPoCおよびラボ。GET /api/v1/user/keys/{id} において、認証済みの read:user トークンで他ユーザーのSSHキーおよびデプロイキーを列挙できる。 | Kitploit
ツール/GitHubGitHub/abraxas/gitea-user-keys-idor
脆弱性分析エクスプロイト情報収集ウェブセキュリティペネトレーションテストAPIセキュリティラボと実践
GitHubabraxas/gitea-user-keys-idor

gitea-user-keys-idor

GiteaのIDOR(CWE-639)に関するPoCおよびラボ。GET /api/v1/user/keys/{id} において、認証済みの read:user トークンで他ユーザーのSSHキーおよびデプロイキーを列挙できる。

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

人気

すべて見る →

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

すべてのツールを探索

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

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

Abraxas Labs - gitea-user-keys-idor

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  gitea-user-keys-idor

gitea-user-keys-idor

Gitea 1.27.3 - Gitea

GET /api/v1/user/keys/{id} は current-user グループ(reqToken、rejectPublicOnly)に属している。しかしハンドラは依然として数値 ID で行をロードし、所有者チェックを行わない。同じテーブルにはユーザーキー、デプロイキー、およびプリンシパルが格納されている。GPG の対応する処理は正しく実装されている:GetGPGKeyForUserByID(ctx, ctx.Doer.ID, id)。プライベートフィールドは保護されている。しかし公開鍵素材、タイトル、フィンガープリントは保護されていない。ID は連番である。

read:user トークンで 1、2、3 と辿るだけで、他人の SSH キーやデプロイキーを収集できる。オープン登録がこれを新規アカウントのバグにしている。

IDCVE 未割当
CWECWE-639
CVSSHigh: 7.5 CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N
製品Gitea
影響範囲v1.27.3(146cc3e)まで
認証認証済み(read:user トークン)
ライセンスGNU Affero GPL v3.0
ラボ127.0.0.1 のみ

攻撃者ができること

登録し(デフォルトでオープン登録)、read:user トークンを発行し、/api/v1/user/keys/{id} を辿る。すると、自分が所有していないキー(デプロイキーを含む)のタイトル、フィンガープリント、公開鍵素材を取得できる。秘密鍵は取得できない。シェルも取得できない。アクセス権を持つ人物を把握できるだけである。

1.27.3 のキーに関する GHSA はユーザー名スコープのリストと individualPermsChecker だった。このルックアップではなかった。

同じタグの残存問題:git HTTP redirect SSRF。

発見の経緯

v1.27.3 で 2026 年の GHSA の波は収束した。それでも私はそのタグに留まり、current-user キーハンドラを GPG と並べて読んだ。GPG は他人の ID に対して 404 を返す。SSH は返さない。

seed.sh は被害者のキータイトル GHSA-GITEA-KEY-IDOR-WITNESS と攻撃者のキーを仕込む。攻撃者自身のリストには witness は含まれない。攻撃者としての GET /user/keys/1 には含まれる。他人の ID に対する GPG は 404 を返す。これが議論のすべてである。

すでに記録済みの誤り:攻撃者自身のリストをリークとみなすこと(そうではない - リストはスコープされているが、GET-by-id はスコープされていない);リバースシェル。茶番である。

クライアントのバグは製品のバグに見える。http.client をシャドウするヘルパーはパケットを一切送信しない。HTTPResponse に対する .recv() は .read() ではない。これは一度だけ言及する。時間を浪費し、一瞬だけ 1.27.3 が仕事を終えたように見えたからである。

ラボ

cd lab
./run.sh

対象は必ず http://127.0.0.1:18101 のみ。

add-key user=victim status=201 title=GHSA-GITEA-KEY-IDOR-WITNESS id=1
add-key user=attacker status=201 id=2
attacker-list status=200 ids=[2] (no witness)
get id=1 status=200 snippet contains GHSA-GITEA-KEY-IDOR-WITNESS
SUCCESS Gitea #1 user/keys IDOR

修正方法

key.OwnerID == ctx.Doer.ID(またはサイト管理者)でない限り 404 を返す。デプロイ/プリンシパルタイプを拒否する。GPG と同様にする。

参考資料

  • github.com/go-gitea/gitea タグ v1.27.3
  • GetPublicKey
  • 近傍で修正済み(このルックアップではない):CVE-2026-60004 · CVE-2026-59774
  • 同じタグ:gitea-git-redir-ssrf
  • CWE-639

ライセンス

GNU Affero GPL v3.0。LICENSE を参照。ループバックラボのみ。無保証。

ツールをダウンロード