このリポジトリには、セルフホスト型GitサービスGogs(バージョン0.13.3以前)に登録されているCVE-2025-8110の脆弱性を実証・分析するためのPython製の概念実証(PoC)スクリプトが含まれています。
[!WARNING] 本ソフトウェアは、教育およびセキュリティ研究の目的でのみ提供されます。 > 対象の所有者の事前の書面による同意なしに本資料を使用することは完全に違法です。このリポジトリの著者は、このコードの使用に起因するいかなる損害、不利益、誤用についても責任を負いません。常に自己責任で、管理された環境または許可されたシミュレーション(CTFラボなど)内でのみ使用してください。
CVE-2025-8110 は、Gogs の PutContents API を介してシンボリックリンク(symlinks)を処理する際の検証不足によって引き起こされる、重大な任意ファイル書き込みの脆弱性です。
認証された攻撃者は次のことができます:
.git/config 設定ファイル)を指すシンボリックリンクを含むローカルGitリポジトリを作成する。root として実行されている場合、Git設定ファイルの sshCommand プロパティに任意のコマンドを注入することで、ファイル書き込みをリモートコード実行(RCE) に昇格させることができる。exploit.py)このスクリプトは、GogsのWebインターフェースで事前に手動生成された有効な認証情報とAPIトークンを使用して、エクスプロイトプロセス全体を自動化します:
┌──────────────────────────────────────────────┐
│ Máquina del Atacante (Kali) │
└──────────────────────┬───────────────────────┘
│
(1) Crea Repositorio │ (3) Sube Symlink (.git/config)
Malicioso vía API │ vía git push
▼
┌──────────────────────────────────────────────┐
│ Túnel SSH Local (puerto 8080) │
└──────────────────────┬───────────────────────┘
│
▼
┌──────────────────────────────────────────────┐
│ Servidor Víctima Gogs │
│ (Puerto 3001) │
└──────────────────────┬───────────────────────┘
│
│ (4) API PUT "contents"
│ Sigue Symlink y escribe
│ "sshCommand" en .git/config
▼
┌──────────────────────────────────────────────┐
│ Ejecución del Payload como ROOT │
└──────────────────────────────────────────────┘
create_malicious_repo: 提供されたアクセストークンで認証し、Gogs API(/api/v1/user/repos)にPOSTリクエストを送信して、動的に生成されたランダムな名前で新しいリポジトリを作成します。upload_malicious_symlink:
/tmp/ にクローンします。.git/config(サーバーのGit設定ファイル)を指すシンボリックリンクを作成します。git push)を使用して変更をサーバーに送り返します。exploit: Gitの sshCommand プロパティへのインジェクションのトリックを使用してペイロードを定義します。APIを介してコンテンツを更新すると、Gogsはサーバー上で自身の .git/config を上書きせざるを得なくなります。Gitプロセスの最終段階が作動すると、Gogsシステムはターミナルコマンド(Bashによるリバースシェル)を実行し、Netcatリスナーへの接続を返します。スクリプトを実行する前に、自動コミット時のエラーを防ぐため、GitのグローバルID情報を設定してください:
git config --global user.email "[email protected]"
git config --global user.name "estudiante"