近日,网络安全界爆出一个影响广泛的高危漏洞,涉及广泛使用的OpenSSH Server。该漏洞存在于OpenSSH Server的信号处理程序中,利用此漏洞,攻击者可以在基于glibc的Linux系统上以root身份实现未经身份验证的远程代码执行。此漏洞的影响范围极大,所有使用默认配置的OpenSSH Server均可能受到威胁。
在默认配置下的OpenSSH Server (sshd)中存在信号处理程序竞争条件漏洞。具体来说,如果客户端未在LoginGraceTime秒内(默认情况下为120秒,旧版OpenSSH中为600秒)进行身份验证,则sshd的SIGALRM处理程序将被异步调用,但该信号处理程序会调用各种非async-signal-safe的函数(例如syslog())。攻击者可以利用该漏洞在基于glibc的Linux系统上以root身份实现未经身份验证的远程代码执行。
OpenSSH_9.2p1 至 8.5p1
该漏洞的利用可能导致以下严重后果:
未经授权的访问:攻击者可以未经身份验证获取系统的root权限。
数据泄露:攻击者可以访问和窃取敏感数据。
系统瘫痪:攻击者可以在目标系统上执行恶意代码,导致系统不可用。
进一步攻击:攻击者可以利用获得的权限在内部网络中进行横向移动,攻击更多系统。
目标系统运行OpenSSH Server,并且使用默认配置。
攻击者需要与目标系统建立连接,并在LoginGraceTime内未进行身份验证。
poc下载地址:
扫描工具:
https://github.com/xaitax/CVE-2024-6387\_Check
poc:
https://github.com/zgzhang/cve-2024-6387-poc/blob/main/7etsuo-regreSSHion.c
将漏洞利用代码保存到一个文件中,例如regreSSHion.c
。然后在终端中运行以下命令进行编译:
gcc -o regreSSHion regreSSHion.c -lrt
在使用代码前,需要根据具体情况进行一些修改:
替换代码中的shellcode占位符为实际的payload:
unsigned char shellcode[] = "\x90\x90\x90\x90"; // Replace with actual shellcode
根据目标系统的配置,调整代码中的glibc基地址:
uint64_t GLIBC_BASES[] = { 0xb7200000, 0xb7400000 }; // Adjust as needed
在编译成功并进行了必要的修改后,使用以下命令运行漏洞利用程序:
./regreSSHion <target_ip> <target_port>
其中:
<target_ip>
是目标SSH服务器的IP地址。
<target_port>
是目标SSH服务器的端口(通常是22)。
漏洞利用程序将在运行过程中输出各种信息,这些信息可以帮助您判断是否成功:
Attempting exploitation with glibc base: 0xb7200000
Attempt 0 of 20000
Connection established
SSH handshake completed
Preparing heap
Estimated parsing time: 0.000123 seconds
Possible exploitation success on attempt 123 with glibc base 0xb7200000!
Connection established:表示成功建立与目标系统的连接。
SSH handshake completed:表示成功完成SSH握手。
Preparing heap:表示开始准备堆内存布局。
Estimated parsing time:表示计算的解析时间。
Possible exploitation success:表示可能成功利用了漏洞。
利用所需时间:
单次尝试时间:每次尝试包括连接、握手、准备堆、计算解析时间和发送最终包。假设每次尝试平均花费1秒(包括连接、握手和计算时间)。
总尝试次数:最多20000次。
总时间估计为:
总时间=单次尝试时间×总尝试次数\text{总时间} = \text{单次尝试时间} \times \text{总尝试次数}总时间=单次尝试时间×总尝试次数总时间=1秒×20000\text{总时间} = 1\text{秒} \times 20000总时间=1秒×20000总时间=20000秒\text{总时间} = 20000\text{秒}总时间=20000秒
将20000秒转换为小时:
总时间(小时)=200003600\text{总时间(小时)} = \frac{20000}{3600}总时间(小时)=360020000总时间(小时)≈5.56小时\text{总时间(小时)} \approx 5.56 \text{小时}总时间(小时)≈5.56小时
POC来源于网络,自行辨别
为了保护您的系统免受该漏洞的影响,建议采取以下措施:
立即升级OpenSSH:将OpenSSH Server升级到最新版本,确保漏洞被修补。
配置文件调整:根据实际需求调整LoginGraceTime值,减少攻击窗口。
增强监控:加强对服务器的监控,及时发现和阻止异常行为。
应用安全加固:对系统进行全面的安全检查和加固,确保系统的整体安全性。