freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

服务器端漏洞篇之目录遍历专题
2023-08-12 22:16:09

啦啦啦,啦啦啦,我是爱学习的小梨子,学习了两天,嘎嘎学知识,老师看我们学了两天高强度寻思给我们讲点简单的,今天讲目录遍历哦。

声明

该系列共三篇,26个专题,前21个专题的大部分内容已于2021年7-9月首发于安全客,由于某些原因,该系列后续更新部分梨子打算转投Freebuf社区(下称"社区")。因后续更新部分的部分内容为前21个专题中的,故在转投社区时会将更新部分一并加入对应的专题中,所以会与发布于安全客的版本略有出入,会更完整,望周知。

本系列介绍

PortSwigger是信息安全从业者必备工具burpsuite的发行商,作为网络空间安全的领导者,他们为信息安全初学者提供了一个在线的网络安全学院(也称练兵场),在讲解相关漏洞的同时还配套了相关的在线靶场供初学者练习,本系列旨在以梨子这个初学者视角出发对学习该学院内容及靶场练习进行全程记录并为其他初学者提供学习参考,希望能对初学者们有所帮助。

梨子有话说

梨子也算是Web安全初学者,所以本系列文章中难免出现各种各样的低级错误,还请各位见谅,梨子创作本系列文章的初衷是觉得现在大部分的材料对漏洞原理的讲解都是模棱两可的,很多初学者看了很久依然是一知半解的,故希望本系列能够帮助初学者快速地掌握漏洞原理。

服务器端漏洞篇介绍

burp官方说他们建议初学者先看服务器漏洞篇,因为初学者只需要了解服务器端发生了什么就可以了

服务器端漏洞篇 - 目录遍历专题

什么是目录遍历?

目录遍历,很好理解,就是利用某种操作从当前目录遍历到其他任意目录并读取其中的文件的漏洞,这些文件包括源码啊,数据啊,登录凭证等敏感信息之类的,所以说目录遍历漏洞的危害还是不容忽视的

利用目录遍历读取任意文件

我们看这样一个场景,我们看到Web中有一张照片,然后我们会在f12中看到这样的前端代码
<img src="/loadImage?filename=218.png">
我们看到img标签通过指定src的值来读取图片资源,src中的URL通过指定参数值为文件名的参数filename来读取图片资源,我们稍微了解一点linux常识的都知道,直接加文件名代表是相对同级目录,这里的基线目录是/var/www/images/,则这张图片资源的绝对路径就是
/var/www/images/218.png
那么如果我们利用返回上级目录符"..",比如这样
https://insecure-website.com/loadImage?filename=../../../etc/passwd
然后我们看一下将它直接拼接到基线路径以后是什么样的
/var/www/images/../../../etc/passwd
经过三个返回上级操作以后就变成了
/etc/passwd
这样在img标签加载资源的时候就会将上面文件的内容读取出来,上面讲的是linux系统的,windows还有点不一样,是左斜杠,我们看一下示例
https://insecure-website.com/loadImage?filename=..\..\..\windows\win.ini

配套靶场:简单的目录遍历

因为加载资源的本质就是GET请求嘛,所以我们随便抓一个包,然后将路径改成img标签src属性的那个格式的,然后利用上面学到的知识进行目录遍历
image
非常简单,真的是有手就行啊,我们可以看到整个文件的内容,还是很恐怖的
image

常见的目录遍历防护的绕过方法

利用绝对路径绕过对返回上级目录符的禁用

有的应用程序会禁用返回上级目录符,但是换成绝对路径就可以绕过了

配套靶场:利用绝对路径绕过对返回上级目录符的禁用

首先我们试一下返回上级目录符
image
提示我们文件不存在?净扯淡,任何linux系统它都有,我们换成绝对路径看看
image
嗯?跟我搁这欲盖弥彰呢?说明我们成功绕过了
image

利用双写绕过仅对返回上级目录符进行单次清除

这种情况就是应用程序会正则匹配一次返回上级目录符然后清除,但是仅清除一次,所以我们可以利用双写来进行绕过,就是清除一次以后就正好留下一个

配套靶场:利用双写绕过仅对返回上级目录符进行单次清除

上面我们已经讲的很直白了,废话不多说,直接上截图
image
看到我们有一次成功绕过了
image

利用二次URL解码绕过对斜杠的过滤

有的应用程序会正则匹配斜杠并且清除,但是如果我们对其再进行一次URL编码,就可能不会被匹配到,但是到了后台以后再进行一次URL解码的时候就可以把斜杠还原出来达到目录遍历的效果

配套靶场:利用二次URL解码绕过对斜杠的过滤

原理讲完了,我们来实践一下,因为题目递进的关系,所以后面的题是无法采用前面的题目的解法解决的,这一点burp做的非常不错
image
好的,我们又一次成功绕过,大家其实可以把各种情况做成一个小的fuzz字典,这样就不用一个一个手动试了
image

利用起始路径+相对路径结合绕过对起始路径匹配

有的应用程序只要匹配到以预期的路径开头就不会管后面的了,但是如果我在它后面插入返回上级目录符就可以依然实现目录遍历效果

配套靶场:利用起始路径+相对路径结合绕过对起始路径匹配

原理讲完了,我们就来实践一下
image
我们看到了我们再一次绕过了匹配,大家可能会说梨子写的太水了,哎呀,不要在乎那些,能理解漏洞原理就行了,嘻嘻嘻
image

利用%00截断绕过对后缀的检测

在低版本中间件中,利用%00可以用来截断字符串,可以用来绕过对后缀的检测

配套靶场:利用%00截断绕过对后缀的检测

原理讲完了,我们上手练习一下吧
image
我们发现不仅能通过对后缀的检测还能利用%00截断读取到正确的敏感文件
image

如何防止目录遍历漏洞?

我们看到上面所有的绕过情况都是对路径过滤的不严格导致的,所以我们可以采取以下两种方法来缓解这个漏洞

  • 设置白名单,仅允许路径中包含允许的片段或数据类型

  • 在经过白名单过滤以后再与基线路径拼接,让路径结构规范化

burp给出了一段防护代码示例

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

总结

好的,以上就是梨子去上PortSwigger网络安全学院系列之服务器端漏洞篇 - 目录遍历专题的全部内容了,内容不多,但是也是不容小觑的漏洞哦,我们只是以/etc/passwd做示例,但是比它风险更高的文件还有很多很多,如果攻击者获得这些文件,后果不堪设想,大家有什么疑问可以在评论区讨论哦,嘻嘻嘻!

# burpsuite # web安全 # 目录遍历
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录