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

利用IIS的模块功能绕过防火墙

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

在之前的文章《利用IIS的端口共享功能绕过防火墙》曾介绍了如下问题的解决方法:
Windows服务器开启了IIS服务,防火墙仅允许80或443端口进行通信,那么如何在不使用webshell的前提下,实现对该服务器的远程管理?更进一步,如果只有低权限,有没有办法呢?
本文将介绍以上问题的另一种解决方法:利用IIS的模块功能绕过防火墙。
0x01 简介
本文将要介绍以下内容:
· IIS的模块功能
· 使用c++开发模块
· 使用c#开发模块
· IIS-Raid测试
· 利用分析
· 防御检测
0x02 IIS的模块功能
自IIS7开始,开发人员可以通过模块功能(Module)来扩展IIS的功能。
参考资料:
https://docs.microsoft.com/en-gb/iis/develop/runtime-extensibility/extending-web-server-functionality-in-net
如果我们通过模块功能可以读取HTTP请求的内容并控制HTTP回复的内容,完全可以利用模块功能实现对服务器的远程管理。
IIS的模块以DLL的形式存在,加载后不会存在单独的进程。
2018年,PaloAlto Unit42发现了APT34使用这种方式作为IIS后门,将其命名为RGDoor。
本文将复现RGDoor的部分功能,着重介绍这种利用方法的检测和识别。
0x03 使用c++开发模块
参考资料:
https://docs.microsoft.com/en-gb/iis/develop/runtime-extensibility/develop-a-native-cc-module-for-iis
IIS 7.0及更高版本允许通过以两种方式开发的模块来扩展服务器:
· 托管模块(Managed Module),使用托管代码(managed code)和ASP.NET服务器可扩展性API
· 本机模块(Native Module),使用本机代码(native code)和IIS本机服务器可扩展性API
参考资料中介绍了本机模块(Native Module)的使用方法
需要注意以下问题:
· 可以使用Visual Studio进行开发
· DLL需要包含导出函数RegisterModule
· 使用CHttpModule作为模块类继承的实现
· 使用IHttpModuleFactory接口创建模块实例
1.模块开发
具体的实现代码可以参考IIS-Raid,地址如下:
https://github.com/0x09AL/IIS-Raid
代码细节可参考:
https://www.mdsec.co.uk/2020/02/iis-raid-backdooring-iis-using-native-modules/
IIS-Raid在RegisterModule函数注册了RQ_BEGIN_REQUEST和RQ_SEND_RESPONSE两个事件用来处理请求和响应。
2.模块注册
可选择以下三种方法:
(1)使用APPCMD.EXE命令行工具
(2)使用IIS Administration Tool进行界面操作
(3)修改配置文件applicationHost.config
注:在0x05中会演示方法1和方法2
0x04 使用c#开发模块
参考资料:
https://docs.microsoft.com/en-gb/iis/develop/runtime-extensibility/developing-a-module-using-net
IIS 7.0及更高版本允许通过以两种方式开发的模块来扩展服务器:
· 托管模块(Managed Module),使用托管代码(managed code)和ASP.NET服务器可扩展性API
· 本机模块(Native Module),使用本机代码(native code)和IIS本机服务器可扩展性API
参考资料中介绍了托管模块(Managed Module)的使用方法
需要注意以下问题:
· 可以使用Visual Studio进行开发
· 是一个.NET类
· 使用System.Web.IHttpModule接口
1.模块开发
具体的实现代码可以参考IIS_backdoor,地址如下:
https://github.com/WBGlIl/IIS_backdoor
代码细节可参考:
https://mp.weixin.qq.com/s/z1d3yvp14GWakyonTh_b8A
2.模块注册
可选择以下三种方法:
(1)使用APPCMD.EXE命令行工具
(2)使用IIS Administration Tool进行界面操作
(3)修改配置文件web.config
具体的使用方法还可以参考以下资料:
https://docs.microsoft.com/en-gb/iis/develop/runtime-extensibility/developing-iis-modules-and-handlers-with-the-net-framework
https://docs.microsoft.com/en-us/previous-versions/aspnet/ms227673(v=vs.100)
0x05 IIS-Raid测试
测试系统:
Windows Server 2012r2 x64(需要获得管理员权限)
IIS-Raid地址如下:
https://github.com/0x09AL/IIS-Raid
使用Visual Studio编译生成IIS-Backdoor.dll
1.后门安装
可以选择以下两种方法:
(1)使用APPCMD.EXE命令行工具
查看已安装模块的命令如下:
C:\Windows\system32\inetsrv\APPCMD.EXE list module
如下图:

安装模块的命令如下:
C:\Windows\system32\inetsrv\APPCMD.EXE install module /name:test /image:"c:\test\IIS-Backdoor.dll" /add:true
删除模块的命令如下:
C:\Windows\system32\inetsrv\APPCMD.EXE uninstall module test
(2)使用IIS Administration Tool进行界面操作
运行inetmgr.exe,进入IIS管理器
选择Modules,如下图:

进入后选择Configure Native Modules...,接着选择Register...,如下图:

填入Name和Path,如下图:

添加成功后,在Modules页面显示新添加的内容,如下图:

[1] [2]  下一页

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