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-2021-3156-Project — Lernlabor-Umgebung für CVE-2021-3156 (Baron Samedit) mit einem dockerisierten, verwundbaren sudo-Ziel, Exploit-Grundgerüst, Canary-Test, Root-Cause-Analyse und Vergleich mit der gepatchten Version. | Kitploit
Tools/GitHubGitHub/shams-ul-mehmood/cve-2021-3156-project
Privilege EscalationSchwachstellenanalyseExploitationLernen & BildungBinary-ExploitationLabs & Praxis
GitHubshams-ul-mehmood/cve-2021-3156-project

CVE-2021-3156-Project

Lernlabor-Umgebung für CVE-2021-3156 (Baron Samedit) mit einem dockerisierten, verwundbaren sudo-Ziel, Exploit-Grundgerüst, Canary-Test, Root-Cause-Analyse und Vergleich mit der gepatchten Version.

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen
Repository anzeigen
5vor 21 TagenNoch nicht geprüft

CVE-2021-3156 — Baron Samedit

Heap-basierter Pufferüberlauf in sudo → Lokale Privilegienerweiterung

ITSOLERA-Abteilung für Cybersicherheit | Red-Team-Praktikum 2026


root@kitploit:~
  ██████╗  █████╗ ██████╗  ██████╗ ███╗   ██╗    ███████╗ █████╗ ███╗   ███╗███████╗██████╗ ██╗████████╗
  ██╔══██╗██╔══██╗██╔══██╗██╔═══██╗████╗  ██║    ██╔════╝██╔══██╗████╗ ████║██╔════╝██╔══██╗██║╚══██╔══╝
  ██████╔╝███████║██████╔╝██║   ██║██╔██╗ ██║    ███████╗███████║██╔████╔██║█████╗  ██║  ██║██║   ██║
  ██╔══██╗██╔══██║██╔══██╗██║   ██║██║╚██╗██║    ╚════██║██╔══██║██║╚██╔╝██║██╔══╝  ██║  ██║██║   ██║
  ██████╔╝██║  ██║██║  ██║╚██████╔╝██║ ╚████║    ███████║██║  ██║██║ ╚═╝ ██║███████╗██████╔╝██║   ██║
  ╚═════╝ ╚═╝  ╚═╝╚═╝  ╚═╝ ╚═════╝ ╚═╝  ╚═══╝    ╚══════╝╚═╝  ╚═╝╚═╝     ╚═╝╚══════╝╚═════╝ ╚═╝   ╚═╝

⚠️ NUR FÜR BILDUNGSZWECKE / ISOLIERTE LABORNUTZUNG Sämtliche Tests müssen ausschließlich im Docker-Labcontainer durchgeführt werden. Niemals gegen reale, produktive oder gemeinsam genutzte Systeme ausführen.


Inhaltsverzeichnis

  1. CVE-Überblick
  2. Was diese CVE besonders macht
  3. Projektstruktur
  4. Team-Ergebnisse
  5. Schnellstart
  6. So funktioniert der Exploit
  7. Canary-Test der Schwachstelle
  8. Verwendung von exploit.py
  9. Labor-Reset & Snapshot
  10. Vergleich: Gepatcht vs. Verwundbar
  11. Referenzen

CVE-Überblick


Was diese CVE besonders macht

Wichtige Erkenntnis: Der Überlauf tritt in set_cmnd() auf — der Funktion, die Argumente parst — die ausgeführt wird, bevor sudo jemals /etc/sudoers konsultiert. Ein Konto, das vor 10 Sekunden mit null Berechtigungen erstellt wurde, kann dies ausnutzen.


Projektstruktur

root@kitploit:~
CVE-2021-3156-Project/
│
├── README.md                        ← you are here
│
├── lab/                             ← Member 1: Lab Environment
│   ├── Dockerfile                   ← Ubuntu 20.04 + sudo 1.8.31 (pinned)
│   ├── docker-compose.yml           ← vulnerable target + patched reference
│   ├── evidence_helper.sh           ← pre/post-exploit state capture
│   ├── SETUP.md                     ← step-by-step VM/Docker guide
│   └── config_notes.md              ← CVE conditions & container details
│
├── exploit/                         ← Member 2: Exploit Development
│   ├── exploit.py                   ← Python LPE framework + canary test
│   └── payloads.txt                 ← heap overflow research notes
│
├── docs/                            ← Member 3: Research & Documentation
│   ├── root_cause_analysis.md       ← set_cmnd() deep dive + off-by-one
│   ├── references.md                ← all sources, PoCs, CWE mapping
│   └── mitigation.md                ← sudo upgrade + hardening checklist
│
├── proof/                           ← Member 4: Evidence Collection
│   ├── screenshots/                 ← exploitation screenshots
│   └── terminal_logs.txt            ← command output template + logs
│
└── report/
    └── CVE-2021-3156_Report.docx    ← Member 4: Final professional report

Team-Ergebnisse

Mitglied 1 — Laborumgebung & CVE-Verifizierung

Mitglied 2 — Exploit-Entwicklung (PoC-Skript)

Hinweis: Arbeitsfähiger Kernel-/Heap-Exploit-Code ist gemäß ethischer Richtlinien nicht enthalten. Die TODO-Stubs in exploit.py verweisen auf https://github.com/blasty/CVE-2021-3156 und https://github.com/worawit/CVE-2021-3156 als maßgebliche öffentliche PoCs, damit Ihr Team sie studieren und integrieren kann.

Mitglied 3 — Ursachenanalyse & Recherche

DateiBeschreibung
docs/root_cause_analysis.md

Mitglied 4 — Beweissammlung, Berichterstattung & Integration

DateiBeschreibung
proof/terminal_logs.txtVorlage zur Beweissammlung (mit tatsächlicher Laborausgabe ausfüllen)
proof/screenshots/Verzeichnis für 7 erforderliche Screenshots
report/CVE-2021-3156_Report.docxProfessioneller Bericht mit 12 Abschnitten: Deckblatt, Executive Summary, CVE-Beschreibung, Ursachenanalyse, CVSS-Aufschlüsselung, Exploit-Schritte, Code-Erklärung, Beweis-Checkliste, Maßnahmen, Zeitverlauf, Referenzen, Haftungsausschluss

Schnellstart

1. Labor bauen und starten

root@kitploit:~
cd CVE-2021-3156-Project/lab/

# Build the vulnerable image (downloads Ubuntu 20.04, pins sudo 1.8.31)
docker compose build

# Start both containers
docker compose up -d

# Confirm containers are running
docker compose ps

Erwartete Ausgabe:

root@kitploit:~
NAME                      STATUS
baron_samedit_target      running
baron_samedit_patched     running

2. Verwundbaren Container betreten

root@kitploit:~
docker exec -it baron_samedit_target bash

3. Verwundbarkeitsbedingungen bestätigen

root@kitploit:~
# Inside the container as labuser

whoami                         # Expected: labuser
id                             # Expected: uid=1000(labuser)...
sudo --version                 # Expected: Sudo version 1.8.31
sudo -l                        # Expected: Sorry, user labuser may not run sudo...
sudoedit -s '\' 2>&1          # Expected: NOT "usage:" → VULNERABLE

4. Exploit kopieren und ausführen

root@kitploit:~
# From host machine
docker cp exploit/exploit.py baron_samedit_target:/home/labuser/

# Inside container
python3 exploit.py --check-only      # verify all prerequisites pass
python3 exploit.py --safe-mode       # canary only, no exploitation
python3 exploit.py --cmd "id"        # LPE → show root identity
python3 exploit.py --cmd "whoami /all" --output /tmp/proof.txt

5. Beweise erfassen

root@kitploit:~
# Inside container — before exploit
~/evidence_helper.sh > /tmp/before.txt

# After exploit
~/evidence_helper.sh > /tmp/after.txt

# Copy to host
docker cp baron_samedit_target:/tmp/before.txt proof/terminal_logs_before.txt
docker cp baron_samedit_target:/tmp/after.txt  proof/terminal_logs_after.txt

So funktioniert der Exploit

root@kitploit:~
Step 1: Run 'sudoedit -s <crafted_argument>'
        ↓
Step 2: sudo calls set_cmnd() to parse arguments in shell mode
        ↓
Step 3: set_cmnd() COUNTS bytes for the cmnd_args buffer (correct size)
        ↓
Step 4: set_cmnd() COPIES bytes — but reads 1 byte past the null
        terminator of any argument ending with '\'
        ↓
Step 5: Off-by-one overflow writes 1 unexpected byte beyond cmnd_args
        ↓
Step 6: Heap grooming (environment variable layout manipulation) ensures
        a valuable sudo struct sits adjacent to the overflowed buffer
        ↓
Step 7: The overflow byte corrupts a pointer in the adjacent struct
        ↓
Step 8: sudo follows the corrupted pointer → executes attacker-controlled
        command (via SUDO_EDITOR) with root privileges
        ↓
Result: uid=0(root) — from a user with ZERO sudo permissions

Die Ursache in einer Zeile

root@kitploit:~
size_calculation("A\") = 2 bytes  ≠  copy("A\") = writes 3 bytes → overflow

Canary-Test der Schwachstelle

Der sicherste Weg, um festzustellen, ob CVE-2021-3156 vorhanden ist — keine Ausnutzung erforderlich:

root@kitploit:~
sudoedit -s '\' 2>&1; echo "Exit: $?"

Verwendung von exploit.py

root@kitploit:~
Usage: python3 exploit.py [OPTIONS]

Modes (mutually exclusive):
  --check-only        Run all pre-checks only — no exploitation
  --safe-mode         Run canary test only — confirm vulnerability
  --cmd COMMAND       Execute COMMAND as root after successful LPE

Options:
  --verbose, -v       Show detailed heap/system debug output
  --output, -o FILE   Save all output to FILE
  --no-colour         Disable ANSI colour codes (for log files)
  --help              Show this help message

Examples:
  python3 exploit.py --check-only
  python3 exploit.py --safe-mode
  python3 exploit.py --cmd "id"
  python3 exploit.py --cmd "cat /etc/shadow" --output proof/root_output.txt
  python3 exploit.py --cmd "whoami" --verbose

Durchgeführte Vorprüfungen


Labor-Reset & Snapshot

Schnell-Reset (Container behalten, temporäre Dateien löschen)

root@kitploit:~
docker exec baron_samedit_target bash -c "rm -f /tmp/*.txt /tmp/exploit* /home/labuser/exploit.py"

Snapshot speichern

root@kitploit:~
docker commit baron_samedit_target baron-samedit:clean-state
echo "[+] Snapshot saved as baron-samedit:clean-state"

Snapshot wiederherstellen

root@kitploit:~
docker compose down
docker run -it --name baron_samedit_target baron-samedit:clean-state bash

Vollständiger Reset (von Grund auf neu aufbauen)

root@kitploit:~
docker compose down -v
docker compose up -d --build

Vergleich: Gepatcht vs. Verwundbar

Zum Testen im gepatchten Container:

root@kitploit:~
docker exec -it baron_samedit_patched bash
# Then repeat the canary test — should output "invalid argument"

Referenzen


Ethische Hinweise

root@kitploit:~
┌─────────────────────────────────────────────────────────────────┐
│  This project was created for EDUCATIONAL PURPOSES ONLY as      │
│  part of the ITSOLERA Cybersecurity Red Team Internship 2026.   │
│                                                                 │
│  ✅ DO:  Use against the isolated Docker lab only               │
│  ✅ DO:  Study the vulnerability to understand heap exploits    │
│  ✅ DO:  Contribute findings to the team report                 │
│                                                                 │
│  ❌ DON'T: Run against any real system, VM, or cloud instance   │
│  ❌ DON'T: Share outside the internship programme               │
│  ❌ DON'T: Use for any unauthorised access                      │
└─────────────────────────────────────────────────────────────────┘

ITSOLERA-Abteilung für Cybersicherheit — Red-Team-Praktikum, Sommer 2026

Tool herunterladen
EigenschaftWert
CVE IDCVE-2021-3156
SpitznameBaron Samedit
TypHeap-basierter Pufferüberlauf → Lokale Privilegienerweiterung
Komponentesudo — Linux-Privilegien-Dienstprogramm (set_cmnd() in src/sudo.c)
CVSS-v3-Score7.8 Hoch
VektorCVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
Verwundbare Versionensudo 1.8.2 – 1.8.31p2 und 1.9.0 – 1.9.5p1
Gepatchte Versionensudo 1.9.5p2 (1.9-Zweig) / sudo 1.8.32 (1.8-Zweig)
Laborzielversionsudo 1.8.31 auf Ubuntu 20.04
Patch-KB / AdvisorySA: https://www.sudo.ws/security/advisories/unescape_overflow/
Entdeckt vonQualys Research Team
Offengelegt2021-01-26
In freier Wildbahn seit (Code)~2011-07-09 (sudo 1.8.2) — ~10 Jahre unentdeckt
Authentifizierung erforderlichNur lokaler Benutzer — KEINE sudo-Berechtigungen erforderlich
EigenschaftCVE-2021-3156Typische Sudo-LPE
Erfordert sudoers-Eintrag❌ Nein✅ Ja
Erfordert Mitgliedschaft in der sudo-Gruppe❌ Nein✅ Ja
Erfordert früheren sudo-Zugriff❌ Nein✅ Ja
Funktioniert mit brandneuem Benutzerkonto✅ Ja❌ Nein
Nutzt Berechtigungssystem aus❌ Umgeht es vollständig✅ Nutzt es aus
AngriffsflächeArgumentparser (vor der Authentifizierung)Berechtigungsprüfung
DateiBeschreibung
lab/DockerfileUbuntu 20.04 mit festgepinntem sudo 1.8.31 (verwundbar); Python 3 installiert; labuser-Konto OHNE sudo-Zugriff
lab/docker-compose.ymlOrchestriert das verwundbare Ziel + den gepatchten Ubuntu-22.04-Referenzcontainer
lab/evidence_helper.shBash-Skript zur Erfassung des Systemzustands (Benutzer, sudo-Version, Canary) vor/nach dem Exploit
lab/SETUP.mdSchritt für Schritt: bauen → starten → betreten → sudo-Version prüfen → Canary ausführen → Snapshot
lab/config_notes.mdErklärt, warum keine Fehlkonfiguration nötig ist, Docker-Sicherheitseinstellungen, Referenz der Anmeldedaten
DateiBeschreibung
exploit/exploit.pyVollständiges Python-Framework: check_platform(), check_sudo_version(), run_canary_test(), get_system_info() + drei Exploit-TODO-Stubs (select_heap_strategy, build_overflow_argument, trigger_overflow_and_escalate) mit detaillierten Verweisen auf die PoCs von blasty/worawit
exploit/payloads.txtKonzepte für Heap-Überläufe, COMPRESSION_TRANSFORM-Äquivalent (Argumentstruktur), drei Heap-Strategien, Vorlage für das Protokoll fehlgeschlagener Versuche, Erkennungssignaturen
Detailliert: Größen-/Kopie-Abweichung in set_cmnd(), Off-by-one mit Codebeispielen, Patch-Diff, Exploit-Kette, CVSS 7.8 Metrik für Metrik, 10-Jahres-Zeitverlauf, Tabelle zu betroffenen Distributionen
docs/references.mdQualys-Advisory, MITRE, NVD, sudo-Projekt, blasty-PoC, worawit-PoC, ExploitDB, GTFOBins, CWE-Zuordnung
docs/mitigation.mdapt-get install --only-upgrade sudo, Verifizierungs-Canary, AppArmor-Härtung, auditd-Überwachung, Härtungstabelle
AusgabeBedeutung
sudoedit: /\: not a regular file✅ VERWUNDBAR
Segmentation fault / Exit: 139✅ VERWUNDBAR (Absturz)
sudoedit: invalid argument❌ GEPATCHT (1.9.5p2+)
usage: sudoedit ...❌ GEPATCHT
PrüfungFunktion
Plattform (Linux)Stellt sicher, dass wir auf Linux sind
sudoedit vorhandenFindet sudoedit im PATH
sudo-VersionVergleicht mit dem verwundbaren Bereich (1.8.2–1.8.31p2, 1.9.0–1.9.5p1)
Noch nicht rootBestätigt UID ≠ 0 (LPE ist sinnvoll)
SysteminformationenSammelt glibc-Version + Architektur für die Heap-Strategie
Schwachstellen-CanaryFührt sudoedit -s '\' aus und klassifiziert die Antwort
TestVerwundbar (sudo 1.8.31)Gepatcht (sudo 1.9.5p2+)
sudo --versionSudo version 1.8.31Sudo version 1.9.x
sudoedit -s '\'not a regular file oder Segfaultinvalid argument
exploit.py --safe-modeCanary: BESTANDEN → VERWUNDBARCanary: FEHLGESCHLAGEN → GEPATCHT
exploit.py --cmd iduid=0(root)Schlägt in der Prüfphase fehl
Patch vorhanden?KB nicht vorhandenPatch angewendet
QuelleURL
Qualys-Advisoryhttps://blog.qualys.com/vulnerabilities-threat-research/2021/01/26/cve-2021-3156-heap-based-buffer-overflow-in-sudo-baron-samedit
MITRE CVEhttps://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-3156
NVDhttps://nvd.nist.gov/vuln/detail/CVE-2021-3156
sudo-Advisoryhttps://www.sudo.ws/security/advisories/unescape_overflow/
blasty-PoChttps://github.com/blasty/CVE-2021-3156
worawit-PoChttps://github.com/worawit/CVE-2021-3156
ExploitDB #49521https://www.exploit-db.com/exploits/49521
Rapid7 Metasploithttps://www.rapid7.com/db/modules/exploit/linux/local/sudo_baron_samedit/
GTFOBins — sudohttps://gtfobins.github.io/gtfobins/sudo/