该仓库包含一个用于测试 CVE-2024-2961 的 C 程序,该漏洞涉及 GNU C 库 (glibc) 中 iconv() 函数的缓冲区溢出。由于 PHP 堆的结构,此溢出可被利用来修改空闲列表指针的一部分,最终在程序内存中提供任意写原语。因此,任何拥有文件读取漏洞且在 PHP 应用程序上控制前缀的攻击者都可以实现 RCE。同样,强制 PHP 使用受控参数调用 iconv() 也使攻击者获得相同的能力。
iconv 库。确认你的系统有 glibc 2.39 或更早版本:
ldd --version
将此仓库克隆到本地机器:
git clone https://github.com/exfil0/test_iconv.git
cd test_iconv
使用 GCC 编译 C 程序:
gcc -o test_iconv test_iconv.c -liconv
执行编译后的程序:
./test_iconv
gdb 等调试工具分析崩溃,并确认是否与漏洞相关。如果遇到崩溃,可以使用 gdb 获取更多详细信息:
gdb ./test_iconv
在 GDB 中,运行程序:
run
如果程序崩溃,你可以检查程序状态:
bt
这将给出崩溃的回溯,有助于诊断溢出是否由该 CVE 导致。
使用 AddressSanitizer 编译程序以捕获溢出:
gcc -fsanitize=address -o test_iconv test_iconv.c -liconv
./test_iconv
AddressSanitizer 会在出现缓冲区溢出时提供详细信息。
如果确认存在漏洞,请考虑将 glibc 更新到已修补此问题的版本。你可以从 GNU 项目网站或发行版的包管理器下载并安装最新版本。
有关此漏洞的更多详细信息,请阅读以下研究文章: GLIBC 漏洞 CVE-2024-2961 打开 RCE 大门,PoC 漏洞利用已发布
此代码仅供教育和测试目的。请勿在未获得适当授权的系统上使用。