You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Node.js中includes或readFileSync能否被绕过?配置防护是否存漏洞?

Express配置文件防护的安全性分析

场景描述

服务器目录下存在admin.config、server.config等配置文件,当前使用以下Express中间件拦截含"config"的请求参数:

app.use((req, res, next) => {
    if([req.body, req.headers, req.query].some(
        (item) => item && JSON.stringify(item).includes("config")
    )) {
        return res.send("Restricted");
    }
    next();
});

防护是否足够?

完全不足够。这个中间件的检测逻辑存在多处致命缺陷,攻击者可以通过多种方式绕过检测,进而获取目标配置文件。

具体绕过方式

1. 绕过"config"字符串检测

  • 大小写混淆:includes方法是大小写敏感的,攻击者可使用Config、CONFIG、cOnFiG等变体。若服务器运行在Windows系统(文件系统大小写不敏感),传入?file=Admin.Config即可读取目标文件,而JSON.stringify后的字符串不会触发拦截。
  • 全角字符替换:用全角形式的config替代半角"config",JSON.stringify后的字符串无法被includes("config")匹配,但部分服务器的文件系统会自动将全角字符转换为半角,从而成功读取配置文件。
  • 短文件名利用(Windows环境):Windows系统支持短文件名格式,admin.config可简写为ADMIN~1.CON,该字符串不含"config",可直接绕过检测并读取原文件。
  • 编码拆分绕过:若后端参数处理支持动态拼接,可传入拆分后的字符串(如?file=conf%2Big),JSON.stringify后显示为{"file":"conf+ig"},不包含"config";若后端逻辑会自动解析拼接,即可还原为目标文件名。

2. 路径遍历与文件系统特性利用

若服务器存在任意文件读取或路径遍历漏洞,攻击者无需直接传入"config"字符串即可获取文件:

  • 符号链接跳转:在Linux环境下,攻击者可在可访问目录创建指向admin.config的符号链接(如ln -s ../admin.config linkfile),然后请求?file=linkfile,完全避开"config"检测。
  • 相对路径+文件别名:若配置文件存在备份(如admin.conf)或其他命名变体,直接请求该别名即可,无需触发"config"关键词检测。

总结

该中间件的防护逻辑过于简单,仅依赖字符串匹配,无法应对多种绕过手段,完全无法有效阻止攻击者获取配置文件。

内容的提问来源于stack exchange,提问作者pee2pee

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.23 13:54:22