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, 安全, 安全运营, 扫描框架, 无后门, 目录遍历检测, 超时处理, 逆向工具