Cacls可以显示或修改任意访问控制列表 (DACL) 文件。
前几天在L.S.T的群里,有人问到这个问题,在Webshell或者注入的时候执行Cacls命令会提示“是否确定(Y/N)?”,因为我们无法输入“Y”来确认,所以我们就无法成功执行Cacls命令。记得以前有个方法是执行“echo Y|cacls C:/slyar/ /g everyone:F”这样的命令,运用管道来使得Cacls无需确认执行,但是今天试验后发现本地可以成功,而在Webshell里还是不成功。。。
在查看Cacls帮助后经过研究得出的结论是:
Cacls只加参数/G后执行会提示“是否确定(Y/N)?”, 因为我们在Webshell或者注入的时候里不能键入“Y”,因此不能成功执行。
Cacls加入参数 /E /G后不会出现提示而直接执行。所以我们直接执行带 /E /G 参数的Cacls命令就可以不经确认直接执行了。
但是这里有一个特殊情况:参数 /E 的作用是“编辑 ACL 而不替换”,而如果目标目录里已经包含了“everyone:R”的权限设置的话,那么执行命令后仍然是“everyone: R”。。。对于这种情况,我们首先要用 /D 参数把要赋权的用户拒绝访问目标目录,然后再进行赋权。
那么我们需要执行的命令依次是:
cacls C:/slyar/ /E /D everyone
cacls C:/slyar/ /E /G everyone:F