如何在windows上检查log4j漏洞(surface go)

31moq8wy  于 2022-11-23  发布在  Windows
关注(0)|答案(1)|浏览(261)

在此帖子中: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://learn.microsoft.com/en-us/answers/questions/32390/access-is-denied-while-i-am-running-a-command-in-p.html
这样做仍然会出现拒绝访问错误。在上面的文章中,它对第一个问题说:
Set-ExecutionPolicy AllSigned
这仍然会导致拒绝访问。
要执行此操作还需要什么?

wmomyfyw

wmomyfyw1#

tl;dr

使用以下简化版本的命令,该命令的执行效果也会更好。

# Run WITH ELEVATION (as admin):
gci C:\ -rec -file -force -filter *.jar -ev errs 2>$null | # Use -filter, not -include
  select-string "JndiLookup.class" |  # Pipe directly to select-string
    select -exp Path

注:-ea 0-简称:-ErrorAction SilentlyContinue- * 应该 * 正常情况下使任何错误消息静音,但是如果由于某种原因这对您不起作用,2>$null应该是有效的。
-ev errs-缩写为:-ErrorVariable errs-收集变量$errs中发生的所有错误,您可以在事后检查这些错误,以确定这些错误是否表示 * 实际 * 存在权限问题

错误 * 在 Windows PowerShell 中 * 是预料之中的,即使在提升的情况下运行也是如此,即与下面讨论的隐藏系统连接有关。但是,您可以 * 忽略 * 这些错误。

PowerShell(Core)7+ 中,这些错误不再出现,您可以忽略上面的-ev errs 2>$null。如果出现任何错误,则表明存在真正的权限问题。

背景信息:

  • 一般来说,即使以管理员身份运行,也不能保证 * 所有 * 目录都能被访问。目录级别的文件系统ACL甚至可以阻止提升的进程枚举目录的文件和子目录。
  • 值得注意的是,有几个 * 隐藏的系统连接 *(到其他目录的链接),仅为Vista之前的向后兼容性而定义-如C:\Documents and SettingsC:\Users\<username>\My Documents-即使提升的进程也不允许枚举其子进程。
  • 在文件系统枚举过程中,这一事实仅在 Windows PowerShell 中变得明显,它会报告这些连接的访问被拒绝错误。* 相比之下,PowerShell(Core)7+* 会悄悄地跳过这些连接。
  • 即使在Windows PowerShell中,这个问题也只是一个 * 表面 * 问题,因为这些连接仅仅指向 * 可以 * 使用提升枚举的目录,因此 * 是 * 整个驱动器的-Recursive枚举。
  • 要查找所有这些隐藏的系统连接,请执行以下操作:
# Run WITH ELEVATION (as admin):
 cmd /c dir c:\ /s /b ashdl

其他信息位于this answer中。

相关问题