电脑疯子技术论坛|电脑极客社区

微信扫一扫 分享朋友圈

已有 2544 人浏览分享

Burpsuite练兵场-目录遍历

[复制链接]
2544 0
本帖最后由 zhaorong 于 2021-6-19 14:55 编辑

0x50 Burpsuite练兵场-目录遍历

这一篇本来是应该介绍HTTP走私的下一章节:如何探查HTTP请求走私漏洞 但是我在做其中一个实验的时候
出现了问题不知道是实验环境本身存在Bug还是我的操作遗漏了 关键细节所以在其论坛上提交了一个post等
有回复或者解决了问题后再来更新下一章节吧。

就先来介绍下目录遍历 Directory traversal 这一内容吧 先来简单的说一下相关概念 这里的目录遍历不是指我们在
信息搜集阶段的路径爆破 而是指攻击者能够通过目录遍历漏洞读取应用程序服务器上的任意文件,包括应用程序代
码和数据 后端系统的凭据等敏感系统文件。在某些情况下 攻击者甚至还可以通过这一漏洞在服务器上写入任意文件
从而允许他们修改应用程序的数据或行为 并最终获得服务器控制权限。

这里举一个具体的例子方便大家理解:有一台运行有Web服务的Linux系统服务器在该Web服务中 存在一个网页对
图像路径的引用为<img src="/loadImage?filename=218.png"> 通过loadImage URL对图片进行索引 图片存储
在/var/www/images/目录下。当我们访问这一网页时会发送一个GET请求 URL为http://www.host.com/loadIma
ge?filename=218.png。此时 若服务器后台未对文件名进行检测 我们就可以构造恶意payload如../../../../etc/pas
swd读取服务器中的敏感文件内容并返回 这就构成了一次成功的目录遍历攻击。

../的含义为返回上一目录 /etc/passwd为Linux系统中的特有文件,存储了系统中所有用户的基本信息。而这在
Windows系统中有所不同,../ 和..\ 都可以用于实现返回上一目录这一目的,而相对应可用的文件路径有例如..
\..\..\windows\win.ini等 更多相关的敏感文件路径可以参阅扩展阅读中的链接。

实验内容

实验一:简单的目录遍历漏洞

实验提示:这一实验环境中的页面在图像引用中存在目录遍历漏洞

实验要求:通过目录遍历漏洞获取 /etc/passwd文件内容

231846p5r5wi66ragz6eil.jpg

因为漏洞存在于图片的引用当中 所以要注意筛选条件的设置 如下图为相关访问流量

231847f6998g5oog6ogcui.jpg

任意选择一条信息流发送到Repeater模块 进行目录遍历尝试

100.jpg


通过添加多个../即可成功获取到/etc/passwd文件内容,,完成实验。因为命令执行原理 这里
所使用的../数量是不限的 但是不能过少 这样可能无法到达根路径。

实验二:使用绝对绕过路径遍历保护

实验提示:这一实验环境中的页面在图像引用中存在目录遍历漏洞 虽然后台拒绝了绝对路径的使用
但是将提交的文件名视为相对于默认工作目录的文件名。

实验要求:通过目录遍历漏洞获取 /etc/passwd文件内容

99.jpg

还是一样发送到Repeater模块进行相关操作 根据提示可以使用绝对路径绕过防护

98.jpg

使用payload/etc/passwd完成实验

实验三:未进行递归过滤路径符

实验提示:实验环境中的页面在图像引用中存在目录遍历漏洞 且会过滤用户提交数据中的路径符

实验要求:通过目录遍历漏洞获取 /etc/passwd文件内容

96.jpg

这个提示简单的说就是web应用后台会对用户提交的路径进行处理 尝试去除../这样的内容 但是
由于考虑不周 比如仅进行一次判断是否存在../并去除而未进行多次递归 往往可以采取措施进行
绕过例如使用 ....// 或者 ....\/

同样监控通信流 并发送到Repeater模块进行处理

92.jpg

使用payload ....//....//....//etc/passwd成功绕过 完成实验

实验四:通过编码进行绕过

实验提示:实验环境中的页面在图像引用中存在目录遍历漏洞 且会阻断包含有路径遍历
的用户输入并会在使用前进行解码。

实验要求:通过目录遍历漏洞获取 /etc/passwd文件内容

91.jpg

根据实验提示 我们可以使用编码后的payload对保护机制进行绕过

90.jpg

使用的payload为 ..%252f..%252f..%252fetc/passwd

除了这里使用的编码 还有许多其他编码方式也可以被用于绕过此保护措施这里列举了一些编码方式

普通URL编码
  1. . = %2e
  2. / = %2f
  3. \ = %5c
复制代码

双重URL编码
  1. . = %252e
  2. / = %252f
  3. \ = %255c
复制代码

Unicode编码
  1. . = %u002e
  2. / = %u2215
  3. \ = %u2216
复制代码

UTF-8  Unicode编码
  1. . = %c0%2e, %e0%40%ae, %c0ae
  2. / = %c0%af, %e0%80%af, %c0%2f
  3. \ = %c0%5c, %c0%80%5c
复制代码

关于为什么%C0%AF这类编码可以被用于目录遍历 可以看这个回答 因为太长了就不进行翻译了 简单的
讲就是%C0%AF是/的非法UTF-8编码 但是由于不同 的具体实现导致在某些情况下其仍能被成功解码并
被用于绕过常见的目录遍历防范措施。

实验五:检测路径开头的保护机制

实验提示:实验环境中的页面在图像引用中存在目录遍历漏洞 且会检测路径的开头是否为预期值

实验要求:通过目录遍历漏洞获取 /etc/passwd文件内容

89.jpg

程序后台会检测路径开头,那我们只需保证路径开头正确 更改后续内容即可绕过保护机制

使用payload /var/www/images/../../../etc/passwd

88.jpg

完成实验

实验六:通过零截断绕过保护机制

实验提示:实验环境中的页面在图像引用中存在目录遍历漏洞 且会检测文件扩展名是否为预期值

实验要求:通过目录遍历漏洞获取 /etc/passwd文件内容

87.jpg

后台程序会对扩展名进行检测 那么我们需要在附加扩展名的同时使得文件内容能够成功返回
这里利用了一个零截断技术 由于Web应用程序使用的API允许字符串中包含空字符 但当实际获
取文件名时系统API会直接截断导致成功绕过保护措施。

86.jpg

使用payload ../../../etc/passwd%00.jpg成功完成实验

总结

目录遍历漏洞背后原理并不复杂 但是造成的危害还是不小的 主要的防范措施有以下几种:
尽量避免将用户提交的输入传递到文件系统API中
在接受参数前做好验证 使用白名单策略
验证参数后 应将其追加到基本目录并做好路径规范化
使用适当的文件系统访问权限

您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

关注

0

粉丝

9021

主题
精彩推荐
热门资讯
网友晒图
图文推荐

Powered by Pcgho! X3.4

© 2008-2022 Pcgho Inc.