0x01、Directory Traversal - Directories
目录穿越, 也被称为目录遍历/directory traversal/path traversal)是通过使用 ../ 等目录控制序列或者文件的绝对路径来访问存储在文件系统上的任意文件和目录,特别是应用程序源代码、配置文件、重要的系统文件等。
Low
观察URL, 参数directory=documents, 是一个目录, 且页面列出了docments下的所有文件信息, 这就为目录遍历创造了条件:
1. 可控变量: directory
2. 恶意输入
尝试用 ../ 返回上一级目录:

由于没有对网站根目录做限制, ../ 可以返回至根目录:

更大胆的做法是, 直接可以通过绝对路径来目录穿越:

Medium
Medium等级对directory变量值做了过滤:

即使对 ../ 等做了过滤, 但是仍然可以用绝对路径:

High
high级别就利用realpath()函数, 做了绝对的防护:
realpath() 函数: 返回绝对路径。该函数删除所有符号连接(比如 '/./', '/../' 以及多余的 '/'),并返回绝对路径名。

0x02、Directory Traversal - Files
目录穿越+文件包含
常见的文件包含漏洞的形式为 <?php include("inc/" . $_GET['file']); ?>
考虑常用的几种包含方式为
- 同目录包含
file=.htaccess- 目录遍历
?file=../../../../../../../../../var/lib/locate.db- 日志注入
?file=../../../../../../../../../var/log/apache/error.log- 利用
/proc/self/environ
其中日志可以使用SSH日志或者Web日志等多种日志来源测试
Low
看到参数 page=message.txt 是可控的:

可以读取当前php文件内容:

也可以结合目录穿越, 包含上一级文件内容:

Medium
Medium级别中, 对../进行了过滤,

但是没有过滤 ./ 以及 /

High
high级别同样用realpath()函数, 做了绝对的防护。
0x03、Host Header Attack (Cache Poisoning)
Low
点击here链接, 直接跳转到指定的url,
观察页面, 是利用<a href>跳转

那么跳转的URL是否是用户可控的呢?
抓包修改一下host看一下URL是否改变:


可以看到, 链接地址会随着host地址改变, 192.168.10.102是攻击者的服务器地址, 攻击者可以在自己的服务器上同样构造一个目录:
http://192.168.10.1

本文深入探讨Web安全领域常见漏洞,包括目录穿越、文件包含、主机头攻击、设备访问限制、文件与文件夹访问控制、服务器侧请求伪造及XML外部实体攻击。通过实例演示如何利用这些漏洞,以及不同安全级别下的防护措施。
最低0.47元/天 解锁文章
3629

被折叠的 条评论
为什么被折叠?



