Skip to content
KitploitKITPLOIT
工具漏洞利用博客
Log in
提交
工具漏洞利用博客
提交

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

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

订阅源联系隐私© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
CVE-2022-23093 — FreeBSD ICMP 缓冲区溢出,freebsd 缓冲区溢出 PoC | Kitploit
工具/GitHubGitHub/sh4den/cve-2022-23093
漏洞分析漏洞利用ShellcodePayload 开发二进制利用
GitHubsh4den/cve-2022-23093

CVE-2022-23093

FreeBSD ICMP 缓冲区溢出,freebsd 缓冲区溢出 PoC

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

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

CVE-2022-23093 FreeBSD 基于栈的溢出

信息

默认使用的 shellcode 是 FreeBSD/x86-64 - execve - 28 字节(来自 Gitsnik),请替换为你自己的以进行启动

漏洞详情

ping 工具用于向主机或网关请求 ICMP ECHO_RESPONSE,它通过 ICMP 协议必须的 ECHO_REQUEST 数据报,以 IPv4 目标(IPv4 主机或 IPv4 多播组)进行调用。ECHO_REQUEST 数据报由 IP 和 ICMP 头组成,随后是一个 "struct timeval" 和数量可变的 "pad" 字节,用于填充数据包。

根据 FreeBSD 项目的安全公告,ping 工具从网络获取原始 IP 数据包,以在 pr_pack() 函数中处理响应。在响应处理过程中,ping 会重建 IP 头、ICMP 头,以及(如果存在)表示导致 ICMP 错误的原始数据包的 "quoted packet"。该 quoted packet 同样包含一个 IP 头和一个 ICMP 头。

pr_pack() 函数会将接收到的 IP 和 ICMP 头复制到栈缓冲区中以供进一步处理。然而,它没有考虑在响应或 quoted packet 中,IP 头之后可能存在 IP 选项头的情况。当存在 IP 选项时,pr_pack() 会使目标缓冲区溢出多达 40 字节。

技术分析

ping 工具运行在用户空间,当调用 ping 命令时,会执行位于 /sbin/ping 的二进制文件。该工具的源代码可在 FreeBSD 源码中公开获取。存在漏洞的函数 pr_pack() 会将 ICMP 包响应信息以字符串格式打印到标准输出,例如 "64 bytes from 1.3.3.7: icmp_seq=1 ttl=55 time=13.7 ms."

image

如上图所示,ICMP 数据包在请求和响应中,都包含带有可选 Options 字段的 IP 头。在恶意攻击中,这些 IP Options 会被启用并填充非空字节。

如果 ICMP 数据包在发往目标主机的途中被破坏或故意篡改,且原始 echo 请求中启用了 IP Options,则 pr_pack() 函数无法在栈上分配足够的空间来容纳 IP Options,从而导致栈溢出。

在这些错误情况下,来自目标主机的响应数据部分也可能包含一个 "quoted packet",用于标识导致 ICMP 错误的特定数据包。当 quoted packet 包含 ICMP 头时,pr_pack() 函数会发生栈溢出。

下载工具