ctfhub 目录遍历

什么是目录遍历:
目录遍历是由于网站存在缺陷,导致网站目录可以被任意浏览,这会导致网站很多隐私文件与目录泄露

比如数据库备份文件,配置文件等

目录遍历这个漏洞需要经常的去摸一摸,探一探
存在资源的地方就极有可能存在目录遍历

几种目录遍历的攻击手段:
目录遍历的方式基于操作系统。
Linux系统:cd …命令是返回上一级的目录
…/这个命令,贯穿了整个目录遍历攻击,也是目录遍历攻击的核心。
如果对方服务器是Linux,攻击手段就是通过…/,这一个…/将贯穿整个目录遍历攻击
Windows操作系统目录遍历攻击:
对于Windows系统和DOS系统的目录结构,攻击者可以使用…/或者…\字符串
在这种操作系统下有分盘,所以Windows系统上的目录遍历会隔离在单个磁盘分区上(一个盘受攻击,另一个盘不会受影响)
URl编码形式的目录遍历攻击
一些应用会通过查询危险的字符串,例如-…-…-…/
来防止目录遍历,但是,服务器检查的字符串往往会被URl编码,所以这类系统将无法避免,如下形式的目录遍历攻击:

  • %2e%2e%2f:解码为…/
  • %2e%2e/:解码为…/
  • …%2f:解码为…/
  • %2e%2e%5c:解码为…
    Unicode/UTF-8编码形式的目录遍历攻击:
    一种新的编码方式“…/”被引入,也带来了目录遍历攻击
    许多百分号的编码形式:
    例如:
  • %c1%1c- %c0%af 被转换成“/”或“\”字符
    百分号编码字符被微软提供的Web服务解码成相应的8字节字符,但是UTF-8本身的源头非标准化,许多字符串根本没有对应的编码符号,所以许多奇怪的百分号编码形式被引入例如“%c0%9v”
    Zip归档文件目录遍历攻击
    一些像zip这样的归档文件格式也允许目录遍历攻击,就像回溯文件系统一样,在归档文件中的任何文件也会被重写,所以可以编写出查看归档文件内部文件路径的代码
    目录遍历变异
    加密参数传递的数据
    在Web程序中对文件名进行加密后再提交,比如:“downfile.jsp?filename= ZmFuLnBkZg- “,在参数filename用的是Base64加密,想要绕过,需要将文件名加密后再附件提交
    编码绕过
    尝试采用不同的编码转换进行过滤性的绕过,比如Url编码,通过对参数进行Url编码提交,“downfile.jsp?filename= %66%61%6E%2E%70%64%66“来绕过。
    目录限定绕过
    有些Web应用程序是通过限定目录权限来分离的。攻击者可以通过某些特殊的符号““来绕过。形如这样的提交“downfile.jsp?filename=/…/boot”。能过这样一个符号,就可以直接跳转到硬盘目录下
    0x04 绕过文件后缀过滤

一些Web应用程序在读取文件前,会对提交的文件后缀进行检测,攻击者可以在文件名后放一个空字节的编码,来绕过这样的文件类型的检查。

例如:…/…/…/…/boot.ini%00.jpg,Web应用程序使用的Api会允许字符串中包含空字符,当实际获取文件名时,则由系统的Api会直接截短,而解析为“…/…/…/…/boot.ini”。

在类Unix的系统中也可以使用Url编码的换行符,例如:…/…/…/etc/passwd%0a.jpg如果文件系统在获取含有换行符的文件名,会截短为文件名。也可以尝试%20,例如: …/…/…/index.jsp%20

绕过来路验证

Http Referer : HTTP Referer是header的一部分,当浏览器向web服务器发送请求的时候,一般会带上Referer,告诉服务器我是从哪个页面链接过来的

在一些Web应用程序中,会有对提交参数的来路进行判断的方法,而绕过的方法可以尝试通过在网站留言或者交互的地方提交Url再点击或者直接修改Http Referer即可,这主要是原因Http Referer是由客户端浏览器发送的,服务器是无法控制的,而将此变量当作一个值得信任源是错误的。
漏洞防御
对用户的输入进行验证,特别是路径替代字符“…/”
尽可能采用白名单的形式,验证所有输入
合理配置web服务器的目录权限
程序出错时,不要显示内部相关细节
(相关的题做的不多还是不太理解怎么攻击)
学习原文:https://www.cnblogs.com/s0ky1xd/p/5823685.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值