portswigger 靶场之“目录遍历”

所有实验室 |网络安全学院 (portswigger.net)

Directory traversal

1. 文件路径遍历,简单案例

File path traversal, simple case

  1. 使用 Burp Suite 截获和修改获取产品图像的请求。

  2. 修改参数filename,观察响应是否包含文件的内容。/etc/passwd

    ../../../etc/passwd
    
    # 相对路径 “../",这个路径表示回到上一级目录
    

    访问操作系统中的 passwd 文件。passwd 文件包含系统中所有用户的用户名、密码、用户 ID、主目录等信息

2. 文件路径遍历,通过绝对路径旁路阻止遍历序列

File path traversal, traversal sequences blocked with absolute path bypass

  1. 使用 Burp Suite 修改产品图像的请求filename /etc/passwd
  2. 当接收到用户提供的路径时,应用程序首先将其解析为绝对路径,然后将其与白名单中的路径进行比较。防止攻击者使用目录遍历序列来访问应用程序之外的文件和目录。
    1. 如果路径在白名单内,则认为是合法的;
    2. 否则,应用程序会拒绝该请求并返回错误信息。

3. 文件路径遍历,非递归剥离遍历序列

File path traversal, traversal sequences stripped non-recursively

  1. 非递归剥离遍历序列:应用程序会解析路径并对其进行分析,然后使用算法来删除路径中的 "../" 遍历序列
  2. 使用双写绕过
....//....//....//etc/passwd

4. 文件路径遍历,使用多余的 URL 解码剥离遍历序列

File path traversal, traversal sequences stripped with superfluous URL-decode

  1. 第四关/被过滤了,所以需要对其进行 URL 编码,但在 burp 中用 Repeater 发送后还是错误,得知需要进行第二次 URL 编码才可绕过
..%252f..%252f..%252fetc/passwd

5. 文件路径遍历,路径开始验证

File path traversal, validation of start of path

验证请求的文件路径是否以 “/var/www/” 开头

/var/www/images/../../../etc/passwd

6. 文件路径遍历,使用空字节旁路验证文件扩展名

File path traversal, validation of file extension with null byte bypass

  1. 在 URL 编码中,%00 可以用于表示字符串的结束符。
  2. 作用是将“.png”文件名截断,使得请求实际上是针对“/etc/passwd”这个文件的
../../../etc/passwd%00.png

posted @ 2023-03-07 15:45  跛一一  阅读(286)  评论(0编辑  收藏  举报