0r1ng/detect_directory_traversal

GitHub: 0r1ng/detect_directory_traversal

一款用于分析 Web 访问日志并精准检测目录遍历攻击的 Python 脚本,通过置信度评分机制帮助 SOC 团队减少误报并提升审查效率。

Stars: 3 | Forks: 0

# 目录遍历日志检测器 一个用于在 Web 访问日志中检测高置信度目录遍历攻击的 Python 工具。 此脚本可分析 Apache/Nginx 风格的日志,并搜索可疑的遍历 payload,例如 `../`、编码后的遍历模式、敏感文件访问尝试、绝对文件路径以及常见的绕过技术。 ## 描述 目录遍历攻击发生在攻击者试图通过操纵路径或参数来访问预期 Web 目录之外的文件时。 攻击尝试示例: ``` /download?file=../../../../etc/passwd /view?page=%2e%2e%2f%2e%2e%2fetc%2fshadow /file?path=..%2f..%2f..%2fwindows%2fwin.ini ``` 此工具可帮助 SOC 分析师、检测工程师和安全研究人员从日志文件中识别可能的目录遍历活动,同时减少误报。 ## 功能 * 检测经典的 `../` 遍历尝试 * 检测 URL 编码的遍历 payload * 检测双重编码的 payload * 检测 Windows 和 Linux 敏感文件路径 * 检测诸如 `/etc/passwd`、`/etc/shadow`、`.env`、`.git/config`、`web.config` 和 `win.ini` 之类的敏感目标 * 支持 Apache 组合日志格式 * 支持 `.gz` 压缩日志 * 扫描请求路径、查询参数、referrer 和 user agent * 提供置信度评分 * 支持 JSON 输出 * 可筛选仅成功的 HTTP 响应 ## 支持的检测示例 ``` ../../../../etc/passwd ..%2f..%2f..%2fetc%2fpasswd %2e%2e%2f%2e%2e%2fetc%2fshadow file:///etc/passwd C:\Windows\win.ini /proc/self/environ /var/log/auth.log .git/config .env web.config ``` ## 安装说明 无需外部 Python 库。 克隆仓库: ``` git clone https://github.com/yourname/directory-traversal-log-detector.git cd directory-traversal-log-detector ``` 赋予脚本可执行权限: ``` chmod +x detect_directory_traversal_high_confidence.py ``` ## 使用说明 扫描单个日志文件: ``` python3 detect_directory_traversal_high_confidence.py access.log ``` 将结果保存到文本文件: ``` python3 detect_directory_traversal_high_confidence.py access.log > traversal_hits.txt ``` 扫描多个日志文件: ``` python3 detect_directory_traversal_high_confidence.py *.log ``` 扫描压缩日志: ``` python3 detect_directory_traversal_high_confidence.py *.gz ``` 仅显示成功的响应: ``` python3 detect_directory_traversal_high_confidence.py --only-success access.log ``` 包含中等置信度的发现: ``` python3 detect_directory_traversal_high_confidence.py --include-medium access.log ``` 导出 JSON lines: ``` python3 detect_directory_traversal_high_confidence.py --json access.log > traversal_hits.jsonl ``` ## 测试示例 创建一个测试日志: ``` cat > test.log << 'EOF' 178.78.113.5 - - [18/Apr/2023:19:42:00 +0000] "GET /download?file=../../../../etc/passwd HTTP/1.1" 200 2270 "-" "Mozilla/5.0" 178.78.113.5 - - [18/Apr/2023:19:42:01 +0000] "GET /assets/../style.css HTTP/1.1" 200 1000 "-" "Mozilla/5.0" 178.78.113.5 - - [18/Apr/2023:19:42:02 +0000] "GET /view?page=%2e%2e%2f%2e%2e%2fetc%2fshadow HTTP/1.1" 403 120 "-" "Mozilla/5.0" EOF ``` 运行检测器: ``` python3 detect_directory_traversal_high_confidence.py test.log ``` 脚本应能检测到恶意的 `/etc/passwd` 和 `/etc/shadow` 尝试,同时忽略无害的 `/assets/../style.css` 路径。 ## 输出示例 ``` ======================================================================================================================== FILE: access.log LINE: 1 CONFIDENCE: HIGH SCORE: 10 IP: 178.78.113.5 TIME: 18/Apr/2023:19:42:00 +0000 METHOD: GET STATUS: 200 SOURCE: request-target TYPE: query parameter PARAM: file VALUE: ../../../../etc/passwd REASON: decoded ../ traversal, sensitive target: /etc/passwd RAW: 178.78.113.5 - - [18/Apr/2023:19:42:00 +0000] "GET /download?file=../../../../etc/passwd HTTP/1.1" 200 2270 "-" "Mozilla/5.0" ``` ## 置信度级别 ### 高置信度 当脚本检测到强有力的证据时,该发现会被标记为高置信度,例如: ``` Traversal pattern + sensitive file target File-like parameter + sensitive file target Encoded traversal + sensitive file target Absolute sensitive Linux or Windows path ``` ### 中等置信度 中等置信度的发现默认会被隐藏。请使用 `--include-medium` 来显示它们。 ``` python3 detect_directory_traversal_high_confidence.py --include-medium access.log ``` ## 推荐的 SOC 使用场景 此脚本可用于以下场景: * SOC 告警分类 * Web 攻击调查 * 威胁狩猎 * 事件响应 * 检测工程 * 日志审查 * CTF 和实验室分析 目录遍历的强烈指标包括: ``` ../ + sensitive file encoded ../ + sensitive file file parameter + /etc/passwd path parameter + win.ini HTTP 200 or 206 response ``` ## 局限性 此工具用于检测可疑的日志条目。它无法证明攻击已经成功。 为了确认漏洞是否被利用,分析师应审查: * HTTP 响应码 * 响应大小 * 返回的内容 * 应用程序行为 * Web 服务器错误日志 * endpoint 或 WAF 告警 ## 安全提示 仅在你拥有或获得授权分析的日志和系统上使用此工具。 ## 许可证 MIT 许可证
标签:Python, 安全, 安全运营, 扫描框架, 无后门, 目录遍历检测, 超时处理, 逆向工具