本文目录导读:

目录遍历漏洞(Path Traversal/Directory Traversal)的拦截可以从Web应用防火墙(WAF)配置、中间件/服务器加固、应用层代码安全三个维度进行综合防御,以下是具体实施方案:
Web应用防火墙(WAF)拦截
核心特征检测规则
# 基于NGINX的WAF规则示例(ModSecurity CRS核心规则集) SecRule REQUEST_URI "@rx (?:\.\./|\.\.\\)" \ "id:1000,phase:1,deny,status:403,msg:'Directory Traversal Attempt'" # 路径编码绕过检测 SecRule ARGS "@rx (?:%2e%2e%2f|%2e%2e%5c|\.\.[/\\])" \ "id:1001,phase:2,deny,t:urlDecodeUni"
云WAF配置要点(以阿里云WAF为例)
- 开启目录遍历防护开关(默认规则库包括、等模式)
- 自定义规则字段:
Request URI或GET参数匹配正则 - 对
%2e%2e%2f等URL编码变形进行双重解码检测
商业WAF(CloudFlare/AWS WAF)配置
// AWS WAF SQL注入+目录遍历组合规则示例
{
"Name": "directory-traversal-block",
"Priority": 10,
"Action": "BLOCK",
"Statement": {
"RegexPatternSetReferenceStatement": {
"Arn": "arn:aws:wafv2:...:regex-pattern-set/directory-traversal",
"RegexPatternSet": ["\\.\\./", "\\.\\.\\\\", "%2e%2e%2f"]
}
}
}
中间件/服务器层防护
Nginx配置示例
# 全局过滤目录遍历字符
if ($request_uri ~* "(\/\.\.\/|%2e%2e%2f|\.\.\\\\)") {
return 403;
}
# 精确控制文件访问路径
location /downloads/ {
alias /data/files/;
# 禁止访问上层目录
location ~ /\.\./ {
deny all;
}
}
Apache配置示例
# .htaccess 配置
RewriteEngine On
# 拦截../及编码变体
RewriteRule (.*)(\.\.\\/|%2e%2e%2f|..\\)(.*) - [F]
# 禁止路径穿越符号
<DirectoryMatch "/\.\./">
Order Allow,Deny
Deny from all
</DirectoryMatch>
Tomcat/Jetty配置
<!-- Tomcat: web.xml 禁止路径遍历 -->
<security-constraint>
<web-resource-collection>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
应用层代码安全(Java/Python/Node.js)
Java示例(规范路径校验)
import java.nio.file.Path;
import java.nio.file.Paths;
public boolean safePath(String userInput) {
// 1. 规范化路径
Path basePath = Paths.get("/data/uploads").normalize();
Path resolvedPath = basePath.resolve(userInput).normalize();
// 2. 检查是否在允许范围内
if (!resolvedPath.startsWith(basePath)) {
return false; // 检测到目录遍历
}
// 3. 检查路径编码解码
if (userInput.contains("../") || userInput.contains("..\\")) {
return false;
}
return true;
}
Python示例(白名单+严格路径解析)
import os
import posixpath
def safe_file_read(base_dir, user_input):
# 1. 使用白名单限制访问目录
if not base_dir.startswith('/safe/path/'):
return 'Invalid base path'
# 2. 规范化路径
full_path = os.path.normpath(os.path.join(base_dir, user_input))
# 3. 验证路径在允许范围内
if not full_path.startswith(base_dir):
raise ValueError("Path traversal detected")
# 4. 额外检测编码绕过 (如 %2e%2e%2f)
import urllib.parse
decoded = urllib.parse.unquote(user_input)
if '..' in decoded:
return 'Encoding bypass attempt'
with open(full_path, 'r') as f:
return f.read()
Node.js示例(中间件模式)
const path = require('path');
const { URL } = require('url');
// Express中间件
function dirTraversalProtection(req, res, next) {
const param = req.query.file || req.path;
// 1. 规范化路径
const fullPath = path.normalize('/app/public/' + param);
// 2. 检查是否越界
if (!fullPath.startsWith('/app/public/')) {
return res.status(403).send('Directory traversal blocked');
}
// 3. 检测编码绕过
const decoded = decodeURIComponent(param);
if (decoded.includes('..') || decoded.includes('..\\')) {
return res.status(403).send('Encoding bypass blocked');
}
next();
}
增强防御措施(覆盖编码绕过)
常见编码绕过模式检测
# 综合检测正则(支持16进制、双重编码) (?:\.\.\\/|\.\.\\) # 原始字符 | (?:%2e%2e%2f|%252e%252e%252f) # URL编码 | (?:\.\.\\\\|%5c%5c) # 反斜杠变体 | (?:%c0%ae%c0%ae%c0%af) # UTF-8过载编码
中间件层双重解码
# NGINX强制对请求进行两次URL解码后匹配
location / {
set $decoded_uri $uri;
set $decoded_uri $decode_base64?; # 复杂场景需自定义模块
if ( $decoded_uri ~ (\\.\\./) ) {
return 403;
}
}
白名单模式(推荐)
// 只允许访问预定义文件列表
Set<String> allowedFiles = Set.of("report.pdf", "images/logo.png");
public boolean isAllowedAccess(String requestPath) {
return allowedFiles.contains(requestPath);
}
监控与应急响应
日志监控规则(ELK)
if [request] =~ /%2e%2e|\\.\\.\\// {
mutate { add_tag => ["directory_traversal_attempt"] }
elasticsearch {
index => "attack-alerts-%{+YYYY.MM.dd}"
}
}
实时告警指标
- 单位时间内
403状态码数量激增 - 包含的请求占比超过0.1%
- 同一IP不同文件的请求模式
自动封禁策略(Fail2Ban示例)
[dir_traversal] enabled = true filter = fail2ban-filter-dir-traversal.conf action = iptables-allports[name=dir_traversal] logpath = /var/log/nginx/access.log maxretry = 5 findtime = 300 bantime = 3600
最佳实践组合
- 第一层:WAF/云防护快速拦截90%的简单遍历尝试
- 第二层:服务器配置(Nginx/Apache)阻断基础攻击
- 第三层:应用层代码严格路径白名单+双解码校验
- 第四层:日志监控捕捉0day绕过变体
特别注意:避免仅依赖黑名单(如拦截),攻击者可轻易通过/var/www/...、%2e%2e%2f、等方式绕过,推荐使用白名单路径+路径规范化验证的组合方案,且对输入进行分层URL解码(至少两次)。
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播