2

出于涉及 Windows 服务器的安全测试的目的,我想尝试将符号链接上传到 Windows Web 应用程序。但是,根据官方提供的信息,尚不清楚 Windows 硬链接(我认为与 NTFS 连接相同)是否作为可以像在 Linux 上一样从硬盘复制的文件存在。它含糊不清,但我觉得 NTFS 连接是其他类型的文件系统工件,它不同于“常规”文件 - 我找不到确认或否认这一点的文档。IE NTFS 我想知道 NTFS 是否支持对符号链接记录的直接操作,以便我可以将符号链接移动到另一台计算机。

我知道 Windows 软链接文件 (.lnk) 不受这种限制,但它们不适合测试的目的。

我的目标是从虚拟机复制符号链接,然后将其上传到我正在测试的服务器。

这可能吗?(我的印象不是。)据我所知,Windows 上的每个程序都将硬链接视为目标文件。有没有办法解决这个问题,也许是通过使用特殊的编辑器暂时损坏文件?如果符号链接作为文件系统上的普通文件存在,是否可以更改符号链接以便将其移动到非 Windows 操作系统以供进一步使用?

让我知道这对于服务器故障是否是一个更好的问题。由于这与安全性没有直接关系,而且更多的是为安全练习服务的普通技术问题,我认为它不适合 Stack Exchange 安全性。

4

2 回答 2

3

很难提供一个非常直接的答案。我从事备份/修复/映像项目,我通过 Web 服务将整个磁盘映像复制到服务器 - 所以,可以做你想做的事,但有很多事情需要考虑。

硬链接

通常假设硬链接无法相互区分,但是,链接文件与其“原始”文件之间存在细微差别。不同之处在于$MFT(在 winapi 函数上使用与 USN 相关的参数DeviceIOControl)的查询将仅返回其中一个文件。这可能被认为是原始文件。然后,您可以调用 winapi 函数NtQueryInformationFile来枚举硬链接。

符号链接和连接是不同的动物......

通过从中获取属性,您可以知道文件夹是联结还是符号链接。如果它是联结或符号链接,则属性中有一个 ReparsePoint 标志。顺便说一句 - 联结和符号链接之间的区别在于,联结是重定向到同一卷上的另一个位置,而符号链接是重定向到卷外位置。无论哪种方式,重定向目标始终是另一个文件夹。

有趣的是,符号链接和联结看起来和行为都像文件夹,而它们实际上是包含重定向信息的文件。当您打开它们时,NTFS 通常会查看重定向,并打开重定向目标。NTFS 检查重定向目标的权限,因此作为一种攻击,这可能不是一个可靠的策略。

打开联结/符号链接时,您可以添加一个标志FILE_FLAG_OPEN_REPARSE_POINT。当您这样做时,NTFS 不会执行重定向,而是打开内容,这实际上是重定向信息,并且假设您知道该信息的格式,则可以在服务器上重建联结/符号链接。请注意,重定向可能指向一个可能不存在的位置,或者可能只是暂时存在。这是意料之中的,因为某些网络资源可能并不总是可用。

因此,简而言之,可以复制联结或符号链接……而复制硬链接名义上意味着复制文件……考虑到上述微妙之处。只要目标文件存在,您也可以手动创建硬链接。

对于硬链接,NTFS 安全图有一个有趣的问题。如果用户有权访问文件,并且您在用户无权访问的文件夹中创建了指向该文件的硬链接,则用户仍然可以使用硬链接的路径打开该文件。这是因为链接和原始文件都指向磁盘上的同一个文件(和安全信息)。对任何链接更改的权限会影响所有链接。在不知道这一点的情况下,您可能会无意中对文件系统造成严重破坏:-)

我知道这有点仓促,所以让我总结一下:

NTFS 目录条目可以是文件夹或文件。硬链接是全部指向一个文件的目录条目。符号链接和联结实际上是在大多数实际用途中充当文件夹的文件(除非您知道如何获取上述重定向信息)。

于 2016-10-18T21:53:33.620 回答
1

AFAIR、NTFS(目录)连接实际上是符号链接。连接被实现为一个特殊的文件属性,称为 repars 点,其中包含链接目标。

另一方面,硬链接被实现为对目标文件的基本 MFT 记录的直接引用,并作为常规条目存储在目录树中。您实际上无法将硬链接与“原始”文件区分开来(每个文件和目录实际上至少有一个硬链接,因为它包含在目录树中的某个位置)。

如果要复制符号链接本身,则需要知道它是符号链接并提取有关其目标的信息。文件操作(删除和可能的重命名除外)被重定向到链接目标。因此,您通常可以通过在目标区域中创建其精确副本来复制符号链接。

实际的问题是,您用于执行复制操作的界面是否允许您在目标上创建符号链接。

于 2016-09-28T00:20:16.710 回答