🇰🇷 한글 설명
PHP의 escapeshellarg 함수가 Windows에서 특정 입력값을 제대로 이스케이프하지 못하여, 공격자가 system() 함수 호출 시 임의의 OS 명령어를 주입 실행할 수 있습니다. 원격 공격자는 조작된 명령어 인수를 통해 서버 전체 제어권을 획득할 수 있습니다.
💡 쉬운 설명
PHP 웹사이트가 사용자 입력을 운영체제 명령어로 실행할 때, 특수문자가 안전하게 처리되지 않습니다. 공격자는 이를 악용해 서버에서 원하는 어떤 프로그램이든 실행할 수 있습니다.
🇺🇸 원문 (English)
The escapeshellarg function in ext/standard/exec.c in PHP before 5.4.42, 5.5.x before 5.5.26, and 5.6.x before 5.6.10 on Windows allows remote attackers to execute arbitrary OS commands via a crafted string to an application that accepts command-line arguments for a call to the PHP system function.
📍 영향받는 시스템
Windows 환경의 PHP 5.4.42 이전, 5.5.26 이전, 5.6.10 이전 버전
⚔️ 공격 벡터
사용자 입력을 받아 escapeshellarg와 system 함수로 처리하는 PHP 애플리케이션에 조작된 문자열을 전달하여 임의 명령어 주입
🛡️ 대응 방법
PHP를 5.4.42, 5.5.26, 5.6.10 이상으로 즉시 업데이트
🔧 검증 코드
VULNERABLE이 출력되면 패치가 필요한 상태이고, 아무것도 출력되지 않으면 안전한 버전입니다.
php -v 2>/dev/null | grep -oE '5\.[0-6]\.[0-9]+' | awk '{if($1<"5.4.42"||($1>="5.5.0"&&$1<"5.5.26")||($1>="5.6.0"&&$1<"5.6.10")) print "VULNERABLE"}'