cnhackteam7 发布于2022年11月8日 分享 发布于2022年11月8日 0x00 前言 之前的文章《利用IIS的端口共享功能绕过防火墙》介绍了以下问题的解决方案: Windows server已打开IIS服务,防火墙只允许端口80或443通信。那么如何在不使用webshell的情况下远程管理这个服务器呢?再者,如果只有低权限,有什么办法? 本文将介绍上述问题的另一种解决方案:利用IIS的模块功能绕过防火墙。 0x01 简介 本文将介绍以下内容: IIS的模块功能 c开发模块 使用c#开发模块 IIS-Raid测试 利用率分析 防御探测 0x02 IIS的模块功能 从IIS7开始,开发者可以通过模块扩展IIS的功能。 参考资料: https://docs . Microsoft . com/en-GB/IIS/develop/runtime-extensibility/extending-we B- 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和更高版本允许通过以两种方式开发的模块进行服务器扩展: 托管模块,使用托管代码和ASP.NET服务器扩展性API。 本机模块使用本机代码和IIS本机服务器扩展性API。 参考资料中介绍了本机模块的使用。 请注意以下问题: 可以使用Visual Studio进行开发。 DLL需要包含导出函数RegisterModule。 使用CHttpModule作为模块类继承的实现 使用IHttpModuleFactory接口创建模块实例。 1.模块开发 的具体实现代码可以参考以下地址的IIS-Raid: https://github.com/0x09AL/IIS-Raid 代码详情可在以下位置找到: https://www . MD sec . co . uk/2020/02/IIS-raid-后门-iis-using-native-modules/ IIS-Raid在RegisterModule函数中注册RQ_BEGIN_REQUEST和RQ_SEND_RESPONSE,以处理请求和响应。 2.模块注册 您可以选择以下三种方法: 使用APPCMD.EXE命令行工具 使用IIS管理工具进行界面操作 修改配置文件applicationHost.config 注: 方法1和2将在0x05中演示。 0x04 使用c#开发模块 参考资料: https://docs . Microsoft . com/en-GB/IIS/develop/runtime-extensibility/developing-a-module-using-net IIS 7.0和更高版本允许通过以两种方式开发的模块进行服务器扩展: 托管模块,使用托管代码和ASP.NET服务器扩展性API。 本机模块使用本机代码和IIS本机服务器扩展性API。 参考资料介绍了如何使用托管模块。 请注意以下问题: 可以使用Visual Studio进行开发。 是一个. NET类。 使用系统。Web.IHttpModule接口 1.模块开发 的具体实现代码可以参考以下地址的IIS_backdoor: https://github.com/WBGlIl/IIS_backdoor 代码详情可在以下位置找到: https://mp.weixin.qq.com/s/z1d3yvp14GWakyonTh_b8A 2.模块注册 您可以选择以下三种方法: 使用APPCMD.EXE命令行工具 使用IIS管理工具进行界面操作 修改配置文件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/ms 227673(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 \ app cmd。EXE列表模块 如下图 安装该模块的命令如下: c:\ Windows \ system32 \ inetsrv \ app cmd。EXE安装模块/名称:test/image:' c:\ test \ IIS-back door . dll '/add:true 删除模块的命令如下: c:\ Windows \ system32 \ inetsrv \ app cmd。EXE卸载模块测试 (2)使用IIS Administration Tool进行界面操作 运行inetmgr.exe并进入IIS管理器。 选择模块,如下图所示 进入后,选择配置本机模块.然后选择注册.如下图所示。 填写名称和路径,如下所示 添加成功后,新添加的内容会显示在模块页面上,如下图所示。 2.功能测试 IIS-Raid的配置文件保存在Functions.h中,包括以下内容: # define COM _ HEADER ' X-Chrome-Variations ' # define PASS _ FILE ' C:\ \ Windows \ \ Temp \ \ creds . db ' #定义密码“简单传递” COM_HEADER是用于在后门和控制器之间执行通信的标头名称。 PASS_FILE是使用dump命令读取文件的位置。 密码被定义为将用于对后门进行身份验证的密码。 (1)连接后门 该命令如下所示: python。/IIS _ controller . py-URL http://192 . 168 . 18 . 138/-密码简单传递 如下图 (2)测试功能 执行cmd命令: cmd whoami 测试下图 执行转储命令: 倾销 读取默认文件C: \ \ windows \ \ temp \ \ credits.db的内容。 测试如下图3-3所示。 执行外壳代码: 注入shellcode.txt Shellcode.txt保存base64加密的外壳代码。加载方式是先创建进程C:\ \ Windows \ \ System32 \ \ credwitz.exe,然后注入。 测试下图 0x06 利用分析 使用IIS模块作为后门具有以下特点: 您需要首先获得IIS服务器的管理员权限。 有效负载是dll的形式。 从安装模块开始。 dll的进程是w3wp.exe。 0x07 防御检测 可以通过查看模块来检查IIS是否安装了后门。 具体方法有两种: 1.使用APPCMD.EXE命令行工具 查看已安装模块的命令如下: c:\ Windows \ system32 \ inetsrv \ app cmd。EXE列表模块 2.使用IIS Administration Tool进行界面操作 运行inetmgr.exe并进入IIS管理器。 选择模块。 另外,需要注意的是,只有当模块成功加载后,才能在进程w3wp.exe中找到模块相关的dll。 0x08 小结 介绍了IIS的模块功能,实现了如何利用IIS的模块功能绕过防火墙,测试开源工具IIS-Raid,分享防御检测的建议。 留下回复 链接帖子 意见的链接 分享到其他网站 更多分享选项…
推荐的帖子