공격 시도인가, 침입 성공인가?
이상 multipart나 WAF 경고는 시도일 수 있습니다. OOM, SIGSEGV/SIGABRT와 HTTP 500 급증에는 정상 장애 원인도 있습니다. 예기치 않은 PHP 자식 프로세스, 외부 연결, 파일 변경과 계정은 조사해야 합니다. 메모리 유출은 웹셸이나 파일을 남기지 않을 수 있어 깨끗한 파일 검사로 배제할 수 없습니다.
여러 로그를 시간순으로 연결
원래 시간대와 시계 오차를 보존하세요. 프록시 요청 ID/시간을 PHP/FPM 오류, PID, WAF, 프로세스/네트워크 이벤트와 맞추세요. 수신 쿠키뿐 아니라 응답 Set-Cookie의 PHPSESSID를 확인하세요. 긴 값과 퍼센트 인코딩은 검토 단서이며 로컬 패턴이 PHP2Shell을 입증하지 않습니다.
일치가 없어도 침입을 배제하지 못함
일반 로그는 본문, 응답 헤더와 세션을 생략합니다. 허용된 복호화 없이는 암호화 HTTP를 볼 수 없습니다. 보관 기간, 누락 복제본과 메모리 활동은 사각지대입니다. 확인한 호스트/기간을 기록하고 업체 로그를 요청하며 위험은 전문가에게 넘기세요. 업데이트는 과거 사건을 설명하지 못합니다.
journalctl -u php8.3-fpm --since "2026-10-21 00:00:00 UTC" --until "2026-10-22 23:59:59 UTC" --no-pager
journalctl -k --since "2026-10-21 00:00:00 UTC" --no-pager
ps -eo pid,ppid,lstart,args
ss -tpn
# Only use an independently trusted pre-incident manifest:
sha256sum -c /path/to/trusted-manifest.sha256일차 출처 및 추가 자료
PHP security team원문 읽기 ↗CVE-2026-109618원문 읽기 ↗CVE-2026-109619원문 읽기 ↗php2shell.uk원문 읽기 ↗연구 해설과 실용 가이드
PHP2Shell 도구
공개 사이트를 확인하고 로컬 설정과 로그를 검토하거나 공개 대응 도구를 찾으세요. 각 결과는 근거와 한계를 설명합니다.
01PHP2Shell 쉽게 이해하기
PHP는 WordPress, Laravel과 플러그인을 실행하는 엔진입니다. 플러그인 업데이트는 PHP를 업데이트하지 않습니다. 두 메모리 결함은 비정상 요청 정리를 정보 유출이나 코드 실행으로 바꿀 수 있습니다. 공개 확인은 단서만 제공하며 실제 Web 런타임과 패치는 관리자가 확인해야 합니다.
02공격 시도인가, 침입 성공인가?
이상 multipart나 WAF 경고는 시도일 수 있습니다. OOM, SIGSEGV/SIGABRT와 HTTP 500 급증에는 정상 장애 원인도 있습니다. 예기치 않은 PHP 자식 프로세스, 외부 연결, 파일 변경과 계정은 조사해야 합니다. 메모리 유출은 웹셸이나 파일을 남기지 않을 수 있어 깨끗한 파일 검사로 배제할 수 없습니다.
03변경 전 증거 보존
발견 시간, 도메인, 인스턴스, 런타임, 증상과 마지막 신뢰 상태를 기록하세요. 원본 로그와 시간대, 클라우드 감사, 승인된 스냅샷을 보존하고 접근을 제한해 해시를 남기세요. 쿠키, 토큰과 고객 데이터를 공개 스캐너에 보내지 마세요. 보존 전 로그나 의심 파일을 삭제하지 마세요.
04Wiz와 Calif 정확히 읽기
연구는 요청을 넘어 남는 오류를 설명합니다. CVE-2026-109618은 mod_php RCE를 실증했고 FPM은 소스 분석상 영향으로, 이 CVE의 완전한 FPM 공격 실증은 없습니다. CVE-2026-109619는 앱 의존 FPM upload-progress 경로를 별도로 확인합니다. SAPI별 근거는 각 GHSA에서 확인하세요.
05Cloudflare: 응답도 중요함
Cloudflare는 요청과 원본 응답을 결합해 유출 전 의심 응답을 차단하는 방법을 설명합니다. 셸이 없어도 의미가 있습니다. 과거 배포 시간이 내 계정 보호를 보장하지 않으므로 규칙, 경로, 예외와 이벤트를 확인하세요. 직접 원본과 프록시 밖 호스트도 패치해야 합니다.