
CVE-2024-4577은 다음 버전의 PHP 서버에 영향을 미치는 보안 취약점입니다:
이 취약점은 Windows 서버에서 PHP CGI(Common Gateway Interface)를 사용할 때 발생하는 원격 코드 실행(RCE) 결함입니다. 이 문제는 일부 언어 설정에서 "Best Fit" 문자 매핑을 사용함으로써 Windows가 특정 문자를 잘못 해석하는 데서 발생합니다. 이 경우 PHP CGI 모듈이 악성 문자를 PHP 옵션으로 해석하여 공격자가 서버에서 악성 명령을 실행할 수 있게 합니다.
초기 공격 벡터:
취약점을 악용하려면 취약한 사이트의 URL에 다음 문자열을 추가하십시오:
?%ADd+allow_url_include%3d1+%ADd+auto_prepend_file%3dphp://input
Burp Suite를 사용하여 이 요청을 가로채 Repeater로 보내십시오.
요청 메서드 변경: 가로챈 요청을 POST 메서드로 변환하고 간단한 PHP 코드를 실행하십시오. 예를 들어:
<?php phpinfo();
취약점이 존재하면 출력에 PHP 버전 관련 정보가 표시됩니다.
공격자의 목적에 따라 다양한 방법을 적용할 수 있습니다. 제가 선호한 방법은 Burp Suite를 사용하여 Windows 시작 디렉터리에 실행 항목을 정의하는 것이었습니다. reverseshell.ps1 스크립트를 실행 파일(exe)로 변환하여 해당 위치에 배치했습니다.
마찬가지로 ransomware.ps1 파일을 시스템에 업로드하고 문서를 성공적으로 유출하여 암호화된 버전만 남겨 두었습니다.
공격을 시작하기 전에 4688 로그를 활성화해야 합니다. 내 Windows 머신에서 4688 보안 로그를 분석한 결과 공격이 XAMPP의 Apache에서 발생했음을 발견했습니다. Access.log 파일을 확인했을 때 200 상태 코드를 반환하는 비정상적인 요청을 발견했고, 이 URL을 브라우저에서 검색하게 되었습니다. 취약점을 식별한 후 PHP 버전 업데이트 또는 PHP CGI 기능 비활성화 등의 예방 조치를 취했습니다.
제가 만든 랜섬웨어는 난독화되지 않았기 때문에 PowerShell 로그에 제 코드가 표시됩니다. 이는 데이터를 암호화한 방법을 보여줍니다. 데이터를 복구하려면 encoded.ps1 파일을 실행합니다.
이 시뮬레이션은 CVE-2024-4577과 관련된 잠재적 위험을 강조하며 PHP 설치를 안전하게 유지하는 것의 중요성을 강조합니다. PHP를 최신 상태로 유지하고 CGI 설정의 잘못된 구성을 방지하면 이러한 취약점을 효과적으로 줄일 수 있습니다.