
PHP getimagesize() CVE-2025-14177 - Exploit-Generator für Heap-Speicherlecks Voll funktionsfähige Exploit-Kette in Python
getimagesize() Heap-SpeicherleckNur für autorisierte Penetrationstests und Sicherheitsforschung.
| Feld | Wert |
|---|---|
| CVE | CVE-2025-14177 |
| CWE | CWE-524 (Use of Uninitialized Resource) |
| Schweregrad | MODERATE — CVSS 6.3 |
| Ursache | php_read_stream_all_chunks() schreibt aufeinanderfolgende Blöcke in buffer[0] und überschreibt dabei vorherige Daten mit nicht initialisiertem Heap-Speicher |
getimagesize("php://filter/.../resource=malicious.jpg", $info)
└─ php_read_stream_all_chunks()
├─ Chunk 1 (8KB) → memcpy(buffer+0, chunk1, 8192)
├─ Chunk 2 (8KB) → memcpy(buffer+0, chunk2, 8192) ← overwrites!
└─ $info['APP1'] = chunk2 + uninitialized heap garbage
Ein bösartiges JPEG trägt einen überdimensionierten APP1-Marker (16KB), um den Mehrfachblock-Lesevorgang zu erzwingen. Das zurückgegebene APP1-Feld gibt Heap-Speicher preis, der Anmeldeinformationen, Token, Sitzungsdaten oder ASLR-Zeiger enthalten kann.
[1] RECON Find PHP app exposing getimagesize() output (APP1 field)
[2] PREP Craft malicious.jpg (APP1 = 16KB)
[3] EXPLOIT Upload → trigger getimagesize($file, $info)
[4] EXTRACT Parse $info['APP1'] for leaked heap data
[5] IMPACT Credential theft / token extraction / ASLR bypass
python3 CVE-2025-14177.py [mode]
./exploit_output/)exploit_output/
├── malicious.jpg # crafted JPEG payload (APP1 = 16KB)
├── exploit_standalone.php # deployable PHP exploit
├── exploit_report.json # full analysis report
└── test_cases.json # 3 test scenarios
| Fall | Vektor |
|---|---|
| 1 | Direkter Upload → getimagesize($_FILES[...], $info) |
| 2 | Stream-Filter + LFI (php://filter/read=.../resource=...) |
| 3 | Entfernte Bild-URL (/preview.php?url=attacker.com/malicious.jpg) |
$info-Arraygetimagesize()-Aufrufe mit php://filter-WrappernAktualisieren Sie PHP auf die gepatchte Version. Keine Alternative – Patch erforderlich.
php -v # verify version
Falls Upgrade blockiert: Entfernen Sie APP1 aus $info, bevor Sie es an den Client zurückgeben, oder deaktivieren Sie php://filter in allow_url_fopen.
Dieses Tool ist nur für autorisierte Sicherheitstests bestimmt. Die nicht autorisierte Nutzung gegen Systeme, die Ihnen nicht gehören oder für die Sie keine ausdrückliche schriftliche Erlaubnis zum Testen haben, ist illegal.
| Modus | Aktion |
|---|
demo | Vollständige Exploit-Demo (Standard) |
gen | Bösartiges JPEG + PHP-Exploit-Code generieren |
test | Testfall-JSON generieren |
analyze | JPEG generieren + simulieren + Leck analysieren |
flow | Angriffsablauf-Diagramm ausgeben |