🛡️ 为安全研究打磨的教学型 Linux 内核漏洞利用项目
本项目提供了一个用于研究 CVE-2024-1086(Linux 内核 netfilter: nf_tables 组件中的释放后使用漏洞,可实现本地权限提升)的健壮但不可用的模板。专为安全研究人员和学生设计,它结合了一个 C 漏洞利用模板和一个增强型 Java 包装器,用于可靠的诊断、配置和执行,仅供在受控实验室环境(例如,带有易受攻击内核的虚拟机)中使用。
⚠️ 警告:C 代码不可用,包含占位值,需要进行大量修改才能工作。未经授权在生产系统上使用或未经许可使用是非法且不道德的。请负责任地使用,以推动内核安全知识的发展。
nf_tables 模块--check、--run、--dry-run、--payload 和 --config 选项nf_tables 漏洞┌─────────────────────┐ ┌─────────────────────┐ ┌─────────────────────┐
│ 🔍 Java 诊断 │───▶│ 💻 漏洞利用执行器 │───▶│ 🔐 C 漏洞利用模板 │
└─────────────────────┘ └─────────────────────┘ └─────────────────────┘
│ │ │
▼ ▼ ▼
┌─────────────────────┐ ┌─────────────────────┐ ┌─────────────────────┐
│ 🔒 系统验证 │───▶│ 📝 日志引擎 │───▶│ 🛡️ 内核 Netlink │
└─────────────────────┘ └─────────────────────┘ └─────────────────────┘
│ │
▼ ▼
┌─────────────────────┐ ┌─────────────────────┐
│ 🧪 测试套件 │ │ 📜 配置管理 │
└─────────────────────┘ └─────────────────────┘
该项目集成了一个 Java 包装器(用于安全诊断、日志和配置)和一个 C 漏洞利用模板(模拟通过 Netlink 套接字与内核交互),并通过测试套件进行验证。
确保安装了以下工具:
sudo apt install build-essential)sudo apt install openjdk-11-jdk)org.json:json:20230227(通过 Maven 或 JAR)commons-cli:commons-cli:1.5.0(通过 Maven 或 JAR)操作系统:
CONFIG_USER_NS=y)nf_tables 模块(CONFIG_NF_TABLES=y)实验室环境:
克隆仓库
git clone https://github.com/karim4353/CVE-2024-1086-Exploit.git
cd CVE-2024-1086-Exploit
安装依赖
sudo apt update
sudo apt install build-essential openjdk-11-jdk
# 下载库或添加到 Maven
wget https://repo1.maven.org/maven2/org/json/json/20230227/json-20230227.jar
wget https://repo1.maven.org/maven2/commons-cli/commons-cli/1.5.0/commons-cli-1.5.0.jar
构建 C 漏洞利用
make
运行 Java 包装器
javac -cp ".:json-20230227.jar:commons-cli-1.5.0.jar" -d . src/main/java/com/example/cve20241086/ExploitRunner.java
java -cp ".:json-20230227.jar:commons-cli-1.5.0.jar" com.example.cve20241086.ExploitRunner --run
选项:--check、--run、--dry-run、--payload <路径>、--config <文件>、
有关详细设置,请参阅 Setup Guide。
CVE-2024-1086-Exploit/
├── src/
│ ├── main/
│ │ ├── c/
│ │ │ └── exploit.c # 🔐 C 漏洞利用模板
│ │ ├── java/
│ │ │ └── com/example/cve20241086/
│ │ │ └── ExploitRunner.java # 🔍 Java 包装器
│ │ └── resources/
│ │ └── config.json # 📜 漏洞利用配置
│ └── test/
│ ├── c/
│ │ └── test_exploit.c # 🧪 C 测试用例
│ └── java/
│ └── com/example/cve20241086/
│ └── ExploitRunnerTest.java # 🧪 Java 测试用例
├── Makefile # 🛠️ 构建脚本
├── README.md # 📝 本文件
├── CONTRIBUTING.md # 🤝 贡献指南
├── LICENSE # 📄 MIT 许可证
└── tests/
└── run_tests.sh # 🧪 测试运行脚本
在安全的实验室环境中测试项目:
# 检查系统漏洞
java -cp ".:json-20230227.jar:commons-cli-1.5.0.jar" com.example.cve20241086.ExploitRunner --check
# 运行漏洞利用(不可用)
java -cp ".:json-20230227.jar:commons-cli-1.5.0.jar" com.example.cve20241086.ExploitRunner --run
# 运行测试
./tests/run_tests.sh
# 清理构建产物
make clean
我们欢迎贡献以增强这个教学项目!请参阅 Contributing Guidelines 了解以下方面的详细信息:
nf_tables 中的释放后使用漏洞exploit_log.txt 时间小于 50ms通过 src/main/resources/config.json 进行配置:
{
"exploitBinary": "./exploit",
"targetKernel": "5.15",
"payloadPath": "/tmp/payload.sh",
"logLevel": "DEBUG",
"timeoutSeconds": "30"
}
请参阅 Configuration Guide。
常见问题:
make clean && make。sysctl -w kernel.unprivileged_userns_clone=1 且 lsmod | grep nf_tables。json-20230227.jar 和 commons-cli-1.5.0.jar。根据 MIT 许可证许可 — 请参阅 LICENSE。
🛡️ 用 ❤️ 为安全研究社区打造
--help运行测试
./tests/run_tests.sh
| 组件 | 最低要求 | 推荐配置 |
|---|
| 内核版本 | 5.14 | 5.15.x < 5.15.148 |
| 内存 | 512MB | 1GB+ |
| CPU | 1GHz | 2GHz+ |
| 磁盘空间 | 100MB | 500MB+ |
| Java 版本 | JDK 11 | JDK 17 |