【发布时间】:2022-01-19 22:55:52
【问题描述】:
在这篇文章中: https://gist.github.com/Neo23x0/e4c8b03ff8cdf1fa63b7d15db6e3860b 声称以下 powershell 命令可以检查 log4j 漏洞:
gci 'C:\' -rec -force -include *.jar -ea 0 | foreach {select-string "JndiLookup.class" $_} | select -exp Path
这会导致访问被拒绝错误。 进一步检查显示必须以管理员身份运行 powershell。 https://docs.microsoft.com/en-us/answers/questions/32390/access-is-denied-while-i-am-running-a-command-in-p.html
这样做仍然会出现拒绝访问错误。 在上面的文章中,它对第一个问题说:
Set-ExecutionPolicy AllSigned
这仍然会导致访问被拒绝。
执行此操作还需要什么?
【问题讨论】:
-
访问被拒绝错误意味着您当前的用户没有读取文件的权限,ExecutionPolicy 与此无关。
-
-ea 0是-ErrorAction SilentlyContinue的缩写,通常会抑制错误消息。你是说你还在买吗?请注意,即使以管理员身份运行,也可能存在不允许您访问的文件夹。 -
您现在可以做的是运行您当前拥有的脚本,并获取那些以后无法读取的文件的列表。
-
请注意,存在系统定义的联结(指向其他文件夹的链接)仅用于向后兼容,即使以管理员身份运行,也不允许枚举其内容 - 但是,这不是一个问题,因为它们只是指向允许枚举 的其他文件夹(只有 Windows PowerShell 抱怨这些,PowerShell (Core) 7+ 悄悄地跳过它们) - 请参阅this answer。
-
顺便说一句:你可以大大加快命令(仍然会运行很长时间)如下:
gci C:\ -rec -force -filter *.jar -ea silentlycontinue | select-string "JndiLookup.class" | select -exp Path
标签: windows powershell log4j