最近有消息说 一些 nginx 服务器仍然容易受到攻击 该技术“Nginx别名遍历»,它是在 2018 年 Blackhat 会议上提出的,允许访问位于 aliases 指令中指定的根目录之外的文件和目录。
问题的实质 是 块文件 使用别名指令 通过附加请求的路径来提供,将其与位置指令的掩码进行匹配并切掉此掩码中指定的路径部分。
问题出现 仅在具有“alias”指令的配置中, 与 Nginx 配置中一样,有一个名为“location”的指令,它可以描述如何处理对特定 URL 的访问,并且通常用于将 URL 分配给服务器上的文件。
在将此位置与别名结合使用的模式中,当满足“不要在该位置指定的 URL 末尾添加斜杠”和“在指定的路径末尾添加斜杠”这两个条件时,这一点至关重要通过别名'满足。别名'满足。 据说存在漏洞。
在 BlackHat 2018 会议上,Orange Tsai 展示了他关于破解 URL 解析器的研究。 在其他令人印象深刻的发现中,他展示了由 @iaklis 创建的 2016 年 HCTF CTF 挑战赛中发现的技术。
为了使该技术适用,必须满足以下条件:
location 指令的路径中不能有正斜杠;
别名指令必须出现在位置上下文中,并且必须以正斜杠结尾。
对于上面显示的易受攻击配置的示例,攻击者可以请求文件“/img../test.txt”,并且该请求将匹配位置“/img”中指定的掩码,之后队列中剩余的“. ./test.txt”将被附加到别名指令路径“/var/images/”,因此将请求文件“/var/images/../test.txt”。
因此,攻击者可以访问“/var”目录下的任意文件,而不仅仅是“/var/images/”中的文件,例如要下载nginx日志,可以发送请求“/img ../log/nginx /access.log”。
一个分析 来自 GitHub 上的存储库 表明nginx配置错误导致问题在实际项目中依然存在.
例如,Bitwarden 密码管理器后端发现问题,可用于访问 /etc/bitwarden 目录中的所有文件(对 /attachments 的请求是从 /etc/bitwarden/attachments/ 发出的),包括存储在那里的数据库带有密码“vault.db”、证书和日志,为此发送请求“vault.db”、“identity.pfx”、“api.log”等就足够了。
有人提到 该漏洞的严重程度可能会根据项目的不同而显着波动,从可以忽略不计的影响到严重的影响。 其影响程度主要取决于暴露的目录是否包含可能促进进一步攻击或导致私人信息泄露的敏感数据。
作为搜索此漏洞的起点,我们选择探索显示此问题的流行 GitHub 存储库。 在可以访问源代码的环境中识别此特定漏洞变得更加可行,主要是由于两个主要因素:
检测——使用简单的代码分析工具(例如正则表达式搜索),使我们能够有效地识别这些项目中可能存在漏洞的 Nginx 配置文件。
利用:了解已分配别名的确切目标目录,我们可以设置本地实例,使用本地 shell 检查别名目录,并确定可以通过该漏洞访问哪些文件。
值得一提的是,该方法还适用于 Google HPC Toolkit,其中请求被重定向到感兴趣的目录以获取带有私钥和凭据的数据库,攻击者可以发送“secret_key”和“db.sqlite3”查询。
最后,如果你有兴趣能够了解更多,可以查阅详情 在下面的链接中。