热词: RFID传感器二维条码生物识别卫星导航定位


当前位置:首页 > 网络层 > 技术 > 访问控制

访问由于ACL对所请求资源的设置被拒绝

2017-06-09 来源:我爱物联网

访问由于ACL对所请求资源的设置被拒绝

第一,看iis中(不管iis5 还是iis6)  ,网站或者目录,包括虚拟目录的属性,看目录安全性选项卡中的 编辑匿名访问和身份验证控制,看看是用的哪个帐号,如果是用的iis匿名帐号(一般是 IUSR_机器名),或者由系统管理员设置了其他帐号,这个帐号很重要,下面成IIS匿名帐号 察看帐号的密码是否是正确的系统设置的密码,实在不行就在 计算机管理里面的用户管理,重新把帐号设置一个密码,然后在编辑匿名访问和身份验证控制选项中把密码重新设置一下。第二。在资源管理器 里面看放置网站或者目录的安全选项。是否IIS匿名帐号有权限访问,一般来说,NT系统中的IUSR_机器名这个帐号都会是在user组里面,有时候禁用 了user组,也会引起这个问题,让刚才设置的IIS匿名帐号或者帐号所在的系统组有对目录的访问权限,至少要有读权限。第三,在你放 置的程序中,看是否含有其他类型的动态语言写的程序,IIS会默认对asp进行解释,对于ASPX来说,要看net执行文件目录是否让IIS匿名帐号有读 权限? cgi程序就是perl目录,jsp看是用resin还是用tomcat做的解释,php就是php目录,要保证这些目录都让IIS匿名帐号有读 权限才行。通过以上设置,基本上没有什么问题了,遇到这样的问题,重新安装IIS也没有用,慢慢查原因吧。在NT环境下的web server出问题,大部分是因为权限 还有组策略的影响。只要确定这两个部分没问题。那基本上就不会出现问题了。


系统安全:用PsExec帮助网管员限制用户访问

在网络管理中,我们发现限制用户访问并不是一件轻松的事情。经过笔者的试验,发现利用自由软件是一个好方法。笔者最喜欢的方法就是利用PsExec避免用户运行所选择的程序,例如浏览器和电子邮件客户端。PsExec是免费的PsTools工具集的一部分,用户可以从微软的TechNet 站点下载。其使用方法是在要启动的目标程序前面加上如下的字符串:

"c:windowssystem32psexec.exe" -l -d

虽然此程序目的是在远程计算机上启动程序,用户可以利用命令行开关来以受限用户的身份来运行任何应用程序。-L开关限制(即limit)应用程序的特权。-D开关使这个命令窗口在程序启动时消失(即disappear)。

例如,要对Internet Explorer实施这个技巧,请遵循如下的步骤:

第一步:在用户用来启动IE浏览器的图标上右击(例如,在任务栏的快速启动区域中的Internet Explorer图标上),选择“属性”。

第二步:在弹出的对话框中,单击“快捷方式”选项卡,在“目标”标签后的文本框内,在原来的内容之前插入“c:windowssystem32psexec.exe -l –d”,(用户的安装程序路径可能与此不同,故应该根据安装PsExec的路径而变化)注意添加空格。完成后“目标”文本框内的内容应该看起来如下:

“c:windowssystem32psexec.exe” -l -d “ c:Program FilesInternet Exploreriexplore.exe”(注意使用时,应该使用英文输入法下的引号)

注意上面的“c:Program FilesInternet Exploreriexplore.exe”,如果用户的Windows安装路径与此不同,也应该随着变化。如用户的Windows安装在“D:windows”,则应该改为“D:Program FilesInternet Exploreriexplore.exe”

第三步:为了确保仍能看到Internet Explorer快捷方式的图标,单击“更改图标(C)…”按钮,在弹出的窗口中的“在这个文件中查找图标(L)”下的文本框内添加“c:Program FilesInternet Exploreriexplore.exe”,并选择一个图标,单击“确定”。

第四步:完成之后,单击“确定”按钮关闭“Internet Explorer属性”对话框。

如此一来,下一次你启动浏览器时,它就会以一个受限用户的身份运行。(责任编辑:李磊)


Windows平台内核级文件访问_绕过安全软件

背景 在windows平台下,应用程序通常使用API函数来进行文件访问,创建,打开,读写文件。从kernel32的CreateFile/ReadFile/WriteFile函数,到本地系统服务,再到FileSystem及其FilterDriver,经历了很多层次。在每个层次上,都存在着安全防护软件,病毒或者后门作监视或者过滤的机会。作为安全产品开发者,我们需要比别人走得更远,因此我们需要一个底层的“windows平台内核级文件访问”的方法来确保我们能够看到正确的干净的文件系统。直接访问FSD的内核级别文件访问 FSD(FileSystemDriver)层是文件API函数经过本地系统服务层(native API)最后到达的驱动层次。如果我们可以模仿操作系统,在我们自己的驱动程序里直接向FSD发送IRP,就可以绕过那些native API 和win32 API了,也就可以绕过设置在这些层次上面的API钩子等监控措施。文件的Create和Open 文件的Create和Open可以通过发送IRP_MJ_CREATE给FSD,或者调用IoCreateFile函数来完成。Create和Open的区别实际上在于IoCreateFile/IRP_MJ_CREATE的一个参数Disposition的取值。 通过发送IRP_MJ_CREATE给FSD的方法与此类似,可以参考IFSDDK document的IRP_MJ_CREATE说明。不同于上面方法的是需要自己创建一个FILE_OBJECT,好于上面方法的是这种方法不需要一个HANDLE,HANDLE是线程依赖的,FileObject则是线程无关。文件的Read和Write 我们通过给FSD发送IRP_MJ_READ来读取文件,给FSD发送IRP_MJ_WRITE来改写文件。 如果我们是通过一个HANDLE来执行(如使用IoCreateFile打开的文件),就要先用ObReferenceObjectByHandle函数来获得这个Handle对应的FileObject。我们只能给FileObject发送IRP。 之后我们使用IoAllocateIrp分配一个IRP。根据FileObject->DeviceObject->Flags的值,我们判断目标文件系统使用什么样的IO方式。 对每种不同的IO方式使用不同的地址传递方式。随后我们填充IRP内的各个参数域,就可以发送IRP了。 接着要考虑如果IRP不能及时完成,会异步的返回的情况,我们安装一个CompletionRoutine,在CompletionRoutine里面设置一个事件为已激活,通知我们的主线程读取或者写入操作已经完成。 现在可以发送IRP了。如果不采取特殊的措施的话,IRP发送目标是FileObject对应的DeviceObject。发送后,等待IRP的完成并且释放资源,返回。文件的Delete Delete实际上是通过向FSD发送IRP_MJ_SET_INFORMATION的IRP,并把IrpSp->Parameters.SetFile.FileInformationClass设置为FileDispositionInformation,用一个FILE_DISPOSITION_INFORMATION结构填充buffer来执行的。文件的Rename 类似于Delete,Rename是向FSD发送IRP_MJ_SET_INFORMATION的IRP,把IrpSp->Parameters.SetFile.FileInformationClass设置为FileRenameInformation,填充buffer为FILE_RENAME_INFORMATION结构。综上,于是我们可以在驱动里面通过发送IRP来直接访问文件系统了,绕过了native API 和win32 API层次。绕过文件系统过滤驱动和钩子 有了以上的内容,我们目前可以直接给FSD发送请求操作文件。但是这还不够,因为有很多的杀毒软件或者监视工具使用FSD Filter Driver或者FSD Hook的办法来监控文件操作对付文件系统过滤驱动 文件系统过滤驱动Attach在正常的文件系统之上,监视和过滤我们的文件访问。文件系统驱动栈就是由这一连串的Attach起来的过滤驱动组成。我们可以用IoGetRelatedDeviceObject这个函数来获得一个FileObject对应的最底层的那个功能驱动对象(FDO)。但是这样虽然绕过了那些过滤驱动,却同时也绕过了正常的FSD如Ntfs/Fastfat,因为正常的FSD也是作为一个过滤驱动存在的。磁盘文件对象的对应的最底层的FDO是Ftdisk.sys,它已经因为过于底层而不能处理我们投递的IRP请求。 其实正常的FSD信息存储在一个Vpb结构中,我们可以使用IoGetBaseFileSystemDeviceObject这个未公开的内核函数来得到它。它就是我们发送IRP的目标了。对付替换DispatchRoutine的FSD Hook 这是一种常用的FSD Hook方式。我们需要得到原本的DispatchRoutine,向原本的DispatchRoutine发送我们的IRP。这里提供一个思路:我们可以读取原本FSD驱动的.INIT段或者.TEXT段,查找其DriverEntry函数,在它的DriverEntry函数中肯定设置了自己的DriverObject的各个DispatchRoutine。在这个函数中我们就能找到我们想要的DispatchRoutine的地址。只需要使用特征码搜索的方法就可以搜索到这个值。对付Inline Hook DispatchRoutine函数本身的FSD Hook 这种Hook方法比较狠毒,但不是非常常见于安全产品中,一般应用在木马和rootkit上,比如我自己写的rootkit。它没有更改DriverObject里面的DispatchRoutine的函数指针,而是向函数开头写入汇编指令的JMP来跳转函数。对付它的基本思路就是读取存在磁盘上的FSD的文件,加载到内存一份干净的备份,察看我们要调用的DispatchRoutine开头的几个字节和这个干净备份是否一致。如果不一致,尤其是存在JMP,RET,INT3一类的汇编指令的时候,很可能就是存在了Inline Hook。(但要充分考虑重定位的情况。)如果存在Inline Hook,我们就把干净的函数开头拷贝过来覆盖掉被感染的函数头。然后在发送IRP,就不会被Inline Hook监视或篡改了。

相关热点