Dev*_*xPP 7 c# security filesystemwatcher active-directory visual-studio
在尝试使用FileSystemWatcher时,我发现它以某种方式超越了我的用户帐户对文件和文件夹的权限,并且会引发更改事件,其中包含有关您甚至无法访问的文件和文件夹中已更改内容的信息.
我有两个问题:
1)为什么会这样?
2)这是AD配置中的问题吗?我如何解决它 ?
3)有没有办法收集这些文件,甚至创建它们的FileSystemInfo以获取有关文件的更多信息(不仅仅是对它们所做的更改)?
据我所知,只有FileSystemWatcher免受限制,我不能对它运行任何其他东西,这里是我尝试过的列表:
更新:尝试了helge的解决方案,有些类似于他的sugested,不是通过windows的api,而是通过命令提示符:
robocopy/B\myserver\folder c:\ somefolder
最好的命令名称.
你可以通过robocopy来检查/ B代表"备份模式",这就是帮助这种安全性超越的原因.
我会尝试任何东西,我想找出究竟是什么导致FileSystemWatcher能够观看我无权打开的文件夹.知道原因,我想学习如何阻止FileSystemWatcher,以及如何收集找到的文件.
如果我使用我的个人账户,我会进行调查.拜托,有人可以帮帮我吗?我将写一篇关于解决方案的博客文章,其中包括可能有助于未来同样怀疑的任何人.
根据这个答案, FileSystemWatcher 基于 API 函数ReadDirectoryChangesW。如果这是真的,它就解释了您所目睹的行为 - 以及为什么这不是安全漏洞。
正如MSDN ReadDirectoryChangesW 上记录的那样,ReadDirectoryChangesW 需要特权 SeBackupPrivilege(这是由 CreateFile 的参数 FILE_FLAG_BACKUP_SEMANTICS 请求的)。如果以该模式打开文件,则返回的句柄将授予对该文件的完全访问权限,从而绕过访问检查。此功能专为需要能够读取磁盘上所有内容(无论权限如何)的备份程序而设计。
这不是一个安全漏洞,因为默认情况下,此功能所需的SeBackupPrivilege权限仅授予管理员。管理员,实际上是任何能够物理访问计算机的人,始终能够控制和读取每个文件 - 除非它已加密。
至于备份模式下可以用哪些函数来访问文件:至少有BackupRead来读取。使用 FindFirstFile/FindNextFile 可以轻松进行枚举。当然,这需要真正的Windows API,而不是残缺不全的.NET 文件系统功能。
| 归档时间: |
|
| 查看次数: |
1608 次 |
| 最近记录: |