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

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

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

피드문의개인정보© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
php2shell-CVE-2026-109618-CVE-2026-109619-PoC — php2shell(CVE-2026-109618 / CVE-2026-109619)에 대한 개념 증명(PoC) 익스플로잇으로, 취약한 PHP 환경에서의 원격 코드 실행을 시연합니다. 보안 연구 및 교육 목적으로만 사용됩니다. | Kitploit
도구/GitHubGitHub/eness/php2shell-cve-2026-109618-cve-2026-109619-poc
Memory ForensicsVulnerability AnalysisExploitationWeb Application ExploitationPenetration TestingLearning & EducationRemote Access Tool
GitHub

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
eness/php2shell-cve-2026-109618-cve-2026-109619-poc

php2shell-CVE-2026-109618-CVE-2026-109619-PoC

php2shell(CVE-2026-109618 / CVE-2026-109619)에 대한 개념 증명(PoC) 익스플로잇으로, 취약한 PHP 환경에서의 원격 코드 실행을 시연합니다. 보안 연구 및 교육 목적으로만 사용됩니다.

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

php2shell — CVE-2026-109618 / CVE-2026-109619

php2shell — CVE-2026-109618 / CVE-2026-109619

중요 권고 (CVSS v4.0: 9.2 - 심각): 10월 20일, PHP 코어의 인증 전 원격 코드 실행(RCE) 취약점 두 건의 세부 정보가 조율된 공개에 앞서 온라인에 유출되었습니다. 이를 악용하면 웹 서버에서 곧바로 임의 명령을 실행할 수 있습니다.


목차

  • 개요
    • 근본 원인
    • 검증 및 대상
  • 영향받는 PHP 버전
  • 위협 환경 및 탐지 지침
    • 행위 지표 및 의심스러운 자식 프로세스
    • 모니터링 권장 사항
  • 조직을 위한 조치 항목
  • 개념 증명 (PoC)
    • 익스플로잇 구조 및 단계
    • 대상 요구 사항
    • 사용법 및 매개변수
    • 프로필 및 오프셋
  • 완화 및 소스 패치
    • 1. 구성 완화 (즉각적 임시 조치)
    • 2. 자동화된 신속 수정 스크립트
    • 3. 소스 코드 패치 (session-upload-progress-counters.patch)
    • 4. Cloudflare WAF 사용자 지정 규칙
    • 5. FrankenPHP Caddyfile 구성
    • 6. Lighttpd 구성
    • 7. Apache 완화 (ModSecurity 및 .htaccess)
  • 면책 조항

개요

php2shell은 PHP 코어 기능에 영향을 미치는 두 가지 심각한 취약점(CVE-2026-109618 및 CVE-2026-109619)을 가리킵니다. 주요 시연된 공격 경로는 PHP 코어의 세션 업로드 진행률 메커니즘에서 발생하는 힙 사용 후 해제(UAF)로, 이는 임의 코드 실행(zend_call_function / system())으로 이어집니다.

  • 심각도: 심각 (CVSS v4.0: 9.2)
  • 영향받는 버전: 보고서에 따르면 PHP 버전 5, 6, 7, 8이 영향을 받을 수 있습니다. 수정 사항은 주로 현재 지원되는 PHP 8 브랜치에 대해 예상되며, 수명 종료(EOL) 버전(PHP 5.x, 7.x, 8.0, 8.1)은 공식 벤더 패치 없이 노출된 상태로 남습니다.
  • 업계 추적: 보안 연구원들에 의해 확인되었습니다(watchTowr가 CVE-2026-109618을 재현했으며, Huntress와 Florian Roth / process-watcher가 모니터링 중).

근본 원인

PHP의 업로드 진행률 핸들러(ext/session/session.c의 php_session_rfc1867_callback)는 두 개의 원시 zval * 버킷 포인터(post_bytes_processed 및 current_file_bytes_processed)를 활성 HashTable 구조체에 직접 저장합니다.

요청 처리 과정에서:

  1. 트리거: 표준 멀티파트 POST 요청이 기본 구성 값(session.upload_progress.enabled = 1)으로 진행률 추적을 활성화합니다.
  2. 해제: 진행률 업데이트 주기가 세션 데이터를 다시 읽습니다. zend_hash_update() 함수는 소멸자 zval_ptr_dtor를 사용하여 이전 데이터 트리를 파괴하고 메모리 블록을 해제합니다.
  3. 재점유: 해제된 버킷 메모리가 재점유됩니다. 댕글링 포인터가 조작된 zend_fcall_info 및 zend_internal_function 구조체를 가리키도록 재지정됩니다.
  4. 실행: PHP가 zend_call_function()을 호출하여 임의의 시스템 명령 실행이 이루어집니다.

검증 및 대상

  • 표준 php-src 빌드(버전 8.4.4 및 8.2.34 포함)에서 확인되었습니다.
  • 배포판별 바이너리 레이아웃(예: Debian Bookworm, Ubuntu Noble, Ubuntu Jammy)에 적응하기 위해 zval_ptr_dtor와 zend_call_function 사이의 심볼 오프셋(--syms)을 사용합니다.

영향받는 PHP 버전

다음 표는 CVE-2026-109618 및 CVE-2026-109619의 영향을 받는 PHP 버전과 해당 지원 및 패치 상태를 요약한 것입니다:

PHP 브랜치상태영향받는 버전수정 / 안전 버전비고
PHP 8.5지원됨 (활성)< 8.5.128.5.12긴급 보안 릴리스 게시됨
PHP 8.4지원됨 (활성)< 8.4.278.4.27긴급 보안 릴리스 게시됨
PHP 8.3지원됨 (활성)< 8.3.368.3.36긴급 보안 릴리스 게시됨
PHP 8.2지원됨 (보안 전용)< 8.2.358.2.35긴급 보안 릴리스 게시됨
PHP 8.1지원 종료 (EOL)모든 8.1.x 버전공식 패치 없음 (EOL)session.upload_progress.enabled = Off로 설정하거나 ELS/배포판 백포트 사용
PHP 8.0지원 종료 (EOL)모든 8.0.x 버전공식 패치 없음 (EOL)공식 지원 종료됨; 구성 완화 조치 필수
PHP 7.x지원 종료 (EOL)모든 7.0 - 7.4 버전공식 패치 없음 (EOL)핵심 ext/session 로직이 취약함; 긴급 완화 조치 또는 업그레이드 필요
PHP 5.x지원 종료 (EOL)5.4.0+ (RFC1867 진행 상황 추적 포함)공식 패치 없음 (EOL)공식 지원 종료됨; 호스트 격리 또는 업로드 진행 상황 비활성화

[!WARNING] PHP 8.1 및 이전 지원 종료(EOL) 버전은 PHP Foundation으로부터 공식 보안 패치를 받지 못합니다. 이러한 환경에서는 즉시 session.upload_progress.enabled = Off를 적용하거나 제공된 C 소스 패치를 사용하여 PHP를 소스에서 다시 빌드하십시오.


위협 환경 및 탐지 지침

php2shell의 악용은 일반적으로 PHP 워커 프로세스(php-fpm, php-cgi, php-cgi.exe, httpd, apache2)에 의해 직접 생성된 비정상적인 자식 프로세스로 나타납니다.

행위 지표 및 의심스러운 자식 프로세스

다음을 실행하는 PHP 워커 프로세스를 모니터링하고 경고하십시오:

  • 대화형 셸: /bin/sh, /bin/bash, cmd.exe, powershell.exe
  • 스크립트 인터프리터: python, perl
  • 네트워크 / 전송 유틸리티: curl, wget, nc, certutil.exe
  • 일반적인 리버스 셸 패턴: /dev/tcp/, fsockopen, mkfifo
  • 즉각적인 정찰 명령: whoami, id, uname -a, ipconfig

모니터링 권장 사항

엔드포인트 탐지 에이전트가 없는 Linux 기반 웹 환경의 경우, Florian Roth의 무료 process-watcher와 같은 도구를 관찰 모드로 실행하여 비정상적인 자식 프로세스 생성 여부를 실시간으로 표시할 수 있습니다.


조직을 위한 조치 항목

  1. 모든 PHP 환경 인벤토리 작성:
    • WordPress, Drupal, Joomla 또는 Magento와 같은 애플리케이션을 실행하는 공개 웹 서버.
    • 내부 어플라이언스, 호스팅 패널(cPanel, Plesk) 및 번들로 제공되는 독립 실행형 바이너리(php.exe, php-cgi.exe).
  2. 패치 윈도우 대비:
    • PHP 및 다운스트림 Linux 배포판의 공식 긴급 패치는 **2026년 10월 21일 수요일 14:00 UTC (10:00 AM ET)**경에 릴리스될 예정입니다.
    • 릴리스되는 즉시 공급업체 업데이트를 적용하십시오.
  3. 지원 종료(EOL) 설치 격리:
    • 지원되지 않는 버전(PHP 5.x, 7.x, 8.0, 8.1)을 실행하는 환경은 공식 업스트림 백포트를 받지 못할 수 있습니다.
    • VPN을 통한 접근 제한, 엄격한 WAF 규칙 적용 또는 공용 인터넷 노출 비활성화.
  4. 사고 대응 및 조사:
    • 의심스러운 자식 프로세스 또는 예상치 못한 파일이 탐지되면 호스트를 격리하고 웹 서버/PHP 로그를 보존하십시오.
    • 드롭된 웹셸 또는 일시적 실행 아티팩트가 있는지 웹 루트 및 임시 디렉터리(/tmp, /var/tmp)를 검사하십시오.

개념 증명 (PoC)

CVE-2026-109618을 대상으로 하는 완전 자동화된 원클릭 원격 익스플로잇이 poc_109618.py에 제공됩니다. 이 익스플로잇은 일반 HTTP 요청을 사용하여 ASLR을 원격으로 우회함으로써 신뢰할 수 있는 임의 명령 실행을 달성합니다.

익스플로잇 아키텍처 및 단계

공격 체인은 HTTP를 통한 네 가지 순차적 단계로 구성됩니다:

  1. Stage 0 — HTTP Worker Rotation: 새로 생성된 worker 자식 프로세스에서 깨끗한 힙 상태를 보장하기 위해 HTTP를 통해 현재 prefork worker를 중단합니다.
  2. Stage 1 — Heap Base Leak: 과대한 multipart 필드(--huge-mb, 기본값 12MB)를 통해 OOM(out-of-memory) 조건을 유발하여 Set-Cookie: PHPSESSID를 통해 초기화되지 않은 메모리 누출을 트리거하고, Zend MM 2MB 정렬 청크 베이스를 추출합니다.
  3. Stage 2 — Libphp Base Leak: 세션 직렬화 / HashTable 할당 정렬을 악용하여 Set-Cookie를 통해 ZVAL_PTR_DTOR 함수 포인터를 누출시키고, libphp.so의 베이스 주소를 계산합니다.
  4. Stage 3 — Fake Reference & Arbitrary Execution: 167바이트 zend_string 내부에 포함된 가짜 HashTable 구조체를 위조하며, pDestructor는 libphp.so의 zif_system을 직접 가리킵니다. 조작된 참조는 PS(http_session_vars)를 덮어씁니다. PHP가 세션 데이터를 해제할 때 zif_system이 제공된 명령을 실행합니다.

[!NOTE] 명령은 167바이트의 라이브 zend_string 캐리어(0x98 헤더 + NUL 바이트 제한) 내부에 직접 포함되므로, 인라인 명령 문자열은 최대 14바이트(MAX_CMD = 14)로 제한됩니다. 더 긴 명령의 경우 sh</tmp/c(8바이트) 또는 sh</out/c와 같은 짧은 트리거를 통해 연결하십시오.

대상 요구 사항

기본 익스플로잇 프로파일은 다음 설정의 Apache prefork 환경에서 mod_php를 대상으로 합니다:

  • display_errors = 1
  • memory_limit = 8M (또는 --huge-mb보다 충분히 낮게)
  • max_input_vars = 1000
  • session.use_cookies = 1, session.use_strict_mode = 0
  • session.upload_progress.enabled = 1
  • 단일 worker / prefork 프로세스 모델

사용법 및 매개변수

기본 실행
# Default command execution against target URL
python3 poc_109618.py -u http://127.0.0.1:8088/index.php

# Execute a custom command (max 14 bytes) and verify via local proof file
python3 poc_109618.py -u http://127.0.0.1:8088/index.php -c 'id>/out/p1' --proof-file out/p1

# Execute command writing to webroot and verify via HTTP GET fetch
python3 poc_109618.py -u http://127.0.0.1:8088/index.php -c 'id>p1.txt' --fetch /p1.txt
도구 다운로드