本仓库包含针对我在 nftables 子系统中最近发现的安全漏洞的利用代码,该漏洞被分配为 CVE-2023-0179,影响从 5.5 到 6.2-rc3 的所有 Linux 版本,不过该利用已在 6.1.6 上进行了测试。
漏洞详情和报告可在 oss-security 上找到
只需执行 make needle 命令即可生成相应的可执行文件。
构建成功需要 libmnl 和 libnftnl:
sudo apt-get install libmnl-dev libnftnl-dev
该利用将进入一个非特权用户和网络命名空间,并通过 rule_add_payload 函数添加一个 nft_payload 表达式,该表达式在被评估时将触发栈缓冲区溢出并覆盖寄存器。
随后通过以下 nft 命令检索泄露的内容:
nft list map netdev mytable myset12
输出将泄露多个相对于内核数据结构的乱序地址,其中包括一个内核指令地址和 regs 指针。
该利用通过滥用 modprobe_path 变量创建一个 UID 为 0 的新用户账户 needle:needle。
尽情享受 root 权限吧。