
abraxaslabs.tech · github.com/abraxas · @abraxas_null · [email protected] · gitea-stargazers-hidden
Gitea 1.27.3 - Gitea
制限ユーザーとプライベートユーザーは、匿名の閲覧者からは見えないことになっている。GetInfo はすでにそれらを 404 にしている。フォロワーリストはすでに SQL で isUserVisibleToViewerCond を適用している。GetStargazers は可視性フィルタのない star の join である。ListStargazers はその後、すべてを convert.ToUser する。ListSubscribers はウォッチャーに対しても同じ形である。
ログインせずに、公開リポジトリの stargazers JSON は GET /users/{name} が隠すユーザーを名指しする。
| ID | CVE はまだなし |
| CWE | CWE-200 |
| CVSS | Medium: 5.3 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N |
| Product | Gitea |
| Affected | v1.27.3 (146cc3e) まで |
| Auth | 未認証 |
| License | GNU Affero GPL v3.0 |
| Lab | 127.0.0.1 のみ |
ログインせずに、公開リポジトリの stargazers と watchers を読み取り、GET /users/{name} が隠すユーザー名を知る。これは、公開リポジトリにスターを付けた、またはウォッチした制限アカウントとプライベートアカウントに対する偵察である。つまり、検索に表示されないように可視性を設定したのに、それでもスターをクリックした人々である。
それはユーザー名であり、メールアドレスではなく、プライベート git の読み取りでもなく、RCE でもない。Follow 204 vs 404 オラクルと組み合わせれば、プロフィールが 404 を返す場合でも、隠されたログインが存在することを確認できる。
可視性は 1.27.3 GHSA の波のテーマであった。製品が意図的にプロフィールを 404 にするとき、次の疑問は、どのリストエンドポイントがその条件なしで依然として user を join しているかである。stars と watchers がそうである。
私は hidstar を制限ユーザーとして仕込み、公開リポジトリにスターを付け、ウォッチし、トークンなしでインスタンスにアクセスした。未認証の GET /api/v1/users/hidstar は 404 である。未認証の stargazers JSON には hidstar が含まれる。未認証の watchers には hidstar が含まれる。未認証の followers HTML には含まれない。プロフィールは恥ずかしがり屋である。star テーブルはそうではない。
すでに記録された誤った道:未認証の GET /users/hidstar が 200 を返す(その場合、可視性は完全にオフである - ラボでは 404 が必要);followers HTML が hidstar をリストする(そのパスはすでに条件を適用している);公開名のみの /stargazers の 200 を SUCCESS として扱う;リバースシェル。演劇である。漏洩は JSON 内の制限ログインである。
cd lab
./run.sh
ターゲットは http://127.0.0.1:18133 のみ。Compose は public,limited,private の可視性を許可し、stars をオンのままにする。
unauth-user-get status=404
unauth-stargazers status=200 stargazer-names=['hidstar']
unauth-watchers leak=True
unauth-followers-web limited-in-html=False
SUCCESS GITEA-STARGAZERS-HIDDEN
GetStargazers / GetRepoWatchers で isUserVisibleToViewerCond を適用する。未認証の stargazers と watchers は、followers がすでに行っているのと同じように hidstar を省略しなければならない。
star.go ルーター · star.go モデル · subscriber.go · GetInfo · GetUserFollowersGNU Affero GPL v3.0。LICENSE を参照。ループバックラボのみ。保証なし。