出于涉及Windows服务器的安全测试的目的,我想尝试将符号链接上载到Windows Web应用程序。但是,根据官方提供的信息,目前还不清楚Windows硬链接(我认为与NTFS结点相同)是否存在可以像在Linux上一样从硬盘复制的文件。它含糊不清,但我感觉NTFS交汇点是一些其他类型的文件系统工件,它们不同于"常规"文件 - 我无法找到文件来确认或否认这一点。 I.E NTFS我想知道NTFS是否支持直接操作符号链接记录,以便我可以将符号链接移动到另一台计算机。
我知道Windows软链接文件(.lnk)不受此限制,但它们不适合测试目的。
我的目标是从虚拟机复制符号链接,然后将其上传到我正在测试的服务器。
这可能吗? (我的印象不是。)从我所看到的,绝对Windows上的每个程序都会将硬链接视为目标文件。有没有办法解决这个问题,可能是通过使用特殊的编辑器暂时破坏文件?如果符号链接作为文件系统上的普通文件存在,则可以更改符号链接,以便将其移动到非Windows操作系统以供进一步使用吗?
让我知道这是否是服务器故障的更好问题。由于这不是直接涉及安全性,而且更多是安全练习服务中的普通技术问题,我不认为它适合Stack Exchange安全性。
答案 0 :(得分:3)
很难提供一个非常直接的答案。我从事备份/维修/成像项目,并通过网络服务将整个磁盘映像复制到服务器 - 因此,可以做你想做的事情,但需要考虑很多。 / p>
硬连接
通常认为硬链接无法相互区分,但链接文件与其原始文件之间存在细微差别。文件。这种差异是对$MFT
的查询(在winapi函数DeviceIOControl
上使用与USN相关的参数)将仅返回其中一个文件。这可以被视为原始文件。然后,您可以调用winapi函数NtQueryInformationFile
来枚举硬链接。
符号链接和交汇点是不同的动物......
通过从中获取属性,您可以知道文件夹是联结或符号链接。如果属性是联结或符号链接,则属性中有ReparsePoint标志。 BTW - 联结和符号链接之间的区别在于联结是重定向到同一卷上的另一个位置,而符号链接是重定向到卷外位置。重定向目标始终是另一个文件夹。
有趣的是,符号链接和联结都看起来像文件夹一样,而它们是包含重定向信息的真正的文件。当您打开它时,NTFS通常会查看重定向,并打开重定向目标。 NTFS检查重定向目标的权限,因此作为攻击,这可能不是一个强大的策略。
打开交叉点/符号链接时,您可以添加标记FILE_FLAG_OPEN_REPARSE_POINT
。执行此操作时,NTFS不会执行重定向,但会打开内容,这实际上是重定向信息,并且假设您知道该信息的格式,则可以在以下位置重新构建联结/符号链接:服务器。请注意,重定向可能指向可能不存在的位置,或者可能仅暂时存在。这是预期的,因为某些网络资源可能并不总是可用。
因此,简而言之,可以复制交叉点或符号链接......复制硬链接时名义上意味着复制文件......考虑到上述细微之处。只要目标文件存在,您也可以手动创建硬链接。
使用硬链接,NTFS安全图片中有一个有趣的问题。如果用户有权访问文件,并且您在用户无法访问的文件夹中创建该文件的硬链接,则用户仍可以使用硬链接的路径打开该文件。这是因为链接和原始文件都指向磁盘上的相同文件(和安全信息)。在任何链接上更改的权限都会影响所有链接。如果不知道这一点,你可能会无意中对文件系统造成严重破坏: - )
我知道这有点蠢蠢欲动,所以让我用这样的方式总结一下:
NTFS目录条目可以是文件夹或文件。硬链接是指向一个文件的目录条目。符号链接和联结实际上是用作文件夹的文件,用于大多数实际用途(直到您知道如何获取上述重定向信息)。
答案 1 :(得分:1)
AFAIR,NTFS(目录)联结实际上是符号链接。 juctnion实现为一个称为repars point的特殊文件属性,包含链接目标。
另一方面,硬链接实现为对目标文件的基本MFT记录的直接引用,并作为常规条目存储在目录树中。实际上你无法区分硬链接和“原始”文件(每个文件和目录实际上至少有一个硬链接,因为它包含在目录树的某个地方)。
如果您希望复制符号链接本身,您需要知道它是一个符号链接并提取有关其目标的信息。文件操作(除了删除,可能还有renamng)被重定向到链接目标。因此,您通常可以通过在目标区域中创建其精确副本来复制符号链接。
实际问题是,您用于执行复制操作的界面是否允许您在目标上创建符号链接。