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.

FeedsKontaktDatenschutz© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
Tools/GitHubGitHub/saina15/cve-2020-14343-lab
SchwachstellenscannerContainer-SicherheitDynamische Analyse (Sandboxing)SchwachstellenanalyseExploitationSicherheitsvirtualisierungPenetrationstestsPapers & ForschungLernen & BildungLabs & Praxis
GitHub
33vor 1 MonatNoch nicht geprüft
saina15/cve-2020-14343-lab

cve-2020-14343-lab

Kontrolliertes Labor für Schwachstellenforschung und -reproduktion für CVE-2020-14343 in PyYAML

Repository anzeigen

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

CVE-2020-14343 – PyYAML-Labor für unsicheres YAML-Laden

1. Projektübersicht

Dieses Projekt demonstriert CVE-2020-14343 in einer kontrollierten und isolierten Docker-Umgebung.

Das Labor enthält zwei Umgebungen:

  • Eine verwundbare Umgebung mit PyYAML 5.3.1
  • Eine gepatchte Umgebung mit PyYAML 5.4 und yaml.safe_load()

Das Labor demonstriert den vollständigen Lebenszyklus der Schwachstelle:

  1. Bereitstellen der verwundbaren Anwendung.
  2. Identifizieren der verwundbaren PyYAML-Version.
  3. Reproduzieren der Schwachstelle mithilfe einer kontrollierten YAML-Nutzlast.
  4. Erkennen der verwundbaren Version mithilfe eines automatisierten Skripts.
  5. Aktualisieren auf die korrigierte Version.
  6. Testen derselben Nutzlast gegen die gepatchte Anwendung.
  7. Überprüfen, dass das bösartige YAML abgelehnt wird.

Die in diesem Labor verwendete Reproduktionsnutzlast ist absichtlich harmlos und gibt lediglich eine Testmarkierung aus.

2. CVE-Informationen

EigenschaftDetails
CVECVE-2020-14343
ProduktPyYAML
Betroffene VersionenVersionen vor 5.4
Korrigierte Version5.4
SchwachstellentypUnsachgemäße Eingabevalidierung (CWE-20)
SchweregradKritisch
AngriffsflächeYAML-Eingabe, die mit verwundbarer Ladefunktionalität verarbeitet wird
CVSS9.3 (CVSS v4, GitHub Advisory)

Ursache

Die Schwachstelle tritt auf, wenn nicht vertrauenswürdige YAML-Eingaben mit verwundbarer PyYAML-Ladefunktionalität verarbeitet werden.

PyYAML-Versionen vor 5.4 erlaubten speziell gestaltete YAML-Tags, einschließlich Python-spezifischer Tags wie:

!!python/object/new

um auf die Objektkonstruktionsfunktionalität zuzugreifen, wenn FullLoader verwendet wurde.

Ein bösartiges YAML-Dokument kann daher eine unbeabsichtigte Ausführung von Python-Code verursachen.

Das Problem stand im Zusammenhang mit einer unvollständigen Behebung einer früheren PyYAML-Schwachstelle.

PyYAML 5.4 behob CVE-2020-14343, indem beliebige Python-Tags zu UnsafeLoader verschoben wurden.

Für Anwendungen, die nicht vertrauenswürdiges YAML verarbeiten, verwendet dieses Lab außerdem yaml.safe_load() als sicheren Ladeansatz.

3. Laborarchitektur

Das Lab enthält zwei isolierte Docker-Dienste:

                         Host Machine
                              |
                 +------------+------------+
                 |                         |
                 v                         v
          Vulnerable App             Patched App
          localhost:5000             localhost:5001
                 |                         |
            PyYAML 5.3.1             PyYAML 5.4
            FullLoader               SafeLoader
                 |                         |
                 v                         v
          Payload executes          Payload rejected

Dienste

DienstHost-PortContainer-PortPyYAMLZweck
vulnerable500050005.3.1Verwundbare Umgebung
patched500150005.4Behobene Umgebung

4. Repository-Struktur

cve-2020-14343-lab/
├── vulnerable/
│   ├── app.py
│   ├── Dockerfile
│   └── requirements.txt
├── patched/
│   ├── app.py
│   ├── Dockerfile
│   └── requirements.txt
├── exploit/
│   └── reproduce.py
├── detection/
│   └── detect.py
├── screenshots/
│   ├── 01-docker-compose-running.png
│   ├── 02-vulnerable-detection.png
│   ├── 03-patched-detection.png
│   ├── 04a-vulnerable-request.png
│   ├── 04b-vulnerable-execution-log.png
│   └── 05-patched-exploit-blocked.png
├── blog/
│   └── CVE-2020-14343-Technical-Blog.pdf
├── docker-compose.yml
├── README.md
└── .gitignore

Verzeichnisbeschreibung

Datei/VerzeichnisZweck
vulnerable/app.pyFlask-Anwendung, die unsicheres YAML-Laden verwendet
vulnerable/DockerfileErstellt das verwundbare Docker-Image
vulnerable/requirements.txtLegt PyYAML auf 5.3.1 fest
patched/app.pyFlask-Anwendung, die sicheres YAML-Laden verwendet
patched/DockerfileErstellt das gepatchte Docker-Image
patched/requirements.txtLegt PyYAML auf 5.4 fest
exploit/reproduce.pyReproduziert die Schwachstelle mit einer kontrollierten Payload
detection/detect.pyPrüft die PyYAML-Version innerhalb eines Docker-Containers
docker-compose.ymlErstellt und startet beide Umgebungen
screenshots/Enthält während des Labs erfasste Nachweise
blog/Enthält das technische Blog-PDF mit 800–1200 Wörtern

5. Voraussetzungen

Die folgende Software ist erforderlich:

  • Docker Desktop
  • Docker Compose
  • Python 3.x
  • Git

Docker Desktop muss laufen, bevor das Lab gestartet wird.

Die verwundbare Anwendung wird absichtlich nur auf dem lokalen Rechner über Docker-Portzuordnungen bereitgestellt.

6. Lab-Einrichtung

Schritt 1: Lab starten

Führen Sie im Stammverzeichnis des Projekts Folgendes aus:

docker compose up --build -d

Schritt 2: Die Container überprüfen

Führen Sie aus:

docker compose ps

Beide Dienste sollten Up anzeigen.

Schritt 3: Überprüfen der verwundbaren Anwendung

Öffnen Sie:

http://127.0.0.1:5000

I'm ready to translate chunk 13, but the INPUT section appears to be empty — no source content was included after "INPUT:".

Please provide the actual Markdown content for chunk 13, and I'll return the German translation with all structure, code, URLs, and badges preserved exactly as specified.

{
  "message": "CVE-2020-14343 vulnerable YAML parser"
}

Schritt 4: Die gepatchte Anwendung überprüfen

Öffnen Sie:

http://127.0.0.1:5001

I'm ready to translate chunk 13, but the INPUT section appears to be empty — no source content was included after "INPUT:".

Please provide the actual Markdown content for chunk 13, and I'll return the German translation with all structure, code, URLs, and badges preserved exactly as specified.

{
  "message": "CVE-2020-14343 patched YAML parser"
}

7. Starten, Stoppen und Neuaufbau des Labs

Starten

docker compose up -d

Stoppen

docker compose down

Bauen und Starten

docker compose up --build -d

Laufende Dienste prüfen

docker compose ps

Protokolle anfälliger Anwendungen anzeigen

docker logs cve-vulnerable

Protokollierte Ausgaben der gepatchten Anwendung anzeigen

docker logs cve-patched

8. Reproduktion der Schwachstelle

Die verwundbare Anwendung stellt einen /parse-Endpunkt bereit, der YAML-Eingaben akzeptiert.

Die verwundbare Umgebung verwendet:

  • PyYAML 5.3.1
  • yaml.FullLoader

Das Reproduktionsskript befindet sich unter:

exploit/reproduce.py

Den Exploit ausführen

Die verwundbare Anwendung ist verfügbar unter:

http://127.0.0.1:5000/parse

Ausführen:

python exploit/reproduce.py

Das Skript sendet eine kontrollierte YAML-Nutzlast, die ein Python-spezifisches YAML-Tag enthält.

Erwartetes Ergebnis

In der verwundbaren Umgebung wird die Nutzlast akzeptiert und die Anwendung gibt eine HTTP-200-Antwort zurück.

Der kontrollierte Testmarker:

CVE-2020-14343-TEST

wird innerhalb des Containers der verwundbaren Anwendung ausgeführt.

Die Ausführung kann überprüft werden mit:

docker logs cve-vulnerable

Die erwartete Log-Ausgabe umfasst:

CVE-2020-14343-TEST

Dies demonstriert die Codeausführung durch das anfällige YAML-Ladeverhalten.

Sicherheit

Die Reproduktions-Payload ist absichtlich harmlos. Sie gibt lediglich einen Testmarker aus und verändert das Hostsystem nicht, greift nicht auf Anmeldeinformationen oder sensible Daten zu, interagiert nicht mit externen Systemen und führt keine destruktiven Aktionen aus.

9. Schwachstellenerkennung

Das Erkennungsskript befindet sich unter:

detection/detect.py
Tool herunterladen