CVE

[CVE-2024-4577] PHP-CGI

FEARIS 2024. 7. 3. 21:59

개요

CVE-2024-4577 취약점은 Windows에서 PHP-CGI를 사용할 때, Best-Fit 기능이 특정 로케일(일본어, 중국어[간체, 번체])에서 Soft Hypen(0xAD)을 Hypen(0x2D)로 변환한다. 만약 서버에서 PHP-CGI 모드가 실행되거나 PHP 실행 바이너리가 노출되었을 경우(기본 XAMPP 구성) 공격자는 이 취약점을 통해 원격 코드 실행(RCE)이 가능하다.

 

등급

9.8 (CRITICAL)

 

취약 버전

PHP 8.3 < 8.3.8 

PHP 8.2 < 8.2.20

PHP 8.1 < 8.1.29

PHP 5, 7, 8(지원 종료)

 

환경 구성

Windows 10 (일본어, 중국어[번체, 간체] 로케일)

XAMPP 8.2.12 (PHP 8.2.12)

 

실습

chcp를 통해 윈도우 로케일 확인
(일본어 932, 중국어 간체 936, 중국어 번체 950)

윈도우 로케일 확인

 

XAMPP 8.2.12 버전 설치

XAMPP 8.2.12 버전 설치

 

httpd-xampp.conf 파일의 PHP-CGI setup 주석 제거 후 아파치 서버 실행

PHP-CGI setup 주석 제거

 

아파치 서버 접속 확인

아파치 서버 접속 확인

 

공격자 PC에서 exploit 코드 실행

exploit 코드 실행

 

RCE에 성공하여 피해자 PC 계산기가 실행됨을 확인

RCE 실행 결과

 

 

대응 방안

대응 방법 설명
버전 패치  PHP 최신 버전으로 패치
Rewrite Rules 작성 하단에 작성되어 있는 Rewrite Rules 작성
# httpd.conf에 작성

RewriteEngine On
RewriteCond %{QUERY_STRING} ^%ad [NC]
RewriteRule .? – [F,L]

 

출처

취약점 상세 - https://devco.re/blog/2024/06/06/security-alert-cve-2024-4577-php-cgi-argument-injection-vulnerability-en/?ref=labs.watchtowr.com

POC - https://github.com/watchtowrlabs/CVE-2024-4577

 

의견

해당 취약점은 Soft Hypen(0xAD)을 사용하여 기존 CVE-2012-1823 취약점을 우회한 버전이다. 비록, 특정 로케일을 사용하는 Windows만 취약하다고 하지만 exploit 과정이 너무 쉽기 때문에 취약한 PHP 버전을 사용하고 있다면 패치를 권장한다.