目录

什么是目录遍历?

漏洞原理

实验

0x00  基础目录遍历

0x01  绝对路径

0x02  双写../绕过

0x03  URL编码绕过

0x04  绝对路径配合../

0x05  截断文件后缀

防御


什么是目录遍历?

目录遍历(目录穿越)是一个Web安全漏洞,攻击者可以利用该漏洞读取运行应用程序的服务器上的任意文件。 这可能包括应用程序代码和数据,后端系统的登录信息以及敏感的操作系统文件。

在某些情况下,攻击者可能能够在服务器上写入任意文件,(如,FFFTP是一款小型的FTP客户端软件。FFFTP客户端没有正确地验证FTP服务器所返回的LIST命令响应中包含有目录遍历序列(斜线)的文件名,如果用户受骗从恶意的FTP服务器下载的目录包含有带有恶意文件名的文件的话,就可能导致向用户系统的任意位置写入文件)从而允许他们修改应用程序数据或行为,并最终完全控制服务器。

漏洞原理

若web要显示一个商品的图像,有时候开发者会用通过HTML加载,如:

<img src="/loadImage?filename=214.png">

使用filename参数加载图像文件,图片文件位置可能映射在 /var/www/images/ 上,所以真实的路径是 /var/www/images/214.png

这就导致了攻击者可以读取服务器上的任意文件:

https://www.*****.com/loadImage?filename=../../../etc/passwd

filename的参数值与真实路径组合起来就是:

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

其等价于:

/etc/passwd

在Unix操作系统上,../ 是一个标准的返回上一级路径的语法;

在Windows操作系统上, ../ 和 ..\ 都是返回上一级的语句。

实验

0x00  基础目录遍历

查看商品的图片,可以看到是通过filename参数来确定图片的:

右键打开图片,同时抓包,可以修改filename参数值,利用 ../ 返回上一级来遍历任意文件:

filename=../../../etc/passwd

0x01  绝对路径

web网站有时候会采取目录遍历的防御措施,如过滤 ../ 上一级等关键字,然后简单的过滤通常会被绕过。有时候可以直接采用绝对路径,无须../返回上一级目录遍历:

filename=/etc/passwd

0x02  双写../绕过

有时候,防御措施是直接将 ../ 替换为空,可以直接采用双写/复写直接绕过:

filename=....//....//....///etc/passwd

如果在....//中,将../替换为空,最后的路径就变成:

....//  => ../

0x03  URL编码绕过

也可以采用URL编码来绕过服务器对 . 或者 / 的检测:

.   =>  %2e

/   =>  %2f

% => %25  (双重URL编码)

先尝试编码 / ,失败:

全编码,失败:

双重编码,即将%编码,成功:

0x04  绝对路径配合../

有些web在获取filename图片文件的时候,会首先判断是否以一个固定的路径开头:

那么就可以配合../来返回上一级遍历任意文件:

filename=/var/www/images/../../../etc/passwd

0x05  截断文件后缀

某些web对filename的文件类型作了限制,只有当后缀为图片时才解析

这时候就可以利用 %00 来截断:

总之,目录遍历漏洞不会仅限于一个绕过姿势,通常会配合多个姿势进行组合攻击。

防御

防止文件路径遍历漏洞的最有效方法是避免将用户提供的输入完全传递给文件系统API。

如果认为不可避免的是将用户提供的输入传递给文件系统API,则应同时使用两层防御,以防止受到攻击:

  • 应用程序应在处理之前验证用户输入。理想情况下,验证应与允许值的白名单进行比较。如果所需的功能无法做到这一点,则验证应验证输入内容仅包含允许的内容,例如纯字母数字字符。
  • 验证提供的输入后,应用程序应将输入附加到基本目录,并使用平台文件系统API规范化路径。验证规范化路径以预期的基本目录开头。

以下是一些简单的Java代码示例,用于根据用户输入来验证文件的规范路径:

File file = new File(BASE_DIRECTORY, userInput);
if (file.getCanonicalPath().startsWith(BASE_DIRECTORY)) {// process file
}

目录穿越/遍历漏洞 -- 学习笔记相关推荐

  1. APP安全漏洞学习笔记

    APP安全漏洞学习笔记 本文首先明确了APP安全的目标,然后对常见的APP漏洞进行了整理分析,并研究学习了APK的静态分析与动态分析技术,最后介绍了安卓的渗透测试技术和常见的安全评估工具.附录处整理了 ...

  2. 2021-7-5目录穿越ssrf配合RFI漏洞学习笔记转

    目录 什么是目录遍历? 漏洞原理 实验 0x00  基础目录遍历 0x01  绝对路径 0x02  双写../绕过 0x03  URL编码绕过 0x04  绝对路径配合../ 0x05  截断文件后缀 ...

  3. python dict遍历_Python学习笔记:19个pythonic编程习惯,让你的Python入门更优雅

    Python最大的优点之一就是语法简洁,好的代码就像伪代码一样,干净.整洁.一目了然. 要写出 Pythonic(优雅的.地道的.整洁的)代码,需要多看多学大牛们写的代码,github 上有很多非常优 ...

  4. 【目录】Django-2.0 学习笔记

    django 学习笔记目录 web应用-http协议-web框架 django 简介 django-2 的路由层 django 的视图层 django 模板层template django 模型层or ...

  5. Hacking Team Flash 0day漏洞学习笔记

    周日的夜晚,与囧桑下载下来Hacking Team之前爆出的flash 0day漏洞,怀着紧张激动的心情,在自己的机子上做了实验,经测试,在我的虚拟机(一个sp3的XP,貌似没装Flash)上根本跑不 ...

  6. 访问控制/越权漏洞 -- 学习笔记

    目录 访问控制概念 漏洞类型 Lab 1. robots.txt泄露未授权访问页面 2. JS文件暴露未授权访问页面 3. 参数控制的访问权限 4. 响应包参数控制的访问权限 5.  Header头中 ...

  7. CVE-2014-4113_Win32k提权漏洞学习笔记

    一.前言 1.漏洞描述 该漏洞发生的位置是在驱动文件Win32k.sys中的xxxHandleMenuMessage函数,产生的原因是没有对该函数中调用的xxxMNFindWindowFromPoin ...

  8. web渗透之文件包含漏洞-学习笔记分享

    文件包含 这里偷用一下老师名言:该文章仅用于个人学习与总结.请勿用于未授权的违法攻击!!用户滥用造成的一切后果自负!!学习者请务必遵守当地法律!! 1.首先什么是文件包含.         就是去其他 ...

  9. CVE-2016-0095提权漏洞学习笔记

    一.前言 1.漏洞信息 该漏洞是在win32k中的bGetRealizedBrush产生的,是一个内核空指针解引用的漏洞,利用该漏洞可以完成提权操作.由于有公开的POC,所以对这个漏洞的分析和利用就变 ...

最新文章

  1. LeetCode简单题之较大分组的位置
  2. 有些人还活着,被你一按就死了。。 | 今日最佳
  3. 17-Docker的数据持久化介绍
  4. dockerfile 修改文件权限_网易技术实践|Docker文件系统实战
  5. oracle中常用的时间格式转换
  6. 利用网页内容监控来提升网站收录排名
  7. 企业信息系统集成发展阶段及ESB对企业的价值体现
  8. Ubuntu mosquitto 安装及配置
  9. linux时间同步服务(chronyd服务)
  10. visio的替代工具 - draw.io
  11. 视频号新人直播应该准备什么?
  12. 如何修复破损的录音文件(m4a)
  13. python-docx 标题字体设置失败如何解决?
  14. SAR成像系列:【3】合成孔径雷达(SAR)的二维回波信号与简单距离多普勒(RD)算法 (附matlab代码)
  15. Tomcat:-Djava.net.preferIPv4Stack=true只支持ipv4
  16. pytorch实现 chatbot聊天机器人
  17. git创建本地仓库和github仓库
  18. GX、LS型螺旋输送机结构新颖 噪声低
  19. 利联科技:扬州BGP高防服务器的IIS安全技巧
  20. 模型无关的时间序列度量方法及特征

热门文章

  1. Java程序员在用的大数据工具,MongoDB稳居第一!
  2. StarkSoft题库管理系统--生成word格式试卷
  3. VS创建和使用C++静态链接库教程
  4. mysql ora01031_逻辑备库上创建JOB报ORA-01031错误
  5. 运用蒙特卡洛法模拟电动汽车常规充电、快速充电、更换电池充电曲线及对日负荷曲线的影响
  6. MSER仿射不变特征匹配算法
  7. 大学python笔记整理_大学生python笔记第二次整理aze-love-py
  8. RBAC经典角色权限系统设计五张表及拓展应用
  9. 基于springboot在线竞价拍卖管理系统
  10. java课程设计抽奖程序源码_java课程设计---个人博客 彩票抽奖程序 201821123098 钟海清...