【实验系统】
ubantu23.04
【实验步骤】
1. 选择一个公开的CVE漏洞(2023年或2024年发布,且需要搭建靶机环境)作为研究对象。
CVE-2023-32233 (LINUX内核权限提升漏洞)
2. 获取详细的漏洞信息:访问官方的CVE数据库,如[NVD (National Vulnerability Database)](https://nvd.nist.gov/),获取漏洞的详细描述、受影响的系统和版本。
研究人员发现,在 Linux 内核 6.3.1 及之前的版本中,Netfilter nf_tables处理批处理请求时的释放后使用可能会被滥用,即存在释放重利用(UAF)漏洞,从而对内核内存执行任意读写操作,导致非特权本地用户可以通过提权攻击获取 root 权限,发生这种情况的原因是匿名集处理不当。受影响系统版本范围为v5.1-rc1 <= Linux Kernel <= 6.3.1。
3. 搭建安全的测试环境:在隔离的环境中(如虚拟机)搭建受影响的软件或系统的特定版本。确保测试环境与生产环境完全隔离,以防止潜在的风险。
一旦在易受攻击的系统上启动了PoC,该系统可能会处于不稳定状态,并且内核内存可能被破坏。所以需要在专用系统上测试PoC,以避免可能的数据损坏。
环境: ubantu23.04 系统内核为6.2.0-20
4. 研究漏洞原理和利用方法:阅读相关的技术文章、研究论文,理解漏洞的具体原理和潜在的利用方式。查找相关的安全论坛和社区,了解已知的漏洞利用方法或PoC(Proof of Concept)。
与iptables类似,Netfilter是Linux内核提供的一个框架,它允许以自定义处理程序的形式实现各种与网络相关的操作,可以提供数据包的过滤、转发、地址转换NAT功能。Linux内核版本v5.14 — v6.6的netfilter 子系统nf_tables组件中存在释放后使用漏洞,由于在nft_verdict_init()函数中,允许正值作为hook判决中的丢弃错误,因此当NF_DROP发出类似于NF_ACCEPT的丢弃错误时,nf_hook_slow()函数可能会导致双重释放漏洞,从而本地低权攻击者可利用该漏洞将权限提升为root,对目标进行恶意攻击。
5. 安全测试漏洞:在控制的环境中尝试复现漏洞,记录测试过程和结果。使用漏洞扫描工具或手动测试方法来验证漏洞的存在。
exp下载地址:https://github.com/Liuk3r/CVE-2023-32233
执行以下命令,安装构建相关依赖项:
sudo apt install gcc libmnl-dev libnftnl-dev
运行以下命令以构建 PoC 二进制文件:
gcc -Wall -o exploit exp.c -lmnl -lnftnl
未提权前执行越权命令查看文件被拒绝
查看当前内核版本,在受影响范围内
进入根目录
执行已经编译好的EXP文件进行提权
可以看到权限已经提升到root
此时输入id命令可以看到权限已经为root,再次访问文件可成功
6. 分析和评估漏洞影响:评估漏洞对系统安全性的具体影响,包括数据泄露、系统崩溃等。考虑漏洞可能被恶意利用的方式和潜在后果。
Linux Kernel 的 Netfilter nf_tables子系统存在释放后重用漏洞,由于匿名集处理不当,当处理批处理请求时,Netfilter nf_tables中存在use-after-free漏洞,攻击者可利用该漏洞对内核内存执行任意读写操作,成功利用该漏洞的本地用户可获得root权限执行任意恶意操作甚至导致系统崩溃。
7. 研究和应用缓解措施:根据官方或社区的推荐,应用漏洞的补丁或缓解措施。测试缓解措施的有效性。
目前该漏洞已经修复,受影响用户可通过升级系统或禁用受影响的 nf_tables 内核模块可以缓解此漏洞。
在root权限下禁用nf_tables内核模块,然后使用命令reboot重启系统。
重启系统后重新复现漏洞,发现已无法提权成功。
禁用 nf_tables 内核模块会对依赖于该模块的功能产生一系列影响,谨慎操作。
可在管理员权限下通过命令modprobe nf_tables重启改模块,并用lsmod | grep nf_tables查看是否成功启用。