
CVE-2026-60004 — diffpatchフックインジェクションによるGiteaのPre-Auth RCE
このリポジトリには、CVE-2026-60004 の概念実証ツールが含まれています。これは、diffpatch フックインジェクション手法を介して特定の Gitea バージョンに影響を与える、認証済みまたは事前認証のリモートコード実行(RCE)ベクトルです。主な実装は、検出および悪用フローを実行する単一の Go プログラムです。
この PoC は、リモートシステムを侵害する可能性のある悪用手法を実証しています。これは研究、テスト、および防御目的でのみ提供されています。所有していないシステム、または明示的なテスト許可がないシステムに対してこのツールを実行しないでください。著者および貢献者は、誤用について責任を負いません。
リポジトリのルートから実行します:
go build -o cve-2026-60004-poc cve-2026-60004-poc.go
コンパイルされたバイナリは、full-auto、semi-auto、manual、check の複数のモードをサポートしています。


./cve-2026-60004-poc --url http://target:3000 --mode check
./cve-2026-60004-poc --url http://target:3000 --mode full-auto
./cve-2026-60004-poc --url http://target:3000 --mode semi-auto --user attacker --pw 'P@ssw0rd'
./cve-2026-60004-poc --url http://target:3000 --mode manual --user attacker --pw 'P@ssw0rd' --repo myrepo
./cve-2026-60004-poc --url http://target:3000 --mode manual --user attacker --pw 'P@ssw0rd' --repo myrepo --cmd "whoami; id"
--url(必須):ターゲットの Gitea ベース URL(例:http://10.0.0.1:3000)--mode:full-auto | semi-auto | manual | check(デフォルト:full-auto)--user、--pw:セミオート/マニュアルモード用の認証情報--repo:リポジトリ名(マニュアルモード用)--branch:ブランチ名(デフォルト:main)--cmd:ターゲット上で実行するコマンド(デフォルト:cat /etc/passwd)check モードは、非侵襲的なチェックを実行して Gitea を検出し、diffpatch エンドポイントの存在を調査します。full-auto は、新しいユーザーの登録(オープン登録が必要)、リポジトリの作成、悪意のある diffpatch ペイロードの配信、および注入されたフックからの出力の取得を試みます。semi-auto は、提供された認証情報を使用してリポジトリを作成し、悪用の手順を進めます。manual は、既存のユーザーとリポジトリを必要とし、悪用の配信と(オプションで)出力の取得のみを試みます。InsecureSkipVerify を true に設定しています。本番コードではこの動作を使用しないでください。/api/v1/version、/user/sign_up、/api/v1/user、/api/v1/user/repos、および /api/v1/repos/:owner/:repo/diffpatch です。貢献は、防御的な改善、ドキュメント、および悪用に関連しない修正に限定する必要があります。ツールをより破壊的にする変更を送信しないでください。
このリポジトリは、研究および防御目的で提供されています。明示的なライセンスは含まれていません。ライセンスが必要な場合は、追加して、意図した用途と互換性があることを確認してください。
著者:Gagaltotal666 - GhostGTR666
この PoC は、脆弱性を実証し、防御側がそれを検出および軽減するのを支援するために作成されました。
--count--simple-hook:シンプルなフックを使用(高度なペイロードをスキップ)--no-retrieve:出力の取得をスキップ--proxy:HTTP プロキシ(例:http://127.0.0.1:8080)--verbose、-v:詳細出力--quiet、-q:クワイエットモード。コマンド出力のみを表示--force:Gitea 検証チェックをスキップ