记一次burp suite文件上传漏洞实验
一·文件上传漏洞概念
文件上传漏洞是指 Web 服务器允许用户在没有充分验证文件名称、类型、内容或大小等内容的情况下将文件上传到其文件系统。未能正确执行这些限制可能意味着
即使是基本的图像上传功能也可用于上传任意且具有潜在危险的文件。这甚至可以包括启用远程代码执行的服务器端脚本文件。
二·防止在用户可访问的目录执行文件
作为预防措施,服务器通常只运行其 MIME 类型已明确配置为执行的脚本。否则,它们可能只是返回某种错误消息,或者在某些情况下,将文件内容作为纯文本提供。
这种配置通常在目录之间有所不同。用户提供的文件上传到的目录可能比文件系统上假定最终用户无法访问的其他位置具有更严格的控制。如果您能找到一种方法将脚本
上传到不应该包含用户提供的文件的不同目录,那么服务器最终可能会执行您的脚本。
三·通过路径遍历实现文件上传实验室
实验要求:上传一个基本的 PHP web shell 并使用它来泄露文件的内容/home/carlos/secret。使用实验室横幅中提供的按钮提交此密钥。
步骤:
(1)登录账号
(2)发现有一个上传个人头像的功能
(3)上传一张图片
显示成功上传
(4)上传.php文件
发现并未阻止上传.php文件
(5)尝试运行脚本
用burp代理发现并没有运行脚本,而是以文本的形式返回脚本内容
(6)在 Burp 的代理历史记录中,找到POST /my-account/avatar用于提交文件上传的请求并将其发送到 Burp Repeater。
在Content-Disposition标题中,将 更改filename为包含目录遍历序列:
Content-Disposition: form-data; name="avatar"; filename="../example.php"
然后点击发送请求
可以看到已经上传成功
通过对正斜杠(/)字符进行 URL 编码来混淆目录遍历序列,得到:
filename="..%2fexample.php"
(7)在 Burp 的代理历史记录中,找到该GET /files/avatars/..%2fexploit.php请求。观察响应中返回了 Carlos 的秘密。
表明文件已经上传到更高级别的目录(files/)里面