欢迎来到 黑吧安全网 聚焦网络安全前沿资讯,精华内容,交流技术心得!

利用IIS的端口共享功能绕过防火墙

来源:本站整理 作者:佚名 时间:2020-02-28 TAG: 我要投稿

我最近在思考这样一个问题:
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.如果系统已开启WinRM服务
(1)查看监听配置
winrm e winrm/config/listener
默认监听5985端口,为了不修改默认配置,这里需要新增80端口。
注:
查看WinRM配置的命令如下:
winrm get winrm/config
(2)新增80端口
winrm set winrm/config/service @{EnableCompatibilityHttpListener="true"}
补充:
删除80端口的命令如下:
winrm set winrm/config/service @{EnableCompatibilityHttpListener="false"}
注:
如果未新增80端口,远程连接需要指定5985端口,示例如下:
winrs -r:http://192.168.112.129:5985 -u:test -p:1234 "whoami"
(3)允许Administrators组中的所有帐户访问该服务
reg add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System /v LocalAccountTokenFilterPolicy /t REG_DWORD /d 1 /f
注:
如果不设置此项,远程连接时只能使用内置管理员帐户Administrator。
2.如果系统未开启WinRM服务
(1)使用默认配置开启并配置服务
Winrm quickconfig -q
将自动执行以下操作:
· 启动WinRM服务,并将服务启动类型设置为自动启动。
· 添加监听配置。
· 添加防火墙规则。
(2)修改默认端口
开启服务后,默认监听5985端口,为了更隐蔽,这里需要将默认端口5985修改为80端口。
修改http默认端口为80:
winrm set winrm/config/Listener?Address=*+Transport=HTTP @{Port="80"}
注:
还原http默认端口为5985的命令如下:
winrm set winrm/config/Listener?Address=*+Transport=HTTP @{Port="5985"}
(3)允许Administrators组中的所有帐户访问该服务
reg add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System /v LocalAccountTokenFilterPolicy /t REG_DWORD /d 1 /f
注:
如果不设置此项,远程连接时只能使用内置管理员帐户Administrator。

[1] [2] [3] [4]  下一页

【声明】:黑吧安全网(http://www.myhack58.com)登载此文出于传递更多信息之目的,并不代表本站赞同其观点和对其真实性负责,仅适于网络安全技术爱好者学习研究使用,学习中请遵循国家相关法律法规。如有问题请联系我们,联系邮箱admin@myhack58.com,我们会在最短的时间内进行处理。
  • 最新更新
    • 相关阅读
      • 本类热门
        • 最近下载