路径遍历(一):PortSwigger靶场通关笔记

h4ckb0ss
• 阅读 225

写在前面

这篇文章主要是对作者关于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:直接目录遍历读取文件

lab1地址:File path traversal, simple case 最理想的状态下,应用一点关于目录遍历的防护措施都没有,直接进行遍历即可,攻击者只需要对文件存放的实际位置进行猜测验证即可,拿到正确路径就可以读文件 lab是一个商店,加载了许多图片 路径遍历(一):PortSwigger靶场通关笔记 在burpsuite中随便选一个发送到repeater中 路径遍历(一):PortSwigger靶场通关笔记 读取目标为/etc/passwd,猜测文件路径,逐渐添加../即可,只需要向上返回到根路径即可读取到文件 路径遍历(一):PortSwigger靶场通关笔记

lab2:绝对路径绕过对目录遍历序列的过滤

lab地址:File path traversal, traversal sequences blocked with absolute path bypass某些情景下,应用会将用户的输入中包含的目录遍历序列(即../)顾虑,这种情况下,如果应用允许用户输入绝对路径,则可以绕过该防御方式 路径遍历(一):PortSwigger靶场通关笔记 路径遍历(一):PortSwigger靶场通关笔记

lab3:绕过非递归目录遍历序列过滤

Lab地址:Lab: File path traversal, traversal sequences stripped non-recursively 某些情景下,应用会对用户的输入进行非递归的目录遍历序列过滤,这种情况下,对目录遍历序列进行重写即可绕过,譬如:....// 路径遍历(一):PortSwigger靶场通关笔记 路径遍历(一):PortSwigger靶场通关笔记

lab4:url编码绕过目录遍历序列过滤

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 中是全角的/字符 路径遍历(一):PortSwigger靶场通关笔记 路径遍历(一):PortSwigger靶场通关笔记

lab5:绕过指定预期文件夹的过滤

lab5地址:Lab: File path traversal, validation of start of path 某些场景下,应用可能要求用户提供的文件名必须包含预期的base目录,这种情况下,我们还是可以使用../组合来进行目录遍历,我认为这个lab甚至比基础lab还要简单,因为这意味着不用猜文件实际的位置了 路径遍历(一):PortSwigger靶场通关笔记

lab6:绕过指定请求文件后缀名的过滤

lab6地址:File path traversal, validation of file extension with null byte bypass 在某些场景下,应用可能要求用户提供的文件名以特定的后缀结尾,这时候可以考虑通过%00空字符进行一个绕过 该lab指定的后缀名是.png,我们直接将其用%00进行截断,成功读取 路径遍历(一):PortSwigger靶场通关笔记

如何防止路径遍历

最有效的方式是避免将用户的输入传递给文件系统api,如果无法避免的要将用户输入传递给文件系统api,可以考虑建立下方的两层防护:

  1. 校验用户的输入,最佳的实践方式是有一个预设的文件白名单,直接比较输入是否在允许的白名单上即可,任何不是对白名单上的文件的请求都被拒绝。如果无法实施文件白名单,则可以设置一个字符白名单,只允许输入包含白名单中的字符
  2. 校验用户输入后,将输入和基本目录做拼接,然后使用语言提供的文件系统api规范化路径,然后比较规范化后的路径是否以基本目录开头,不是则拒绝该请求;譬如下面以python举个例子:
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
点赞
收藏
评论区
推荐文章
九路 九路
3年前
前端学数据结构与算法:二叉树的四种遍历方式及其应用
前言上一章我们从0到1的实现了一颗二叉搜索树,以及理解了二叉搜索树的特性与基本操作,这一章介绍关于二叉树的更多操作,也就是树的遍历,对树的每个节点进行访问。主要包括前序遍历、中序遍历、后序遍历、层序遍历,前面三种也叫深度优先遍历(DFS),最后的层序遍历也叫广度优先遍历(BFS),理解这四种遍历方式的不同,再遇到树相关的算法问题时,也就能更加游刃有余。这
Aimerl0 Aimerl0
3年前
Python网络爬虫与信息提取
title:Python网络爬虫与信息提取date:2020121001:00:23tags:Pythoncategories:学习笔记写在前面不知道写啥其实说实话TOC网络爬虫之规则安装requests库cmd命令行打开输入pip3installrequests,等待即可简单测试,爬一下bkjwpythonimportrequ
Wesley13 Wesley13
3年前
java 基础知识
遍历遍历就是把这个数组的每个元素显示出来遍历的方法就是先定义这个数组的大小,然后用FOR循环来完成数组,例如doublescorenewdouble5;ScannerinputnewScanner(System.in);for(inti0;i<score.l
Stella981 Stella981
3年前
JavaScript中遍历数组和对象的方法
js数组遍历和对象遍历针对js各种遍历作一个总结分析,从类型用处,分析数组和对象各种遍历使用场景,优缺点等JS数组遍历:1,普通for循环,经常用的数组遍历vararr1,2,0,3,9,10,20,
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
3年前
2 linux笔记 文件目录管理
2linux笔记文件目录管理2.1Linux文件与目录管理2.1.1绝对路径:路径的写法,由根目录/写起,例如:/usr/share/doc这个目录。2.1.2相对路径:路径的写法,不是由/写起,例如由/usr/share/doc要到/usr/sh
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
h4ckb0ss h4ckb0ss
3个月前
文件上传(一):PortSwigger靶场通关笔记
文件上传漏洞通常指应用对用户上传的文件没有完善的检验,允许攻击者通过Web应用程序上传恶意文件到服务器,然后通过这些恶意文件来进行执行任意代码,在客户端影响用户等攻击
h4ckb0ss h4ckb0ss
3个月前
API测试(一):PortSwigger靶场笔记
这篇文章是关于作者在学习PortSwigger的APITest类型漏洞时的记录和学习笔记
h4ckb0ss h4ckb0ss
3个月前
SSRF(一):PortSwigger靶场笔记
写在前面该文章是关于作者在PortSwigger的SSRF靶场训练的记录和学习笔记使用的工具为BurpSuitePro有问题请留言或联系邮箱1586937085@qq.com漏洞简介SSRF全称ServerSideRequestForgery(服务端请求伪
h4ckb0ss
h4ckb0ss
Lv1
若为化得身千亿,散上峰头望故乡。
文章
4
粉丝
0
获赞
0