目录遍历漏洞-CVE-2021-41773
目录
简介
原理
例子
Apache路径穿越漏洞
环境搭建
漏洞原理
漏洞利用
简介
目录遍历漏洞(也称为路径遍历漏洞)是一种由于Web服务器或Web应用程序对用户输入的文件名称的安全性验证不足而导致的安全漏洞。
原理
目录遍历漏洞允许攻击者在未授权的状态下读取应用服务上的任意文件,包括应用程序代码和数据、后端系统的凭据以及敏感的操作系统文件等。在某些情况下,攻击者甚至可能能够写入服务器上的任意文件,从而修改应用程序数据或行为,并最终完全控制服务器。就比如说在web服务器上有个模块需要读取文件,读取文件时,攻击者可以输入路径../这样就去了当前所在目录的上一个路径。这样攻击者就可以访问一些危险路径。
例子
Apache路径穿越漏洞
环境搭建
在vulhub靶场中有相关环境
在GitHub中下载vulhub后,直接拉取即可
vulhub:Vulhub - Docker-Compose file for vulnerability environment
在这个文件夹下
使用docker compose up -d拉取
去服务器的8080端口,显示如下图所示证明搭建成功
漏洞原理
在 Apache HTTP Server 2.4.49 版本中,在对用户发送的请求中的路径参数进行规范化时,其使用的 ap_normalize_path() 函数会对路径参数先进行 url 解码,然后判断是否存在 ../ 路径穿越符。
当检测到路径中存在 % 字符时,若其紧跟的两个字符是十六进制字符,则程序会对其进行 url 解码,将其转换成标准字符,如 %2e 会被转换为 . 。若转换后的标准字符为 . ,此时程序会立即判断其后两字符是否为 ./ ,从而判断是否存在未经允许的 ../ 路径穿越行为。
如果路径中存在 %2e./ 形式,程序就会检测到路径穿越符。然而,当出现 .%2e/ 或 %2e%2e/ 形式,程序就不会将其检测为路径穿越符。原因是遍历到第一个 . 字符时,程序检测到其后两字符为 %2 而不是 ./ ,就不会将其判断为 ../ 。因此,攻击者可以使用 .%2e/ 或 %2e%2e/ 绕过程序对路径穿越符的检测,从而读取位于 Apache 服务器 web 目录以外的其他文件,或者读取 web 目录中的脚本文件源码,或者在开启了 cgi 或 cgid 的服务器上执行任意命令。
漏洞利用
使用curl发送payload
首先使用../尝试是否可以,发现不可以这就对应了上面的后端过滤
使用.%2e尝试,成功绕过