0x00 前言
我最近在思考这样一个问题:
Windows服务器开启了IIS服务,防火墙仅允许80或443端口进行通信,那么如何在不使用webshell的前提下,实现对该服务器的远程管理?更进一步,如果只有低权限,有没有办法呢?
0x01 简介
本文将要介绍以下内容:
· HTTP.sys和端口共享
· WinRM服务
· HTTP Server API
· 针对80和443端口的利用方法
· 针对高权限和低权限的利用方法
· 检测方法
0x02 基本概念
1.HTTP.sys和端口共享
微软在Windows 2003 Server加入了内核驱动程序(Http.sys),用于侦听http流量并根据URL进行处理,允许任意用户进程共享专用于HTTP流量的TCP端口。
也就是说,通过HTTP.sys,多个进程将能够侦听同一端口上的HTTP流量。
可以使用Netsh命令来查询和配置HTTP.sys设置和参数,参考资料如下:
https://docs.microsoft.com/en-us/windows/win32/http/netsh-commands-for-http
列出所有URL的DACL,命令如下:
netsh http show urlacl
系统默认包括10个DACL,其中的两个对应WinRM服务,具体信息如下:
Reserved URL : http://+:5985/wsman/ User: NT SERVICE\WinRM Listen: Yes Delegate: No User: NT SERVICE\Wecsvc Listen: Yes Delegate: No SDDL: D:(A;;GX;;;S-1-5-80-569256582-2953403351-2909559716-1301513147 -412116970)(A;;GX;;;S-1-5-80-4059739203-877974739-1245631912-527174227-299656351 7) Reserved URL : https://+:5986/wsman/ User: NT SERVICE\WinRM Listen: Yes Delegate: No User: NT SERVICE\Wecsvc Listen: Yes Delegate: No SDDL: D:(A;;GX;;;S-1-5-80-569256582-2953403351-2909559716-1301513147 -412116970)(A;;GX;;;S-1-5-80-4059739203-877974739-1245631912-527174227-299656351 7)
5985对应http的端口,5986对应https的端口。
2.WinRM服务
学习资料:
https://docs.microsoft.com/en-us/windows/win32/winrm/portal
全称Windows Remote Management,能够实现在远程主机上执行命令。
3.HTTP Server API
学习资料:
https://docs.microsoft.com/en-us/windows/win32/http/http-api-start-page
HTTP Server API使应用程序能够接收定向到URL的HTTP请求并发送HTTP响应。
0x03 利用WinRM服务实现端口复用
注:Twi1ight的文章已经介绍了这部分内容,感谢他的分享,地址如下:
https://mp.weixin.qq.com/s/HDZUsTbffeGhgwu1FOWQNg
本节仅对此文章中的内容进行归纳整理并稍作补充。
Windows Server 2008默认关闭WinRM服务,Windows Server 2012默认开启。
注:以下操作需要获得管理员权限。
1.如果系统已开