本地文件包含 (LFI) 是一种 Web 应用程序漏洞,允许攻击者在 Web 服务器上包含和执行任意文件。攻击者可以通过将恶意文件路径作为参数传递来利用此漏洞,该路径可能是服务器上的本地文件。这可以让攻击者查看敏感信息,例如配置文件或用户凭据,执行任意代码,甚至获得对服务器的完全控制权。
我在我能够从 WEB-INF/ 目录下载 web.xml 文件的其中一个程序中发现了一个本地文件包含 (LFI) 漏洞。但是,只需稍作调整,该错误就非常简单。
该网站有一个下载课程详细信息选项,它通过文件名=参数从服务器获取课程详细信息,这是一个 POST 请求。该网站在 IIS 服务器上运行,所以最初我想下载一些敏感文件,但它们都受到限制,但后来我想到下载成功下载的 web.xml 文件。下载的文件有管理员的用户名和密码,但我找不到登录门户,所以严重性被降级了。我没有报告错误,因为目标是 OOS(超出范围)。
我去了一个可以选择“下载课程详情”的网站
2.我右键单击按钮并单击检查以检查超链接以及它从何处获取文件
3.我知道它使用的是 IIS 服务器,所以我搜索了web.xml的路径
4.我将路径编辑为?filename=/WEB-INF/web.xm
5.然后我点击按钮下载文件并打开它,我得到了凭据
为什么会这样?
在我看来,该网站在处理用户输入之前没有验证和清理用户输入。然而,大部分敏感文件都被阻止了,但从我的角度来看,阻止特定文件并不是理想的解决方案,用户输入应该在处理之前进行验证和清理。
LFI 漏洞的影响可能很严重,因为它可能导致 Web 服务器及其数据完全受损。然而,在我的例子中,影响仅限于下载web.xml文件,因为所有主要的敏感文件都被限制下载,所以影响是中等的。
注意:如果我能找到允许我使用我获得的凭据进行访问的登录面板,那么严重性就会很高。
如果有任何用户输入到达,则应进行输入验证和清理。服务器不应在未经验证的情况下处理用户输入。验证和清理应该在客户端和服务器端完成。此外,应用程序应避免使用用户输入来构建文件路径,而是使用白名单方法来指定允许的文件路径。Web 应用程序防火墙还可用于检测和阻止利用 LFI 漏洞的尝试。