此 POC 基于 UTsweetyfish 之前创建的 POC,该 POC 分享于仓库:https://github.com/UTsweetyfish/CVE-2023-38545。与那个 POC 不同,这个 POC 是针对命令行工具而非 libcurl 库的,并且不需要 Python 和编译。
此 POC 针对 curl 的 SOCKS5 堆缓冲区溢出,展示了如何溢出 curl 命令行工具中的接收缓冲区。默认情况下,curl 初始化接收缓冲区的大小为 100k,这使其不易受到 CVE-2023-38545 的影响。但可以通过设置速率限制(--limit-rate)来减小该缓冲区的大小。
要运行此 POC,首先使用 SSH 设置本地 SOCKS5 代理(这需要本地运行 SSH 服务器):
ssh -fND 10801 localhost
接下来,运行 poc.sh 脚本(这需要安装 Netcat (nc)):
./poc.sh
可能需要多次尝试才能触发缓冲区溢出。如果触发溢出,脚本将以错误代码退出,并显示一条错误消息,指示执行已被中止。当溢出失败且 curl 未受影响时,将显示一条消息,指示无法解析名为 "AAAA...." 的主机。
链接: