104人参与 • 2024-08-04 • 企业安全
这篇文章主要是对作者关于portswigger提供的路径遍历的相关lab的通关笔记 通过这些lab需要的工具是burpsuite
路径遍历也称为目录遍历,这种漏洞允许攻击者读取运行应用的服务器上的任意文件,在某些情况下,攻击者还可以修改应用的数据或行为,并最终获取服务器的所有控制权 举个攻击者通过路径遍历读取任意文件例子: 假设当前访问的页面通过以下代码加载了一张图片 <img src="/loadimage?filename=218.png">
在实际的服务器上,218.png存放在/var/www/images/218.png
如果该网站存在目录遍历漏洞,攻击者就可以通过构造以下url访问/etc/passwd
文件 http://hostname/loadimage?filename=../../../etc/passwd
lab1地址:file path traversal, simple case 最理想的状态下,应用一点关于目录遍历的防护措施都没有,直接进行遍历即可,攻击者只需要对文件存放的实际位置进行猜测验证即可 ,拿到正确路径就可以读文件 lab是一个商店,加载了许多图片 在burpsuite中随便选一个发送到repeater中
读取目标为
/etc/passwd
,猜测文件路径,逐渐添加../
即可,只需要向上返回到根路径即可读取到文件
lab地址:file path traversal, traversal sequences blocked with absolute path bypass某些情景下,应用会将用户的输入中包含的目录遍历序列 (即../
)顾虑,这种情况下,如果应用允许用户输入绝对路径,则可以绕过该防御方式
lab地址:lab: file path traversal, traversal sequences stripped non-recursively 某些情景下,应用会对用户的输入进行非递归的目录遍历序列过滤,这种情况下,对目录遍历序列进行重写即可绕过,譬如:....//
lab地址:file path traversal, traversal sequences stripped with superfluous url-decode 有些场景下,服务器可能会将路径遍历序列过滤后在将输入传递给文件系统api,这种情况下可以通过对../
进行url编码来绕过,譬如: ../
=> ..%2f
=> ..%252f
%25
是%
的url编码 某些情况下,其他非标准的url编码方式也可以,比如 %c0%af
解码后是0xc0 0xaf
,在utf-8字符集下表示/
%ef%bc%8f
解码后是u+ff0f
,在 unicode 中是全角的/
字符
lab5地址:lab: file path traversal, validation of start of path 某些场景下,应用可能要求用户提供的文件名必须包含预期的base目录,这种情况下,我们还是可以使用../
组合来进行目录遍历,我认为这个lab甚至比基础lab还要简单,因为这意味着不用猜文件实际的位置了
lab6地址:file path traversal, validation of file extension with null byte bypass 在某些场景下,应用可能要求用户提供的文件名以特定的后缀结尾,这时候可以考虑通过%00
空字符进行一个绕过 该lab指定的后缀名是.png
,我们直接将其用%00
进行截断,成功读取
最有效的方式是避免将用户的输入传递给文件系统api,如果无法避免的要将用户输入传递给文件系统api,可以考虑建立下方的两层防护:
import os
base_directory = "/var/www/imgs"
origin_path= os.path.join(base_directory, user_input)
canonicalize_path = os.path.realpath(origin_path)
if not canonicalize_path.startswith(base_directory):
# 进行拒绝及其他操作
pass
您想发表意见!!点此发布评论
版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。
发表评论