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
dirtycow-lab — PoC didattico per Dirty COW (CVE-2016-5195) con logging, fallback ptrace e supporto per payload binari. | Kitploit
Strumenti/GitHubGitHub/mohammadamin382/dirtycow-lab
Escalation di PrivilegiAnalisi delle VulnerabilitàExploitPenetration TestingApprendimento e FormazioneRed TeamingBinary ExploitationLab e Pratica
GitHubmohammadamin382/dirtycow-lab

dirtycow-lab

PoC didattico per Dirty COW (CVE-2016-5195) con logging, fallback ptrace e supporto per payload binari.

Vedi Repository
11 anno 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

Dirty COW - PoC Educativo (CVE-2016-5195)

⚠️ Avviso Legale

Questo codice è SOLO PER SCOPI EDUCATIVI. Qualsiasi uso malevolo è severamente vietato e illegale.

📖 Cos'è Dirty COW?

Dirty COW (CVE-2016-5195) è una vulnerabilità di escalation dei privilegi nel kernel Linux che sfrutta una race condition nel meccanismo di copy-on-write (COW) del kernel. Questa vulnerabilità interessa i kernel Linux dalla versione 2.6.22 (rilasciata nel 2007) fino alle versioni precedenti a:

  • 4.8.3
  • 4.7.9
  • 4.4.26

Dettagli Tecnici

La vulnerabilità si verifica nel sistema di gestione della memoria del kernel:

  1. Copy-On-Write (COW): quando un processo mappa un file con MAP_PRIVATE, le modifiche dovrebbero creare una copia privata
  2. Race Condition: due thread in competizione tra madvise(MADV_DONTNEED) e la scrittura su /proc/self/mem
  3. Exploitation: in specifiche condizioni di timing, le scritture possono aggirare la protezione COW e modificare il file originale

Impatto

  • Escalation dei privilegi: modificare file di sola lettura di proprietà di root
  • Compromissione del sistema: possibilità di ottenere l'accesso root modificando file di sistema come /etc/passwd
  • Integrità dei dati: modifica non autorizzata di file di sistema critici

🛡️ Note di Sicurezza per i Test

⚠️ CRITICO: Testare Solo in un Ambiente Isolato

NON eseguire MAI questo software su sistemi di produzione o su sistemi che non possiedi!

Ambiente di Test Consigliato:

  1. Macchina virtuale (VM): usa VMware, VirtualBox o KVM
  2. Container: container Docker con kernel vulnerabile
  3. Laboratorio isolato: macchina di test dedicata senza dati importanti
  4. Requisiti del kernel: versioni del kernel Linux da 2.6.22 a 4.8.2

Pratiche di Test Sicure:

root@kitploit:~
# 1. Check kernel version first
uname -r

# 2. Create isolated test directory
mkdir /tmp/dirtycow_test
cd /tmp/dirtycow_test

# 3. Test with harmless files only
./main -t /tmp/test_file -v

# 4. Monitor system resources
top -p $(pgrep -f main)

🚀 Compilazione e Utilizzo

Prerequisiti

root@kitploit:~
# Install required packages (Ubuntu/Debian)
sudo apt-get update
sudo apt-get install build-essential libssl-dev

# Install required packages (CentOS/RHEL)
sudo yum install gcc openssl-devel

Compilazione

root@kitploit:~
# Standard compilation
make

# Debug version
make main-debug

# Manual compilation
gcc -o main main.c -lpthread -lssl -lcrypto

Utilizzo Base

root@kitploit:~
# Simple test with default settings
./main

# Verbose mode with custom target
./main -t /tmp/testfile -v

# Advanced usage with multiple processes
./main -t /tmp/target -n 4 -r 3 -D -v

# Binary payload from file
./main -f payload.bin -P -D -n 2

Opzioni della Riga di Comando

🔬 Funzionalità Avanzate

1. Metodi di Attacco Multipli

  • Metodo 1: scrittura su /proc/self/mem (predefinito)
  • Metodo 2: ptrace(PTRACE_POKETEXT) per sistemi ristretti

2. Scansione Dinamica degli Offset

Scansiona più offset di memoria per trovare la migliore posizione di scrittura:

root@kitploit:~
./main -D -v  # Enable dynamic offset scanning

3. Race Condition Multi-Processo

Avvia più processi per race condition intense:

root@kitploit:~
./main -n 4  # Use 4 parallel processes

4. Supporto per Payload Binari

Carica dati binari arbitrari da file:

root@kitploit:~
# Create binary payload
echo -ne '\x41\x41\x41\x41\x00\x42\x42' > payload.bin

# Use binary payload
./main -f payload.bin -v

5. Logica di Retry Automatica

Riprova automaticamente i tentativi falliti:

root@kitploit:~
./main -r 5  # Retry up to 5 times

6. Verifica dell'Integrità dei File

Usa l'hashing SHA-256 per verificare le modifiche ai file:

root@kitploit:~
# Check original vs modified file hashes
./main -v  # Shows hash comparison in verbose mode

📊 Output e Logging

Esempio di Output della Console

root@kitploit:~
Dirty COW Educational PoC (CVE-2016-5195)
==========================================

=== SYSTEM INFORMATION ===
Kernel Version: Linux 4.4.0-generic
Architecture: x86_64
Current User: testuser
UID/GID: 1000/1000

=== VULNERABILITY CHECK ===
Kernel: Linux version 4.4.0-generic
[+] /proc/self/mem accessible

=== STARTING TEST ===

=== EXPLOIT EXECUTION ===
[+] Target: /tmp/dirty_cow_test
[+] Payload length: 32 bytes
[+] Iterations: 10000000
[+] Processes: 1
[+] Method: /proc/self/mem
[+] Dynamic offset: disabled
[+] Backup created: /tmp/dirty_cow_test.backup
[+] Original content: original-content-before-exploit
[+] Starting race condition test...
[+] EXPLOIT SUCCESSFUL on attempt 1!
[+] File hash changed - modification confirmed!
[+] Original: a1b2c3d4e5f6...
[+] Final:    f6e5d4c3b2a1...

=== TEST SUCCESSFUL ===
[+] File modification completed
[+] Educational objective achieved
[+] Statistics: 156789 writes, 1 successful, 2.347 sec

Formato del File di Log

Il tool crea log dettagliati in exploit_log.txt:

root@kitploit:~
[2024-01-15 10:30:45] System Info - UID/GID: 1000/1000
[2024-01-15 10:30:45] Kernel version: Linux version 4.4.0-generic
[2024-01-15 10:30:45] /proc/self/mem accessible
[2024-01-15 10:30:45] Starting exploit - Target: /tmp/test, Payload: 32 bytes
[2024-01-15 10:30:47] EXPLOIT SUCCESSFUL on attempt 1
[2024-01-15 10:30:47] Final stats - Writes: 156789, Successful: 1, Duration: 2.347 sec

🎯 Scenari di Test

Scenario 1: Test di Funzionalità di Base

root@kitploit:~
# Test basic exploit functionality
./main -t /tmp/basic_test -v

Scenario 2: Test di Stress

root@kitploit:~
# High-intensity race condition test
./main -i 50000000 -n 4 -r 3 -D -v

Scenario 3: Ambiente Ristretto

root@kitploit:~
# Test when /proc/self/mem is blocked
./main -P -D -v

Scenario 4: Test del Payload Binario

root@kitploit:~
# Test with binary data containing null bytes
echo -ne 'BINARY\x00DATA\x01\x02\x03' > test.bin
./main -f test.bin -v

🔍 Capire l'Exploit

Timing della Race Condition

L'exploit funziona creando una gara tra due operazioni:

  1. Thread 1: madvise(MADV_DONTNEED) - dice al kernel di scartare le pagine di memoria
  2. Thread 2: scrittura su /proc/self/mem - tenta di scrivere nella memoria mappata

Fattori di Successo

  • Versione del kernel: deve essere vulnerabile (< 4.8.3)
  • Timing: la race condition deve verificarsi in un momento preciso
  • Mappatura della memoria: il file deve essere mappato con MAP_PRIVATE
  • Permessi: è necessario avere accesso in lettura al file di destinazione

Perché Funziona

Quando la race condition ha successo:

  1. Il Thread 1 scarta la pagina COW
  2. Le scritture del Thread 2 avvengono prima che venga creata una nuova pagina COW
  3. La scrittura va direttamente al file originale invece che alla copia privata

🛠️ Risoluzione dei Problemi

Problemi Comuni

1. "Exploit fallito o iterazioni insufficienti"

  • Soluzione: aumenta le iterazioni con -i o usa più processi con -n

2. "Accesso a /proc/self/mem fallito"

  • Soluzione: usa il metodo ptrace con il flag -P

3. "Il sistema potrebbe non essere vulnerabile"

  • Controlla la versione del kernel: uname -r
  • Assicurati che il kernel sia più vecchio di 4.8.3

4. Il sistema diventa non responsivo

  • Riduci le iterazioni: -i 1000000
  • Usa meno processi: -n 1

Ottimizzazione delle Prestazioni

root@kitploit:~
# Conservative settings (slower but safer)
./main -i 5000000 -n 1

# Aggressive settings (faster but resource intensive)
./main -i 50000000 -n 4 -D

# Balanced settings
./main -i 20000000 -n 2 -r 2 -D

📚 Risorse Educative

Informazioni CVE

  • CVE-2016-5195: https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-5195
  • Database NVD: https://nvd.nist.gov/vuln/detail/CVE-2016-5195

Letture Aggiuntive

  • Gestione della Memoria del Kernel Linux
  • Meccanismo di Copy-On-Write
  • Vulnerabilità delle Race Condition
  • Tecniche di Escalation dei Privilegi

🤝 Contributi

Questo è uno strumento educativo. I contributi dovrebbero concentrarsi su:

  • Migliorare il valore educativo
  • Aggiungere funzionalità di sicurezza
  • Migliore documentazione
  • Chiarezza del codice e commenti

⚖️ Disclaimer

Questo software è fornito esclusivamente per scopi educativi e di ricerca. Gli autori e i contributori non sono responsabili per qualsiasi uso improprio o danno causato da questo programma. Gli utenti sono gli unici responsabili di assicurarsi di avere la dovuta autorizzazione prima di effettuare test su qualsiasi sistema.

Utilizzando questo software, riconosci che:

  • Lo utilizzerai solo per scopi educativi legittimi
  • Hai la dovuta autorizzazione per qualsiasi test effettuato
  • Comprendi le implicazioni legali dei test non autorizzati sui sistemi
  • Non utilizzerai questo strumento per scopi malevoli

📝 Licenza

Questo progetto è rilasciato sotto la Licenza MIT esclusivamente per scopi educativi.


Ricorda: da grandi poteri derivano grandi responsabilità. Usa questa conoscenza per proteggere e mettere in sicurezza i sistemi, non per danneggiarli.

Scarica lo strumento
OpzioneDescrizionePredefinitoMax
-t <file>Percorso del file di destinazione/tmp/dirty_cow_test-
-p <payload>Payload di testo personalizzatoStringa di test-
-f <file>Carica payload binario da file--
-i <num>Numero di iterazioni10,000,000100,000,000
-n <num>Numero di processi paralleli18
-r <num>Tentativi di retry110
-PUsa ptrace invece di /proc/self/memDisabilitato-
-DAbilita la scansione dinamica degli offsetDisabilitato-
-vOutput verboseDisabilitato-
-l <file>Percorso del file di logexploit_log.txt-
-hMostra aiuto--