원문 캡처 · github.com
원문 캡처 · github.com

오픈AI의 php2shell-checker는 웹사이트나 로컬 환경의 PHP 버전을 익스플로잇 요청 없이 확인하는 도구다. Node.js를 사용하며 별도 패키지를 설치할 필요가 없다.

Codex에 다음 명령을 입력해 두 스킬을 설치할 수 있다.

$skill-installer install both skills from https://github.com/openai/php2shell-checker

서버에 접근할 수 있으면 phpcheck-server를, URL만 있으면 phpcheck-url를 사용한다.

$phpcheck-server check the PHP version serving my site $phpcheck-url check example.com

스킬을 거치지 않고 직접 실행할 수도 있다.

sh
node phpcheck.js "https://example.com"

로컬 CLI의 PHP 버전은 다음 명령으로 확인한다.

sh
node phpcheck.js --local

결과는 OK(종료 코드 0), VULNERABLE(1), UNKNOWN(3)으로 나뉜다. OK는 목록에 있는 메이저·마이너 브랜치에서 내장된 기준 버전보다 높은 안정화 패치 버전이라는 뜻이다. VULNERABLE은 해당 브랜치의 기준 버전 이하를 뜻한다. PHP 버전이나 응답이 없거나 버전·브랜치를 인식하지 못하는 경우, 또는 더 새로운 프리릴리스 빌드라면 UNKNOWN을 반환한다. 잘못된 인수는 종료 코드 2로 끝난다. --json을 사용하면 기계 판독 형식으로 출력하며, patch_status 값은 ok, vulnerable, unknown이다.

테스트는 다음 명령으로 실행한다. 테스트는 PHP 응답 헤더를 흉내 내는 로컬 HTTP 서버를 대상으로 CLI를 실행하므로, PHP 설치나 외부 웹사이트가 필요하지 않다.

sh
node --test phpcheck.test.js

이 도구는 HTTP 응답 헤더에 드러난 버전이나 php -v의 결과만 확인한다. X-Powered-By와 Server 헤더를 읽고 HEAD 요청을 보낸다. HEAD가 405 또는 501을 반환할 때만 GET 요청으로 대체한다. 리디렉션을 따라가거나 응답 본문을 검사하지 않으며, PHP 헤더가 없거나 숨겨져 있으면 UNKNOWN을 반환한다.

OK는 2026년 10월 20일 기준으로 내장된 버전 기준과 비교한 결과다. 각 브랜치에서 이후 안정화 패치에 수정 사항이 포함된다고 가정하며, 보안 수정이 실제로 적용됐는지를 독립적으로 확인하지는 않는다. 영향을 받는 버전과 수정된 버전이 발표되면 공식 PHP 보안 릴리스와 기준을 대조해야 한다. 헤더는 숨기거나 바꿀 수 있고, 배포판에서 수정 사항을 백포트해도 업스트림 버전은 바뀌지 않을 수 있다. UNKNOWN은 대상 시스템에 패치가 적용됐다는 뜻이 아니다.

오픈AI는 외부 코드 기여를 받지 않지만, 버그 보고와 코드 외 피드백은 GitHub 이슈로 받는다. 프로젝트는 Apache License 2.0으로 제공된다.