【问题标题】:Path traversal vulnerability路径遍历漏洞
【发布时间】:2022-03-02 20:22:05
【问题描述】:

路径遍历的概念对我来说是新的,需要一些指导。

在我的项目中,我有以下代码行:

uploadimg.SaveAs(Server.MapPath("tempfiles/" + fUIName));
FileUpload1.SaveAs(Server.MapPath("tempfiles/" + fSIName));

这段代码是否容易受到PathTraversal漏洞的影响。

谁能帮助我理解路径遍历的概念以及如何删除/避免它。 谢谢!

编辑 1:

还提到我将文件临时存储在tempfiles 文件夹中。完成保存文件的目的后,我将从tempfiles 中删除文件。那么我可以跳过这个漏洞吗? 请指导。 谢谢!

【问题讨论】:

    标签: asp.net path-traversal


    【解决方案1】:

    路径遍历是指某人将文件上传到您的站点,并且可以直接从 URL 访问它(如果他知道路径,或者可以从其他页面找到它)。

    例如,假设您在tempfiles/ 上传了一个名为file.pdf 的pdf 文件

    那么你可能在某个页面上显示为http://example.com/tempfiles/file.pdf

    现在攻击者知道文件上传到哪里,然后将它上传给你一些其他文件,可能是 html with fraud,可能是 aspx 页面中的一些 server browser 等...并直接从 url 调用它。

    解决方案

    可以将所有文件上传到安全文件夹,例如App_Data,您无法直接访问它。

    您可以将其上传到您更改权限的文件夹,但您无法直接访问它。 (看这里你怎么能做到这一点How to set correct file permissions for ASP.NET on IIS

    您可以限制上传内容的扩展名,例如只允许图片,并将其放在该目录中以避免任何人在那里运行任何东西。

    <configuration>
        <system.web>
          <authorization>
            <deny users="*" />
          </authorization>
        </system.web>
    </configuration>
    

    现在,如果您将 pdf 上传到用户无法直接从 url 访问的目录,您需要创建一个 返回上传文件的处理程序。处理程序必须知道是否允许用户查看文件、文件是否安全、文件是否直接来自站点。

    一些简单的例子。 file download by calling .ashx pageAlternate image display in asp.net

    最后一个解决方案是检查引用并确保它来自您的站点,而不是使用此HttpContext.Current.Request.UrlReferrer.Host 从 URL 直接调用。这意味着用户正在上传图片,但只有当它使用某个链接从您网站的页面发出请求时才允许查看它。

    【讨论】:

    • 感谢您的回复。我在我的问题中添加了一些额外的信息。你能澄清一下吗?
    • @AmitKaushal 我想我有答案 - 如果你在保存后删除它,那么只需将该文件夹设为私有,用户无法读取 - 最简单的方法是制作一个App_Data 文件夹中的 temp 文件夹
    • 规范路径能达到目的吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-21
    • 1970-01-01
    相关资源
    最近更新 更多