Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
CVE-2021-3156-Project — Ambiente di laboratorio didattico per CVE-2021-3156 (Baron Samedit) con un target sudo vulnerabile dockerizzato, scaffold di exploit, test canary, analisi delle cause profonde e confronto con la versione patchata. | Kitploit
Strumenti/GitHubGitHub/shams-ul-mehmood
/
cve-2021-3156-project
Escalation di PrivilegiAnalisi delle VulnerabilitàExploitApprendimento e FormazioneBinary ExploitationLab e Pratica
GitHubshams-ul-mehmood/cve-2021-3156-project

CVE-2021-3156-Project

Ambiente di laboratorio didattico per CVE-2021-3156 (Baron Samedit) con un target sudo vulnerabile dockerizzato, scaffold di exploit, test canary, analisi delle cause profonde e confronto con la versione patchata.

Vedi Repository
12 giorni faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

CVE-2021-3156 — Baron Samedit

Overflow del Buffer Basato su Heap in sudo → Escalation Locale dei Privilegi

Dipartimento di Cybersecurity ITSOLERA | Tirocinio Red Team 2026


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

⚠️ SOLO PER USO DIDATTICO / LABORATORIO ISOLATO Tutti i test devono essere eseguiti esclusivamente all'interno del container Docker di laboratorio. Non eseguire mai su sistemi reali, di produzione o condivisi.


Indice dei Contenuti

  1. Panoramica della CVE
  2. Cosa Rende Speciale Questa CVE
  3. Struttura del Progetto
  4. Risultati del Team
  5. Avvio Rapido
  6. Come Funziona l'Exploit
  7. Test Canary della Vulnerabilità
  8. Utilizzo di exploit.py
  9. Reset e Snapshot del Lab
  10. Confronto Patchato vs Vulnerabile
  11. Riferimenti

Panoramica della CVE

ProprietàValore
ID CVECVE-2021-3156
SoprannomeBaron Samedit
TipoOverflow del buffer basato su heap → Escalation locale dei privilegi
Componentesudo — utilità di privilegio Linux (set_cmnd() in src/sudo.c)
Punteggio CVSS v37.8 Alto
VettoreCVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
Versioni vulnerabilisudo 1.8.2 – 1.8.31p2 e 1.9.0 – 1.9.5p1
Versioni patchatesudo 1.9.5p2 (branch 1.9) / sudo 1.8.32 (branch 1.8)
Versione target del labsudo 1.8.31 su Ubuntu 20.04
Patch KB / AdvisorySA: https://www.sudo.ws/security/advisories/unescape_overflow/
Scoperta daQualys Research Team
Divulgata2021-01-26
In circolazione dal (codice)~2011-07-09 (sudo 1.8.2) — ~10 anni non rilevata
Autenticazione richiestaSolo utente locale — NESSUNA autorizzazione sudo necessaria

Cosa Rende Speciale Questa CVE

ProprietàCVE-2021-3156LPE sudo tipica
Richiede voce sudoers❌ No✅ Sì
Richiede appartenenza al gruppo sudo❌ No✅ Sì
Richiede accesso sudo precedente❌ No✅ Sì
Funziona da account utente appena creato✅ Sì❌ No
Sfrutta il sistema dei permessi❌ Lo bypassa completamente✅ Ne abusa
Superficie d'attaccoParser degli argomenti (pre-autenticazione)Controllo dei permessi

Concetto chiave: l'overflow avviene in set_cmnd() — la funzione che analizza gli argomenti — che viene eseguita prima che sudo consulti /etc/sudoers. Un account creato 10 secondi fa con zero permessi può sfruttare questa vulnerabilità.


Struttura del Progetto

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

Risultati del Team

Membro 1 — Ambiente di Laboratorio e Verifica della CVE

FileDescrizione
lab/DockerfileUbuntu 20.04 con sudo 1.8.31 fissato (vulnerabile); Python 3 installato; account labuser SENZA accesso sudo
lab/docker-compose.ymlOrchestra il target vulnerabile + container di riferimento Ubuntu 22.04 patchato
lab/evidence_helper.shScript Bash per acquisire lo stato del sistema (utente, versione sudo, canary) prima/dopo l'exploit
lab/SETUP.mdPasso dopo passo: build → avvio → accesso → verifica versione sudo → esecuzione canary → snapshot
lab/config_notes.mdSpiega perché non è necessaria alcuna configurazione errata, impostazioni di sicurezza Docker, riferimento credenziali

Membro 2 — Sviluppo dell'Exploit (Script PoC)

FileDescrizione
exploit/exploit.pyFramework Python completo: check_platform(), check_sudo_version(), run_canary_test(), get_system_info() + tre stub TODO dell'exploit (select_heap_strategy, build_overflow_argument, trigger_overflow_and_escalate) con riferimenti dettagliati ai PoC di blasty/worawit
exploit/payloads.txtConcetti sull'overflow dell'heap, equivalente COMPRESSION_TRANSFORM (struttura degli argomenti), tre strategie sull'heap, template di log dei tentativi falliti, firme di rilevamento

Nota: il codice funzionante dell'exploit kernel/heap non è incluso per linee guida etiche. Gli stub TODO di exploit.py fanno riferimento a https://github.com/blasty/CVE-2021-3156 e a https://github.com/worawit/CVE-2021-3156 come PoC pubblici autorevoli da studiare e integrare per il vostro team.

Membro 3 — Analisi delle Cause Profonde e Ricerca

FileDescrizione
docs/root_cause_analysis.mdDettagliato: discrepanza tra dimensione e copia in set_cmnd(), off-by-one con esempi di codice, diff della patch, catena dell'exploit, CVSS 7.8 metrica per metrica, cronologia di 10 anni, tabella dell'impatto sulle distribuzioni
docs/references.mdAdvisory Qualys, MITRE, NVD, progetto sudo, PoC blasty, PoC worawit, ExploitDB, GTFOBins, mappatura CWE
docs/mitigation.mdapt-get install --only-upgrade sudo, canary di verifica, hardening AppArmor, monitoraggio auditd, tabella di hardening

Membro 4 — Raccolta delle Prove, Report e Integrazione

FileDescrizione
proof/terminal_logs.txtTemplate per la raccolta delle prove (da compilare con l'output reale del lab)
proof/screenshots/Directory per i 7 screenshot richiesti
report/CVE-2021-3156_Report.docxReport professionale in 12 sezioni: copertina, sommario esecutivo, descrizione della CVE, analisi delle cause profonde, dettaglio CVSS, fasi di sfruttamento, spiegazione del codice, checklist delle prove, mitigazione, cronologia, riferimenti, disclaimer

Avvio Rapido

1. Build e Avvio del Lab

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

Atteso:

root@kitploit:~
NAME                      STATUS
baron_samedit_target      running
baron_samedit_patched     running

2. Accesso al Container Vulnerabile

root@kitploit:~
docker exec -it baron_samedit_target bash

3. Verifica delle Condizioni di Vulnerabilità

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. Copia ed Esecuzione dell'Exploit

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. Acquisizione delle Prove

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

Come Funziona l'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

La Causa Profonda in Una Riga

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

Test Canary della Vulnerabilità

Il modo più sicuro per confermare la presenza di CVE-2021-3156 — nessuno sfruttamento richiesto:

root@kitploit:~
sudoedit -s '\' 2>&1; echo "Exit: $?"
OutputSignificato
sudoedit: /\: not a regular file✅ VULNERABILE
Segmentation fault / Exit: 139✅ VULNERABILE (crash)
sudoedit: invalid argument❌ PATCHATO (1.9.5p2+)
usage: sudoedit ...❌ PATCHATO

Utilizzo di 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

Pre-controlli Eseguiti

ControlloCosa Fa
Piattaforma (Linux)Garantisce che siamo su Linux
sudoedit presenteTrova sudoedit nel PATH
Versione sudoConfronta con l'intervallo vulnerabile (1.8.2–1.8.31p2, 1.9.0–1.9.5p1)
Non già rootConferma che UID ≠ 0 (la LPE ha significato)
Informazioni di sistemaRaccoglie la versione di glibc + architettura per la strategia sull'heap
Canary di vulnerabilitàEsegue sudoedit -s '\' e classifica la risposta

Reset e Snapshot del Lab

Reset Rapido (mantieni il container, cancella i file temporanei)

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

Salva uno Snapshot

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

Ripristina lo Snapshot

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

Reset Completo (ricostruzione da zero)

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

Confronto Patchato vs Vulnerabile

TestVulnerabile (sudo 1.8.31)Patchato (sudo 1.9.5p2+)
sudo --versionSudo version 1.8.31Sudo version 1.9.x
sudoedit -s '\'not a regular file o segfaultinvalid argument
exploit.py --safe-modeCanary: PASS → VULNERABILECanary: FAIL → PATCHATO
exploit.py --cmd iduid=0(root)Fallisce nella fase di controllo
Patch presente?KB assentePatch applicata

Per testare sul container patchato:

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

Riferimenti

FonteURL
Advisory Qualyshttps://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
Advisory sudohttps://www.sudo.ws/security/advisories/unescape_overflow/
PoC blastyhttps://github.com/blasty/CVE-2021-3156
PoC worawithttps://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/

Avviso Etico

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                      │
└─────────────────────────────────────────────────────────────────┘

Dipartimento di Cybersecurity ITSOLERA — Tirocinio Red Team, Estate 2026

Scarica lo strumento