| name | analyzing-web-server-logs-for-intrusion |
| description | 解析 Apache 和 Nginx 访问日志,检测 SQL 注入(SQL Injection)尝试、本地文件包含(Local File Inclusion)、 目录遍历(Directory Traversal)、Web 扫描器指纹及暴力破解(Brute Force)模式。 使用基于正则表达式的模式匹配对照 OWASP 攻击签名、GeoIP 富化进行来源溯源, 以及针对请求频率和响应大小异常值的统计异常检测。 |
| domain | cybersecurity |
| subdomain | security-operations |
| tags | ["analyzing","web","server","logs"] |
| version | 1.0 |
| author | mahipal |
| license | Apache-2.0 |
操作说明
- 安装依赖:
pip install geoip2 user-agents
- 以 Combined Log Format(Apache)或 Nginx 默认格式收集 Web 服务器访问日志。
- 解析每条日志条目,提取:IP、时间戳、方法、URI、状态码、响应大小、user-agent、referer。
- 应用检测规则:
- SQL 注入:
UNION SELECT、OR 1=1、' OR '、十六进制编码模式
- LFI/路径遍历:
../、/etc/passwd、/proc/self、php://filter
- XSS:
<script>、javascript:、onerror=、onload=
- 扫描器签名:nikto、sqlmap、dirbuster、gobuster、wfuzz user-agents
- 暴力破解:同一 IP 在 5 分钟内向登录端点发送超过 50 次 POST 请求
- 用 GeoIP 数据富化,生成按优先级排序的发现报告。
python scripts/agent.py --log-file /var/log/nginx/access.log --geoip-db GeoLite2-City.mmdb --output web_intrusion_report.json
示例
在 URI 中检测 SQL 注入(SQLi)
192.168.1.100 - - [15/Jan/2024:10:30:45 +0000] "GET /products?id=1' UNION SELECT username,password FROM users-- HTTP/1.1" 200 4532
扫描器 User-Agent 检测
Nikto/2.1.6, sqlmap/1.7, DirBuster-1.0-RC1, gobuster/3.1.0